JP2015520907A - 半導体ディスクコントローラにおける0−1バランス管理 - Google Patents

半導体ディスクコントローラにおける0−1バランス管理 Download PDF

Info

Publication number
JP2015520907A
JP2015520907A JP2015510441A JP2015510441A JP2015520907A JP 2015520907 A JP2015520907 A JP 2015520907A JP 2015510441 A JP2015510441 A JP 2015510441A JP 2015510441 A JP2015510441 A JP 2015510441A JP 2015520907 A JP2015520907 A JP 2015520907A
Authority
JP
Japan
Prior art keywords
read
threshold voltage
volatile memory
data
bits
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.)
Granted
Application number
JP2015510441A
Other languages
English (en)
Other versions
JP6163540B2 (ja
JP2015520907A5 (ja
Inventor
コーエン、アール、ティー
Original Assignee
シーゲート テクノロジー,エルエルシー
シーゲート テクノロジー,エルエルシー
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by シーゲート テクノロジー,エルエルシー, シーゲート テクノロジー,エルエルシー filed Critical シーゲート テクノロジー,エルエルシー
Publication of JP2015520907A publication Critical patent/JP2015520907A/ja
Publication of JP2015520907A5 publication Critical patent/JP2015520907A5/ja
Application granted granted Critical
Publication of JP6163540B2 publication Critical patent/JP6163540B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)

Abstract

【解決手段】 SSDコントローラは、SLC NVM(またはMLCのより下位のページ)から読み出される各読み出し単位の0のカウントおよび1のカウント、ならびに/またはいくつかの実施形態では、0/1不一致カウントを維持する。一部において、閾値電圧分布の公称分布から離れるシフトのために、読み出し単位が訂正不可能な事象では、維持されるカウントが、閾値電圧シフトを追跡し、読み出しデータの0/1バランスを回復するために読み出し閾値を調節する方向および/または大きさを判定することを可能にする。様々な実施形態では、多数の記載される因子(判定される閾値電圧分布、既知の記憶されている値、過去のNVM動作事象)に基づき、様々な記載される方法(カウント、割合)で調節される読み出し閾値が判定される。MLCメモリについての前述の技法の拡張版が記載される。【選択図】 図4

Description

分野:性能、効率、および使用上の有用性の改善をもたらす、不揮発性ストレージ技術の進歩が必要とされている。
関連技術:公知または周知であると明示的に識別されていない限り、文脈、定義、または比較のためのものを含む、本明細書における技法および概念への言及は、そのような技法および概念が、以前に公知であるか、ないしは従来技術の一部であることを認めると解釈されるべきではない。特許、特許出願、および出版物を含む、本明細書に列挙されるすべての引用文献(もしあれば)は、明確に組み込まれているか否かに関わらず、あらゆる目的のために、それらの全体が参照することによって本明細書に組み込まれる。
一部において技術背景を確立するため、および一部において明細書のバランスで使用される術語体系の素性を確立するために、半導体ディスク(SSD)コントローラによって使用されるフラッシュメモリの様々な態様がここに記載される。不揮発性メモリ(NVM)からSSDコントローラによって読み出されるデータの最小サイズは、低密度パリティチェック(LDPC)コード等の含まれるエラー訂正によって保護される、「読み出し単位」である。いくつかの実施形態では、各読み出し単位は、約4K〜約32Kビットのユーザデータと、エラー訂正オーバーヘッドとを含有する。以下に記載されるように、技術によってはセル毎に1ビット以上保持する場合があるNVMメモリセルから、SSDコントローラのコマンドの下で、これらのビットが読み出される。いくつかの実施形態では、SSDコントローラは、セキュリティのために、データをNVMに書き込む前に、そのデータを暗号化する。いくつかの実施形態では、同一にプログラムされたセルの長い列に関する回路設計制約を考慮して、SSDコントローラは、データをNVMに書き込む前に、そのデータをスクランブルする。
個別に考察すると、各セルは、そのセルのデバイス閾値電圧に対応し、かつ、セルに記憶されている論理ビット値にさらに対応する、特定の蓄積された(プログラムされた)電荷を有する。理想的には、NVM内のすべてのセルは、記憶されている論理ビット値に対して同一のデバイス閾値電圧を有し得るが、実際には、様々な理由のために、デバイス閾値電圧は、ガウスと形状が類似する、閾値電圧軸に沿った確率分布(すなわち、「閾値電圧分布」)で、セル間で異なる。
したがって、大きい数の読み出し単位等の大きい数のセル全体で考察すると、デバイス閾値電圧分布(例えば、ガウス確率曲線)と同じ数のセル毎の状態(ストレージのセル毎のビット毎に2つの状態)が存在する。つまり、セル毎にNビットのストレージでは、2**Nの状態、および同一数の閾値電圧分布が存在する。一般的に、NVM内の読み出し回路が2**Nの状態を区別するためには、(2**N)−1の異なる読み出し閾値(読み出し電圧基準VREAD1からVREAD(N−1))が必要となる。
上記を続けて、シングルレベルセル(SLC)フラッシュメモリでは、N=1である。したがって、SLCメモリは、ストレージのセル毎に1ビットを記憶し、2つのデバイス閾値電圧分布(1つが0のデバイス閾値電圧分布であり、もう1つが1のデバイス閾値電圧分布)を有し、単一の読み出し閾値、読み出し電圧基準VREAD1を必要とする。下限閾値電圧から上限閾値電圧で、E(消去)状態およびD1(第1のデータ)状態の2つの閾値電圧分布が既知である。任意ではあるが、共通マッピング(コーディング)は、E状態に論理1を割り当て、D1状態に論理0を割り当てる。したがって、0および1の参照は、D1状態およびE状態のそれぞれのデコーディングへのプロキシ参照である。
上記をさらに続けて、マルチレベルセル(MLC)フラッシュメモリでは、N>1である。したがって、MLCメモリは、セル毎に2ビット以上を記憶し、3つ以上のデバイス閾値電圧分布を有し、分布を区別するために、複数の異なる読み出し閾値を必要とする。例えば、4LCメモリは、セル毎に2ビットを記憶し、4つのデバイス閾値電圧分布を有し、一般的に、3つの読み出し閾値(読み出し電圧基準VREAD1、VREAD2、およびVREAD3)を必要とする。下限閾値電圧から上限閾値電圧で、E(消去)状態、D1(データ1)状態、D2(データ2)状態、およびD3(データ3)状態の4つのデバイス閾値電圧分布が既知である。任意ではあるが、4つの閾値電圧分布のそれぞれもまた、グレーコードシーケンス等の特定の2進数シーケンスに従ってマップされる(アドレス指定される)。したがって、11、10、00、および01状態の1つ以上の参照は、E、D1、D2、およびD3状態のそれぞれのデコーディングへのプロキシ参照である。
MLCの状態に使用されるアドレスマッピングに関して、それぞれが、最上位ビット(MSB)と、最下位ビット(LSB)とを有するということができる(セル毎に3ビット以上を記憶するものでは、間に有意ビットを有することができる)。MLC NVMがそれらのセルをプログラムする様々な方法が存在するが、以下の手法が一般的である。初期のプログラミングラウンド(電荷分布の操作)は、LSBを確立する、例えば、「より下位のページ」を書き込む。これは、SLCへの書き込み、例えば、E状態の閾値電圧分布および第2の状態の閾値電圧分布を確立する電荷操作と大まかに同一の方法で行われる。使用される2進数シーケンスによって、第2の状態の閾値電圧分布は、D1状態の閾値電圧分布と類似するか、D2状態の閾値電圧分布と類似するか、またはD1状態の閾値電圧分布とD2状態の閾値電圧分布との間となる。MLCでは、1回以上の追加のプログラミングラウンドは、MLCのレベル数毎に、必要に応じて、デバイス閾値電圧分布を(数、電圧閾値軸に沿った位置、および形状について)さらに操作する。より具体的には、1つ以上の後続のプログラミング動作は、「中央ページ」を書き込み(もしあれば、セル毎に3ビット以上では)、最後のプログラミング動作は、MSBを確立する、例えば、「より上位のページ」を書き込む。例えば、4LC(セル毎に2ビットのMLC)では、第1のプログラムラウンドのE分布および第2の分布はそれぞれ、第2のプログラムラウンドによって、E分布およびD1分布、ならびにD2分布およびD3分布に分岐される。
閾値電圧分布は、読み出し妨害、書き込み妨害、および保有損失等の1つ以上の因子によって、それらの初期/公称分布から離れるように変更される。より具体的には、経時、温度、および使用に関する他の因子のために、閾値電圧分布のそれぞれの位置は、閾値電圧軸に対して前後に移動する可能性がある。そのような変化は、公称閾値電圧分布に基づいて以前に確立された読み出し閾値の読み出し基準電圧値を使用して実施される読み出しの読み出しエラーの可能性を増加させる。いくつかのSLC実施形態では、NVMから読み出される読み出し単位において、硬判定の訂正不可能なエラーに遭遇する際、読み出し単位を復元するために、一連の再試行動作が実施される。再試行動作は、SSDコントローラからのI/Oコマンドを介して書き込まれるレジスタ設定によって判定される電圧値等の読み出し閾値VREAD1とは異なる電圧値で、読み出し単位をNVMから再読み出し(サンプリング)することを含む。(硬判定の)訂正可能な読み出し単位のサンプルを位置付ける試みにおいて、読み出し閾値VREAD1とは異なる設定で読み出すことによって、閾値電圧軸上の異なる点で、読み出し単位がサンプリングされる。
NVMベンダーによって提案される1つのアルゴリズムは、訂正可能な読み出し単位のサンプルを発見する試みにおいて、SLC読み出し閾値をゆっくりと上向きに掃引させる(読み出し基準電圧VREAD1を、その公称値から増加させる)ことである。この手順が失敗する場合、読み出し閾値は、別の方向に掃引される(読み出し基準電圧VREAD1を、その公称値から減少させる)。両方の掃引が失敗する場合、読み出し単位は、訂正不可能である(硬判定デコーディングによって)。読み出し閾値を線形的に掃引させることは、異なるそれぞれの読み出し基準電圧設定で、16〜64ステップを有する場合があり、読み出し単位の多くの時間のかかるサンプルを必要とする(それぞれが付随する復元待ち時間を伴う)。そのような探索が、まれに必要となり、したがって平均待ち時間に大きい影響を及ぼさない場合でさえ、いくつかのデータベース用途を含む、厳しい最大待ち時間要件を伴う用途では、そのような時間のかかる探索は、許容不可能である。
本発明は、プロセスとして、製品として、装置として、システムとして、物体の組立体として、ならびにコンピュータ可読ストレージ媒体(例えば、ディスク等の光学および/もしくは磁気大容量ストレージデバイス内の媒体、またはフラッシュストレージ等の不揮発性ストレージを有する集積回路)等のコンピュータ可読媒体として、あるいはプログラム命令が光もしくは電子通信リンク上で送信されるコンピュータネットワークとして、を含む、数多くの方法で実現されてもよい。本明細書では、これらの実現形態、または本発明がとり得る任意の他の形態は、技法と称され得る。「発明を実施するための形態」は、上記に識別される分野において、性能、効率、および使用上の有用性の改善を可能にする、本発明の1つ以上の実施形態の説明を提供する。「発明を実施するための形態」は、「発明を実施するための形態」の残りのより迅速な理解を促進するために、「前書き」を含む。「前書き」は、本明細書に記載される概念に係る、システム、方法、製品、およびコンピュータ可読媒体の1つ以上の「実施形態例」を含む。「結論」により詳細に記載されるように、本発明は、発行される特許請求の範囲の範囲内のすべての可能な修正物および変形物を包含する。
発明者は、読み出し閾値管理、ならびに付随する低待ち時間性能および耐用期間延長による利益に関して、NVMに書き込まれるデータのスクランブリング、ならびにスクランブルされたデータの状態の統計的分布の追跡および管理の有意性に、彼らが最初に気付いたと考えている。より具体的には、発明者は、読み出されるデータの状態の統計的分布対書き込まれたデータの状態の統計的分布の不一致が、NVMを読み出すために使用するのに好ましい読み出し閾値のシフトを示すことに、彼らが最初に気付いたと考えている。いくつかの実施形態では、SSDコントローラは、データをNVMに書き込む前に、暗号化等を介して、そのデータをスクランブルする。スクランブルされたデータは、0のビットおよび1のビットの50−50バランスに近いバランスを有する等、既知の0/1バランス(0および1として記憶されるビットの統計的分布)を有する。効果的なスクランブリングによって、データは、効果的にランダムである。NVM読み出し単位のサイズのランダムサンプルでは、0および1の分布は、非常に狭くなる傾向がある(平均の周囲に狭細に分布する)。例えば、16K(16,384)のランダムビットでは、0のカウントまたは1のカウントのいずれかが平均(8K)からいずれかの方向に約301以上離れている確率は、<1%である(およびいずれかの方向に約501以上離れている確率は、<1/1000000である)。
閾値電圧軸に対する様々な閾値電圧分布の公称分布から離れるシフト(任意の数の因子による)は、閾値電圧分布ピーク間の中心点の位置を変化させるように作用する。この実際の「閾値電圧中心点」の変化は、対応する読み出し閾値に対する対応する追跡調節がないと、読み出しエラーを引き起こす。発明者は、読み出し閾値電圧管理、および付随する低待ち時間性能、ならびに耐用期間延長における利益に関する、この中心点の変化の有意性に、彼らが最初に気付いたと考えている。
上記の観察結果を利用して、いくつかの実施形態では、SSDコントローラは、少なくとも一時的に、SLC NVM(またはMLCのより下位のページ)から読み出される各読み出し単位の0のカウントおよび1のカウントを維持する。一部において閾値電圧分布の(初期)公称分布から離れるシフトのために読み出し単位が訂正不可能である事象では、0のカウントおよび/または1のカウントは、シフトされた閾値電圧分布を追跡し、0/1バランスを回復するために読み出し閾値(読み出し電圧基準VREAD1)を移動させる方向および/または大きさを判定することを可能にする。「発明を実施するための形態」に提示されるように、実施形態によると、読み出し閾値の新しい電圧設定は、多数の因子(例えば、観察/推定される閾値電圧分布、既知の記憶されている値、および過去のNVM動作事象)に基づき、様々な方法(カウント、割合)で判定される。
MLCメモリでは、上記の技法が拡張され、より上位のページのカウントの維持、および複数の読み出し閾値のシフトを含む。また、上記の技法は、50−50バランス以外の既知の0/1バランスを有する様々な暗号化/スクランブリング方法と共に使用することも可能である。
図1Aは、不揮発性メモリ(NVM)要素(例えば、フラッシュメモリ)を介して実現されるもの等の不揮発性ストレージに0/1バランス管理技法を実装するためのプラットフォームを提供するSSDコントローラを含む、半導体ディスク(SSD)の実施形態の選択された詳細を図示する。 図1Bは、図1AのSSDの1つ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を図示する。 図2A〜図2Dは、0/1バランス回復に関する閾値電圧分布例を図示する。図2Aおよび図2Bは、SLC特有であり、それぞれ、1回目および後の2回目での閾値電圧分布を図示する。図2Cおよび図2Dは、MLC特有であり、それぞれ、1回目および後の2回目での閾値電圧分布を図示する。 図2A〜図2Dは、0/1バランス回復に関する閾値電圧分布例を図示する。図2Aおよび図2Bは、SLC特有であり、それぞれ、1回目および後の2回目での閾値電圧分布を図示する。図2Cおよび図2Dは、MLC特有であり、それぞれ、1回目および後の2回目での閾値電圧分布を図示する。 図2A〜図2Dは、0/1バランス回復に関する閾値電圧分布例を図示する。図2Aおよび図2Bは、SLC特有であり、それぞれ、1回目および後の2回目での閾値電圧分布を図示する。図2Cおよび図2Dは、MLC特有であり、それぞれ、1回目および後の2回目での閾値電圧分布を図示する。 図2A〜図2Dは、0/1バランス回復に関する閾値電圧分布例を図示する。図2Aおよび図2Bは、SLC特有であり、それぞれ、1回目および後の2回目での閾値電圧分布を図示する。図2Cおよび図2Dは、MLC特有であり、それぞれ、1回目および後の2回目での閾値電圧分布を図示する。 図3Aは、図1AのSSDのインスタンスのシステム実施形態の選択された詳細を図示し、0/1バランス管理に関する具体的な詳細を提供する。 図3Bは、図3Aの実施形態によって使用される読み出し単位の構成の選択された詳細を図示する。 図4は、図1A、図1B、および図3のSSDの実施形態の選択された制御フローの詳細を図示し、書き込み関連動作(アクション410から430)および読み出し関連動作(アクション440から480)に関する具体的な詳細を示す。
Figure 2015520907
Figure 2015520907
Figure 2015520907
Figure 2015520907
本発明の1つ以上の実施形態の詳細な説明が、本発明の選択された詳細を図示する添付の図面と共に、以下に提供される。本発明は、実施形態に関連して記載される。本明細書の実施形態は、例示にすぎないことが理解され、本発明は、明示的に、本明細書の実施形態に限定されず、また、それらのうちのいずれかもしくはすべてによっても限定されず、本発明は、数多くの代替物、修正物、および均等物を包含する。説明の単調さを回避するために、別の実施形態のセットに様々な単語標識(最初の、最後の、特定の(certain)、様々な、さらなる、他の、特定の(particular)、選択する、いくつかの、および顕著なを含むが、これらに限定されない)が適用される場合があり、本明細書で使用される場合、そのような標識は、明示的に、品質、または任意の嗜好もしくは偏見の形態を伝えることは意図されず、便宜上、別個のセットを区別することのみが意図される。開示されるプロセスのいくつかの動作の順序は、本発明の範囲内で変更可能である。プロセス、方法、および/またはプログラム命令特長の変形物を説明するのに複数の実施形態が用いられる場合は常に、所定の基準または動的に判定される基準に従って、それぞれが複数個の複数の実施形態に対応する複数個の動作モードのうちの1つを静的および/または動的に選択する、他の実施形態が考察される。本発明の完全な理解を提供するために、以下の説明において、数多くの具体的な詳細が説明される。詳細は、例証のために提供され、本発明は、詳細の一部またはすべてを含むことなく、特許請求の範囲に従って実践されてもよい。明確化のために、本発明に関連する技術分野において既知の技工物は、本発明が不必要に不明確にならないように、詳細に記載されていない。
前書き
この前書きは、「発明を実施するための形態」のより迅速な理解を促進するためだけに含まれており、いずれの前書きの段落も、必然的に、主題全体を要約したものであり、包括的または制限的記述であることは意図されないため、本発明は、前書き(もしあれば、明示的な例を含む)内に提示される概念に限定されない。例えば、続く前書きは、スペースおよび構成によって特定の実施形態のみに限定された、概略情報を提供する。最終的に特許請求の範囲が導き出されるものを含む、多くの他の実施形態が存在し、明細書のバランスを通して記載される。
頭字語
ここに定義される様々な省略語(例えば、頭字語)のうちの少なくともいくつかは、本明細書で使用される特定の要素を指す。
Figure 2015520907
Figure 2015520907
Figure 2015520907
0/1バランスの追跡および回復
以下の、0および1のカウントの追跡および管理、ならびに0状態および1状態を区別するために使用される読み出し閾値のシフトの最初の記載は、SLCメモリおよび(わずかな変化では、述べられたように)MLCメモリのより下位のページに直接適用可能である。MLCメモリに関してより一般的には、より上位のページのカウントの追跡および管理、ならびに複数の読み出し閾値(例えば、読み出し電圧基準VREAD1、VREAD2、およびVREAD3)のシフトのための拡張は、以下の別個の段落に詳述される。
いくつかの実施形態では、SLC NVMから読み出される各読み出し単位(または1つのNVMダイから1回に転送される読み出し単位の各グループ)の0のカウントおよび1のカウントが取得される。一部において閾値電圧分布の(初期)公称分布から離れるシフトのために、読み出し単位が訂正不可能な事象では、0のカウントおよび/または1のカウントは、閾値電圧分布のシフトを追跡して、0/1バランスを回復するために読み出し閾値を移動させる(設定する)方向および/または大きさを判定することを可能にする。調節される読み出し閾値は、SLCメモリでは読み出し電圧基準VREAD1であり、MLCメモリのより下位のページでは読み出し電圧基準VREAD2である。例えば、消去状態に論理1が割り当てられており、0および1の既知の統計的に等しい(50−50%、50/50%としても知られる、または単に50/50)分布で書き込まれているSLCでは、現在の0/1カウントが1の優勢を示す場合、VREAD1は、より低くシフトされ、現在の0/1カウントが0の優勢を示す場合、VREAD1は、より高くシフトされる。(MLCメモリのより下位のページでは、前述の実施例のVREAD1をVREAD2に置換する。)読み出し閾値を変化させる(シフトさせる)大きさは、任意選択で、0(または1)の数の割合によって判定される。大きさは、1つ以上のサンプルに観測される0および/または1の数、1つ以上のサンプルの読み出し閾値電圧増分、2つの分布のピーク間の中点に対応する予測される閾値電圧分布の知識、プログラム/消去カウント(ウェア)、読み出し妨害カウント、保有時間、ならびに他の同様の因子のうちの1つ以上に基づく。
読み出し均衡点の発見
さらなる実施形態では、読み出し閾値「読み出し均衡点」を発見するために、二分探索のような動作(適切な読み出し電圧基準のそれぞれの値で、同一の読み出し単位を反復的にサンプリングする)が使用される。これは、閾値電圧軸上の隣接する閾値電圧分布間の点であり、読み出すと、エラーの統計的マージン内で、書き込まれる統計的状態分布またはその理想的なモデルと合致する、生データ(エラー訂正前)の統計的状態分布をもたらす。
SLCメモリの暗号化からもたらされるようなランダムスクランブリングでは、読み出し均衡点は、読み出し閾値(読み出し電圧基準VREAD1)であり、0/1バランス(NVMから読み出される生データの)は、最も均衡である(ほぼ等しい)。そのような状況下では、2つの状態分布は、50−50バランスを有する。すなわち、読み出される状態の50%が0であり、読み出される状態の50%が1である。(MLCメモリのより下位のページでは、前述のVREAD1をVREAD2に置換する。)
いくつかの実施形態では、読み出し均衡点は、2つの電圧分布間の中心点、2つの電圧分布間の最小、読み出しデータの0/1バランスが50−50に最も近い点、および2つの他の点で発見される0/1バランスの補間に従って判定される点のうちの1つ以上に対応する。対称な隣接する閾値電圧分布を有する実施形態では、読み出し均衡点は、隣接する閾値電圧分布間の中心点に対応する。
所望の読み出し均衡点を発見して、読み出し閾値を所望の読み出し均衡点に設定することは、硬判定デコーディングを試みる最適点を発見するために必要とされる読み出しの数を低減する。さらなる実施形態では、読み出し閾値の読み出し均衡点が発見される前に、「十分に良好な」読み出し閾値が発見される事象では、硬判定デコーディングは、各読み出し閾値のサンプリング点(SLCメモリのためのVREAD1の各値、またはMLCメモリのより下位のページのためのVREAD2の各値)で、二分探索で試みられる。探索は、軟判定デコーディングのために、判定される読み出し均衡点の周囲で追加のサンプリングを行う可能性に関して以下に記載される場合を除き、一般的に、十分に良好な読み出し閾値が発見されると打ち切られる。様々な実施形態では、「十分に良好な」読み出し閾値は、読み出しデータの硬判定デコーディングの成功をもたらす。いくつかの実施形態では、少なくとも一部において、様々な因子に基づき、読み出し閾値電圧変化の大きさに関して上記に詳述されるように、二分探索における探索ステップ(読み出し閾値電圧増分)の大きさが判定される。
MLC考察
MLCメモリでは、複数の読み出し閾値が管理される。いくつかの実施形態では、これは、複数のデバイス閾値電圧分布の均一な変位を想定し、より下位のページの読み出しデータの0/1バランスに基づく第1の読み出し閾値(VREAD1)に対して行われる決定に基づき、すべての他の読み出し閾値を変化させることによって実施される。
4LC NVMでは、論理上、25−25−25−25の11/10/00/01バランス(50−50の0/1バランスに対比して)が存在する。しかしながら、4LCが、一般的に、3つの読み出し電圧基準、より下位のページのためのVREAD2、ならびにより上位のページのためのVREAD1およびVREAD3を使用する、2つの別個の読み出し動作を介して読み出されることを考えると、このバランスを直接提供する単一の動作は存在しない。したがって、2つのそれぞれの0/1バランス、より下位のページでは、D1状態とD2状態との間の0/1バランス、およびより上位のページではD2状態とD3状態との間の0/1バランスと組み合わせたE状態とD1状態との間の0/1バランスを評価することができる。代替えとして、単一のより下位のページの読み出し閾値をVREAD1、VREAD2、およびVREAD3のそれぞれに近い値に設定する、3つの別個のより下位のページのような読み出しを実施することができる。
一例として、いくつかの4LC NVM実施形態では、セルに記憶されている2つのビットのうちの少なくとも1つのビットについて、読み出し電圧基準VREAD1、VREAD2、およびVREAD3をシフトさせる必要がある場合がある。SLCの場合と同様に機能して、セルに記憶されている2つのビットのうちの一方は、第1の読み出し閾値(このMLCの場合では、VREAD2)での単一の読み出しを必要とする。他方のビットが、2つの追加の読み出し閾値(VREAD1、およびVREAD3、ならびに事実上、NVMによって内部的に実施される2つの関連付けられたそれぞれの追加の読み出し)を必要とすることを突き止める。
様々な実施形態によると、他方のビットのための2つの読み出し閾値(VREAD1およびVREAD3)は、同一量および/もしくは異なる量(ドリフトが両方の状態で同様であるという推測の下)、一致して移動されるか、または他方のビットのための2つの読み出し閾値は、独立して移動される(追加の読み出し動作を代償に)かのいずれかである。後者の選択肢は、SLCのようなビットの状態が、対応する他方のビット(MSB)を突き止めるために、2つの読み出し閾値(VREAD1およびVREAD3)のうちのどちらを使用するかを判定するため、セル内のSLCのようなビット(LSB)の状態を知る必要がある。
いくつかの4LC実施形態では、EおよびD1分布、ならびにD2およびD3分布の同時ブレンドについて、組み合わせられた「より上位のページ」の読み出しデータの0/1バランスが評価される。読み出しの組み合わせられた0/1バランス対その書き込みの組み合わせられた0/1バランスの不一致に基づき、およびビットセンスの逆転(EからD1への移動では1から0、およびD2からD3への移動では0から1)を考慮して、対応する2つの読み出し閾値(VREAD1およびVREAD3)は、一致して反対方向に移動される。これは、ブレンドの各構成要素の0/1バランスが「同一の方向」に移動する(例えば、移動が衝突しない)ように行われる。
いくつかの4LC実施形態では、2つのより上位のページの読み出し閾値(VREAD1およびVREAD3)の移動は、読み出し単位の各ビットのそれぞれのLSBを使用しながら、より上位のページの0/1バランスをそれぞれ評価することによって別個に判定される。LSB=1の際、移動方向は、LSB=0の場合と反対である。例えば、より上位のページの読み出しデータの0のカウントと1のカウントとの間の不一致を演算する代わりに、より上位のページの不一致は、より下位のページの読み出しデータの対応するビットに基づき、より上位のページの読み出しデータの各ビットを選択的に修正することによって演算され、より上位のページの読み出しデータのビットのセンスを数値から方向値に変換し、例えば、0は、より高い閾値電圧を表し、1は、より低い閾値電圧を表す。いくつかの実施形態では、より上位のページの読み出しデータのビットおよびより下位のページの読み出しデータの対応するビットのXNORが、この変換を実施する。
軟判定サンプルからのバイアスの除去
いくつかの実施形態では、軟判定ベースのデコーディングを実施するために、NVMから軟判定情報が取得される。軟判定情報は、読み出し単位のデータの複数のサンプルを取得するために、公称(未調節の)読み出し閾値の周囲の様々な読み出し閾値のサンプリング点(SLCでは、VREAD1の値)で、読み出し単位(または1つのNVMダイから1回に転送される読み出し単位の各グループ)を読み出し、したがって、読み出し単位の各ビットの値の軟判定尤度を構築することによって取得される。サンプルの間隔は、少なくとも一部において、その電荷状態の公称分離等の使用されるNVMの特定の特性に依存する。
しかしながら、その周囲でサンプルが取られる公称読み出し閾値が、読み出し閾値の読み出し均衡点(上述される)でない限り、軟判定情報は、バイアスがかかっている。現在の読み出し閾値が、閾値の読み出し均衡点ではない場合、すべての軟判定情報は、一方向または他方向にバイアスがかかっている。これを調節して、バイアスがかかっていない(または少なくともそれほどバイアスがかかっていない)軟判定情報を取得する、2つの方法が存在する。
1.読み出し閾値のサンプリング点のそれぞれでサンプリングされる際の読み出し単位の0/1バランスは、容易に識別されるため、読み出し閾値の読み出し均衡点は、容易に判定される(実施形態によると、線形補間を使用すること等によって)。判定される読み出し閾値の読み出し均衡点と(古い、未調節の)公称読み出し閾値との間の差に対応するオフセットが計算される。以前に判定された軟判定情報は、適切に「再度中心におく」ことができ、軟判定情報が以前にサンプリングされた電圧(1.0より大きい値、または0.0より小さい値で打ち切られる)に対してオフセットを適用することによって、依然として使用される。この手法は、追加の読み出しを必要としないが、一部のデータに異なる量の正確さ/精度をもたらす。
2.読み出し閾値のサンプリング点のそれぞれでサンプリングされる際の読み出し単位の0/1バランスは、容易に識別されるため、すべての必要とされるサンプルを収集した後、読み出し閾値の読み出し均衡点に最も近い読み出し閾値のサンプリング点が、容易に判定される。最も近い読み出し閾値のサンプリング点とは、0/1バランスが、書き込まれた0/1バランスに最も近似する、読み出し閾値のサンプリング点である。SLC暗号化(またはスクランブリング)の場合、50−50バランスに最も近いバランスを有する、読み出し閾値のサンプリング点である。すべてのサンプルが、公称的に同等の相互からの間隔を有するため、最も近いサンプルは、新しい公称読み出し閾値として選択され、追加の軟判定情報サンプルが、任意選択で集められる(新しい公称読み出し閾値が古い公称読み出し閾値とは異なると想定して)。代替えとして、閾値の読み出し均衡点を発見するための二分探索が最初に行われ、二分探索の正確さは、情報の所望の正確さに必要とされるサンプリングの最も細かい粒度に制限される。軟判定情報の所望の正確さは、新しい公称読み出し閾値の周囲に関連付けられたサンプル窓を有する。軟判定情報を取得するために必要とされる複数の読み出しの一環として二分探索を行うことは、古い公称読み出し閾値が所望の正確さのサンプル窓外とならない限り、追加の読み出しを必要としない。
これまでに記載されたSLC暗号化実施形態では、上記の技法は、50−50に最も近い読み出しデータの0/1バランスをもたらす、好ましい読み出し閾値を発見することに着目してきた。閾値電圧分布が、概して同一の対称な形状であり、実質的に重ならない場合では、この好ましい読み出し閾値電圧はまた、組み合わせられた閾値電圧分布の最小にも対応するであろう。
閾値電圧分布上の既知の点から補間された読み出し閾値
いくつかの実施形態では、好ましい読み出し閾値を発見する別の手法は、2つの点を発見する代わりに、各隣接する閾値電圧分布上に1つの点を発見し、補間によって、これらの2つの点の間の中点を判定する。例えば、各閾値電圧分布のピークでのサンプリングは、読み出しデータの0/1(またはどちらのピークかによって1/0)の75/25バランスをもたらすべきである。いったん2つのピークが識別されると、閾値電圧軸上の2つの点の間の計算された中点が、新しい読み出し閾値を設定するために使用される。
閾値電圧分布が均一ではない(例えば、長い尾部を有すること等によって、一方側または他方側に対称にバイアスがかかっている)ことが事前に既知である場合、いくつかの実施形態では、その情報は、ピークの位置を解釈するため、およびわずかにより複雑な補間(例えば、単なる中点ではない)によって中心を位置付けるために使用される。保有時間および/またはウェア等の因子は、いくつかの実施形態では、閾値電圧分布の対称性に影響を及ぼす場合があり、考慮される。いくつかの実施形態では、また、複数のサンプリング点も、閾値電圧分布の形状を明らかにするために使用される。
閾値電圧調節の範囲が制限されるいくつかの実施形態では、真のピークを発見することが可能ではない場合がある。特に、いくつかのフラッシュデバイスでは、E状態の電圧分布が負の閾値電圧に延在するとしても、閾値電圧を0V未満に移動させることができない。閾値電圧分布の知識は、依然として、補間を介して中点を判定することを可能にする。例えば、0Vでの読み出しデータの0/1バランスが60/40である場合、約10%過剰な0が観測され、0Vに対して右側のE分布の領域は、約10%である。いくつかの実施形態の第1の手法では、D1分布のピークが発見され、E分布の概略形状の知識に基づき、中点が補間される。いくつかの実施形態の第2の手法では、読み出しデータの0/1バランスが40/60のD1分布の点(0V測定とは反対の点)が発見される。次いで、60/40観測と40/60観測との間の計算される中点が、新しい好ましい読み出し閾値を設定するために使用される。2つの閾値電圧分布の追加の知識および/または測定を用いて、計算される中点をより高い正確さで判定することができる。
いくつかの実施形態では、補間された点は、両方とも読み出し均衡点と同一側にある。例えば、第1の読み出し閾値のサンプリング点Xが、75/25の読み出しデータの0/1バランスをもたらし、第2の読み出し閾値のサンプリング点Yが、62.5/37.5をもたらすことを知っていると、読み出し均衡点は、Y+/−(X−Y)に近くなり、「+」か「−」かは、YがX未満であるか否かに依存するであろう。読み出し均衡点がある方向は、読み出しデータの0/1バランスを50/50により近づけるのに対応する方向である。所与の実施例では、XからYに向かう方向である。閾値電圧分布の知識は、示される単純な線形補間というよりはむしろ、より高精度な補間をもたらすであろう。
実施形態例
前書きから発明を実施するための形態の結びにおいて、本明細書に記載される概念による、様々な実施形態のタイプの追加の説明を提供する、少なくともいくつかの明白に「EC」(組み合わせ例)として列挙されるものを含む、実施形態例の集合が続き、これらの実施例は、相互排他的であること、包括的であること、または制限的であることは意図されず、本発明は、これらの実施形態例に限定されず、むしろ、発行される特許請求の範囲の範囲内のすべての可能な修正物および変形物、ならびにそれらの均等物を包含する。
EC1)
NVMの少なくとも1つ以上の読み出しの0の数と1の数との間の不一致を判定するステップと、
該NVMからの訂正不可能な読み出しに応えて、少なくとも一部において、該判定された不一致に基づき、閾値電圧を選択的にシフトさせるステップを介して、後続の不一致を低減するステップと、
を含む、方法。
EC2)さらに、
該NVMは、複数個の状態を有するMLCメモリであり、該状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたMSBおよびLSB値を有し、該NVMの該1つ以上の読み出しは、MSB読み出しであり、
不一致を判定するステップは、該MSB読み出しのデータを選択的に反転させるために、該1つ以上のMSB読み出しに対応するLSB読み出しを使用するステップを含む、
EC1に記載の方法。
EC3)該少なくとも1つ以上の読み出しのそれぞれは、該NVMのそれぞれのページの少なくとも一部分の別個の読み出しである、EC1に記載の方法。
EC4)該不一致を判定するステップは、該0の数と該1の数との間の差を判定するステップを含む、EC1に記載の方法。
EC5)該0の数および該1の数は、それぞれのカウントを介して判定される、EC1に記載の方法。
EC6)該シフトさせるステップは、該差の絶対値が所定量未満の場合に実施されない、EC4に記載の方法。
EC7)該シフトは、該差の該絶対値が所定量未満の場合、所定の電圧分である、EC1に記載の方法。
EC8)該閾値電圧シフトの方向は、少なくとも一部において、NVM電荷状態に対する論理状態のマッピングに基づく、EC1に記載の方法。
EC9)該NVMは、該消去状態に対して論理1のマッピングを有するSLCメモリであり、該閾値電圧は、少なくとも一部において、該0の数が該1の数より少ないという判定に基づき、より低くシフトされる、EC1に記載の方法。
EC10)該閾値電圧は、少なくとも一部において、該不一致が所定量を超えるという判定にさらに基づき、より低くシフトされる、EC9に記載の方法。
EC11)該NVMは、該消去状態に対して論理1のマッピングを有するSLCメモリであり、該閾値電圧は、該不一致が、1が優勢であることを示すという判定に基づき、より低くシフトされる、EC1に記載の方法。
EC12)該NVMは、該消去状態に対して論理1のマッピングを有するSLCメモリであり、該閾値電圧は、少なくとも一部において、該0の数が該1の数を超えるという判定に基づき、より高くシフトされる、EC1に記載の方法。
EC13)該不一致は、所定量を超える、EC12に記載の方法。
EC14)該NVMは、該消去状態に対して論理1のマッピングを有するSLCメモリであり、該閾値電圧は、該不一致が、0が優勢であることを示すという判定に基づき、より高くシフトされる、EC1に記載の方法。
EC15)該差で使用される該0の数および該1の数は、複数個の読み出しに基づく、EC4に記載の方法。
EC16)該判定するステップは、複数個の閾値電圧のそれぞれで実施され、該シフトさせるステップは、少なくとも一部において、該判定される不一致に基づく、EC1に記載の方法。
EC17)NVMの少なくとも1つ以上の読み出しの0の数と1の数との間の不一致を判定するための手段と、
該NVMからの訂正不可能な読み出しに応えて、少なくとも一部において、該判定された不一致に基づき、閾値電圧を選択的にシフトさせるステップを介して、後続の不一致を低減するための手段と、
を備える、デバイス。
EC18)さらに、
該NVMは、複数個の状態を有するMLCメモリであり、該状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたMSBおよびLSB値を有し、該NVMの該1つ以上の読み出しは、MSB読み出しであり、
該不一致を判定するための手段は、該MSB読み出しのデータを選択的に反転させるために、該1つ以上のMSB読み出しに対応するLSB読み出しを使用するための手段を備える、
EC17に記載のデバイス。
EC19)該少なくとも1つ以上の読み出しのそれぞれは、該NVMのそれぞれのページの少なくとも一部分の別個の読み出しである、EC17に記載のデバイス。
EC20)該不一致を判定するステップは、該0の数と該1の数との間の差を判定するステップを含む、EC17に記載のデバイス。
EC21)該0の数および該1の数は、それぞれのカウントを介して判定される、EC17に記載のデバイス。
EC22)該シフトさせるステップは、該差の絶対値が所定量未満の場合に実施されない、EC20に記載のデバイス。
EC23)該差で使用される該0の数および該1の数は、複数個の読み出しに基づく、EC20に記載のデバイス。
EC24)該判定するステップは、複数個の閾値電圧のそれぞれで実施され、該シフトさせるステップは、少なくとも一部において、該判定される不一致に基づく、EC17に記載のデバイス。
EC25)不一致を判定するステップであって、該不一致のそれぞれは、それぞれの大きさを有し、NVMに記憶されている値および該NVMから読み出されるそれぞれの値のそれぞれの既知の分布のそれぞれの不一致である、ステップと、
周期的に、該NVMからの訂正不可能な読み出しに応えて、少なくとも一部において、該シフトの前に判定される該不一致のうちの少なくとも1つに基づき、少なくとも1つの読み出し閾値電圧を選択的にシフトさせるステップと、
を含む、方法。
EC26)該少なくとも1つの読み出し閾値電圧の各周期的にシフトされる値は、該シフトの後に判定される該不一致のうちの少なくとも1つの該それぞれの大きさを、所定量未満に保つという目標に従って判定される、EC25に記載の方法。
EC27)少なくとも次の訂正不可能な読み出しまで、該シフトの後に判定される該不一致のうちの該少なくとも1つの該それぞれの大きさが、該少なくとも1つの読み出し閾値電圧の単一の更新を介して、該所定量未満に低減される、EC26に記載の方法。
EC28)該NVMは、SLCである、EC25に記載の方法。
EC29)該NVMは、MLCである、EC25に記載の方法。
EC30)該MLCは、4LC MLCであり、該不一致は、E状態および複数個のD状態のうちの少なくとも2つの状態に関して評価される、EC29に記載の方法。
EC31)該MLCは、4LC MLCであり、該既知の分布は、4つの状態の間で25%−25%−25%−25%である、EC29に記載の方法。
EC32)該NVMは、複数個の状態を有するMLCであり、該状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたMSBおよびLSB値を有し、該少なくとも1つの閾値電圧は、より下位のページの読み出しに対して該不一致を判定するステップが実施されるのを考慮してシフトされ、該電圧シフトは、0が優勢の不一致に応えて第1の方向であり、1が優勢の不一致に応えて第2の方向である、EC25に記載の方法。
EC33)該NVMは、複数個の状態を有するMLCであり、状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたMSBおよびLSB値を有し、該少なくとも1つの閾値電圧は、より上位のページの読み出しに対して該不一致を判定するステップが実施されるのを考慮してシフトされる、EC25に記載の方法。
EC34)不一致を判定するために実施される、該より上位のページの読み出しは、該読み出し単位の各ビットの特定のLSBを使用して実施され、第1のLSB値では、該電圧シフトは、0が優勢の不一致に応えて第1の方向であり、1が優勢の不一致に応えて第2の方向であり、第2のLSB値では、該電圧シフトの方向感が逆転される、EC33に記載の方法。
EC35)該不一致判定のために実施される、該より上位のページの読み出しは、該読み出し単位の各ビットの特定のLSBを使用して実施され、該電圧シフトの方向は、少なくとも一部において、該より上位のページの読み出しの該特定のLSB値に基づいて、および少なくとも一部において、該不一致の本質に基づいて判定される、EC33に記載の方法。
EC36)該NVMは、E状態と、複数個のD状態とを有するMLCであり、最小の1つの閾値電圧は、該E状態と該複数個のD状態のうちの選択される1つとの間である、EC25に記載の方法。
EC37)該NVMは、E状態と、複数個のD状態とを有するMLCであり、最小の1つの閾値電圧は、該複数個のD状態のうちの選択される2つの隣接するD状態の間である、EC25に記載の方法。
EC38)さらに、
該NVMは、複数個の状態を有するMLCメモリであり、該状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたMSBおよびLSB値を有し、該NVMから読み出される該値では、該読み出しは、MSB読み出しであり、
該不一致を判定するステップは、該MSB読み出しのデータを選択的に反転させるために、該1つ以上のMSB読み出しに対応するLSB読み出しを使用するステップを含む、
EC25に記載の方法。
EC39)
不一致を判定するための手段であって、該不一致のそれぞれは、それぞれの大きさを有し、NVMに記憶されている値および該NVMから読み出されるそれぞれの値のそれぞれの既知の分布のそれぞれの不一致である、手段と、
周期的に、該NVMからの訂正不可能な読み出しに応えて、少なくとも一部において、該シフトの前に判定される該不一致のうちの少なくとも1つに基づき、少なくとも1つの読み出し閾値電圧を選択的にシフトさせるための手段と、
を備える、デバイス。
EC40)該少なくとも1つの読み出し閾値電圧の各周期的にシフトされる値は、該シフトの後に判定される該不一致のうちの少なくとも1つの該それぞれの大きさを、所定量未満に保つという目標に従って判定される、EC39に記載のデバイス。
EC41)少なくとも次の訂正不可能な読み出しまで、該シフトの後に判定される該不一致のうちの該少なくとも1つの該それぞれの大きさが、該少なくとも1つの読み出し閾値電圧の単一の更新を介して、該所定量未満に低減される、EC40に記載のデバイス。
EC42)該NVMは、SLCである、EC39に記載のデバイス。
EC43)該NVMは、MLCである、EC39に記載のデバイス。
EC44)
NVMから読み出されるデータの1つ以上の部分のそれぞれの0のカウントと1のカウントの差を判定するステップであって、
読み出し閾値の複数個の読み出し基準電圧設定のそれぞれで、該判定するステップが実施され、該差が計算される、ステップと、
閾値の中心点を計算するために、該計算された差の補間を使用するステップと、
少なくとも一部において、該計算された閾値の中心点に基づき、該読み出し閾値を、更新された読み出し基準電圧設定にシフトさせるステップと、
を含む、方法。
EC45)該補間は、線形補間である、EC44に記載の方法。
EC46)該差を判定するステップは、該0のカウントと該1のカウントの該差を計算する前に、該NVMの少なくとも1つ以上の読み出しの該0のカウントおよび該1のカウントを判定するステップを含む、EC44に記載の方法。
EC47)
NVMから読み出されるデータの1つ以上の部分のそれぞれの0のカウントと1のカウントの差を判定するための手段であって、読み出し閾値の複数個の読み出し基準電圧設定のそれぞれで、該判定が実施され、該差が計算される、手段と、
閾値の中心点を計算するために、該計算された差の補間を使用するための手段と、
少なくとも一部において、該計算された閾値の中心点に基づき、該読み出し閾値を、更新された読み出し基準電圧設定にシフトさせるための手段と、
を備える、デバイス。
EC48)該補間は、線形補間である、EC47に記載のデバイス。
EC49)該差を判定するための手段は、該0のカウントと該1のカウントの該差を計算する前に、該NVMの少なくとも1つ以上の読み出しの該0のカウントおよび該1のカウントを判定するための手段を備える、EC47に記載のデバイス。
EC50)
複数個の閾値電圧のそれぞれで、同一の読み出し単位のデータを読み出すステップと、
該同一の読み出し単位の各読み出しの0の読み出しカウントおよび1の読み出しカウントを判定するステップと、
少なくとも一部において、該読み出しカウントに基づき、閾値の中心点を計算するステップと、
少なくとも一部において、該読み出されたデータおよび該計算された閾値の中心点に基づき、軟判定情報を生成するステップと、
を含む、方法。
EC51)該閾値の中心点の計算は、少なくとも一部において、該0の読み出しカウントと該1の読み出しカウントの計算された差の補間を使用して実施される、EC50に記載の方法。
EC52)該補間は、線形補間である、EC51に記載の方法。
EC53)該軟判定情報の複数個の値は、該計算された閾値の中心点に対するそれぞれの閾値電圧オフセットで読み出されるデータに基づいて生成される、EC50に記載の方法。
EC54)該計算された閾値の中心点を超える、および中心点を下回る、該それぞれの電圧オフセットの同数に対応する、偶数の該値が生成される、EC53に記載の方法。
EC55)該計算された閾値の中心点を、該軟判定情報を生成するための基準として使用することは、そうでなければ存在し得るバイアスを低減することによって、生成される該軟判定情報の有効性を高める、EC53に記載の方法。
EC56)
複数個の閾値電圧のそれぞれで、同一の読み出し単位のデータを読み出すための手段と、
該同一の読み出し単位の各読み出しの0の読み出しカウントおよび1の読み出しカウントを判定するための手段と、
少なくとも一部において、該読み出しカウントに基づき、閾値の中心点を計算するための手段と、
少なくとも一部において、該読み出されたデータおよび該計算された閾値の中心点に基づき、軟判定情報を生成するための手段と、
を備える、デバイス。
EC57)該閾値の中心点の計算は、少なくとも一部において、該0の読み出しカウントと該1の読み出しカウントの計算された差の補間を使用して実施される、EC56に記載のデバイス。
EC58)該補間は、線形補間である、EC57に記載のデバイス。
EC59)該軟判定情報の複数個の値は、該計算された閾値の中心点に対するそれぞれの閾値電圧オフセットで読み出されるデータに基づいて生成される、EC56に記載のデバイス。
EC60)該計算された閾値の中心点を超える、および中心点を下回る、該それぞれの電圧オフセットの同数に対応する偶数の該値が生成される、EC59に記載のデバイス。
EC61)該計算された閾値の中心点を、該軟判定情報を生成するための基準として使用することは、そうでなければ存在し得るバイアスを低減することによって、生成される該軟判定情報の有効性を高める、EC59に記載のデバイス。
EC62)
複数個の閾値電圧のそれぞれで、同一の読み出し単位のデータを読み出すステップと、
該同一の読み出し単位の各読み出しの0のカウントおよび1のカウントを判定するステップと、
少なくとも一部において、該読み出しカウントに基づき、該複数個の閾値電圧のうちの 中心点に最も近い閾値電圧を識別するステップであって、該中心点に最も近い閾値電圧は、概念的閾値の中心点に対応する、ステップと、
少なくとも一部において、該読み出されるデータおよび該識別された中心点に最も近い閾値電圧に基づき、軟判定情報を生成するステップと、
を含む、方法。
EC63)該閾値の中心点の計算は、少なくとも一部において、該0の読み出しカウントと該1の読み出しカウントの計算される差の補間を使用して実施される、EC62に記載の方法。
EC64)該補間は、線形補間である、EC63に記載の方法。
EC65)該軟判定情報の複数個の値は、該計算される閾値の中心点に対するそれぞれの閾値電圧オフセットで読み出されるデータに基づいて生成される、EC62に記載の方法。
EC66)該それぞれの電圧オフセットによって判定される区間の数に対応する数の該値が生成される、EC65に記載の方法。
EC67)該計算される閾値の中心点を、該軟判定情報を生成するための基準として使用することは、そうでなければ存在し得るバイアスを低減することによって、該軟判定情報の有効性を高める、EC62に記載の方法。
EC68)
複数個の閾値電圧のそれぞれで、同一の読み出し単位のデータを読み出すための手段と、
該同一の読み出し単位の各読み出しの0のカウントおよび1のカウントを判定するための手段と、
少なくとも一部において、該読み出しカウントに基づき、該複数個の閾値電圧のうちの中心点に最も近い閾値電圧を識別するための手段であって、該中心点に最も近い閾値電圧は、概念的閾値の中心点に対応する、手段と、
少なくとも一部において、読み出される該データおよび該識別された中心点に最も近い閾値電圧に基づき、軟判定情報を生成するための手段と、
を備える、デバイス。
EC69)該閾値の中心点の計算は、少なくとも一部において、該0の読み出しカウントと該1の読み出しカウントの計算される差の補間を使用して実施される、EC68に記載のデバイス。
EC70)該補間は、線形補間である、EC69に記載のデバイス。
EC71)該軟判定情報の複数個の値は、該計算される閾値の中心点に対するそれぞれの閾値電圧オフセットで読み出されるデータに基づいて生成される、EC68に記載のデバイス。
EC72)該それぞれの電圧オフセットによって判定される区間の数に対応する数の該値が生成される、EC71に記載のデバイス。
EC73)該計算される閾値の中心点を、該軟判定情報を生成するための基準として使用することは、そうでなければ存在し得るバイアスを低減することによって、生成される該軟判定情報の有効性を高める、EC68に記載のデバイス。
EC74)
NVMにデータを記憶するステップであって、該記憶されるデータは、特定の0−1バランスを有する、ステップと、
0のカウントおよび1のカウントを維持するステップであって、該0のカウントおよび該1のカウントは、読み出しカウントである、ステップと、
該0のカウント、該1のカウント、および該特定の0−1バランスの関数として、該NVMの0−1バランスを評価するステップと、
該NVMからの訂正不可能な読み出し、および該0−1バランスが指定範囲外であるという判定の後に、該閾値電圧を、少なくとも一部において、該評価に基づき、該閾値電圧の可能な限り少ないシフトで該0−1バランスを該指定範囲内に回復するという目標に従って判定される値にシフトさせるステップと、
を含み、
該NVMからのデータ復元が、最適化される、
方法。
EC75)さらに、
該閾値電圧の該シフトは、該0−1バランスが該特定の0−1バランスに対して過度の1を含むという判定に基づき、より低い電圧へのシフトであり、
該閾値電圧の該シフトは、該0−1バランスが該特定の0−1バランスに対して過度の0を含むという判定に基づき、より高い電圧へのシフトである、
EC74に記載の方法。
EC76)該データは、暗号化方法の使用の結果として記憶され、該特定の0−1バランスは、50%の0および50%の1である、EC74に記載の方法。
EC77)該特定の0−1バランスは、55%未満の0および45%超過の1に対応する、EC74に記載の方法。
EC78)該特定の0−1バランスが52.5%超過の0に対応する確率は、1/10,000未満である、EC74に記載の方法。
EC79)該特定の0−1バランスは、45%未満の0および55%超過の1に対応する、EC74に記載の方法。
EC80)
データをNVMに記憶するための手段であって、該記憶されるデータは、特定の0−1バランスを有する、手段と、
0のカウントおよび1のカウントを維持するための手段であって、該0のカウントおよび該1のカウントは、読み出しカウントである、手段と、
該0のカウント、該1のカウント、および該特定の0−1バランスの関数として、該NVMの0−1バランスを評価するための手段と、
該NVMからの訂正不可能な読み出し、および該0−1バランスが指定範囲外であるという判定の後に、該閾値電圧を、少なくとも一部において、該評価に基づき、該閾値電圧の可能な限り少ないシフトで該0−1バランスを該指定範囲内に回復するという目標に従って判定される値にシフトさせるための手段と、
を含み、
該NVMからのデータ復元が、最適化される、
デバイス。
EC81)さらに、
該閾値電圧の該シフトは、該0−1バランスが該特定の0−1バランスに対して過度の1を含むという判定に基づき、より低い電圧へのシフトであり、
該閾値電圧の該シフトは、該0−1バランスが該特定の0−1バランスに対して過度の0を含むという判定に基づき、より高い電圧へのシフトである、
EC80に記載のデバイス。
EC82)該データは、暗号化方法の使用の結果として記憶され、該特定の0−1バランスは、50%の0および50%の1である、EC80に記載のデバイス。
EC83)該特定の0−1バランスは、55%未満の0および45%超過の1に対応する、EC80に記載のデバイス。
EC84)該特定の0−1バランスが52.5%超過の0に対応する確率は、1/10,000未満である、EC80に記載のデバイス。
EC85)該特定の0−1バランスは、45%未満の0および55%超過の1に対応する、EC80に記載のデバイス。
EC86)
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の0のビットと、既知の統計的平均数の1のビットとを有するスクランブルされたデータを発生させるステップと、
該スクランブルされたデータを該不揮発性メモリの該部分に書き込むステップと、
該書き込むステップの後に、該不揮発性メモリの該部分を読み出すステップと、
該不揮発性メモリの該部分から読み出されるデータの0のビット数と1のビット数との間の不一致を演算するステップと、
少なくとも一部において、該不一致に基づき、該不揮発性メモリの後続の読み出しのための閾値電圧を判定するステップと、
を含む、方法。
EC87)該判定は、0のビットの該既知の統計的平均数または1のビットの該既知の統計的平均数にさらに基づく、EC86に記載の方法。
EC88)
該不揮発性メモリの該部分を、該閾値電圧を使用して再読み出しするステップ
をさらに含む、EC86に記載の方法。
EC89)該書き込むステップは、ECCエンコーダを用いて、該スクランブルされたデータをエンコードし、該エンコードされたスクランブルされたデータを該不揮発性メモリの該部分に書き込むステップを含み、
該再読み出しするステップの前に、ECCデコーダを用いて、該不揮発性メモリの該部分から読み出された該データをデコードして、該不揮発性メモリの該部分から読み出された該データが訂正不可能であると判定するステップをさらに含む、
EC88に記載の方法。
EC90)該不一致は、第1の不一致であり、該閾値電圧は、第1の閾値電圧であり、
該ECCデコーダを用いて、該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされたデータをデコードして、該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされた該データが訂正不可能であると判定するステップと、
該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされた該データの0のビット数と1のビット数との間の第2の不一致を演算するステップと、
少なくとも一部において、該第1の不一致および該第2の不一致に基づき、該不揮発性メモリの第2の再読み出しのための第2の閾値電圧を判定するステップと、
をさらに含む、EC89に記載の方法。
EC91)
該不揮発性メモリの該部分を、該第2の閾値電圧を使用して再読み出しするステップ
をさらに含む、EC90に記載の方法。
EC92)該ECCエンコーダは、該スクランブルされたデータに1バイト以上を追加し、該ECCエンコーダによって追加される該1バイト以上は、該既知の統計的平均数の0のビットと、該既知の統計的平均数の1のビットとを有する、EC89に記載の方法。
EC93)
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の0のビットと、既知の統計的平均数の1のビットとを有するスクランブルされたデータを発生させるための手段と、
該スクランブルされたデータを該不揮発性メモリの該部分に書き込むための手段と、
該書き込みの後に、該不揮発性メモリの該部分を読み出すための手段と、
該不揮発性メモリの該部分から読み出されるデータの0のビット数と1のビット数との間の不一致を演算するための手段と、
少なくとも一部において、該不一致に基づき、該不揮発性メモリの後続の読み出しのための閾値電圧を判定するための手段と、
を備える、デバイス。
EC94)該判定は、0のビットの該既知の統計的平均数または1のビットの該既知の統計的平均数にさらに基づく、EC93に記載のデバイス。
EC95)
該不揮発性メモリの該部分を、該閾値電圧を使用して再読み出しするための手段
をさらに備える、EC93に記載のデバイス。
EC96)該書き込みは、ECCエンコーダを用いて、該スクランブルされたデータをエンコードし、該エンコードされたスクランブルされたデータを該不揮発性メモリの該部分に書き込むことを含み、
該再読み出しの前に、ECCデコーダを用いて、該不揮発性メモリの該部分から読み出された該データをデコードして、該不揮発性メモリの該部分から読み出された該データが訂正不可能であると判定するための手段
をさらに備える、EC95に記載のデバイス。
EC97)該不一致は、第1の不一致であり、該閾値電圧は、第1の閾値電圧であり、
該ECCデコーダを用いて、該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされたデータをデコードして、該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされた該データが訂正不可能であると判定するための手段と、
該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされた該データの0のビット数と1のビット数との間の第2の不一致を演算するための手段と、
少なくとも一部において、該第1の不一致および該第2の不一致に基づき、該不揮発性メモリの第2の再読み出しのための第2の閾値電圧を判定するための手段と、
をさらに備える、EC96に記載のデバイス。
EC98)該不揮発性メモリの該部分を、該第2の閾値電圧を使用して再読み出しするための手段をさらに備える、EC97に記載のデバイス。
EC99)該ECCエンコーダは、該スクランブルされたデータに1バイト以上を追加し、該ECCエンコーダによって追加される該1バイト以上は、該既知の統計的平均数の0のビットと、該既知の統計的平均数の1のビットとを有する、EC96に記載のデバイス。
EC100)命令セットが記憶されている有形のコンピュータ可読媒体であって、該命令セットは、処理要素によって実行される際に、該処理要素に、
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の0のビットと、既知の統計的平均数の1のビットとを有するスクランブルされたデータを発生させる動作と、
該スクランブルされたデータを該不揮発性メモリの該部分に書き込む動作と、
該書き込みの後に、該不揮発性メモリの該部分を読み出す動作と、
該不揮発性メモリの該部分から読み出されるデータの0のビット数と1のビット数との間の不一致を演算する動作と、
少なくとも一部において、該不一致に基づき、該不揮発性メモリの後続の読み出しのための閾値電圧を判定する動作と、
を含む動作を実施および/または制御させる、
有形のコンピュータ可読媒体。
EC101)該判定は、0のビットの該既知の統計的平均数または1のビットの該既知の統計的平均数にさらに基づく、EC100に記載の有形のコンピュータ可読媒体。
EC102)該動作は、
該不揮発性メモリの該部分を、該閾値電圧を使用して再読み出しする動作
をさらに含む、EC100に記載の有形のコンピュータ可読媒体。
EC103)該書き込みは、ECCエンコーダを用いて、該スクランブルされたデータをエンコードし、該エンコードされたスクランブルされたデータを該不揮発性メモリの該部分に書き込むことを含み、該動作は、
該再読み出しの前に、ECCデコーダを用いて、該不揮発性メモリの該部分から読み出された該データをデコードして、該不揮発性メモリの該部分から読み出された該データが訂正不可能であると判定する動作
をさらに含む、EC102に記載の有形のコンピュータ可読媒体。
EC104)該不一致は、第1の不一致であり、該閾値電圧は、第1の閾値電圧であり、該動作は、
該ECCデコーダを用いて、該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされたデータをデコードして、該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされた該データが訂正不可能であると判定する動作と、
該不揮発性メモリの該部分から該第1の閾値電圧を使用して再読み出しされた該データの0のビット数と1のビット数との間の第2の不一致を演算する動作と、
少なくとも一部において、該第1の不一致および該第2の不一致に基づき、該不揮発性メモリの第2の再読み出しのための第2の閾値電圧を判定する動作と、
をさらに含む、EC103に記載の有形のコンピュータ可読媒体。
EC105)該動作は、
該不揮発性メモリの該部分を、該第2の閾値電圧を使用して再読み出しする動作
をさらに含む、EC104に記載の有形のコンピュータ可読媒体。
EC106)該ECCエンコーダは、該スクランブルされたデータに1バイト以上を追加し、該ECCエンコーダによって追加される該1バイト以上は、該既知の統計的平均数の0のビットと、該既知の統計的平均数の1のビットとを有する、EC103に記載の有形のコンピュータ可読媒体。
システム
図1Aは、NVM要素(例えば、フラッシュメモリ)を介して実現されるもの等の不揮発性ストレージを管理するために0/1バランス回復を使用するSSDコントローラを含む、SSD101の実施形態の選択された詳細を図示する。SSDコントローラ100は、1つ以上の外部インターフェース110を介して、ホスト(図1Bのホスト102等)に通信可能に連結される。様々な実施形態によると、外部インターフェース110は、SATAインターフェース、SASインターフェース、PCIeインターフェース、ファイバチャネルインターフェース、イーサネット(登録商標)インターフェース(10ギガビットイーサネット(登録商標)等)、前述のインターフェースのいずれかの非標準版、カスタムインターフェース、あるいはストレージおよび/もしくはコンピューティングデバイスの相互接続ならびに/または通信のために使用される任意の他のタイプのインターフェースのうちの1つ以上である。例えば、いくつかの実施形態では、SSDコントローラ100は、SATAインターフェースと、PCIeインターフェースとを含む。
SSDコントローラ100は、1つ以上のデバイスインターフェース190を介して、1つ以上のフラッシュデバイス192等の1つ以上のストレージデバイスを含むNVM199にさらに通信可能に連結される。様々な実施形態によると、デバイスインターフェース190は、非同期インターフェース、同期インターフェース、シングルデータレート(SDR)インターフェース、ダブルデータレート(DDR)インターフェース、DRAM互換DDRもしくはDDR2同期インターフェース、ONFI 2.2もしくはONFI 3.0互換インターフェース等のONFI互換インターフェース、トグルモード互換フラッシュインターフェース、前述のインターフェースのいずれかの非標準版、カスタムインターフェース、またはストレージデバイスを接続するために使用される任意の他のタイプのインターフェースのうちの1つ以上である。
いくつかの実施形態では、各フラッシュデバイス192は、1つ以上の個々のフラッシュダイ194を有する。特定の1つのタイプのフラッシュデバイス192によると、特定のフラッシュデバイス192内の複数個のフラッシュダイ194は、任意選択で、および/または選択的に、並列アクセス可能である。フラッシュデバイス192は、SSDコントローラ100に通信可能に連結することができる、1つのタイプのストレージデバイスを表すにすぎない。様々な実施形態では、SLC NANDフラッシュメモリ、MLC NANDフラッシュメモリ、NORフラッシュメモリ、ポリシリコンまたは窒化ケイ素技術ベースの電荷ストレージセルを使用するフラッシュメモリ、2次元もしくは3次元技術ベースのフラッシュメモリ、読み出し専用メモリ、静的ランダムアクセスメモリ、動的ランダムアクセスメモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、ReRAM、または任意の他のタイプのメモリデバイスもしくはストレージ媒体等の任意のタイプのストレージデバイスが使用可能である。
様々な実施形態によると、デバイスインターフェース190は、バス毎に1つ以上のフラッシュデバイス192を伴う1つ以上のバスとして構成される、グループ内のバスが一般的に並列アクセスされる、バス毎に1つ以上のフラッシュデバイス192を伴うバスの1つ以上のグループとして構成される、またはデバイスインターフェース190上に1つ以上のフラッシュデバイス192の任意の他の構成で構成される。
図1Aを続けて、SSDコントローラ100は、ホストインターフェース111、データ処理121、バッファ131、マップ141、リサイクラー151、ECC161、デバイスインターフェース論理191、およびCPU171等の1つ以上のモジュールを有する。図1Aに図示される具体的なモジュールおよび相互接続は、一実施形態を表すにすぎず、モジュールのうちのいくつかまたはすべて、ならびに図示されていない追加のモジュールの多くの配設および相互接続が考え出される。第1の実施例では、いくつかの実施形態では、2つ以上のホストインターフェース111が存在し、デュアルポートを提供する。第2の実施例では、いくつかの実施形態では、データ処理121および/またはECC161が、バッファ131と組み合わせられる。第3の実施例では、いくつかの実施形態では、ホストインターフェース111は、バッファ131に直接連結され、データ処理121は、任意選択で、および/または選択的に、バッファ131に記憶されているデータに対して動作する。第4の実施例では、いくつかの実施形態では、デバイスインターフェース論理191は、バッファ131に直接連結され、ECC161は、任意選択で、および/または選択的に、バッファ131に記憶されているデータに対して動作する。
ホストインターフェース111は、外部インターフェース110を介してコマンドおよび/またはデータを送受信し、いくつかの実施形態では、タグ追跡113を介して個々のコマンドの進捗を追跡する。例えば、コマンドは、読み出すアドレス(LBA等)およびデータ量(LBA分量、例えば、セクタの数等)を指定する読み出しコマンドを含み、それに応えて、SSDは、読み出しステータスおよび/または読み出しデータを提供する。別の実施例では、コマンドは、書き込むアドレス(LBA等)およびデータ量(LBA分量、例えば、セクタの数等)を指定する書き込みコマンドを含み、それに応えて、SSDは、書き込みステータスを提供する、および/または書き込みデータを要求し、任意選択で、続いて書き込みステータスを提供する。さらに別の実施例では、コマンドは、もはや割り当てておく必要がない1つ以上のアドレス(1つ以上のLBA等)を指定する、割り当て解除コマンド(例えば、トリムコマンド)を含み、それに応えて、SSDは、それに応じてマップを修正し、任意選択で、割り当て解除ステータスを提供する。いくつかの文脈では、ATA互換TRIMコマンドが、例示的な割り当て解除コマンドである。さらに別の実施例では、コマンドは、超コンデンサ試験コマンドまたはデータ強化成功クエリを含み、それに応えて、SSDは、適切なステータスを提供する。いくつかの実施形態では、ホストインターフェース111は、SATAプロトコルと互換性があり、NCQコマンドを使用することで、それぞれが0〜31の番号で表される一意のタグを伴う、最大で32の保留コマンドを有することができる。いくつかの実施形態では、タグ追跡113は、外部インターフェース110を介して受信されるコマンドの外部タグを、SSDコントローラ100による処理中にコマンドを追跡するために使用される内部タグと関連付けることができる。
様々な実施形態によると、データ処理121は、任意選択で、および/もしくは選択的に、バッファ131と外部インターフェース110との間で送信されるデータの一部またはすべてを処理すること、ならびにデータ処理121は、任意選択で、および/または選択的に、バッファ131に記憶されているデータを処理することのうちの1つ以上を行う。いくつかの実施形態では、データ処理121は、書式設定、再書式設定、トランスコーディング、ならびに任意の他のデータ処理および/または操作タスクのうちの1つ以上を実施するために、1つ以上のエンジン123を使用する。
バッファ131は、外部インターフェース110とデバイスインターフェース190との間で送信されるデータを記憶する。いくつかの実施形態では、バッファ131は、1つ以上のフラッシュデバイス192を管理するためにSSDコントローラ100によって使用される、マップテーブルのうちのいくつかまたはすべて等のシステムデータを追加で記憶する。様々な実施形態では、バッファ131は、データの一時記憶のために使用されるメモリ137、バッファ131へ、および/またはバッファ131からのデータの移動を制御するために使用されるDMA133、ならびにより高いレベルのエラー訂正および/または冗長機能、ならびに他のデータ移動および/または操作機能を提供するために使用されるECC−X135のうちの1つ以上を有する。より高いレベルの冗長機能の例とは、RAIDのような能力であり、冗長性は、ディスクレベルである代わりに、フラッシュデバイス(例えば、複数のフラッシュデバイス192)レベルおよび/またはフラッシュダイ(例えば、フラッシュダイ194)レベルである。
様々な実施形態によると、ECC161は、任意選択で、および/または選択的に、バッファ131とデバイスインターフェース190との間で送信されるデータの一部またはすべてを処理すること、ならびにECC161は、任意選択で、および/または選択的に、バッファ131に記憶されているデータを処理することのうちの1つ以上を行う。いくつかの実施形態では、ECC161は、1つ以上のECC技法によるもの等のより低いレベルのエラー訂正および/または冗長機能を提供するために使用される。いくつかの実施形態では、ECC161は、CRCコード、ハミングコード、RSコード、BCHコード、LDPCコード、ビタビコード、トレリスコード、硬判定コード、軟判定コード、消去ベースコード、任意のエラー検出および/または訂正コード、および前述の任意の組み合わせのうちの1つ以上を実装する。いくつかの実施形態では、ECC161は、1つ以上のデコーダ(LDPCデコーダ等)を含む。
デバイスインターフェース論理191は、デバイスインターフェース190を介して、フラッシュデバイス192のインスタンスを制御する。デバイスインターフェース論理191は、フラッシュデバイス192のプロトコルに従って、フラッシュデバイス192のインスタンスとの間でデータを送信することができる。デバイスインターフェース論理191は、デバイスインターフェース190を介して、フラッシュデバイス192のインスタンスの制御を選択的に順序付けるために、スケジューリング193を含む。例えば、いくつかの実施形態では、スケジューリング193は、フラッシュデバイス192のインスタンスに対する動作を待ち行列に入れること、およびフラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々の1つが利用可能である際に、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々の1つに動作を選択的に送信することができる。
マップ141は、外部データアドレスをNVM199内の位置にマップするために、テーブル143を使用して、外部インターフェース110上で使用されるデータアドレス指定とデバイスインターフェース190上で使用されるデータアドレス指定とを変換する。例えば、いくつかの実施形態では、マップ141は、テーブル143によって提供されるマッピングを介して、外部インターフェース110上で使用されるLBAを、1つ以上のフラッシュダイ194を標的とするブロックおよび/またはページアドレスに変換する。ドライブ製造または割り当て解除から1度も書き込まれていないLBAでは、マップは、LBAが読み出される場合に戻るように、初期値を指す。例えば、割り当て解除コマンドを処理する際、マップは、割り当てが解除されたLBAに対応するエントリが初期値のうちの1つを指すように修正される。様々な実施形態では、それぞれが対応するポインタを有する、様々な初期値が存在する。複数個の初期値は、1つの初期値として、いくつかの割り当てが解除されたLBA(第1の範囲内のもの等)を読み出すことを可能にし、一方、別の初期値として、他の割り当てが解除されたLBA(第2の範囲内のもの等)を読み出すことを可能にする。様々な実施形態では、初期値は、フラッシュメモリ、ハードウェア、ファームウェア、コマンド、ならびに/またはプリミティブ型引数および/もしくはパラメータ、プログラマブルレジスタ、あるいはそれらの様々な組み合わせによって定義される。
いくつかの実施形態では、マップ141は、外部インターフェース110上で使用されるアドレスとデバイスインターフェース190上で使用されるデータアドレス指定との間での翻訳を実施および/または検索するために、テーブル143を使用する。様々な実施形態によると、テーブル143は、1レベルマップ、2レベルマップ、マルチレベルマップ、マップキャッシュ、圧縮マップ、あるアドレス空間から別のアドレス空間への任意のタイプのマッピング、および前述の任意の組み合わせのうちの1つ以上である。様々な実施形態によると、テーブル143は、静的ランダムアクセスメモリ、動的ランダムアクセスメモリ、NVM(フラッシュメモリ等)、キャッシュメモリ、オンチップメモリ、オフチップメモリ、および前述の任意の組み合わせのうちの1つ以上を含む。
いくつかの実施形態では、リサイクラー151は、ゴミ収集を実施する。例えば、いくつかの実施形態では、フラッシュデバイス192のインスタンスは、ブロックが再度書き込み可能となる前に消去されなければならないブロックを含有する。リサイクラー151は、マップ141によって維持されるマップをスキャンすること等によって、フラッシュデバイス192のインスタンスのどの部分がアクティブに使用中である(例えば、割り当てが解除されている代わりに割り当てられている)かを判定し、それらを消去することによって、書き込みに利用可能なフラッシュデバイス192のインスタンスの未使用(例えば、割り当てが解除されている)部分を作ることができる。さらなる実施形態では、リサイクラー151は、フラッシュデバイス192のインスタンス内に記憶されているデータを移動させて、書き込みに利用可能なフラッシュデバイス192のインスタンスのより大きい連続した部分を作ることができる。
いくつかの実施形態では、フラッシュデバイス192のインスタンスは、異なるタイプおよび/または特性のデータを記憶するための1つ以上のバンドを有するように、選択的および/もしくは動的に構成される、管理される、ならびに/または使用される。バンドの数、配設、サイズ、およびタイプは、動的に変更可能である。例えば、コンピューティングホストからのデータは、ホット(アクティブ)バンドに書き込まれ、一方、リサイクラー151からのデータは、コールド(それほどアクティブではない)バンドに書き込まれる。いくつかの使用シナリオでは、コンピューティングホストが長い順次ストリームを書き込む場合、ホットバンドのサイズが成長し、その一方で、コンピューティングホストがランダム書き込みまたは少ない書き込みを行う場合、コールドバンドのサイズが成長する。
CPU171は、SSDコントローラ100の様々な部分を制御する。CPU171は、CPUコア172を含む。様々な実施形態によると、CPUコア172は、1つ以上のシングルコアまたはマルチコアプロセッサである。いくつかの実施形態では、CPUコア172内の個々のプロセッサコアは、マルチスレッドである。CPUコア172は、命令および/もしくはデータキャッシュならびに/またはメモリを含む。例えば、命令メモリは、CPUコア172が、プログラム(例えば、ファームウェアと称される場合があるソフトウェア)を実行して、SSDコントローラ100を制御することを可能にする、命令を含有する。いくつかの実施形態では、CPUコア172によって実行されるファームウェアのうちのいくつかまたはすべては、フラッシュデバイス192のインスタンス上に記憶される(例えば、図1BのNVM199のファームウェア106として図示されるように)。
様々な実施形態では、CPU171は、外部インターフェース110を介して受信されたコマンドを、コマンドが進行している間、追跡し、制御する、コマンド管理173と、バッファ131の割り当ておよび使用を制御する、バッファ管理175と、マップ141を制御する、翻訳管理177と、データアドレス指定の整合性を制御し、外部データアクセスとリサイクルデータアクセスとの間等の衝突を回避する、一貫性管理179と、デバイスインターフェース論理191を制御する、デバイス管理181と、識別情報の修正および通信を制御する、アイデンティティ管理182と、任意選択で他の管理ユニットとをさらに含む。様々な実施形態によると、CPU171によって実施される管理機能のうちのいずれも、ハードウェアによって、ソフトウェア(CPUコア172上もしくは外部インターフェース110を介して接続されているホスト上で実行されているファームウェア等)によって、もしくはそれらの任意の組み合わせによって制御および/または管理されない、あるいは、CPU171によって実施される管理機能のうちのいずれか、またはすべてが、ハードウェアによって、ソフトウェア(CPUコア172上もしくは外部インターフェース110を介して接続されているホスト上で実行されているファームウェア等)によって、またはそれらの任意の組み合わせによって制御および/または管理される。
いくつかの実施形態では、CPU171は、性能統計収集および/または報告、SMARTの実装、電力シーケンスの制御、電力消費の制御および/または監視および/または調節、電力障害に対する対応、クロック速度の制御および/または監視および/または調節、ならびに他の管理タスクのうちの1つ以上等の他の管理タスクを実施することができる。
様々な実施形態は、SSDコントローラ100と同様であり、ホストインターフェース111および/または外部インターフェース110の適応を介したもの等の様々なコンピューティングホストとの動作と互換性がある、コンピューティングホストフラッシュメモリコントローラを含む。様々なコンピューティングホストには、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレットデバイスまたはコンピュータ、ウルトラブックコンピュータ、電子書籍表示デバイス(e−リーダ等)、PDA、ナビゲーションシステム、(手持ち式)GPSデバイス、自動車制御システム、自動車用メディア制御システムまたはコンピュータ、プリンタ、コピー機もしくはファックス機または一体型デバイス、POSデバイス、キャッシュレジスタ、メディアプレーヤ、テレビ、メディアレコーダ、DVR、デジタルカメラ、携帯電話用ハンドセット、コードレス電話用ハンドセット、および電子ゲームのうちの1つ、またはそれらの任意の組み合わせを含む。
様々な実施形態では、SSDコントローラ(もしくはコンピューティングホストフラッシュメモリコントローラ)のすべてまたは任意の部分は、単一のIC上、マルチダイICの単一のダイ上、マルチダイICの複数個のダイ上、または複数個のIC上に実装される。例えば、バッファ131は、SSDコントローラ100の他の要素と同一のダイ上に実装される。別の実施例では、バッファ131は、SSDコントローラ100の他の要素とは異なるダイ上に実装される。
図1Bは、図1AのSSDの1つ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を図示する。SSD101は、デバイスインターフェース190を介してNVM199に連結されたSSDコントローラ100を含む。図は、実施形態の様々な種類、ホストに直接連結された単一のSSD、それぞれがそれぞれの外部インターフェースを介してそれぞれにホストに直接連結された複数個のSSD、および様々な相互接続要素を介して間接的にホストに連結された1つ以上のSSDを図示する。
ホストに直接連結された単一のSSDの実施形態例として、SSD101の1つのインスタンスは、外部インターフェース110を介して、ホスト102に直接連結される(例えば、スイッチ/ファブリック/中間コントローラ103が、省略、迂回、またはパススルーされている)。それぞれがそれぞれの外部インターフェースを介してホストに直接連結された複数個のSSDの実施形態例として、SSD101の複数個のインスタンスのそれぞれは、外部インターフェース110のそれぞれのインスタンスを介して、それぞれホスト102に直接連結される(例えば、スイッチ/ファブリック/中間コントローラ103は、省略、迂回、またはパススルーされている)。様々な相互接続要素を介してホストに間接的に連結された1つ以上のSSDの実施形態例として、SSD101の1つ以上のインスタンスのそれぞれは、ホスト102にそれぞれ間接的に連結される。各間接的連結は、スイッチ/ファブリック/中間コントローラ103に連結された外部インターフェース110およびホスト102に連結する中間インターフェース104のそれぞれのインスタンスを介した連結である。
また、スイッチ/ファブリック/中間コントローラ103を含む実施形態のうちのいくつかは、メモリインターフェース180を介して連結され、SSDがアクセス可能である、カードメモリ112Cも含む。様々な実施形態では、SSD、スイッチ/ファブリック/中間コントローラ、および/またはカードメモリのうちの1つ以上は、物理的に識別可能なモジュール、カード、またはプラグ着脱可能な要素(例えば、I/Oカード116)上に含まれる。いくつかの実施形態では、SSD101(またはその変形物)は、ホスト102として動作するイニシエータに連結される、SASドライブまたはSATAドライブに対応する。
ホスト102は、OS105、ドライバ107、アプリケーション109、およびマルチデバイス管理ソフトウェア114の様々な組み合わせ等のホストソフトウェア115の様々な要素を実行することができる。点線矢印107Dは、ホストソフトウェア←→I/Oデバイス通信、例えば、SSD101のインスタンスのうちの1つ以上の間で送受信されるデータ、およびドライバ107を介してOS105のうちの任意の1つ以上との間で送受信されるデータ、ドライバ107との間で送受信されるデータ、ならびにドライバ107を介して、もしくはVFとして直接アプリケーション109との間で送受信されるデータを表す。
OS105は、SSDとインターフェースをとるために、ドライバ(ドライバ107によって概念的に図示される)を含む、および/または該ドライバと共に動作することができる。OS105の例は、Windows(登録商標)の様々なバージョン(例えば、95、98、ME、NT、XP、2000、サーバ、Vista、および7)、Linux(登録商標)の様々なバージョン(例えば、Red Hat、Debian、およびUbuntu)、ならびにMacOSの様々なバージョン(例えば、8、9、およびX)である。様々な実施形態では、ドライバは、SATA、AHCI、もしくはNVM Express等の標準インターフェースおよび/またはプロトコルで動作する、標準の、および/または一般的なドライバ(「市販される」もしくは「あらかじめインストールされている」と称される場合がある)である、あるいは任意選択で、SSD101に固有のコマンドを使用することができるようにカスタマイズされた、および/またはSSD101に固有のコマンドを使用することができるベンダー固有のドライバである。いくつかのドライブおよび/またはドライバは、アプリケーション109等のアプリケーションレベルのプログラムが、最適化NANDアクセス(ONAと称される場合がある)または直接NANDアクセス(DNAと称される場合がある)技法等を介して、SSD101にコマンドを直接通信し、一般的なドライバを用いてでさえ、カスタマイズされたアプリケーションがSSD101に固有のコマンドを使用することを可能にするために、パススルーモードを有する。ONA技法は、非標準修飾子(ヒント)の使用、ベンダー固有のコマンドの使用、圧縮率による実際のNVM使用量等の非標準統計の通信、および他の技法のうちの1つ以上を含む。DNA技法は、NVMのマップされていない読み出し、NVMへのマップされていない書き込み、および/またはNVMへのマップされていない消去アクセスを提供する、非標準またはベンダー固有のコマンドの使用、そうでなければI/Oデバイスが行い得るデータ書式設定を迂回すること等によって、NVMへのより直接的なアクセスを提供する、非標準またはベンダー固有のコマンドの使用、および他の技法のうちの1つ以上を含む。ドライバの例は、ONAまたはDNAがサポートされていないドライバ、ONA対応ドライバ、DNA対応ドライバ、およびONA/DNA対応ドライバである。ドライバのさらなる例は、ベンダーが提供する、ベンダーが開発した、および/またはベンダーが拡張したドライバ、ならびにクライアントが提供する、クライアントが開発した、および/またはクライアントが拡張したドライバである。
アプリケーションレベルのプログラムの例は、ONAまたはDNAがサポートされていないアプリケーション、ONA対応アプリケーション、DNA対応アプリケーション、およびONA/DNA対応アプリケーションである。点線矢印109Dは、アプリケーション←→I/Oデバイス通信(例えば、ドライバまたはアプリケーションのVFを介して迂回する)、例えば、アプリケーションが中間物としてOSを使用すること等なく、SSDと通信する、ONA対応アプリケーションおよびONA対応ドライバを表す。点線矢印109Vは、アプリケーション←→I/Oデバイス通信(例えば、アプリケーションのVFを介して迂回する)、例えば、アプリケーションがOSまたはドライバを中間物として使用すること等なく、SSDと通信する、DNA対応アプリケーションおよびDNA対応ドライバを表す。
いくつかの実施形態では、ファームウェアストレージ、例えば、ファームウェア106に、NVM199のうちの1つ以上の部分が使用される。ファームウェアストレージは、1つ以上のファームウェアイメージ(またはその部分)を含む。ファームウェアイメージは、例えば、例えばSSDコントローラ100のCPUコア172によって実行されるファームウェアの1つ以上のイメージを有する。別の実施例では、ファームウェアイメージは、例えば、ファームウェア実行中にCPUコアによって参照される、定数、パラメータ値、およびNVMデバイス情報の1つ以上のイメージを有する。ファームウェアのイメージは、例えば、現在のファームウェアイメージ、および0またはそれ以上前の(ファームウェア更新に関して)ファームウェアイメージに対応する。様々な実施形態では、ファームウェアは、一般的な標準のONAおよび/またはDNA動作モードを提供する。いくつかの実施形態では、任意選択でドライバによって通信および/もしくは提供されるキーまたは様々なソフトウェア技法を介して、ファームウェア動作モードのうちの1つ以上が有効化される(例えば、1つ以上のAPIが「解除される」)。
スイッチ/ファブリック/中間コントローラがない、いくつかの実施形態では、SSDは、外部インターフェース110を介して、ホストに直接連結される。様々な実施形態では、SSDコントローラ100は、RAIDコントローラ等の1つ以上の中間レベルの他のコントローラを介して、ホストに連結される。いくつかの実施形態では、SSD101(またはその変形物)は、SASドライブまたはSATAドライブに対応し、スイッチ/ファブリック/中間コントローラ103は、次いでイニシエータに連結されるエクスパンダに対応するか、または代替えとして、スイッチ/ファブリック/中間コントローラ103は、エクスパンダを介してイニシエータに間接的に連結されるブリッジに対応する。いくつかの実施形態では、スイッチ/ファブリック/中間コントローラ103は、1つ以上のPCIeスイッチおよび/またはファブリックを含む。
ホスト102がコンピューティングホスト(例えば、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、および/またはネットブックコンピュータ)である実施形態のうちのいくつか等の様々な実施形態では、コンピューティングホストは、任意選択で、1つ以上のローカルおよび/またはリモートサーバ(例えば、任意選択のサーバ118)と通信することができる(例えば、任意選択のI/O&ストレージデバイス/資源117および任意選択のLAN/WAN119を介して)。通信は、例えば、ローカルおよび/もしくはリモートアクセス、管理、ならびに/またはSSD101要素のうちの任意の1つ以上の使用を可能にする。いくつかの実施形態では、通信は、完全に、または部分的に、イーサネット(登録商標)を介して行われる。いくつかの実施形態では、通信は、完全に、または部分的に、ファイバチャネルを介して行われる。様々な実施形態では、LAN/WAN119は、サーバファーム、ネットワークコンピューティングサーバファーム、メトロエリアネットワーク、およびインターネット内のネットワークの任意の1つ以上等の1つ以上のローカルおよび/または広域ネットワークを表す。
様々な実施形態では、1つ以上のNVMと組み合わせられたSSDコントローラおよび/またはコンピューティングホストフラッシュメモリコントローラは、USBストレージ構成要素、CFストレージ構成要素、MMCストレージ構成要素、eMMCストレージ構成要素、サンダーボルトストレージ構成要素、UFSストレージ構成要素、SDストレージ構成要素、メモリスティックストレージ構成要素、およびxDピクチャーカードストレージ構成要素等の不揮発性ストレージ構成要素として実装される。
様々な実施形態では、SSDコントローラ(もしくはコンピューティングホストフラッシュメモリコントローラ)、またはその機能のすべてもしくは任意の部分は、コントローラが連結されるホスト(例えば、図1Bのホスト102)に実装される。様々な実施形態では、SSDコントローラ(もしくはコンピューティングホストフラッシュメモリコントローラ)、またはその機能のすべてもしくは任意の部分は、ハードウェア(例えば、論理回路)、ソフトウェア、および/またはファームウェア(例えば、ドライバソフトウェアもしくはSSD制御ファームウェア)、あるいはそれらの任意の組み合わせを介して実装される。例えば、ECCユニット(図1AのECC161および/またはECC−X135と同様のもの等)の機能性、または該ECCユニットと関連付けられる機能性は、部分的にホスト上のソフトウェアを介して、ならびに部分的にSSDコントローラ内のファームウェアおよびハードウェアの組み合わせを介して実装される。別の実施例では、リサイクラーユニット(図1Aのリサイクラー151と同様のもの等)の機能性、または該リサイクラーユニットと関連付けられる機能性は、部分的にホスト上のソフトウェアを介して、および部分的にコンピューティングホストフラッシュメモリコントローラ内のハードウェアを介して実装される。
0/1バランス回復
図2Aから図2Dは、「0/1」バランス回復に関する閾値電圧分布を図示する。この考察のために、各丘のような隆起は、NVMの読み出し単位サイズの部分のそれぞれの状態の閾値電圧確率分布を表す独立したガウス様曲線を抽象化したものである。閾値電圧軸は、右に正の電圧が増加するように引かれる。プロットが、NVMのより大きい集団により一般的に適用されるように、絶対尺度は、意図的に提供されておらず、また、基準点も識別されていない。図2Aおよび図2Bは、SLC固有であり、一方、図2Cおよび図2Dは、MLC固有である。
初期時間(例えば、対応するデータが書き込まれる際)を表す図2Aでは、最も左の分布220は、論理1を表し、最も右の分布230は、論理0を表す。技術によって、最も左の分布は、(少なくとも大部分が)負の電圧にあってもよい。読み出し閾値210は、理想的に、2つの分布の間に位置する。
本明細書の実施形態によってリンクされるものを除き、これらの閾値電圧分布から独立して、いくつかの実施形態では、NVMは、記憶されている0および1の統計的分布の具体的な知識を用いて書き込まれる。より具体的には、いくつかの実施形態では、0および1の統計的分布が50%−50%(50%の0および50%の1)となるように、様々な暗号化および/またはスクランブリング技法が使用される。図2Aの場合に理想的に位置する公称読み出し閾値を使用してSLCが読み出される際、読み出しデータの0および1の観測される統計的分布は、同様に、50%−50%である。50%−50%である統計的分布は、データの任意の1つのサンプルが、0のビットおよび1のビットの厳密に均等なバランスを有するということを意味するわけではなく、むしろ、多くのサンプルにわたる平均は、サンプルの数が増加するにつれて、0のビットおよび1のビットの比率が50%−50%に近づき、確率的境界がますます狭くなる。コインが多くの回数投げられ、n/4(nはコインが投げられる回数である)に近似する分散を伴うガウス分布を生成する際の頂部および尾部の分布と類似する。例えば、0のビットおよび1のビットの50%−50%の統計的分布を伴う読み出し単位内に18,432ビットが存在する場合、0のビット(または1のビット)の数における分散は、約4,608であり、標準偏差は、約68である。標準偏差68では、読み出し単位の1/1,000,000個未満のサンプルが、平均の9,216から341以上(5標準偏差)離れた0のビット数を有することが予想されるであろう。
図2Bには、時間的に後の図2Aの公称読み出し閾値210が表されており、2つの閾値電圧分布225および235は、それらの時間的に前の図2Aのそれぞれの分布220および230に対してシフトされている。実施例の目的のために、両方とも均一に左に(より負の電圧に向かって)シフトされた、2つの分布が示されている。より一般的に、2つの分布は、相互から独立して正または負の方向に移動することができることを理解されたい。
図2Bを考慮して、SLCが公称読み出し閾値210を使用して再度読み出される際、NVM(例えば、いずれのエラー訂正の前に)から直接読み出される、0および1の観測される統計的分布は、50%−50%ではないことが予測可能である。より具体的には、所与の概念的実施例では、読み出し閾値は、0のうちのいくつかが誤って1と読まれるものであるため、誤った過度の1が予想される。
実際には、推論の方向が逆転される。つまり、実際には、一般的に、閾値電圧分布のそのようなシフトは、既知ではない、または直接知ることが不可能である。いくつかの実施形態では、代わりに、閾値電圧分布のシフトの存在を推論するために、NVMから読み出される0および1の不一致(0および1の既知の記憶されている分布に対する)の観測が使用される。さらに、これらの実施形態では、0/1バランスが回復されるまで、必要に応じて、少なくとも一部において、観測される不一致に基づき、読み出し閾値が読み出し閾値215に調節される(本明細書の他の場所に詳述されるように)。
同様に、図2Cは、初期時間(対応するデータが書き込まれる際等)の初期閾値電圧分布を表し、一方、図2Dは、後の時間の対応する後の閾値電圧分布を表す。より具体的には、選択されるグレーコードマッピングでは、それぞれ11、10、00、および10状態を表し、閾値電圧分布251、261、271、および281(図2Dの)は、それらの時間的に前のそれぞれの閾値電圧分布250、260、270、および280(図2Cの)に対してシフトされている。3つの公称(初期)読み出し閾値、VREAD1240、VREAD2242、およびVREAD3244もまた、示されている。この場合も同様に、実施例の目的のために、図2Dでは、すべて均一に左に(より負の電圧に向かって)シフトされた、4つの分布が示されている。より一般的に、4つの分布は、相互から独立して、正または負の方向に移動することができることを理解されたい。
いくつかの実施形態では、4つの状態の統計的分布が25%−25%−25%−25%(各状態が25%)になるように、様々なスクランブリング技法が使用される。図2Cの場合に理想的に位置する公称読み出し閾値を使用してMLCが読み出される際、いくつかの実施形態では、4つの状態の統計的分布は、同様に25%−25%−25%−25%であることを確認することができる。(他の場所に記載されるように、0および1は、コントローラによって直接観測可能であるが、すべての4つの状態は、必要に応じて推論可能である。)いくつかの実施形態では、閾値電圧分布のシフトの存在を推論するために、NVMから読み出される不一致(既知の記憶されている状態の分布に対する)(予想される25%−25%−25%−25%からの偏差)の観測が使用される。読み出し閾値は次いで、図2Dに示されるように、VREAD1265、VREAD2275、およびVREAD3285になるように、調節される(本明細書の他の場所に詳述されるように)。いくつかの実施形態では、読み出し閾値の調節は、より下位のページの読み出し(VREAD2275の調節)と、より上位のページの読み出し(VREAD1265および/またはVREAD3285の調節)とが別個に実施される。
0/1バランス回復のための機能
図3Aは、特定の機能を強調するように、選択される論理ブロックの境界を引き直した、図1Aおよび図1BのSSD101、SSDコントローラ100、ならびにNVM199の代替図を提供する。最高水準のSSD101は、外部インターフェース110、SSDコントローラ100、NVM199、およびデバイスインターフェース190を特長とする。
外部インターフェース110は、図1Aの上記の記載に詳述されるように、図1Bのホスト102等のホストに連結され、ホストストレージ関連コマンド、ならびに書き込みデータおよびコントローラ読み出しデータを備える、SATA等の高水準ストレージプロトコルをサポートする。デバイスインターフェース190は、図1Aの記載に詳述されるように、低水準NVM I/Oトランザクションをサポートする。NVM199は、NVMアレイ332、プログラマブル読み出し電圧回路334、制御/ステータスレジスタ336、およびI/O338を特長とする。SSDコントローラ100は、ホストインターフェース111、スクランブラ310、ECCエンコーダ320、デバイスインターフェース論理191、アンバランス検出器340、バッファ131、ECCデコーダ360、デスクランブラ370、およびバランス回復論理380を特長とする。ホストインターフェース111は、前述されるように、外部インターフェース110を介してホストと連結し、スクランブラ310に書き込みデータ306を提供し、バッファ131から読み出しデータ351を受信する。
書き込み経路および機能性は、以下の通りである。スクランブラ310は、ECCエンコーダ320へのスクランブルされた書き込みデータ311を生成するように、書き込みデータ306に対して動作する。スクランブラ310は、書き込みデータ306を、可逆的に、かつスクランブルされた書き込みデータ311が記憶されている状態の既知の統計的分布を有するようにスクランブルする。いくつかの実施形態では、スクランブラ310は、AESエンコーダ等を介して、暗号化の副生成物としてデータをランダム化する暗号化を実施する。いくつかの実施形態では、スクランブラ310は、データをランダム化する(但し、いかなるデータのセキュリティ意図もない)ために、線形フィードバックシフトレジスタ(LFSR)を使用する。ECCエンコーダ320は、NVM199に記憶するために、追加のECCビットを追加して、デバイスインターフェース190を介してデバイスインターフェース191に提供される、ECCがエンコードされた書き込みデータ321をもたらすように、スクランブルされた書き込みデータ311を処理する。
基本的な読み出し経路および機能性は、以下の通りである。デバイスインターフェース190を介して、NVM199から未訂正のスクランブルされた(生)読み出しデータ359を備えるNVMのページが受信される。いくつかの実施形態では、図3Bに詳述されるように、各NVMのページの読み出しは、4つのコードワード(読み出し単位としても知られる)、コードワード0からコードワード3を備える。図3Aに関して続けて、各コードワードは、名目上、スクランブラ301によってスクランブルされたデータ、ならびにECCエンコーダ320によって生成された追加のECCビットを備えるが、一般的に、非意図的に、NVM記憶および取り出し動作の結果と置き変えられる。コードワードは、バッファ131を介してECCデコーダ360に提供される。ECCデコーダ360は、コードワードを処理し、データが最初にECCをエンコードされてから、いずれかの時点で生じたいずれのエラーも概して訂正して、デスクランブラ370に提供される訂正された読み出しデータ361をもたらすために、含まれる追加のECCビットを利用する。デスクランブラ370は、訂正された読み出しデータ361に対して動作し、スクランブラ310によって実施されたスクランブリングを逆にして、バッファ131を介して読み出しデータ351としてホストインターフェース111に提供される、スクランブルされていない読み出しデータ371をもたらす。
読み出し経路および機能性は、アンバランス検出器340と、バランス回復論理380とをさらに含む。アンバランス検出器340は、NVMから受信される生読み出しデータ359を監視し、状態の統計的分布に関するデータを、少なくとも一時的に維持する。バランス回復論理380は、NVMプログラマブル読み出し電圧回路334を介して、NVM読み出し閾値(NVMアレイ332を読み出すために使用される)を選択的に調節するために、デバイスインターフェース論理191およびNVM I/O338を介して、NVM制御/ステータスレジスタ336と相互作用する。読み出し閾値は、a)ECCデコーダ360によって検出される訂正不可能な読み出し362、およびb)アンバランス検出器340によって検出されるアンバランス341(状態の統計的分布における)に基づいて調節される。SLC実施形態およびMLC実施形態の両方で、読み出し単位は、2進数データである。0および1の不一致は、SLCの場合(またはMLCがあたかもSLCのように動作している場合)には、直接測定可能である。いくつかの実施形態では、MLCの3つ以上の状態の不一致は、どのようにデータがNVMに記憶されたかの知識に基づいて推定される。
図3Aは、ホストが、NVM199に書き込まれるデータおよびNVM199から読み出されるデータのソースならびにシンクとして動作する状況における、0/1バランス回復のための機能を図示する。様々な実施形態(図1Aおよび図1Bに図示されるもの等)では、1つ以上の他のエージェントが、NVM199に書き込まれるデータおよびNVM199から読み出されるデータのソースならびにシンクとして動作する。他のエージェントの例は、本明細書の他の場所に記載されるように、NVM199内でデータをある位置から別の位置に移動させる、図1Aのリサイクラー151である。
様々な実施形態では、スクランブラ310、ECCエンコーダ320、ECCデコーダ360、およびデスクランブラ370のうちの任意の1つ以上と関連付けられる機能性の任意の部分またはすべての部分が、少なくとも一部において、データ処理121およびECC161(両方とも図1Aの)のうちの1つ以上を使用して実現される。
0/1バランス回復のための制御フロー
図4は、図1A、図1B、および図3AのSSDの実施形態の選択される制御フローの詳細を図示し、書き込み関連動作および読み出し関連動作に関する特定の詳細を提供する。書き込み動作は、アクション410で開始し、430まで続く。戻り経路は明白に描写されていないが、後続の書き込み動作は、再びアクション410で開始する。同様に、読み出し動作は、アクション440で開始し、460まで続き、条件によっては480まで続く。戻り経路は明白に描写されていないが、後続の読み出し動作は、再びアクション440で開始する。少なくとも初期の書き込みは、同一位置に対する読み出しに先行することが想定される。そうでなければ、試験などの人為的な場合を除き、同一の位置または概して異なる位置への読み出し動作および書き込み動作は、一般的に、アプリケーションのニーズが指図する際に独立して呼び出される。そうは言うものの、ヒューリスティックな実施例では、最初の読み出し動作440は、概念的に、同一の位置への最後の書き込み動作430の直後に続く。
書き込み関連動作をより詳細に考察すると、NVMに書き込まれる元のデータは、一般的に、アクション410で、暗号化またはLFSRの使用等を介して最初にスクランブルされる。より多くの特異性が採用される場合を除き、本明細書で使用される場合、「スクランブリング」という用語は、NVMに記憶されている様々な状態の間の既知の統計的分布をもたらす任意の操作又は選択を介した、書き込まれる元のデータの操作を指す。スクランブリング方法は、暗号化およびLFSR技法を含む。(また、図3Aのスクランブラ310も参照のこと。)いくつかの暗号化実施形態では、スクランブリングは、AES暗号化仕様のうちの少なくとも1つのバージョンに従う。いくつかのLFSR実施形態では、スクランブリングは、LFSRの少なくとも1つの選択に従う。いくつかの実施形態では、スクランブリングは、1つ以上の試験パターンの選択を介して、より直接的に判定され、NVMに書き込まれる際、状態の選択される統計的分布を提供する(必ずしも暗号化またはLFSR処理を使用することなく)。
LFSRは、シフトレジスタの選択されるタップの一次関数またはそのソフトウェアモデルから入力ビットを生成する、組み合わせ論理フィードバックネットワークを有する、ハードウェアシフトレジスタである。LFSRは、決定論的疑似ランダムシーケンスを生成する。少なくとも概念的に、LFSR生成疑似ランダムシーケンスは、スクランブルされたデータを提供するように、元のデータに追加されるモジュロ2である。
続いて、スクランブルされたデータは、次に、アクション420に図示されるように、一般的に(但し、任意選択で)ECCがエンコードされる。(また、図3AのECCエンコーダ320も参照のこと。)ECCエンコーディングは、NVMを使用する際に様々な理由のために生じるエラーに対するデータ復元(エラー訂正を介した)を促進する、冗長情報を提供する。より小さい構造、より多い使用、より長い時間経過、より大きい温度逸脱、およびMLCメモリの使用のうちの1つ以上では、そのようなエラーがより多く見られ、したがって、ECCエンコーディングがより望ましい。
次いで、スクランブルされ、かつ任意選択でECCがエンコードされたデータは、書き込み関連動作の最後であるアクション430に示されるように、NVMに書き込まれる。スクランブリングの結果として、書き込まれる状態の分布は既知である。SLCメモリおよびAES暗号化が使用される場合、0−1分布は、50−50(すなわち、50%の0および50%の1)であることが既知である。4LC(4レベルMLC)メモリおよびAES暗号化が使用される場合、より下位およびより上位のページの両方の書き込み後の分布は、25−25−25−25(すなわち、4つの状態のそれぞれが25%)であることが既知である。
いくつかの実施形態では、上述されるように、1つ以上の試験パターンの使用のために、少なくとも1つの基準領域が割かれる。いくつかの実施形態では、基準領域の位置は、様々なNVM書き込み/読み出しアーチファクトの試験パターンへの影響を最小化する(または逆に、最大化する)ように選択される。いくつかの実施形態では、基準領域は、基準ページであり、その位置は、書き込まれるデータへの書き込み妨害の影響を最小化するように、ブロックに書き込まれる最後のページとなるように選択される。電圧分布に影響を及ぼす現象のうちのいくつかは、時間および/または温度変異であり、基準領域は、0/1不一致に対するこれらの影響の既知の尺度としての役割を果たす。
読み出し関連動作をより詳細に考察すると、アクション440で開始して、NVMから1つ以上の読み出し単位が読み出され、状態の分布が捕捉される。いくつかの実施形態では、0のカウントおよび1のカウントのそれぞれが、直接判定される。次に、アクション450で、元のデータを復元する試みが行われる。これは、書き込みの前に実施されたどんなデータ操作動作の逆も実施する。一般的に、書き込みの前に、ECCエンコーディングが追加されており、したがって、一般的に、読み出し単位に次に、ECCデコーディングが施される。(また、図3AのECCデコーダ360も参照のこと。)読み出し単位毎に、ECCデコーディングが成功した場合、必要に応じて、次いでデスクランブリングが実施される。例えば、書き込みの前にAES暗号化が使用された場合、AES暗号解読が実施される。または、LFSR生成疑似ランダムシーケンスが使用された場合、同一のシーケンスは、読み出し単位からのECCがデコードされたデータに追加されるモジュロ2である。
読み出し関連動作は、元のデータが復元可能である場合、エラーなく、またはECCデコーディングを介して訂正可能なエラーで、早く完了する。決定460からの「いいえ」経路を参照されたい。しかしながら、読み出し単位のいずれかの訂正不可能なエラーに対しては、また、アクション470および480も実施される。決定460からの「はい」経路を参照されたい。アクション470で、状態の分布の不一致が評価される。(また、図3Aのアンバランス検出器340も参照のこと。)いくつかの実施形態では、判定される不一致は、0のカウントと1のカウントとの間の判定される差である。様々な実施形態では、判定される不一致は、すべての読み出し単位より少ない読み出し単位が訂正不可能なエラーを有するとしても、すべての読み出し単位にわたって演算される。
次に、アクション480で、少なくとも一部において、判定される不一致の大きさに基づき、少なくとも1つの読み出し閾値の調節された値(閾値シフトとしても知られる)が判定される。いくつかの実施形態では、判定される不一致の大きさが所定の許容範囲未満である場合、読み出し閾値は調節されない。いくつかの実施形態では、調節された読み出し閾値を判定するために、多因子「訂正アルゴリズム」が採用されるが、その判定される不一致の大きさは、1つの因子である。
いくつかの実施形態では、訂正アルゴリズムは、読み出し閾値の置換値を選択するために使用される、ルックアップテーブルの形態をとる。判定される不一致の大きさは、ルックアップテーブルのインデックスの少なくとも部分の基礎である。いくつかの実施形態では、ルックアップテーブルは、使用されるNVMの特定のベンダーに基づき、予め特徴付けられる(重み付けされる)。いくつかの実施形態では、インデックスは、P/Eサイクル、時間経過、保有時間(最後の書き込みからの時間)、温度、およびNVMの閾値電圧分布のドリフト、またはNVMの閾値電圧分布に対する妨害に関連し得る任意の他の因子のうちの1つ以上を備える、追加の構成要素を有する。(また、図3Aのバランス回復論理380も参照のこと。)
ここで、および「発明を実施するための形態」全体を通して、一般に使用されているフラッシュメモリマイクロアーキテクチャでは、一般的に、アクセスされるデータの粒度は、読み出しと書き込みとで異なることを忘れてはならない。読み出しアクセスの最小サイズ(読み出し単位)は、ページである。ページは、本明細書の他の場所に記載されるように、1つ以上のコードワードとして、いくつかの実施形態では4つのコードワードとして構成される。対照的に、書き込みアクセスの最小サイズは、多くのページのブロックである。
いくつかの実施形態では、不一致は、ページ全体基準で評価される。いくつかの実施形態では、不一致は、コードワード基準で評価される。読み出しにおける訂正不可能なエラーと関連して実施される不一致評価は、その同一の位置を含む最も最近のブロック書き込みにおいて書き込まれたものと同一の位置(ページ、またはコードワード)に対して実施される。
実装技法例
いくつかの実施形態では、例えば、フラッシュメモリ、コンピューティングホストフラッシュメモリコントローラ、および/もしくはSSDコントローラ(図1AのSSDコントローラ100等)、ならびにプロセッサ、マイクロプロセッサ、システムオンチップ、アプリケーション専用集積回路、ハードウェアアクセラレータ、または前述の動作のすべてもしくは部分を提供する他の回路の部を伴う、0−1のバランスがとられたSSDによって実施される動作のすべてまたは部分の様々な組み合わせは、コンピュータシステムによる処理と互換性のある仕様によって指定される。仕様は、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述等の様々な記述に従う。記述例には、Verilog、VHDL、SPICE、PSpice、IBIS、LEF、DEF、GDS−II、OASIS等のSPICEの異版、または他の記述が挙げられる。様々な実施形態では、処理は、1つ以上の集積回路上に含むのに好適な論理および/または回路をもたらす、検証する、または指定する、解釈、コンパイル、シミュレーション、および合成の任意の組み合わせを含む。様々な実施形態によると、各集積回路は、様々な技法に従って設計可能および/または製造可能である。技法には、プログラマブル技法(フィールドもしくはマスクプログラマブルゲートアレイ集積回路等)、セミカスタム技法(完全に、もしくは部分的にセルベースの集積回路等)、ならびにフルカスタム技法(実質的に特化された集積回路等)、それらの任意の組み合わせ、または集積回路の設計および/もしくは製造に適合する任意の他の技法が挙げられる。
いくつかの実施形態では、命令セットが記憶されているコンピュータ可読媒体によって記載される動作のすべてまたは部分の様々な組み合わせは、1つ以上のプログラム命令を実行および/もしくは解釈することによって、1つ以上のソースおよび/もしくはスクリプト言語命令文を解釈ならびに/またはコンパイルすることによって、あるいはプログラムミングおよび/またはスクリプト言語命令文内に表される情報をコンパイル、翻訳、および/または解釈することによってもたらされる2進数命令を実行することによって、実施される。命令文は、任意の標準プログラミングまたはスクリプト言語(C、C++、Fortran、Pascal、Ada、Java(登録商標)、VBスクリプト、およびShell等)と互換性がある。プログラム命令、言語命令文、または2進数命令のうちの1つ以上は、任意選択で、1つ以上のコンピュータ可読ストレージ媒体要素に記憶される。様々な実施形態では、プログラム命令のうちのいくつか、すべて、または様々な部分が、1つ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分として実現される。
結論
単に文章および図面の準備における便宜のために、特定の選択が行われてきており、そうではないと示されていない限り、選択は、それ自体が、記載される実施形態の構造または動作に関する追加の情報を伝達すると解釈されるべきではない。選択の例には、図面の番号付与に使用される特定の記号表示の構成または割り当て、ならびに実施形態の特長および要素を識別し、参照するために使用される要素識別子の特定の構成または割り当て(例えば、付記もしくは番号表示)が挙げられる。
「含む(includes)」または「含む(including)」という語は、オープンエンドな範囲の論理セットを抽象的に記述すると解釈されることが明確に意図され、「〜内(within)」という語が明白に続かない限り、物理的含有を伝達することは意味しない。
前述の実施形態は、説明および理解の明確化のために、ある程度詳細に記載されてきたが、本発明は、提供される詳細に限定されない。本発明の多くの実施形態が存在する。開示される実施形態は、例示的であり、限定的ではない。
記載と一致する、構造、配設、および使用における多くの変形物が可能であり、発行される特許の特許請求の範囲内であることが理解される。例えば、各構成要素ブロックにおける相互接続および機能単位ビット幅、クロック速度、ならびに使用される技術のタイプは、様々な実施形態によって異なる。相互接続および論理に与えられる名前は、単なる例示にすぎず、記載される概念を限定すると解釈されるべきではない。フローチャートおよびフロー図プロセス、アクション、ならびに関数要素の順序および配設は、様々な実施形態によって異なる。また、そうではないと明確に述べられていない限り、指定される値の範囲、使用される最大値および最小値、または他の特定の仕様(フラッシュメモリ技術タイプ、ならびにレジスタおよびバッファ内のエントリまたはステージの数等)は、単に記載される実施形態のものであるにすぎず、実装技術における改善および変更を追跡することが予想され、限定であると解釈されるべきではない。
様々な構成要素、サブシステム、動作、関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分を実現するために、記載されるものの代わりに、当業者に既知の機能的に同等の技法を採用可能である。また、実施形態の機能は、より高速な処理(以前はハードウェア内にあった機能をソフトウェアに移行することを促進する)、およびより高い集積密度(以前はソフトウェア内にあった機能をハードウェアに移行することを促進する)の設計制約ならびに技術動向に依存するため、実施形態の多くの機能的態様は、ハードウェア(例えば、一般的に専用回路)またはソフトウェア(例えば、プログラムされたコントローラもしくはプロセッサのある方法を介して)のいずれかで、選択的に実現可能であることも理解される。様々な実施形態の具体的な変形物には、分割における差、異なるフォームファクタおよび構成、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース標準、ネットワークプロトコル、または通信リンクの使用、ならびに特定のアプリケーションの固有のエンジニアリングおよび事業制約に従って本明細書に記載される概念を実現する際に予想される他の変形物が挙げられるが、これらに限定されない。
実施形態が詳細に記載され、環境的文脈は、記載される実施形態の多くの態様の実現に必要とされる最小限のレベルを大きく超える。当業者は、いくつかの実施形態が、残りの要素間の基本的な協働を変えることなく、開示される構成要素または特長を省略することを認識するであろう。したがって、開示される詳細の多くが、記載される実施形態の様々な態様を実現するために必要とされないことが理解される。残りの要素が従来技術とは区別可能である範囲で、省略される構成要素および特長は、本明細書に記載される概念を限定しない。
すべてのそのような設計の変形物は、記載される実施形態によって伝達される教示に対するわずかな変更である。また、本明細書に記載される実施形態は、他のコンピューティングおよびネットワーキングアプリケーションに対する広範の適用性を有し、特定のアプリケーションまたは記載される実施形態の産業に限定されないことも理解される。したがって、本発明は、発行される特許の特許請求の範囲の範囲内に包含される、すべての可能な修正および変形を含むと解釈される。

Claims (20)

  1. 不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の0のビットと、既知の統計的平均数の1のビットとを有するスクランブルされたデータを発生させるステップと、
    前記スクランブルされたデータを前記不揮発性メモリの前記部分に書き込むステップと、
    前記書き込むステップの後に、前記不揮発性メモリの前記部分を読み出すステップと、
    前記不揮発性メモリの前記部分から読み出されるデータの0のビット数と1のビット数との間の不一致を演算するステップと、
    少なくとも一部において、前記不一致に基づき、前記不揮発性メモリの後続の読み出しのための閾値電圧を判定するステップと、
    を含む、方法。
  2. 前記演算するステップは、0のビットの予想数と前記不揮発性メモリの前記部分から読み出された前記データの0のビット数との間の差を評価するステップを含む、請求項1に記載の方法。
  3. 前記判定は、0のビットの前記既知の統計的平均数または1のビットの前記既知の統計的平均数にさらに基づく、請求項1に記載の方法。
  4. 前記不揮発性メモリの前記部分を、前記閾値電圧を使用して再読み出しするステップ
    をさらに含む、請求項1に記載の方法。
  5. 前記書き込むステップは、ECCエンコーダを用いて、前記スクランブルされたデータをエンコードし、前記エンコードされたスクランブルされたデータを前記不揮発性メモリの前記部分に書き込むステップを含み、
    前記再読み出しするステップの前に、ECCデコーダを用いて、前記不揮発性メモリの前記部分から読み出された前記データをデコードして、前記不揮発性メモリの前記部分から読み出された前記データが訂正不可能であると判定するステップ
    をさらに含む、請求項4に記載の方法。
  6. 前記不一致は、第1の不一致であり、前記閾値電圧は、第1の閾値電圧であり、
    前記ECCデコーダを用いて、前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされたデータをデコードして、前記前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされたデータが訂正不可能であると判定するステップと、
    前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされた前記データの0のビット数と1のビット数との間の第2の不一致を演算するステップと、
    少なくとも一部において、前記第2の不一致に基づき、前記不揮発性メモリの第2の再読み出しのための第2の閾値電圧を判定するステップと、
    をさらに含む、請求項5に記載の方法。
  7. 前記不揮発性メモリの前記部分を、前記第2の閾値電圧を使用して再読み出しするステップ
    をさらに含む、請求項6に記載の方法。
  8. 前記ECCエンコーダは、前記スクランブルされたデータに1バイト以上を追加し、前記ECCエンコーダによって追加される前記1バイト以上は、前記既知の統計的平均数の0のビットと、前記既知の統計的平均数の1のビットとを有する、請求項5に記載の方法。
  9. 不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の0のビットと、既知の統計的平均数の1のビットとを有するスクランブルされたデータを発生させるための手段と、
    前記スクランブルされたデータを前記不揮発性メモリの前記部分に書き込むための手段と、
    前記書き込みの後に、前記不揮発性メモリの前記部分を読み出すための手段と、
    前記不揮発性メモリの前記部分から読み出されるデータの0のビット数と1のビット数との間の不一致を演算するための手段と、
    少なくとも一部において、前記不一致に基づき、かつ、少なくとも一部において、0のビットの前記既知の統計的平均数または1のビットの前記既知の統計的平均数に基づき、前記不揮発性メモリの後続の読み出しのための閾値電圧を判定するための手段と、
    を備える、デバイス。
  10. 前記不揮発性メモリの前記部分を、前記閾値電圧を使用して再読み出しするための手段
    をさらに備える、請求項9に記載のデバイス。
  11. 前記書き込みは、ECCエンコーダを用いて、前記スクランブルされたデータをエンコードし、前記エンコードされたスクランブルされたデータを前記不揮発性メモリの前記部分に書き込むことを含み、
    前記再読み出しの前に、ECCデコーダを用いて、前記不揮発性メモリの前記部分から読み出された前記データをデコードして、前記不揮発性メモリの前記部分から読み出された前記データが訂正不可能であると判定するための手段
    をさらに備える、請求項10に記載のデバイス。
  12. 前記不一致は、第1の不一致であり、前記閾値電圧は、第1の閾値電圧であり、
    前記ECCデコーダを用いて、前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされたデータをデコードして、前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされた前記データが訂正不可能であると判定するための手段と、
    前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされた前記データの0のビット数と1のビット数との間の第2の不一致を演算するための手段と、
    少なくとも一部において、前記第2の不一致に基づき、前記不揮発性メモリの第2の再読み出しのための第2の閾値電圧を判定するための手段と、
    前記不揮発性メモリの前記部分を、前記第2の閾値電圧を使用して再読み出しするための手段と、
    をさらに備える、請求項11に記載のデバイス。
  13. 前記ECCエンコーダは、前記スクランブルされたデータに1バイト以上を追加し、前記ECCエンコーダによって追加される前記1バイト以上は、前記既知の統計的平均数の0のビットと、前記既知の統計的平均数の1のビットとを有する、請求項11に記載のデバイス。
  14. 命令セットが記憶されている有形のコンピュータ可読媒体であって、前記命令セットは、処理要素によって実行される際、前記処理要素に、
    不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の0のビットと、既知の統計的平均数の1のビットとを有するスクランブルされたデータを発生させる動作と、
    前記スクランブルされたデータを前記不揮発性メモリの前記部分に書き込む動作と、
    前記書き込みの後に、前記不揮発性メモリの前記部分を読み出す動作と、
    前記不揮発性メモリの前記部分から読み出されるデータの0のビット数と1のビット数との間の不一致を演算する動作と、
    少なくとも一部において、前記不一致に基づき、前記不揮発性メモリの後続の読み出しのための閾値電圧を判定する動作と、
    を含む動作を実施および/または制御させる、有形のコンピュータ可読媒体。
  15. 前記判定は、0のビットの前記既知の統計的平均数または1のビットの前記既知の統計的平均数にさらに基づく、請求項14に記載の有形のコンピュータ可読媒体。
  16. 前記動作は、
    前記不揮発性メモリの前記部分を、前記閾値電圧を使用して再読み出しする動作
    をさらに含む、請求項14に記載の有形のコンピュータ可読媒体。
  17. 前記書き込みは、ECCエンコーダを用いて、前記スクランブルされたデータをエンコードし、前記エンコードされたスクランブルされたデータを前記不揮発性メモリの前記部分に書き込むことを含み、前記動作は、
    前記再読み出しの前に、ECCデコーダを用いて、前記不揮発性メモリの前記部分から読み出された前記データをデコードして、前記不揮発性メモリの前記部分から読み出された前記データが訂正不可能であると判定する動作
    をさらに含む、請求項16に記載の有形のコンピュータ可読媒体。
  18. 前記不一致は、第1の不一致であり、前記閾値電圧は、第1の閾値電圧であり、前記動作は、
    前記ECCデコーダを用いて、前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされたデータをデコードして、前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされた前記データが訂正不可能であると判定する動作と、
    前記不揮発性メモリの前記部分から前記第1の閾値電圧を使用して再読み出しされた前記データの0のビット数と1のビット数との間の第2の不一致を演算する動作と、
    少なくとも一部において、前記第2の不一致に基づき、前記不揮発性メモリの第2の再読み出しのための第2の閾値電圧を判定する動作と、
    をさらに含む、請求項17に記載の有形のコンピュータ可読媒体。
  19. 前記動作は、
    前記不揮発性メモリの前記部分を、前記第2の閾値電圧を使用して再読み出しする動作
    をさらに含む、請求項18に記載の有形のコンピュータ可読媒体。
  20. 前記ECCエンコーダは、前記スクランブルされたデータに1バイト以上を追加し、前記ECCエンコーダによって追加される前記1バイト以上は、前記既知の統計的平均数の0のビットと、前記既知の統計的平均数の1のビットとを有する、請求項17に記載の有形のコンピュータ可読媒体。
JP2015510441A 2012-05-04 2013-05-01 半導体ディスクコントローラにおける0−1バランス管理 Expired - Fee Related JP6163540B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/464,433 US8839073B2 (en) 2012-05-04 2012-05-04 Zero-one balance management in a solid-state disk controller
US13/464,433 2012-05-04
PCT/US2013/039138 WO2013166200A1 (en) 2012-05-04 2013-05-01 Zero-one balance management in a solid-state disk controller

Publications (3)

Publication Number Publication Date
JP2015520907A true JP2015520907A (ja) 2015-07-23
JP2015520907A5 JP2015520907A5 (ja) 2016-06-23
JP6163540B2 JP6163540B2 (ja) 2017-07-12

Family

ID=49513581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015510441A Expired - Fee Related JP6163540B2 (ja) 2012-05-04 2013-05-01 半導体ディスクコントローラにおける0−1バランス管理

Country Status (7)

Country Link
US (3) US8839073B2 (ja)
EP (1) EP2845198A4 (ja)
JP (1) JP6163540B2 (ja)
KR (1) KR101754653B1 (ja)
CN (1) CN107094370B (ja)
TW (1) TWI612524B (ja)
WO (1) WO2013166200A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018194948A (ja) * 2017-05-15 2018-12-06 ラピスセミコンダクタ株式会社 半導体記憶装置、メモリコントローラ及びメモリの監視方法
US10719396B2 (en) 2018-03-19 2020-07-21 Toshiba Memory Corporation Memory system
JP2023518243A (ja) * 2020-03-18 2023-04-28 マイクロン テクノロジー,インク. メモリサブシステムにおけるプログラムされたビット数に基づいて読み出し電圧レベルを調整すること
US11854638B2 (en) 2021-02-08 2023-12-26 Megachips Corporation Nonvolatile semiconductor storage device and read voltage correction method

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101541040B1 (ko) 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US8719663B2 (en) 2010-12-12 2014-05-06 Lsi Corporation Cross-decoding for non-volatile storage
US8839073B2 (en) 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US8938659B2 (en) * 2012-05-04 2015-01-20 Lsi Corporation Low-density parity-check decoder disparity preprocessing
US8879325B1 (en) * 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US8923062B1 (en) * 2012-07-06 2014-12-30 Sk Hynix Memory Solutions Inc. Generating read thresholds using gradient descent and without side information
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US9086982B1 (en) * 2012-08-15 2015-07-21 Marvell International Ltd. Adjusting bit reliability information input for decoding stored data
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US8913442B2 (en) * 2012-12-21 2014-12-16 Elite Semiconductor Memory Technology Inc. Circuit for sensing MLC flash memory
US9548135B2 (en) 2013-03-11 2017-01-17 Macronix International Co., Ltd. Method and apparatus for determining status element total with sequentially coupled counting status circuits
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
KR102131802B1 (ko) * 2013-03-15 2020-07-08 삼성전자주식회사 비휘발성 메모리 장치의 데이터 독출 방법, 비휘발성 메모리 장치, 및 메모리 시스템의 구동 방법
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
KR20140146333A (ko) * 2013-06-17 2014-12-26 삼성전자주식회사 메모리 컨트롤러와 이의 동작 방법
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489294B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489300B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
KR102076231B1 (ko) * 2013-07-09 2020-02-12 에스케이하이닉스 주식회사 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US20150074492A1 (en) * 2013-09-11 2015-03-12 Kabushiki Kaisha Toshiba Memory system and memory controller
US9164837B2 (en) * 2013-09-12 2015-10-20 Seagate Technology Llc Transfer unit management
US9213599B2 (en) * 2013-09-18 2015-12-15 Seagate Technology Llc Method of erase state handling in flash channel tracking
CN105474179B (zh) * 2013-09-25 2018-09-18 英特尔公司 具有分布变换器的存储器控制器
US9747157B2 (en) * 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
US9209835B2 (en) 2013-11-27 2015-12-08 Seagate Technology Llc Read retry for non-volatile memories
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
US9454551B2 (en) * 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
US9354822B2 (en) * 2014-03-13 2016-05-31 NXGN Data, Inc. Programmable data read management system and method for operating the same in a solid state drive
US9448745B2 (en) 2014-03-13 2016-09-20 NXGN Data, Inc. Configurable read-modify-write engine and method for operating the same in a solid state drive
TWI540586B (zh) 2014-04-15 2016-07-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置、記憶體控制電路單元
US9384128B2 (en) * 2014-04-18 2016-07-05 SanDisk Technologies, Inc. Multi-level redundancy code for non-volatile memory controller
KR102174030B1 (ko) * 2014-05-13 2020-11-05 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 읽기 방법
KR102249810B1 (ko) 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
GB2530043A (en) 2014-09-10 2016-03-16 Ibm Device and method for storing data in a plurality of multi-level cell memory chips
US9251909B1 (en) * 2014-09-29 2016-02-02 International Business Machines Corporation Background threshold voltage shifting using base and delta threshold voltage shift values in flash memory
TWI559314B (zh) * 2014-12-27 2016-11-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
US9224492B1 (en) * 2015-02-17 2015-12-29 Phison Electronics Corp. Memory management method, memory storage device and memory controlling circuit unit
US9811420B2 (en) * 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
US10121013B2 (en) 2015-05-07 2018-11-06 Samsung Electronics Co., Ltd. XOR-based scrambler/descrambler for SSD communication protocols
KR102519663B1 (ko) * 2015-07-31 2023-04-07 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법
CN105183371A (zh) * 2015-08-14 2015-12-23 山东大学 基于迁移均衡策略的用电信息分布式文件存储方法与装置
US9865338B2 (en) 2015-09-02 2018-01-09 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory by converting write data written to a page
US10192614B2 (en) 2015-10-30 2019-01-29 Seagate Technology Llc Adaptive read threshold voltage tracking with gap estimation between default read threshold voltages
US10347343B2 (en) * 2015-10-30 2019-07-09 Seagate Technology Llc Adaptive read threshold voltage tracking with separate characterization on each side of voltage distribution about distribution mean
US9418731B1 (en) * 2015-11-06 2016-08-16 Phison Electronics Corp. Memory management method, memory storage device and memory control circuit unit
US9870472B2 (en) * 2015-11-18 2018-01-16 Dell Products, L.P. Detecting malign code in unused firmware memory
TWI573017B (zh) * 2015-12-11 2017-03-01 英業達股份有限公司 非揮發性記憶體固態硬碟之燈號控制系統
KR102459077B1 (ko) 2016-01-12 2022-10-27 삼성전자주식회사 비선형 필터링 방식을 사용하는 메모리 시스템 및 그것의 읽기 방법
US9842022B2 (en) * 2016-01-20 2017-12-12 Intel Corporation Technologies for reducing latency in read operations
US10162702B2 (en) * 2016-02-01 2018-12-25 Lattice Semiconductor Corporation Segmented error coding for block-based memory
KR102500616B1 (ko) * 2016-02-26 2023-02-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9721657B1 (en) 2016-04-02 2017-08-01 Intel Corporation Managing threshold voltage shift in nonvolatile memory
KR102585221B1 (ko) 2016-04-21 2023-10-05 삼성전자주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법
US10685710B2 (en) * 2016-11-17 2020-06-16 Toshiba Memory Corporation Memory controller
CN106598742B (zh) * 2016-12-26 2020-01-03 湖南国科微电子股份有限公司 一种ssd主控内部负载均衡系统及方法
US10503586B2 (en) 2017-04-26 2019-12-10 Sandisk Technologies Llc Dynamic read based on read statistics
US10705910B2 (en) * 2017-06-16 2020-07-07 Alibaba Group Holding Limited Method and apparatus for operating a data storage system
TWI643196B (zh) * 2017-06-22 2018-12-01 點序科技股份有限公司 快閃記憶體裝置及其資料讀取方法
CN109119106B (zh) * 2017-06-26 2022-08-02 中兴通讯股份有限公司 数据存储方法、设备及计算机可读存储介质
US10171110B1 (en) * 2017-07-03 2019-01-01 Seagate Technology Llc Sequential power transitioning of multiple data decoders
US10403372B2 (en) * 2017-08-29 2019-09-03 SK Hynix Inc. Memory system with adaptive read-threshold scheme and method of operating such memory system
US10545685B2 (en) * 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
TWI653538B (zh) * 2017-11-13 2019-03-11 慧榮科技股份有限公司 資料儲存裝置與記憶體裝置之資料處理方法
US20190042137A1 (en) * 2018-02-05 2019-02-07 Intel Corporation Memory device with separate memory controllers for program/erase and read operations
JP7074519B2 (ja) 2018-03-19 2022-05-24 キオクシア株式会社 メモリシステム、および、メモリ制御方法
KR102648618B1 (ko) * 2018-03-28 2024-03-19 에스케이하이닉스 주식회사 컨트롤러, 그것의 동작방법 및 컨트롤러를 포함하는 메모리 시스템
US10389335B1 (en) * 2018-05-04 2019-08-20 Apple Inc. Clock pulse generation circuit
CN108683423B (zh) * 2018-05-16 2022-04-19 广东工业大学 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置
CN108648778B (zh) * 2018-05-21 2020-10-09 深圳忆联信息系统有限公司 一种固态硬盘读系统及其方法
US10643719B2 (en) * 2018-09-04 2020-05-05 Micron Technology, Inc. Enhanced read disturbance detection and remediation for a memory sub-system
US10691377B2 (en) * 2018-09-21 2020-06-23 Micron Technology, Inc. Adjusting scan event thresholds to mitigate memory errors
US10866763B2 (en) * 2018-10-30 2020-12-15 Western Digital Technologies, Inc. Dynamic read based on read statistics
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
CN109582228B (zh) * 2018-11-15 2022-02-01 深圳忆联信息系统有限公司 基于nand闪存控制器的自动读重试的硬件加速方法及装置
US11204828B2 (en) * 2018-12-10 2021-12-21 Micron Technology, Inc. Management of corruptive read in memory systems
EP3672124A1 (en) * 2018-12-21 2020-06-24 Xieon Networks S.à r.l. Link margin estimation based on performance monitoring for a transmission system with forward error correction
KR20200095103A (ko) * 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN111508547A (zh) * 2019-01-31 2020-08-07 睿宽智能科技有限公司 保存期限预测方法及资料保存方法
US11128314B2 (en) * 2019-06-24 2021-09-21 SK Hynix Inc. Error characteristic estimation for NAND flash
KR102645786B1 (ko) * 2019-07-08 2024-03-12 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102654797B1 (ko) * 2019-07-12 2024-04-05 양쯔 메모리 테크놀로지스 씨오., 엘티디. 불량 컬럼 리페어를 제공하는 메모리 디바이스 및 이를 동작시키는 방법
US11016829B2 (en) * 2019-07-26 2021-05-25 Toshiba Memory Corporation Two-layered deterministic interprocess communication scheduler for input output determinism in solid state drives
US11010244B2 (en) * 2019-09-16 2021-05-18 Macronix International Co., Ltd. Memory data management method
JP2021047690A (ja) * 2019-09-19 2021-03-25 キオクシア株式会社 メモリシステム
CN110808079A (zh) * 2019-10-10 2020-02-18 鸿秦(北京)科技有限公司 一种新式延缓磨损延长固态硬盘使用寿命的方法
US11062756B2 (en) * 2019-10-14 2021-07-13 Western Digital Technologies, Inc. Extending operating temperature of storage device
CN111145820B (zh) * 2019-12-11 2021-12-28 合肥大唐存储科技有限公司 一种数据读取方法及装置、存储介质和设备
US11294819B2 (en) * 2020-03-31 2022-04-05 Western Digital Technologies, Inc. Command optimization through intelligent threshold detection
US11301321B2 (en) * 2020-05-28 2022-04-12 Western Digital Technologies, Inc. Data shaping for integrated memory assembly
US11295819B2 (en) 2020-06-30 2022-04-05 Western Digital Technologies, Inc. Dual sense bin balancing in NAND flash
CN112558883B (zh) * 2020-12-23 2024-05-14 深圳大普微电子科技有限公司 一种数据存储管理方法、固态硬盘控制器及固态硬盘
US11500548B2 (en) * 2021-03-04 2022-11-15 Micron Technology, Inc. Memory physical presence security identification
US11355216B1 (en) * 2021-04-06 2022-06-07 Beijing Tenafe Electronic Technology Co., Ltd. Adaptive DSP generation of read thresholds for gaussian and non-gaussian distributions in solid state storage using cumulative observed counts
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
CN113612484A (zh) * 2021-07-27 2021-11-05 深圳市德明利技术股份有限公司 一种硬判决和软判决相结合的高效ldpc纠错算法的实现方法
US11978524B2 (en) 2021-08-25 2024-05-07 Western Digital Technologies, Inc. Cumulative wordline dispersion and deviation for read sense determination
US11869614B2 (en) 2021-08-25 2024-01-09 Western Digital Technologies, Inc. Cell statistics generator for NVM devices
US11656789B2 (en) 2021-08-25 2023-05-23 Western Digital Technologies, Inc. Asymmetric read sense
US11972150B2 (en) * 2021-09-29 2024-04-30 Silicon Motion, Inc. Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware
CN114546267B (zh) * 2022-02-14 2022-11-18 深圳源创存储科技有限公司 一种基于大数据计算的固态硬盘及固态硬盘系统
EP4365904A1 (en) * 2022-11-01 2024-05-08 EM Microelectronic-Marin SA Method and memory system for redundantly storing sensible data and adjusting a reference value
CN115547397B (zh) * 2022-11-25 2023-06-02 芯天下技术股份有限公司 读取芯片配置文件信息的方法、装置、设备及存储介质
KR20240111144A (ko) * 2023-01-09 2024-07-16 에스케이하이닉스 주식회사 스토리지 장치 및 이의 동작 방법
CN116643915A (zh) * 2023-05-08 2023-08-25 西安秦派能智能科技有限公司 手机芯片数据恢复方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308800A (ja) * 1987-06-10 1988-12-16 Hitachi Ltd 記憶装置
US20080151618A1 (en) * 2006-12-24 2008-06-26 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
JP2009163774A (ja) * 2009-04-24 2009-07-23 Toshiba Corp メモリコントローラ及び半導体装置
JP2010140227A (ja) * 2008-12-11 2010-06-24 Toshiba Corp メモリシステム及びメモリアクセス方法
US20110182119A1 (en) * 2010-01-27 2011-07-28 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
WO2011113034A2 (en) * 2010-03-12 2011-09-15 Sandforce, Inc. Ldpc erasure decoding for flash memories

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW261687B (ja) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
US6347051B2 (en) 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
US6678823B1 (en) 2000-05-01 2004-01-13 Xtec, Incorporated Methods and apparatus for authenticating data stored in semiconductor memory cells
US7580211B2 (en) * 2004-11-02 2009-08-25 Mediatek, Inc. DVD recording
JP4801935B2 (ja) 2005-06-08 2011-10-26 株式会社東芝 半導体記憶装置
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US7457178B2 (en) 2006-01-12 2008-11-25 Sandisk Corporation Trimming of analog voltages in flash memory devices
US7613043B2 (en) * 2006-05-15 2009-11-03 Apple Inc. Shifting reference values to account for voltage sag
US7639531B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Dynamic cell bit resolution
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
KR100816162B1 (ko) 2007-01-23 2008-03-21 주식회사 하이닉스반도체 낸드 플래시 메모리 장치 및 셀 특성 개선 방법
WO2008111058A2 (en) * 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US7903468B2 (en) 2007-04-23 2011-03-08 Ramot At Telaviv University Ltd. Adaptive dynamic reading of flash memories
KR100888842B1 (ko) 2007-06-28 2009-03-17 삼성전자주식회사 읽기 전압을 최적화할 수 있는 플래시 메모리 장치 및그것의 독출 전압 설정 방법
KR100891005B1 (ko) 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
KR101411976B1 (ko) 2007-07-09 2014-06-27 삼성전자주식회사 플래시 메모리 시스템 및 그것의 에러 정정 방법
KR20090042039A (ko) * 2007-10-25 2009-04-29 삼성전자주식회사 불휘발성 메모리 장치의 데이터 관리 방법
WO2009072104A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
KR100953047B1 (ko) 2007-12-28 2010-04-14 주식회사 하이닉스반도체 불휘발성 메모리 소자의 동작 방법
US7957187B2 (en) 2008-05-09 2011-06-07 Sandisk Corporation Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution
TWI373773B (en) * 2008-05-27 2012-10-01 Phison Electronics Corp Storage sysetm having multiple non-volatile memory, and controller and access method thereof
KR101413137B1 (ko) 2008-07-04 2014-07-01 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
KR101434400B1 (ko) 2008-07-09 2014-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 메모리 시스템 및 그것의 관리방법
US8089813B2 (en) 2008-07-18 2012-01-03 International Business Machines Corporation Controllable voltage reference driver for a memory system
KR101391362B1 (ko) 2008-07-23 2014-05-07 삼성전자주식회사 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법
KR100967004B1 (ko) 2008-08-05 2010-06-30 주식회사 하이닉스반도체 플래시 메모리 장치의 동작 제어 방법
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US7830693B2 (en) 2008-11-12 2010-11-09 Seagate Technology Llc NAND based resistive sense memory cell architecture
US9031241B2 (en) * 2009-02-05 2015-05-12 D.E. Shaw Research, Llc Link and physical coding sub-layer protocols
KR101523677B1 (ko) * 2009-02-26 2015-05-28 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법 그리고 그것을 포함하는 메모리 시스템
KR101005188B1 (ko) 2009-02-26 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 소자 및 그 동작 방법
US8264890B2 (en) 2009-04-09 2012-09-11 Sandisk Technologies Inc. Two pass erase for non-volatile storage
US8345477B1 (en) 2009-07-29 2013-01-01 Marvell International Ltd. Non-volatile memory devices having uniform error distributions among pages
JP2011040124A (ja) 2009-08-07 2011-02-24 Toshiba Corp 半導体記憶装置のデータ読み出し方法
US8130544B2 (en) 2009-08-17 2012-03-06 Skymedi Corporation Method of reducing bit error rate for a flash memory
US8456926B2 (en) 2010-11-18 2013-06-04 Grandis, Inc. Memory write error correction circuit
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8351258B1 (en) * 2010-01-22 2013-01-08 Marvell International Ltd. Adapting read reference voltage in flash memory device
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US8539311B2 (en) * 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8531888B2 (en) 2010-07-07 2013-09-10 Marvell World Trade Ltd. Determining optimal reference voltages for progressive reads in flash memory systems
US8402349B2 (en) * 2010-12-06 2013-03-19 Apple Inc. Two dimensional data randomization for a memory
KR101765123B1 (ko) * 2011-01-14 2017-08-04 삼성전자주식회사 통신시스템에서 전송 신호의 호환성을 제공하기 위한 장치 및 방법
US20130343131A1 (en) 2012-06-26 2013-12-26 Lsi Corporation Fast tracking for flash channels
US8839073B2 (en) 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US8938659B2 (en) 2012-05-04 2015-01-20 Lsi Corporation Low-density parity-check decoder disparity preprocessing
US9847139B2 (en) 2012-10-01 2017-12-19 Seagate Technology Llp Flash channel parameter management with read scrub

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308800A (ja) * 1987-06-10 1988-12-16 Hitachi Ltd 記憶装置
US20080151618A1 (en) * 2006-12-24 2008-06-26 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
JP2010140227A (ja) * 2008-12-11 2010-06-24 Toshiba Corp メモリシステム及びメモリアクセス方法
JP2009163774A (ja) * 2009-04-24 2009-07-23 Toshiba Corp メモリコントローラ及び半導体装置
US20110182119A1 (en) * 2010-01-27 2011-07-28 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
WO2011113034A2 (en) * 2010-03-12 2011-09-15 Sandforce, Inc. Ldpc erasure decoding for flash memories

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018194948A (ja) * 2017-05-15 2018-12-06 ラピスセミコンダクタ株式会社 半導体記憶装置、メモリコントローラ及びメモリの監視方法
US10719396B2 (en) 2018-03-19 2020-07-21 Toshiba Memory Corporation Memory system
JP2023518243A (ja) * 2020-03-18 2023-04-28 マイクロン テクノロジー,インク. メモリサブシステムにおけるプログラムされたビット数に基づいて読み出し電圧レベルを調整すること
US11854638B2 (en) 2021-02-08 2023-12-26 Megachips Corporation Nonvolatile semiconductor storage device and read voltage correction method

Also Published As

Publication number Publication date
CN107094370B (zh) 2021-01-05
US8839073B2 (en) 2014-09-16
US9430154B2 (en) 2016-08-30
WO2013166200A1 (en) 2013-11-07
CN107094370A (zh) 2017-08-25
KR101754653B1 (ko) 2017-07-06
US20130297986A1 (en) 2013-11-07
EP2845198A1 (en) 2015-03-11
TWI612524B (zh) 2018-01-21
US20160357631A1 (en) 2016-12-08
US20150205527A1 (en) 2015-07-23
EP2845198A4 (en) 2015-11-25
JP6163540B2 (ja) 2017-07-12
US10002046B2 (en) 2018-06-19
TW201407618A (zh) 2014-02-16
KR20150002829A (ko) 2015-01-07

Similar Documents

Publication Publication Date Title
JP6163540B2 (ja) 半導体ディスクコントローラにおける0−1バランス管理
US10734087B2 (en) Retention-drift-history-based non-volatile memory read threshold optimization
US11024396B2 (en) Reduction or elimination of a latency penalty associated with adjusting read thresholds for non-volatile memory
US9595320B2 (en) Optimization of read thresholds for non-volatile memory
JP6452278B2 (ja) 不揮発性メモリの耐久性平準化のためのセル損傷の測定
US9239754B2 (en) Single read based soft-decision decoding of non-volatile memory
US8856611B2 (en) Soft-decision compensation for flash channel variation

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20160421

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20160422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160426

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160426

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170418

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170613

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170619

R150 Certificate of patent or registration of utility model

Ref document number: 6163540

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees