KR20090086523A - Nonvolatile memory with error correction based on the likehood the error may occur - Google Patents

Nonvolatile memory with error correction based on the likehood the error may occur Download PDF

Info

Publication number
KR20090086523A
KR20090086523A KR1020097008466A KR20097008466A KR20090086523A KR 20090086523 A KR20090086523 A KR 20090086523A KR 1020097008466 A KR1020097008466 A KR 1020097008466A KR 20097008466 A KR20097008466 A KR 20097008466A KR 20090086523 A KR20090086523 A KR 20090086523A
Authority
KR
South Korea
Prior art keywords
data
probability values
bits
output
input
Prior art date
Application number
KR1020097008466A
Other languages
Korean (ko)
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
Priority claimed from US11/536,286 external-priority patent/US7818653B2/en
Priority claimed from US11/536,327 external-priority patent/US7904783B2/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20090086523A publication Critical patent/KR20090086523A/en

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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/43Majority logic or threshold decoding
    • 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/26Sensing or reading circuits; Data output circuits
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • 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/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems

Abstract

In a nonvolatile memory system, data is read from a memory array and used to obtain likelihood values, which are then provided to a soft-input soft-output decoder. The soft-input soft-output. decoder calculates output likelihood values from input likelihood values and from parity data that was previously added according to an encoding scheme. The likelihood is derived by comparing a measured memory cell voltage with more than one reference voltages. ® KIPO & WIPO 2009

Description

에러가 발생할 수 있는 확률을 기초로 하여 에러가 보정된 비휘발성 메모리{NONVOLATILE MEMORY WITH ERROR CORRECTION BASED ON THE LIKEHOOD THE ERROR MAY OCCUR} Non-volatile memory whose error is corrected based on the probability that an error can occur {NONVOLATILE MEMORY WITH ERROR CORRECTION BASED ON THE LIKEHOOD THE ERROR MAY OCCUR}

본 발명은, 비휘발성 메모리 시스템과, 비휘발성 메모리 시스템을 동작시키기 위한 방법에 관한 것이다. The present invention relates to a nonvolatile memory system and a method for operating the nonvolatile memory system.

비휘발성 메모리 시스템들은 여러 분야에 사용된다. 일부 비휘발성 메모리 시스템은 퍼스널 컴퓨터와 같이 보다 큰 시스템에 내장된다. 다른 비휘발성 메모리 시스템들은 호스트 시스템에 착탈 가능하게 연결되어 있고, 서로 다른 호스트 시스템 사이에 호환될 수 있다. 이러한 착탈 가능 메모리 시스템들의 예들은 메모리 카드들과 USB 플래시 드라이브들을 포함한다. 비휘발성 메모리 카드들을 포함하는 전자 회로 카드들은 다수의 잘 알려진 규격에 따라서 상업적으로 구현되었다. 메모리 카드들은 퍼스널 컴퓨터들, 휴대 전화들, 개인 휴대 정보 단말기들(PDAs), 디지털 스틸 카메라들, 디지털 무비 카메라들, 휴대용 오디오 플레이어들 및 대용량의 데이터를 저장하기 위한 기타 호스트 전자 디바이스들과 함께 사용된다. 이러한 카드들은 통상적으로 메모리 셀 어레이의 동작을 제어하며 카드가 연결되는 호스트와 인터페이스하는 제어기와 함께 재프로그램 가능한 비휘발성 반도체 메모리 셀 어레 이를 포함한다. 동일 타입의 여러 카드는 이러한 타입의 카드를 수용하도록 설계된 호스트 카드 슬롯에서 호환될 수 있다. 그러나 많은 전자 카드 규격들의 개발은 어느 정도 서로 호환 가능하지 않은 다양한 타입들의 카드들을 생성하였다. 하나의 규격에 따라 제조된 카드는 통상적으로 다른 규격의 카드에 의해 동작하도록 설계된 호스트에 의해 사용할 수 없다. 메모리 카드 규격들은 PC 카드, CompactFlashTM 카드(CFTM 카드), SmartMediaTM, 멀티미디어카드(MMCTM), 보안 디지털(SD) 카드, 미니SDTM 카드, 가입자 식별 모듈(SIM), 메모리 스틱(Memory StickTM), 메모리 스틱 듀오 카드 및 마이크로SD/TransFlashTM 메모리 모듈 규격들을 포함한다. "Cruzer®"라는 상표명으로 샌디스크사로부터 상업적으로 이용 가능한 여러 USB 플래시 드라이브 제품들이 존재한다. USB 플래시 드라이브들은 전형적으로 상술한 메모리 카드보다 크고 서로 다른 형태이다.Nonvolatile memory systems are used in many fields. Some nonvolatile memory systems are embedded in larger systems, such as personal computers. Other nonvolatile memory systems are removably coupled to the host system and can be compatible between different host systems. Examples of such removable memory systems include memory cards and USB flash drives. Electronic circuit cards, including nonvolatile memory cards, have been commercially implemented in accordance with a number of well-known specifications. Memory cards are used with personal computers, mobile phones, personal digital assistants (PDAs), digital still cameras, digital movie cameras, portable audio players, and other host electronic devices for storing large amounts of data. do. Such cards typically include a reprogrammable nonvolatile semiconductor memory cell array with a controller that controls the operation of the memory cell array and interfaces with the host to which the card is connected. Multiple cards of the same type may be compatible in host card slots designed to accept these types of cards. However, the development of many electronic card specifications has produced various types of cards that are somewhat incompatible with each other. Cards manufactured according to one specification are typically not usable by hosts designed to operate with cards of another specification. Memory card specifications include PC Card, CompactFlash TM Card (CF TM Card), SmartMedia TM , Multimedia Card (MMC TM ), Secure Digital (SD) Card, Mini SD TM Card, Subscriber Identity Module (SIM), Memory Stick TM ), memory stick duo card and microSD / TransFlash memory module specifications. There are several USB flash drive products available commercially from SanDisk under the trade name "Cruzer®". USB flash drives are typically larger and different types than the memory card described above.

비휘발성 메모리 시스템에 저장된 데이터는 데이터 판독시 잘못된 비트들을 포함할 수 있다. 붕괴된 데이터를 재구성하기 위한 전통적인 방법은 에러 보정 코드들(Error Correction Codes: ECCs)의 어플리케이션을 포함한다. 간단한 에러 보정 코드들은 추가 패리티 비트들을 저장함으로써 데이터를 인코드하고, 이는 데이터가 메모리 시스템에 기록될 때 패리티 그룹의 비트를 필요한 논리값으로 설정한다. 저장 중 데이터에 잘못이 있으면, 패리티 그룹의 비트가 변할 수 있다. 메모리 시스템으로부터 데이터 판독시, 패리티 그룹의 비트들은 ECC에 의해 한번 더 계산 된다. 데이터 붕괴로 인해 계산된 패리티는 필요한 패리티 조건에 맞지 않을 수 있으며, ECC가 붕괴를 감지할 수 있다.Data stored in a nonvolatile memory system may contain incorrect bits when reading data. Traditional methods for reconstructing collapsed data include the application of Error Correction Codes (ECCs). Simple error correction codes encode data by storing additional parity bits, which sets the bits of the parity group to the required logical values when the data is written to the memory system. If there is an error in the data during storage, the bits of the parity group may change. When reading data from the memory system, the bits of the parity group are calculated once more by the ECC. Parity calculated due to data decay may not meet the required parity conditions, and ECC can detect the decay.

ECC들은 적어도 2개의 기능, 즉 에러 감지와 에러 보정을 가질 수 있다. 각각의 이들 기능을 위한 능력은 전형적으로 잘못되고 이어서 보정될 때 감지될 수 있는 다수의 비트들에서 측정된다. 감지 능력은 보정 능력과 동일하거나 보다 뛰어날 수 있다. 전형적인 ECC는 보정할 수 있는 것보다 많은 수의 에러 비트들을 감지할 수 있다. 데이터 비트들과 패리티 비트들의 집합은 때때로 단어로 불리운다. 초기 예는 (7,4) 해밍 코드(Hamming code)이며, 이 코드는 단어당 2개의 에러(본 발명의 예에서 7 비트)까지 감지하는 능력을 가지며, 이러한 7비트 단어에서 하나의 에러를 보정할 수 있는 능력을 갖는다.ECCs can have at least two functions: error detection and error correction. The ability for each of these functions is typically measured in a number of bits that can be sensed when they are wrong and then corrected. The sensing capability can be equal to or better than the calibration capability. A typical ECC can detect more error bits than can be corrected. The set of data bits and parity bits is sometimes called a word. An initial example is the (7,4) Hamming code, which has the ability to detect up to two errors per word (7 bits in the example of the present invention) and corrects one error in this 7 bit word. Have the ability to do so.

보다 복잡한 ECC들은 단어당 싱글 에러보다 많이 보정할 수 있지만, 데이터를 재구성하기가 더욱더 복잡해진다. 공통적인 실행은 몇몇 수용할 수 있는 작은 확률의 올바르지 않은 복구에 의해 데이터를 복구하는 것이다. 그러나 다수의 에러들을 증가시킴으로써 신뢰할 수 있는 데이터 복구의 확률이 또한 급속히 감소되거나 또는 추가 하드웨어 및/또는 성능과 관련된 비용이 지나치게 커진다.More complex ECCs can correct for more than a single error per word, but the data is more complex to reconstruct. A common practice is to recover data by some acceptable small probability of incorrect recovery. However, by increasing the number of errors, the probability of reliable data recovery is also rapidly reduced or the cost associated with additional hardware and / or performance becomes too high.

EEPROM 시스템들을 포함하는 반도체 메모리 디바이스에 있어서, 데이터는 트랜지스터들의 임계 전압들에 의해 표시될 수 있다. 전형적으로, 서로 다른 디지털 데이터 저장 값들은 서로 다른 전압 범위들에 대응한다. 몇몇 이유로, 판독 동작 전 또는 판독 동작 동안 전압 레벨들이 자신들의 프로그램된 범위들로부터 시프트되면, 에러가 발생한다. 에러는 ECC에 의해 감지될 수 있으며 몇몇 경우들에 있어 서 이들 에러들이 보정될 수 있다.In a semiconductor memory device including EEPROM systems, data may be represented by threshold voltages of transistors. Typically, different digital data storage values correspond to different voltage ranges. For some reason, an error occurs if the voltage levels are shifted from their programmed ranges before or during the read operation. Errors can be detected by the ECC and in some cases these errors can be corrected.

비휘발성 메모리 어레이는 디코더에 연결되어 메모리 어레이로부터 인코드된 데이터 판독이 메모리 어레이 내에 저장된 비트들과 연관된 확률 값들을 계산하기 위해 사용된다. 이러한 디코더의 예는 소프트-입력 소프트-출력(SISO) 디코더이다. 인코드된 데이터는 데이터 비트와 연관된 확률의 표시를 제공하는 고해상도에 의해 분석될 수 있지만, 단지 데이터 비트의 논리적인 값이 아니다. 예를 들어, 2진 데이터가 메모리에서 +1/-1 볼트로 인코드되는 경우, 실제 전압 판독은 단지 부호 대신에 ECC 디코더에 의해 사용될 수 있다. 확률 값들은 판독 또는 다른 소스들로부터 유도될 수 있다. 확률 값들은 소프트-입력으로서 SISO 디코더로 제공될 수 있다. SISO 디코더의 출력은 컨버터에 의해 하드-출력으로 변환될 수 있다. 하드-출력은 보정된 데이터를 나타낸다. 몇몇 경우들에 있어서, SISO 디코더는 몇몇 사전결정된 조건이 충족될 때까지 다중 반복들에서 계산들을 수행할 수 있다.A nonvolatile memory array is coupled to the decoder such that an encoded data read from the memory array is used to calculate probability values associated with the bits stored in the memory array. An example of such a decoder is a soft-input soft-output (SISO) decoder. Encoded data can be analyzed by high resolution, which provides an indication of the probability associated with the data bits, but is not merely a logical value of the data bits. For example, if binary data is encoded at + 1 / -1 volts in memory, the actual voltage reading can be used by the ECC decoder instead of just the sign. Probability values may be derived from readings or other sources. Probability values may be provided to the SISO decoder as soft-input. The output of the SISO decoder can be converted to hard-output by the converter. Hard-output represents the corrected data. In some cases, the SISO decoder may perform calculations in multiple iterations until some predetermined condition is met.

비휘발성 메모리에서, 높은 분석 판독은 개별적인 판독 단계들을 위한 적절한 전압들을 선택함으로써 달성될 수 있으며, 따라서, 보다 높은 밀도의 판독들이 다른 부분에서 발생하는 것보다 특별한 임계 전압 함수의 소정의 부분에 대해 발생하도록 한다. 이것은, 예를 들어, 임계 전압 함수가 상당한 중첩을 갖는 경우, 관심 영역에 대한 추가 분석을 제공한다.In non-volatile memory, high analytical readout can be achieved by selecting appropriate voltages for the individual read steps, so that higher density reads occur for some portion of the particular threshold voltage function than occurs elsewhere. Do it. This provides further analysis of the region of interest, for example if the threshold voltage function has significant overlap.

비휘발성 메모리에서, 복조기는 메모리 어레이로부터의 전압들을 확률 값들로 변환할 수 있다. 하나 이상의 비트가 셀에 저장되는 경우, 개별적인 확률 값이 각각의 비트를 위해 획득될 수 있다. 이러한 확률 값들은 SISO 디코더를 위한 소프트-입력으로서 사용될 수 있다.In nonvolatile memory, the demodulator may convert voltages from the memory array into probability values. If more than one bit is stored in a cell, individual probability values may be obtained for each bit. These probability values can be used as soft-input for the SISO decoder.

도 1은, 논리 1과 논리 0 상태들을 구별하기 위해 사용된 전압 VD를 포함하는 비휘발성 메모리 내에 논리 1 상태와 논리 0 상태로 프로그램된 셀들의 임계 전압들의 확률 함수들을 도시하는 도면.1 illustrates the probability functions of threshold voltages of cells programmed to a logic 1 state and a logic 0 state in a nonvolatile memory that includes a voltage V D used to distinguish between logic 1 and logic 0 states.

도 2는, 메모리 어레이, 변조기/복조기 회로들 및 인코더/디코더 회로들을 포함하는 메모리 시스템의 구성요소들을 도시하는 도면.2 shows components of a memory system including a memory array, modulator / demodulator circuits, and encoder / decoder circuits.

도 3은, 임계 전압 값들을 도시하는 논리 1 상태와 논리 0 상태로 프로그램되는 셀들의 판독 임계 전압들의 확률 함수를 도시하는 도면.3 shows a probability function of read threshold voltages of cells programmed to a logic 1 state and a logic 0 state showing threshold voltage values.

도 4는, 메모리 어레이, 변조기/복조기 회로들 및 인코더/디코더 회로들, 디코더로 확률 값들을 제공하는 복조기를 포함하는 메모리 시스템의 구성요소들을 도시하는 도면.4 shows components of a memory system including a memory array, modulator / demodulator circuits and encoder / decoder circuits, and a demodulator providing probability values to a decoder.

도 5는, 메모리 셀의 상태를 판독하기 위해 감응 증폭기에 연결된 NAND 스트링을 도시하는 도면.5 illustrates a NAND string coupled to a sensitive amplifier for reading the state of a memory cell.

도 6a는, 3개의 임계 전압들을 포함하는 논리 1 상태와 논리 0 상태로 프로그램되는 셀들의 판독 임계 전압들의 확률 함수들을 도시하는 도면.FIG. 6A illustrates the probability functions of read threshold voltages of cells programmed to a logic 1 state and a logic 0 state comprising three threshold voltages. FIG.

도 6b는, 4 상태로 프로그램되는 셀들의 판독 임계 전압들의 확률 함수들을 도시하고 셀들이 판독되는 임계 전압들을 도시하는 도면.FIG. 6B shows the probability functions of the read threshold voltages of cells programmed to 4 states and shows the threshold voltages from which cells are read. FIG.

도 7은, 셀당 2 비트들을 저장하는 메모리에서 임계 전압의 함수로서 제 1 비트와 제 2 비트 모두를 위한 개별적인 확률 값들을 도시하는 도면.7 shows individual probability values for both the first bit and the second bit as a function of the threshold voltage in a memory storing two bits per cell.

도 8은, 소프트-입력 소프트-출력(SISO) 디코더를 갖는 인코더/디코더 유닛을 도시하는 도면.8 shows an encoder / decoder unit having a soft-input soft-output (SISO) decoder.

도 9는, 입력 데이터가 스퀘어 매트릭스 내에 배열되고 패리티 비트가 각각의 로우 및 열에 대해 계산되는 예시적인 인코딩 체계를 도시하는 도면.9 illustrates an example encoding scheme in which input data is arranged in a square matrix and parity bits are calculated for each row and column.

도 10은, 하드-입력 디코더를 이용하여 보정할 수 없지만 SISO 디코더를 이용하여 보정할 수 있는 데이터에서 에러들을 야기하는 노이즈에 종속하는 신호의 특별한 예를 도시하는 도면.FIG. 10 shows a special example of a signal that is not dependent on noise that causes errors in data that cannot be corrected using a hard-input decoder but can be corrected using a SISO decoder.

도 11은, 패리티 비트들이 입력 데이터, 행과 열로 정렬된 입력 데이터, 각각의 행과 열에 대해 계산된 패리티 비트.11 shows parity bits with input data, input data arranged in rows and columns, parity bits calculated for each row and column.

도 12는, 도 11에 도시된 인코딩을 제공하는 인코더와 로우 확률 값들을 SISO 디코더로 제공하는 복조기를 포함하는 메모리 시스템의 구성요소들을 도시하는 도면.FIG. 12 illustrates components of a memory system including an encoder providing the encoding shown in FIG. 11 and a demodulator providing low probability values to a SISO decoder.

도 13a는, 도 12의 SISO 디코더에 의해 수행되는 제 1 수평 반복을 도시하는 도면.FIG. 13A illustrates a first horizontal iteration performed by the SISO decoder of FIG. 12. FIG.

도 13b는, 도 12의 SISO 디코더에 의해 수행되는 제 1 수직 반복을 도시하는 도면.FIG. 13B illustrates a first vertical iteration performed by the SISO decoder of FIG. 12.

도 13c는, 도 12의 SISO 디코더에 의해 수행된 제 2 수평 반복을 도시하는 도면.FIG. 13C illustrates a second horizontal iteration performed by the SISO decoder of FIG. 12. FIG.

도 13d는, 도 12의 SISO 디코더에 의해 수행되는 제 2 수직 반복을 도시하는 도면.FIG. 13D illustrates a second vertical iteration performed by the SISO decoder of FIG. 12.

도 14는, SISO 디코더에서 사용된 저밀도 패리티 체크(LDPC) 패리티 체크 매트릭스를 도시하는 도면.14 illustrates a low density parity check (LDPC) parity check matrix used in a SISO decoder.

도 15는, 연결된 인코더들과 연결된 디코더들을 갖는 인코더/디코더를 도시하는 도면.FIG. 15 illustrates an encoder / decoder with connected encoders and connected decoders.

많은 비휘발성 메모리들에 있어서, 메모리 어레이로부터 데이터 판독은 에러들을 가질 수 있다. 즉, 메모리 어레이로 프로그램되는 입력 데이터의 개별적인 비트들은 서로 다른 논리값으로 존재하는 것으로서 뒤에 판독될 수 있다. 도 1은 메모리 셀 상태를 나타내는 물리적인 파라미터(임계 전압, VT)와 메모리 셀이 프로그램될 논리값들간의 관계를 도시한다. 본 발명의 예에서, 단지 셀내에 단지 2 상태들만이 저장된다. 따라서, 셀은 데이터의 1 비트를 저장한다. 논리 0 상태로 프로그램된 셀들은 일반적으로 논리 1(프로그램되지 않은) 상태에서 셀들보다 높은 임계 전압을 갖는다. 대안적인 체계에서, 논리 1 상태는 메모리 셀의 프로그램되지 않은 상태이다. 도 1의 수직축은 예상된 임계 전압 분포에 기초한 어느 특별한 임계 전압에서 셀을 판독하는 확률을 나타낸다. 제 1 확률 함수는 논리 1로 프로그램되는 셀들을 위해 도시되고 논리 0으로 프로그램되는 셀들을 위해 도시된다. 그러나 이들 함수들은 이들 간에 어느 정도의 중첩을 갖는다. 구별 전압 VD는 이러한 셀 들의 판독시 사용된다. VD 이하의 임계 전압을 갖는 셀들은 상태 1로서 간주될 것이며, 반면에 VD 이상의 임계 전압을 갖는 셀들은 상태 0으로서 간주될 것이다. 도 1에 도시되는 바와 같이, 이것이 항상 옳은 것은 아니다. 함수들 간의 중첩 때문에, 논리 1 상태로 프로그램되는 메모리 셀이 VD보다 큰 임계 전압을 갖는 것으로 판독될 것이며 따라서 논리 0 상태로 존재하는 것으로 판독될 비제로 확률이 존재한다. 유사하게, 논리 0 상태로 프로그램되는 메모리 셀이 논리 1 상태를 갖는 것으로서 판독될 비제로 확률이 존재한다.For many nonvolatile memories, reading data from the memory array can have errors. That is, the individual bits of input data programmed into the memory array may be read later as present with different logic values. 1 shows the relationship between a physical parameter (threshold voltage, V T ) representing a memory cell state and logic values to which a memory cell is to be programmed. In the example of the invention, only two states are stored in the cell. Thus, the cell stores one bit of data. Cells programmed to a logic zero state generally have a higher threshold voltage than cells in a logic one (unprogrammed) state. In an alternative scheme, the logical one state is the unprogrammed state of the memory cell. The vertical axis of FIG. 1 represents the probability of reading a cell at any particular threshold voltage based on the expected threshold voltage distribution. The first probability function is shown for cells programmed to logic one and for cells programmed to logic zero. However, these functions have some degree of overlap between them. The distinguishing voltage V D is used for reading these cells. Cells with threshold voltages below V D will be considered as state 1, while cells with threshold voltages above V D will be considered as state 0. As shown in FIG. 1, this is not always correct. Because of the overlap between the functions, there is a non-zero probability that a memory cell programmed into a logic 1 state will be read as having a threshold voltage greater than V D and therefore be read as being in a logic 0 state. Similarly, there is a non-zero probability that a memory cell programmed to a logical zero state will be read as having a logical one state.

함수들 간의 중첩은 메모리 어레이내 물리적인 결함들과 메모리 어레이내 나중 프로그래밍 또는 판독 동작들에 의해 프로그램된 셀들에 기인한 방해를 포함하는 다수의 이유들 때문에 발생한다. 중첩은 또한 매우 타이트한 임계 전압 범위내 큰 다수의 셀들을 유지하기 위한 일반적인 능력의 부족에 기인하여 발생할 수 있다. 소정의 프로그래밍 기법들은 좁은(보다 작은 규격 편차를 갖는) 임계 전압들의 기능들을 허용할 수 있다. 그러나 이러한 프로그래밍은 보다 많은 시간이 걸릴 수 있다. 몇몇 메모리 시스템들에 있어서, 1 비트 이상이 메모리 셀내에 저장된다. 일반적으로, 메모리 셀내에 가능한 많은 비트들이 저장되는 것이 바람직하다. 이용 가능한 임계 전압을 효율적으로 이용하기 위해, 인접한 상태들을 위한 기능들은 이들이 상당히 중첩되도록 존재할 수 있다. Overlapping between functions occurs for a number of reasons, including physical defects in the memory array and interference due to cells programmed by later programming or read operations in the memory array. Overlapping can also occur due to a lack of general ability to maintain large numbers of cells within a very tight threshold voltage range. Certain programming techniques may allow the functions of narrow (with smaller specification deviations) threshold voltages. However, this programming can take more time. In some memory systems, more than one bit is stored in a memory cell. In general, it is desirable to store as many bits as possible in a memory cell. In order to efficiently use the available threshold voltages, the functions for adjacent states may exist so that they overlap considerably.

비휘발성 메모리 시스템은 공통적으로 ECC 방법들을 활용하여 메모리 어레이로부터 판독되는 데이터 내에서 발생하는 에러들을 극복한다. 이러한 방법들은 일 반적으로 인코딩 시스템에 따라서 메모리 어레이 내에 저장될 입력 데이터로부터 몇몇 추가적인 ECC 비트들을 계산한다. 다른 ECC 체계들은 입력 데이터를 보다 복잡한 방법으로 출력 데이터에 위치시킬 수 있다. ECC 비트들은 일반적으로 입력 데이터와 함께 저장되거나 개별적으로 저장될 수 있다. 입력 데이터와 ECC 비트들은 후에 비휘발성 메모리 어레이로부터 판독되고 디코더는 데이터와 ECC 비트들 모두를 사용하여 어떠한 에러들이 존재하는지를 체크한다. 몇몇 경우들에 있어서, 이러한 ECC 비트들은 또한 에러가 존재하는 비트를 식별하기 위해 사용될 수 있다. 그 다음, 잘못된 비트는 자산의 상태를 변경("0"에서 "1" 또는 "1"에서 "0"으로 변경)함으로써 보정된다. 데이터 비트들에 ECC 비트들을 첨부하는 것이 비휘발성 메모리내에 비트를 저장하기 전에 데이터를 인코드하기 위한 유일한 방법이 아니다. 예를 들어, 데이터 비트들은 다음의 변환들: 00에서 1111, 01에서 1100, 10에서 0011 및 11에서 0000을 제공하는 체계에 따라서 인코드될 수 있다.Nonvolatile memory systems commonly utilize ECC methods to overcome errors that occur in data read from the memory array. These methods typically calculate some additional ECC bits from the input data to be stored in the memory array, depending on the encoding system. Other ECC schemes can place input data in output data in more complex ways. ECC bits may generally be stored with the input data or stored separately. The input data and ECC bits are later read from the nonvolatile memory array and the decoder checks for any errors using both the data and the ECC bits. In some cases, these ECC bits may also be used to identify the bit in which an error exists. The wrong bit is then corrected by changing the state of the asset ("0" to "1" or "1" to "0"). Attaching ECC bits to data bits is not the only way to encode data before storing the bits in non-volatile memory. For example, data bits may be encoded according to a scheme that provides the following conversions: 00 to 1111, 01 to 1100, 10 to 0011, and 11 to 0000.

도 2는 메모리 시스템(200) 내에 저장되는 입력 데이터의 예를 도시한다. 입력 데이터는 인코더(203)를 포함하는 ECC 유닛(201)에 의해 1차적으로 수신된다. 입력 데이터는 메모리 시스템(200) 내에 저장될 호스트 데이터이거나 메모리 제어기에 의해 발생된 데이터일 수도 있다. 그 다음, 인코더(203)는 인코딩 체계를 이용하여 입력 데이터 비트들로부터 ECC 비트들(1111)을 계산한다. 인코딩 체계의 일례는 데이터 비트들의 선택된 그룹들을 위한 패리티 비트들일 수 있다.2 illustrates an example of input data stored in the memory system 200. The input data is primarily received by the ECC unit 201 including the encoder 203. The input data may be host data to be stored in the memory system 200 or data generated by the memory controller. The encoder 203 then calculates ECC bits 1111 from the input data bits using the encoding scheme. One example of an encoding scheme may be parity bits for selected groups of data bits.

그 다음, 입력 데이터 비트들과 ECC 비트들 모두는 변조기(207)를 포함하는 변조/복조 유닛(205)으로 전송된다. 변조기(207)는 ECC 유닛(201)에 의해 전송된 디지털 데이터를 메모리 어레이(209)에 기록되는 형태로 변환한다. 하나의 체계에 있어서, 디지털 데이터는 복수의 메모리 셀들내 복수의 임계 전압 값들로 변환된다. 따라서, 메모리 셀내 저장된 임계 전압으로 디지털 데이터를 변환하기 위해 사용된 다양한 회로들이 변조기를 형성하기 위해 고려될 수 있다. 도 2의 예에 있어서, 각각의 메모리 셀은 1 비트의 데이터를 유지할 수 있다. 따라서, 각각의 메모리 셀은 도 1에 도시된 바와 같이 논리 "1" 상태와 논리 "0" 상태를 나타내는 2 범위 중 하나에서 임계 전압을 가질 수 있다. 논리 "1" 상태를 저장하는 메모리 셀들은 VD보다 작은 임계 전압(<VD)을 갖는 반면에 논리 "0" 상태를 저장하는 메모리 셀들은 VD보다 큰 임계 전압(>VD)을 갖는다. 셀들은 프로그램될 수 있으며 VD보다 큰 공칭 임계 전압으로 입증되어 적어도 초기에 2개의 논리 상태들로 프로그램된 셀들 간에 몇몇 바람직한 분리가 존재한다는 것을 보장한다. Then both the input data bits and the ECC bits are sent to a modulation / demodulation unit 205 that includes a modulator 207. The modulator 207 converts the digital data transmitted by the ECC unit 201 into a form recorded in the memory array 209. In one scheme, digital data is converted into a plurality of threshold voltage values in a plurality of memory cells. Thus, various circuits used to convert digital data to threshold voltages stored in memory cells can be considered to form a modulator. In the example of FIG. 2, each memory cell can hold one bit of data. Thus, each memory cell may have a threshold voltage in one of two ranges representing a logic "1" state and a logic "0" state, as shown in FIG. Memory cells storing logic "1" state are small threshold voltage (than V D <memory cells storing logic "0" state, while having a V D) are larger threshold voltage than V D has the (> V D) . The cells can be programmed and proved to be nominal threshold voltages greater than V D to ensure that there is at least some desired separation between the cells that were initially programmed into the two logic states.

데이터는 일정 기간 동안 메모리 어레이(209) 내에 저장될 수 있다. 이 시간 동안, 다양한 이벤트들이 메모리 셀들의 임계 전압들을 변경하기 위해 발생할 수 있다. 특히, 프로그래밍과 판독을 포함하는 동작들이 다른 앞서서 프로그램된 셀들에 영향을 끼치는 방법으로 워드 라인들 및 비트 라인들에 적용될 수 있다. 이러한 방해들은 특히 디바이스들의 면적이 인접한 셀들 간의 상호작용이 의미가 있도록 감소되는 경우 일반적이다. 전하는 또한 오래 기간에 걸쳐서 손실될 수 있다. 이러한 데이터 유지 실패들은 또한 판독시 데이터가 변경되도록 야기할 수 있다. 이러한 변경들의 결과로서, 데이터 비트들은 초기에 프로그램된 데이터 비트들과 다른 상태들을 갖는 판독 출력일 수 있다. 도 2의 실시예에 있어서, 하나의 입력 데이터 211은 VD보다 큰 임계 전압(>VD)을 갖는 것으로 초기에 기록될 때 VD 보다 작은 임계 전압(<VD)을 갖는 것으로서 판독된다. Data may be stored in memory array 209 for a period of time. During this time, various events may occur to change the threshold voltages of the memory cells. In particular, operations including programming and reading may be applied to word lines and bit lines in a way that affects other previously programmed cells. Such disturbances are especially common when the area of devices is reduced such that the interaction between adjacent cells is meaningful. Charge can also be lost over a long period of time. Such data retention failures can also cause the data to be changed upon reading. As a result of these changes, the data bits may be a read output with states that are different from the initially programmed data bits. Also in the embodiment of Figure 2, one of the input data 211 it is read as having a small threshold voltage (<V D) than V D as it is written to the beginning to have a larger threshold voltage (> V D) than V D.

메모리 셀들의 임계 전압들은 변조/복조 유닛(205)에서 복조기(213)에 의해 데이터의 비트들로 변환된다. 이것은 변조기에 의해 수행되는 프로세스의 역이다. 복조기(213)는 메모리 어레이(209) 내 메모리 셀로부터 전압 또는 전류를 판독하고 판독으로부터 셀의 상태를 유도하는 감응 증폭기들을 포함할 수 있다. 도 2의 예에서, VD보다 작은 임계 전압(<VD)을 갖는 메모리 셀은 "1"의 복조된 출력을 제공하며 VD보다 큰 임계 전압(>VD)을 갖는 메모리 셀은 "0"의 복조된 출력을 제공한다. 이것은 도시된 출력 시퀀스 11011111을 제공한다. 이러한 시퀀스의 제 2 비트(208)는 메모리 어레이(209) 내에 저장되는 결과로서 에러이다.The threshold voltages of the memory cells are converted into bits of data by demodulator 213 in modulation / demodulation unit 205. This is the inverse of the process performed by the modulator. Demodulator 213 may include sensitive amplifiers that read a voltage or current from a memory cell in memory array 209 and derive the state of the cell from the read. In the Figure 2 example, the small threshold voltage (than V D <memory cell having a V D) provides a demodulated output of the "1" and the larger threshold voltage than V D is "0 memory cell having a (> V D) Provides demodulated output. This provides the output sequence 11011111 shown. The second bit 208 of this sequence is an error as a result of being stored in the memory array 209.

복조기(213)의 출력은 ECC 유닛(201) 내 디코더(215)로 전송된다. 디코더(215)는 어떠한 에러들이 존재하는지 데이터 비트들과 ECC 비트들로부터 결정한다. 작은 수의 에러들이 코드의 보정 능력 내에 존재한다면, 에러들이 보정된다. 많은 수의 에러들이 존재한다면, 이들이 코드의 감지 능력 내이면 이들은 식별될 수 있지만 보정되지 않을 것이다. 다수의 에러들이 코드의 감지 능력을 초과하면, 에러들이 감지되지 않을 수 있거나, 또는 잘못된 보정의 결과를 가져온다. 도 2의 예에 있어서, 제 2 비트 내 에러가 감지되고 보정된다. 이것은 입력 시퀀스와 동일한 디코더(215)로부터 출력(1001)을 제공한다. 메모리 시스템(200)의 디코딩은 하 드-입력 하드-출력 디코딩으로서 간주되는데 이는 디코더(215)가 입력 데이터 비트들과 ECC 비트들을 나타내는 데이터 비트들만을 수신하기 때문이며, 디코더(215)는 입력 데이터 비트들에 대응하는 데이터 비트들의 보정된 시퀀스를 출력하거나(또는 다수의 에러들이 너무 높다면 출력을 제공하는데 실패한다).The output of demodulator 213 is sent to decoder 215 in ECC unit 201. The decoder 215 determines from the data bits and the ECC bits what errors exist. If a small number of errors are within the correction capability of the code, the errors are corrected. If a large number of errors are present, they can be identified but not corrected if they are within the sensing capability of the code. If multiple errors exceed the detection capability of the code, the errors may not be detected or result in incorrect correction. In the example of FIG. 2, the error in the second bit is detected and corrected. This provides an output 1001 from the same decoder 215 as the input sequence. Decoding of the memory system 200 is considered as hard-input hard-output decoding because the decoder 215 receives only data bits representing input data bits and ECC bits, and the decoder 215 receives input data bits. Output a corrected sequence of data bits corresponding to the data (or fail to provide an output if a number of errors are too high).

도 3 및 도 4에 메모리 시스템(200)에 대해 대안적인 메모리 시스템이 도시된다. 도 3은 VD=0과 논리 0을 나타내는 VD 이하의 임계 전압들 및 논리 1을 나타내는 VD 이상의 전압들을 갖는 도 1의 것들과 유사한 함수들을 도시한다. 임계 전압들을 2개의 서로 다른 범위들로 나누는 단일 전압 VD를 도시하는 대신에, 본 명세서에서 임계 전압들은 실제적인 전압 수들에 의해 표시된다. 논리 "1"에 대응하는 함수는 0 볼트 이상의 중심이고 논리 "0"에 대응하는 함수는 "0" 볼트 이하의 중심이다. 3 and 4 illustrate an alternative memory system for the memory system 200. 3 shows functions similar to those of FIG. 1 with threshold voltages below V D representing logic D 0 and voltages above V D representing logic 1. Instead of showing a single voltage V D that divides the threshold voltages into two different ranges, the threshold voltages are represented herein by actual voltage numbers. The function corresponding to logic "1" is at the center of zero volts or more and the function corresponding to logic "0" is at the center of "0" volts or less.

도 4는 서로 다른 판독 프로세스를 갖는 (동일한 입력 데이터 비트들과 ECC 비트들을 이용하는) 메모리 시스템(200)의 것과 유사한 데이터 저장 프로세스를 이용하는 메모리 시스템(421)을 도시한다. 특히, 임계 전압이 특별한 값을 초과하는지 또는 미만인지를 단순히 결정하는 대신에, 메모리 시스템(421)은 도 3에 도시된 바와 같이 임계 전압들을 판독한다. 실제적인 임계 전압이 반드시 판독될 필요가 없다는 것이 이해될 것이다. 셀 동작의 다른 수단이 데이터(예를 들어, 전류 감지)를 저장하고 검색하기 위해 사용될 수 있다. 전압 감지는 단지 예로서 사용된다. 일반적으로, 임계 전압은 트랜지스터가 턴온되는 게이트 전압을 언급한다. 도 4는 전술한 예보다 상세한 정보를 제공하는 판독 발생을 도시한다. 이것은 도 2의 분석보다 높은 분석(및 프로그래밍을 위해 사용되는 것보다 상태들을 분석하는 분석)을 갖는 판독으로 간주될 수 있다. 전술한 예에 있어서, 에러들이 판독 데이터에서 발생한다. 본 명세서에서, 제 2 및 제 3 비트들에 대응하는 판독들은 에러이다. 제 2 및 제 3 비트들은 논리 "0"이었고 프로그래밍에 의해 셀에 VD보다 작은 임계 전압을 갖도록 저장되었지만 셀들은 VD보다 높은(VD=0) 0.05볼트 및 0.10 볼트의 임계 전압을 갖는 것으로 판독된다. 4 shows a memory system 421 using a data storage process similar to that of memory system 200 (using the same input data bits and ECC bits) with different read processes. In particular, instead of simply determining whether the threshold voltage is above or below a particular value, the memory system 421 reads the threshold voltages as shown in FIG. It will be appreciated that the actual threshold voltage does not necessarily need to be read. Other means of cell operation may be used to store and retrieve data (eg, current sensing). Voltage sensing is used only as an example. In general, the threshold voltage refers to the gate voltage at which the transistor is turned on. 4 shows a read generation that provides more detailed information than the above example. This can be considered a readout with a higher analysis (and an analysis that analyzes states than those used for programming) than the analysis of FIG. In the above example, errors occur in the read data. In this specification, the reads corresponding to the second and third bits are an error. The second and third bits, but logic "0" was stored so as to have a smaller threshold voltage than V D to the cell by programming as cells with a threshold voltage of a high (V D = 0) 0.05 volts and 0.10 volts than V D Is read.

일련의 판독 동작들에 의해 도 4의 메모리 어레이(423)로부터 판독된 로우 전압들은 변조/복조 회로(427) 내 복조기(425)로 전송된다. 로우 전압들은 아날로그-디지털 변환의 분석에 의해 지시된 유한 분석을 갖는다. 본 명세서에서, 로우 데이터는 확률 데이터로 변환된다. 특히, 각각의 셀 판독은 대응하는 비트가 1 또는 0인 확률로 변환된다. 메모리 어레이로부터 일련의 판독들(0.75, 0.05, 0.10, 0.15, 1.25, 1.0, 3.0, 및 0.5볼트)은 셀의 상태를 나타낼 뿐 아니라, 그러한 상태에 대해 확실함의 정도를 제공하기 위해 또한 사용될 수 있다. 이것은 메모리 셀이 특별한 비트에 의해 프로그램된 확률로서 표현될 수 있다. 따라서, 0 볼트에 가까운 판독들은 낮은 확률 값들을 제공할 수 있는 반면에, 0볼트로부터 보다 먼 판독들은 보다 높은 확률 값들을 제공한다. 도시된 확률 값들은 (이하 보다 상세히 설명된) 로그 확률 비들(log likelihood ratios)이다. 이것은 논리 0 상태에서 셀들에 대해 음수 값들을 제공하며 논리 1 상태에서 셀들에 대해 양수 값들을 제공하 고, 수의 크기는 상태가 정확히 식별되는 확률을 나타낸다. 제 2 및 제 3 확률 값들(0.1, 0.2)은 논리 "1"을 나타낸다. 제 2 및 제 3 값들은 매우 낮은 확률들을 나타낸다. The low voltages read from memory array 423 of FIG. 4 by a series of read operations are sent to demodulator 425 in modulation / demodulation circuit 427. The low voltages have finite analysis indicated by the analysis of the analog-to-digital conversion. In this specification, the raw data is converted into probability data. In particular, each cell read is converted to a probability that the corresponding bit is one or zero. A series of reads (0.75, 0.05, 0.10, 0.15, 1.25, 1.0, 3.0, and 0.5 volts) from the memory array not only indicate the state of the cell, but can also be used to provide a degree of certainty about that state. . This can be expressed as the probability that the memory cell is programmed by a particular bit. Thus, readings close to zero volts may provide low probability values, while readings farther from zero volts provide higher probability values. The probability values shown are log likelihood ratios (described in more detail below). This provides negative values for the cells in the logical zero state and positive values for the cells in the logical one state, and the magnitude of the number represents the probability that the state is correctly identified. The second and third probability values 0.1, 0.2 represent a logic "1". The second and third values represent very low probabilities.

확률 값들은 ECC 유닛(431) 내 디코더(429)로 전송된다(몇몇 경우들에 있어서, 로우 값들로부터 확률 값들을 획득하는 것은 디코더에서 수행되고 있는 것으로서 간주될 수 있다). 디코더(429)는 확률 값들에 대해 디코딩 동작들을 수행한다. 이러한 디코더는 소프트-입력 디코더로서 간주될 수 있다. 일반적으로, 소프트-입력은 디코드 될 데이터에 관련된 몇몇 품질 정보를 포함하는 입력을 언급한다. 소프트-입력으로서 제공된 추가적인 정보는 일반적으로 디코더가 보다 나은 결과를 획득하도록 허용한다. 디코더는 출력으로서 계산된 확률 값들을 제공하기 위해 소프트-입력을 이용하여 디코딩 계산들을 수행할 수 있다. 이것은 소프트-출력으로서 간주되며 이러한 디코더는 소프트-입력 소프트-출력(SISO) 디코더로서 간주된다. 그 다음, 이러한 출력은 디코딩을 반복하고 결과들을 개선하기 위해 SISO 디코더에 입력으로서 다시 사용될 수 있다. SISO 디코더는 다른 유닛으로 하드 출력을 제공하는 보다 큰 디코더의 부분을 형성할 수 있다. SISO 디코더들은 일반적으로 양호한 성능을 제공하며 몇몇 경우들에 있어서 하드-입력 하드-출력 디코딩에 의해 가능한 것보다 나은 성능을 제공할 수 있다. 특히, 오버헤드의 동일한 양을 위해(다수의 ECC 비트들), SISO 디코더는 보다 큰 에러 보정 능력을 제공할 수 있다. SISO 디코더를 효율적으로 사용하기 위해, 적절한 인코딩/디코딩 체계가 구현될 수 있으며 복조는 과도한 복잡함이 없고 메모리 어레이로부터 데이터를 판독하기 위한 과 도한 시간을 필요로 하지 않고 소프트-입력을 효율적으로 획득하기 위해 적용된다. The probability values are sent to the decoder 429 in the ECC unit 431 (in some cases, obtaining the probability values from the row values can be considered as being performed at the decoder). Decoder 429 performs decoding operations on the probability values. Such a decoder can be considered as a soft-input decoder. In general, soft-input refers to an input that contains some quality information related to the data to be decoded. The additional information provided as soft-input generally allows the decoder to obtain a better result. The decoder may perform decoding calculations using soft-input to provide probability values calculated as output. This is considered as a soft-output and this decoder is considered as a soft-input soft-output (SISO) decoder. This output can then be used again as input to the SISO decoder to repeat decoding and improve the results. The SISO decoder can form part of a larger decoder that provides hard output to other units. SISO decoders generally provide good performance and in some cases may provide better performance than is possible by hard-input hard-output decoding. In particular, for the same amount of overhead (multiple ECC bits), the SISO decoder can provide greater error correction capability. In order to use the SISO decoder efficiently, an appropriate encoding / decoding scheme can be implemented and the demodulation is free of excessive complexity and efficient acquisition of soft-input without requiring excessive time to read data from the memory array. Apply.

일 실시예에 있어서, SISO 디코더를 위한 소프트-입력은 메모리 프로그래밍시 사용되었던 것보다 많은 다수의 상태들을 분석하는 분석에 의해 비휘발성 메모리 어레이내 데이터를 판독함으로써 제공된다. 따라서, 데이터는 2개의 임계 전압 범위들 중 하나로 메모리 셀을 프로그래밍함으로써 기록될 수 있으며 이어서 3개 이상의 임계 전압 범위들을 분석함으로써 판독된다. 전형적으로, 판독에서 사용된 다수의 임계 전압은 프로그래밍에서 사용된 몇몇 다중의 다수의 임계 전압 범위들(예를 들어, 2배)일 수 있다. 그러나 이것이 항상 그러한 경우는 아니다. In one embodiment, soft-input for the SISO decoder is provided by reading data in a non-volatile memory array by analysis that analyzes a number of states more than were used in memory programming. Thus, data can be written by programming the memory cell into one of two threshold voltage ranges and then read by analyzing three or more threshold voltage ranges. Typically, the multiple threshold voltages used in the readout may be several multiple multiple threshold voltage ranges (eg, twice) used in programming. But this is not always the case.

인코더/디코더 회로(ECC 유닛)는 전용 회로로서 구성될 수 있거나 이러한 기능이 제어기 내 펌웨어에 의해 수행될 수 있다. 전형적으로, 제어기는 ECC와 같은 특정한 기능들을 위해 설계된 회로들을 가지며 또한 제어기 동작들을 관리하기 위해 펌웨어를 갖는 주문형 반도체(Application Specific Integrated Circuit : ASIC)이다. 따라서, 인코더/디코더는 메모리 제어기 내 하드웨어와 펌웨어의 조합에 의해 형성될 수 있다. 변조기/복조기 회로들은 메모리 칩, 제어기 칩, 개별적인 칩 또는 몇몇 조합 위에 존재할 수 있다. 일반적으로, 변조기 회로들은 메모리 칩(메모리 어레이에 연결된 주변 회로들과 같은) 위에 적어도 몇몇 구성요소들을 포함할 수 있다. 비록 도 4가 높은 분석(아날로그 판독)으로 판독되고 있는 임계 전압들을 나타내는 반면에, 선택된 분석의 정도는 사용된 비휘발성 메모리의 타입을 포함하는 다수의 팩터들에 달려있을 수 있다. The encoder / decoder circuit (ECC unit) can be configured as a dedicated circuit or this function can be performed by firmware in the controller. Typically, a controller is an application specific integrated circuit (ASIC) with circuits designed for specific functions such as ECC and also having firmware to manage controller operations. Thus, the encoder / decoder may be formed by a combination of hardware and firmware in the memory controller. Modulator / demodulator circuits may reside on top of a memory chip, controller chip, individual chip, or some combination. In general, modulator circuits may include at least some components over a memory chip (such as peripheral circuits connected to a memory array). Although FIG. 4 shows the threshold voltages being read with high analysis (analog read), the degree of analysis selected may depend on a number of factors including the type of nonvolatile memory used.

도 5는 판독 동작을 수행하는 NAND 플래시 메모리 어레이의 스트링(541)을 도시한다. NAND 플래시 메모리는 집합적으로 블럭들, 소거의 기본 유닛으로 불리우는 그룹에서 트랜지스터들을 선택함으로써 연속적으로 연결되고, 분리되는 메모리 셀들의 스트링들로 구성된다. 선택된 셀을 판독하기 위해, 스트링의 다른 셀들은 하드로 턴온되어 스트링을 통해 흐르는 전류가 선택된 셀에 의존하도록 한다. 적절한 바이어스 전압들은 스트링(541)의 각 단부(전형적으로, 하나의 단부는 그라운드에 연결된다)에서 스트링 선택 트랜지스터들(543, 545)의 게이트들 위에 위치되고 하나 이상의 전압들은 순차적으로 선택된 셀에 걸쳐서 확장되는 워드 라인에 인가된다. 데이터의 1 비트를 유지하는 셀에 대해, 단지 싱글 전압만이 필요할 수도 있다. 1 비트 이상을 유지하는 셀들(멀티 레벨 셀들, 또는 MLC)에 대해, 전압 시퀀스는 전형적으로 순차적으로 증가하는 전압 단계들 또는 2진 탐색 패턴들로 구성된다. 각각의 단계는 구별 전압에 대응한다. 2 비트를 저장하는 셀은 4 상태를 필요로 하며 3 비트를 저장하는 셀은 8 상태 등을 필요로 한다. 비트 라인에 부착된 감응 증폭기(547)는 셀이 스위치온 할 때를 결정하고 이러한 스위칭을 야기하는 워드 라인 전압은 셀의 임계 전압 범위를 나타낸다. 판독 동작의 분석은 제공된 다수의 전압 단계들에 달려있다. 예를 들어, 싱글 비트 판독은 감응 동작을 완료하는데 25마이크로초를 필요로 할 수 있는 반면에, 동일한 메모리에 대한 2 비트 판독은 4 상태들을 완전히 분석하기 위해 3개의 감응 동작들을 완료하는데 75마이크로초를 필요로 한다. 보다 많은 전압 단계들은 보다 높은 분석을 제공하지만 이것은 보다 많은 시간을 필요로 한다. 보다 적은 전압 단계들은 스피드를 증가시키지만 좋지않은 분석을 제공한다. 전형적으로, 판독 동작들은 프로그램 동작들을 수행하기 위해 사용된 동일한 분석에 의해 수행된다. 따라서, 프로그램 동작이 4 상태 중 하나로 셀을 프로그램하고 입증하면, 판독 동작은 4개의 임계치 전압 범위들을 분석하기 위해 충분한 분석을 갖는다. 이것은 4개의 확률 상태들을 갖는 셀에 대해 3개의 전압 단계들을 필요로 할 수 있다. NAND 플래시 메모리 시스템들의 다양한 구조들과 NAND 플래시 메모리 시스템들의 방법들이 미합중국 특허 제 7,888,621호, 제 7,092,290호 및 제 6,983,428호에 기술된다.5 shows a string 541 of a NAND flash memory array performing a read operation. A NAND flash memory is collectively composed of strings of memory cells that are connected and separated sequentially by selecting transistors in a group called blocks, the basic unit of erase. To read the selected cell, the other cells of the string are turned on hard so that the current flowing through the string depends on the selected cell. Appropriate bias voltages are located above the gates of the string select transistors 543 and 545 at each end of the string 541 (typically one end is connected to ground) and the one or more voltages sequentially over the selected cell. It is applied to the word line to be extended. For a cell holding one bit of data, only a single voltage may be needed. For cells that hold more than one bit (multi-level cells, or MLC), the voltage sequence typically consists of sequentially increasing voltage steps or binary search patterns. Each step corresponds to a distinct voltage. A cell storing two bits needs four states, and a cell storing three bits needs an eight state and the like. A sensitive amplifier 547 attached to the bit line determines when the cell switches on and the word line voltage causing this switching represents the threshold voltage range of the cell. Analysis of the read operation depends on a number of voltage steps provided. For example, a single bit read may require 25 microseconds to complete the sensitive operation, whereas a 2-bit read to the same memory may complete 75 sensitive seconds to complete three sensitive operations to fully analyze 4 states. Need. More voltage steps provide higher analysis but this requires more time. Less voltage steps increase speed but provide poor analysis. Typically, read operations are performed by the same analysis used to perform the program operations. Thus, if the program operation programs and verifies a cell in one of four states, the read operation has sufficient analysis to analyze the four threshold voltage ranges. This may require three voltage steps for a cell with four probability states. Various structures of NAND flash memory systems and methods of NAND flash memory systems are described in US Pat. Nos. 7,888,621, 7,092,290 and 6,983,428.

도 6a는 메모리 프로그래밍에서 사용된 다수의 상태보다 많은 상태들을 분석하는 높은 분석에 의해 판독되는 싱글-비트 메모리 셀의 예를 도시한다. 전술한 바와 같이, 수평 축은 임계 전압(VT)을 나타내고 수직 축은 소정의 프로그램된 상태에 대해 이러한 임계 전압을 갖는 셀의 확률을 나타낸다. 도 1의 예에 있어서, 싱글 판독은 셀이 2 상태 중 하나로 프로그램되었는지를 결정하기 위해 수행되었다. 대조적으로, 본 명세서에서 3개의 판독들이 셀이 4개의 판독 임계 전압 범위들(651-654) 중 하나에 존재하는지를 결정하기 위해 수행된다. 따라서, 셀은 (2개의 논리 상태들에 대응하는) 2개의 임계 전압 범위 중 하나로 프로그램되고 후에 4개의 임계 전압 범위들(4개의 판독 상태들) 중 하나에 존재하는 것으로서 셀을 식별하는 분석에 의해 판독된다. FIG. 6A shows an example of a single-bit memory cell read by high analysis that analyzes more than a number of states used in memory programming. As mentioned above, the horizontal axis represents the threshold voltage V T and the vertical axis represents the probability of a cell having such a threshold voltage for a given programmed state. In the example of FIG. 1, a single read was performed to determine if the cell was programmed to one of two states. In contrast, three reads are performed herein to determine if a cell is in one of four read threshold voltage ranges 651-654. Thus, the cell is programmed by one of two threshold voltage ranges (corresponding to two logic states) and later analyzed by identifying the cell as being in one of four threshold voltage ranges (four read states). Is read.

판독들을 수행하기 위해 선택된 전압들(V1, V2, V3)은 4개의 임계 전압 범위들(651-654)이 사이즈가 동일하지 않도록 하며 판독들은 2개의 기능들(논리 1 및 논리 2에 대해)이 중첩되는 근처에 집중된다. (구별 전압 V2에서) 하나의 판독은 도 1의 판독과 유사하며 어떠한 상태(0 또는 1)인지를 나타내며 메모리 셀이 안에 존재한다. 다른 2개의 판독들(V1과 V3에서)은 논리 0과 논리 1의 임계 전압 범위들 내에 존재하지만 이들 임계 전압 범위들에 집중되지 않는다. 대신에, 이들 판독들은 V2에 보다 가까이 배치된다. 4개의 판독 임계 전압 범위들(651-654)은 특별한 판독 비트가 보정되는 확률의 표시를 제공한다. 따라서, 논리 0에 대해, V1 이하의(임계 전압 범위 651) 판독은 높은 보정 확률을 갖는 반면에, V1과 V2간(임계 전압 범위 652)의 판독은 보정될 확률이 보다 낮다. 논리 1에 대해, V2와 V3간(임계 전압 범위 653)의 판독은 비교적 낮은 보정 확률을 갖는 반면에, V3 이하의(임계 전압 범위 654) 판독은 보다 높은 보정 확률을 갖는다. 판독되는 데이터에 관해 확률 정보를 획득하기 위해 판독 동작이 허용되는 프로그래밍에서 사용되었던 것보다 많은 수의 상태들을 분석하는 분석을 갖는 판독을 알 수 있다.The voltages V 1 , V 2 , V 3 selected to perform the reads ensure that the four threshold voltage ranges 651-654 are not the same size and the reads are in two functions (logic 1 and logic 2). Is concentrated near the overlapping). One read (at the differential voltage V 2) is similar to the read of FIG. 1 and indicates what state (0 or 1) is present and a memory cell is present. The other two reads (at V 1 and V 3 ) are within the threshold voltage ranges of logic 0 and logic 1 but are not concentrated in these threshold voltage ranges. Instead, these reads are placed closer to V 2 . The four read threshold voltage ranges 651-654 provide an indication of the probability that a particular read bit is corrected. Thus, for logic 0, readings below V 1 (threshold voltage range 651) have a high correction probability, while readings between V 1 and V 2 (threshold voltage range 652) are less likely to be corrected. For logic 1, readings between V 2 and V 3 (threshold voltage range 653) have a relatively low correction probability, while readings below V 3 (threshold voltage range 654) have a higher correction probability. It can be seen that the readout has an analysis that analyzes a larger number of states than was used in programming that allowed the read operation to obtain probability information on the data being read.

도 6b는 다수의 프로그램된 상태보다 많은 상태들을 분석하는 높은 분석을 갖는 판독이 존재하는 2비트 MLC 메모리 셀의 예를 도시한다. 도 6b는 분석을 증가시킴으로써 수행되고 있는 일련의 판독 동작들을 도시한다. READ 1 동안, 셀의 임계 전압은 V1 미만, V1과 V2 사이, V2와 V3 사이, 및 V3보다 큰 임계 전압에 대응하는 4 상태 중 하나로 분석된다. 이러한 제 1 판독은 프로그래밍에 사용된 것과 동일한 수의 상태들을 분석한다. 제 2 판독 READ 2는 보다 높은 분석을 제공하기 위해 수행된다. READ 2는 "10"과 같은 프로그램된 상태를 임계 전압 함수의 중심부(V5와 V6 사이)와 임계 전압 함수의 두 바깥 부분들(V1와 V5 사이에 하나, V6와 V2 사이에 하나)에 대응하는 3개의 판독 상태들로 분석한다. 제 3 판독, READ 3은 보다 높은 분석을 제공하기 위해 다시 수행된다. READ 3은 READ 2의 판독 상태들을 분석하여 바깥 부분들이 더 분석되도록 한다. 본 발명의 예에서, 중심부분들에 대응하는 판독 상태들은 더 분석되지 않는다. 판독 동작들은 READ 1, READ 2, READ 3 순서로 수행되거나 어떠한 다른 순서로 수행될 수 있다. 대안으로, 개별적인 판독 단계들이 몇몇 다른 순서로 수행되어 이들이 싱글 판독 동작으로 조합되도록 할 수 있다. 예를 들어, 판독 단계들은 최저 임계 전압으로부터 시작하고 임계 전압에 따라서 순차적으로 증가시킴으로써 수행될 수 있다. READ 1, READ 2, READ 3의 판독 단계들은 중심부에 대해 보다 높은 특별히 프로그램된 상태의 임계 전압 함수의 바깥 부분들의 판독 동작들의 보다 높은 밀도를 갖는 패턴으로 정렬된다. 이것은 이러한 기능들의 중심부보다 많은 임계 전압 함수들의 바깥 부분들에 관한 정보를 제공한다. 이것은 특별한 상태를 위해 임계 전압 함수의 중심부에서 임계 전압을 갖는 셀이 분석이 더 이상 요구되지 않도록 그러한 상태에서 존재하는 높은 확률(다른 상태에서 존재하는 0 확률에 가까운)을 갖는 것으로 가정할 수 있기 때문이다. 특별한 함수의 다른 부분들은 이웃하는 함수와 중첩될 수 있다. 이러한 중첩 영역(확률 값들이 변하는 곳)에 관한 보다 많은 정보가 바람직할 것이다. 6B shows an example of a 2-bit MLC memory cell in which there is a read with high analysis that analyzes more states than a number of programmed states. 6B shows a series of read operations being performed by increasing the analysis. During READ 1, the threshold voltage of the cell is analyzed in one of four states corresponding to a threshold voltage higher than V 1, less than, V between 1 and V 2, between V 2 and V 3, and V 3. This first read analyzes the same number of states as used for programming. Second read READ 2 is performed to provide higher analysis. READ 2 sets a programmed state such as "10" to the center of the threshold voltage function (between V 5 and V 6 ) and the two outer parts of the threshold voltage function (between V 1 and V 5, between V 6 and V 2 ). Analyze into three read states corresponding to one). The third read, READ 3, is again performed to provide a higher analysis. READ 3 analyzes the read states of READ 2 so that the outer parts are further analyzed. In the example of the invention, the read states corresponding to the cores are not further analyzed. Read operations may be performed in the order of READ 1, READ 2, READ 3 or in any other order. Alternatively, individual read steps may be performed in several different orders so that they are combined in a single read operation. For example, the read steps may be performed by starting from the lowest threshold voltage and sequentially increasing in accordance with the threshold voltage. The read steps of READ 1, READ 2, and READ 3 are arranged in a pattern with a higher density of read operations of the outer portions of the threshold voltage function in a specially programmed state that is higher for the center. This provides information about the outer parts of more threshold voltage functions than the center of these functions. This is because a cell with a threshold voltage at the center of the threshold voltage function for a particular state can be assumed to have a high probability of being in that state (close to the zero probability of being present in other states) so that analysis is no longer required. to be. Other parts of a particular function can be nested with neighboring functions. More information about this overlap region (where the probability values change) would be desirable.

전술한 상세한 설명은 NAND 플래시 메모리 셀들을 판독하기 위한 특별한 기법들에 관한 것이다. 몇몇 메모리들에 있어서, 싱글 판독 단계는 메모리 셀의 프로 그램된 레벨에 관한 정보를 제공할 수 있다. 예를 들어, 몇몇 NOR 플래시 메모리들에 있어서, 메모리 셀의 상태는 소정의 바이어스 조건들 하에서 셀을 통해 전류를 측정함으로써 판독된다. 이러한 메모리에 있어서, 전류 미러는 셀로부터의 전류를 복제하기 위해 사용될 수 있으며, 그 다음 복제된 전류는 여러 기준 전류들과 비교될 수 있다. 따라서, 높은 분석 판독은 싱글 단계에서 수행될 수 있다. The foregoing detailed description relates to particular techniques for reading NAND flash memory cells. In some memories, a single read step may provide information regarding the programmed level of the memory cell. For example, in some NOR flash memories, the state of the memory cell is read by measuring current through the cell under certain bias conditions. In such a memory, a current mirror can be used to replicate the current from the cell, which can then be compared with several reference currents. Thus, high analysis reads can be performed in a single step.

도 7은 개별적인 비트들에 관한 확률 값들이 1 비트보다 많은 데이터를 저장하는 셀로부터 임계 전압 정보로부터 유도될 수 있는 방법을 도시한다. 이 경우에 있어서, 개별적인 확률 값들은 각각의 비트로 할당된다. 도 7은 도 6의 4 상태(11, 10, 00, 01)에 대한 확률 함수를 도시한다. 도 7은 또한 제 1 비트(맨 좌측 비트)에 대해 모든 4 임계 전압 범위들에 걸쳐 확률을 도시한다. 여기서 확률은 특별한 비트가 "1"인 확률로서 도시된다. 확률은 또한 비트가 "0"인 확률로 주어질 수도 있다. 0의 확률 레벨이 도시된다. 이것은 1 또는 0의 동일한 확률이 존재하는 레벨이다. 0 레벨 이하에서, 0의 보다 큰 확률이 존재한다. 좌측 "11" 및 "10"의 두 상태 모두가 제 1 비트로서 "1"을 갖기 때문에, 이러한 그래프의 좌측에 관한 확률은 하이(>0)이다. 우측 "00" 및 "01"의 두 상태 모두가 제 1 비트로서 "0"을 갖기 때문에, 이러한 그래프의 좌측에 관한 확률은 로우(<0)이다. 도 7은 또한 제 2 비트(맨 오른쪽 비트)를 위한 모든 4 임계 전압 범위들에 걸쳐 확률을 도시한다. 이러한 확률은 임계 전압 범위의 단부에서 높고 중간에서 낮다. 따라서, 2 비트들을 위한 확률 값들은 매우 서로 다른 패턴들이다. 도 7은 제 1 비트 확률 P1 및 제 2 비트 확률 P2를 제공하는 임계 전압 V1을 도시한다. 여기서, P1은 임계 전압 V1이 제 1 비트로서 "0"을 갖는 상태와 관련된 임계 전압에 가깝지 않기 때문에 크다. 그러나 P2는 V1이 "10" 상태를 위한 임계 전압 범위에 가깝기 때문에 작다. 이것은 이러한 비트가 1일 수 있는 반면에, 확률이 0일 확률보다 약간 높다는 것을 나타낸다. 도 7은 확률이 동일한 셀 내에 저장된 서로 다른 비트들에 대해 매우 다를 수도 있다는 것을 도시한다. 판독 동작이 이웃하는 상태들의 임계 전압 범위들 간의 중첩의 영역 내에 존재하는 임계 전압을 나타내며 따라서 오판독의 위험성이 증가된다고 하더라도, 개별적인 비트는 중첩이 일반적으로 개별적인 비트를 모두 갖는 두 상태들 간에 존재하는 매우 높은 확률 값을 가질 수 있다. 따라서, 셀-셀에 기초하는 대신에 비트-비트에 기초하여 확률을 판단하는 것이 유익할 수 있다. 복조기는 도 7에 도시된 것들과 같이 임계 전압과 개별적인 비트 확률 값들 간의 상관을 이용하여 메모리 어레이로부터의 판독들에 기초하여 로우 확률 값들을 제공할 수 있다. 판독 동작이 셀에 대한 임계 전압 범위를 식별하는 경우, 각각의 비트에 대한 확률 값들은 각각의 이러한 범위들과 연관될 수 있다. 확률 값들은 소정의 기술을 위한 메모리 셀 행동의 특성 등과 같은 다양한 정보 또는 소정의 메모리 디바이스의 경험으로부터 유도될 수 있다. 몇몇 경우들에 있어서, 확률 값들은 디바이스의 수명 동안 서로 다른 스테이지들에서 변할 수 있다. 7 shows how probability values for individual bits can be derived from threshold voltage information from a cell storing more than 1 bit of data. In this case, individual probability values are assigned to each bit. FIG. 7 shows the probability function for the four states 11, 10, 00, 01 of FIG. 6. 7 also shows the probability over all four threshold voltage ranges for the first bit (leftmost bit). The probability here is shown as the probability that a particular bit is "1". The probability may also be given as the probability that the bit is "0". A probability level of zero is shown. This is the level at which the same probability of 1 or 0 exists. Below the zero level, there is a greater probability of zero. Since both states of left "11" and "10" have "1" as the first bit, the probability about the left side of this graph is high (> 0). Since both states of the right "00" and "01" have "0" as the first bit, the probability about the left side of this graph is low (<0). 7 also shows the probability over all four threshold voltage ranges for the second bit (rightmost bit). This probability is high at the end of the threshold voltage range and low at the middle. Thus, the probability values for two bits are very different patterns. 7 shows a threshold voltage V1 providing a first bit probability P1 and a second bit probability P2. Here, P1 is large because it is not close to the threshold voltage associated with the state where threshold voltage V1 has "0" as the first bit. However, P2 is small because V1 is close to the threshold voltage range for the "10" state. This indicates that while this bit may be 1, the probability is slightly higher than the probability that it is 0. 7 shows that the probability may be very different for different bits stored in the same cell. Although the read operation represents a threshold voltage that exists within the region of overlap between threshold voltage ranges of neighboring states and thus increases the risk of false readings, the individual bits are present between the two states where the overlap generally has both individual bits. It can have a very high probability value. Thus, it may be beneficial to determine the probability based on the bit-bit instead of based on the cell-cell. The demodulator may provide low probability values based on reads from the memory array using the correlation between the threshold voltage and the individual bit probability values as shown in FIG. 7. If the read operation identifies a threshold voltage range for the cell, the probability values for each bit may be associated with each of these ranges. Probability values may be derived from various information, such as characteristics of memory cell behavior for a given technique, or the experience of a given memory device. In some cases, the probability values may change at different stages over the lifetime of the device.

확률은 다른 방법들로 표현될 수 있다. 2진 데이터에 대해 확률을 표현하기 위한 하나의 일반적인 방법은 로그 확률 비(Log Likelihood Ratio:LLR)이다. 특별한 비트와 연관된 LLR은 특별한 판독 x에 대해 비트가 "0"인 확률에 대해 비트가 "1"인 확률의 비의 로그이다. 따라서:Probability can be expressed in other ways. One common way to express probabilities for binary data is the Log Likelihood Ratio (LLR). The LLR associated with a particular bit is the log of the ratio of the probability that the bit is "1" to the probability that the bit is "0" for the particular read x. therefore:

Figure 112009024990153-PCT00001
Figure 112009024990153-PCT00001

여기서

Figure 112009024990153-PCT00002
는 비트가 "1"인 확률이고,
Figure 112009024990153-PCT00003
는 비트가 "0"인 확률이다. LLR은 비록 다른 시스템들이 또한 사용될 수 있다고 하더라도 확률을 표현하기 편리한 방법이다. 메모리로부터 판독들로부터 확률을 획득하기 위해, 몇몇 변환 또는 복조가 일반적으로 수행된다. 이러한 복조를 수행하기 위한 하나의 편리한 방법은 임계 전압(또는 메모리 내 몇몇 측정된 파라미터)과 하나 이상의 비트들의 확률 값들 간의 관계를 표로 만드는 룩업 테이블을 사용하는 것이다. 판독 동작의 분석이 메모리 셀의 임계 전압 범위를 N 판독 상태들로 구분하는 경우, 셀은 R 비트들을 저장하고, 테이블은 확률이 각각의 판독 상태에 대해 각각의 비트를 위해 제공되도록 N×R 에트리들을 가질 수 있다. 이러한 방법에 있어서, 높은 분석 판독은 메모리내에 저장된 데이터에 관해 확률 정보를 제공할 수 있다. 이러한 로우 확률 데이터는 디코더로의 소프트-입력으로서 디코더에 제공될 수 있다.here
Figure 112009024990153-PCT00002
Is the probability that the bit is "1",
Figure 112009024990153-PCT00003
Is the probability that the bit is "0". LLR is a convenient way to express probability, although other systems can also be used. In order to obtain a probability from readings from memory, some transformation or demodulation is generally performed. One convenient way to perform this demodulation is to use a lookup table that tabulates the relationship between the threshold voltage (or some measured parameter in memory) and the probability values of one or more bits. If the analysis of the read operation divides the threshold voltage range of the memory cell into N read states, the cell stores the R bits, and the table stores the N × R attributes so that a probability is provided for each bit for each read state. You can have a ladle. In this way, high analytical readings can provide probability information about the data stored in memory. Such low probability data may be provided to the decoder as a soft-input to the decoder.

도 8은 SISO 디코더(863)를 포함하는 디코더 시스템(861)으로 공급되고 있는 전술한 바와 같은 소프트-입력 데이터를 도시한다. SISO 디코더들은 일반적으로 로우 확률 데이터를 수용하며 계산된 확률 데이터를 제공하기 위해 로우 확률 데이터에 ECC 계산들을 수행한다. 계산된 확률 데이터는 소프트-출력으로 간주될 수 있다. 많은 경우들에 있어서, 이러한 소프트-출력은 입력으로 SISO 디코더에 제공되어 제 2 디코딩 반복이 수행되도록 한다. SISO 디코더는 적어도 하나의 사전결정된 조건이 달성될 때까지 연속적인 반복들을 수행할 수 있다. 예를 들어, 사전결정된 조건은 모든 비트들이 소정의 최소값보다 큰 확률을 갖는 것일 수 있다. 사전결정된 조건은 또한 평균 확률 값과 같은 확률 값들의 총합일 수 있다. 사전결정된 조건은 하나의 반복에서 다음 반복으로의 결과들의 수렴일 수 있다(즉, 추가적인 반복들로부터 약간의 개선이 있을 때까지 반복을 지속). 사전결정된 조건은 사전결정된 수의 반복들이 완료되는 것일 수 있다. 이들 조건들의 조합들이 또한 사용될 수 있다. 디코딩은 데이터가 저장되기 전에 데이터에 관해 인코더(865)에 의해 수행된 인코딩의 결과인 데이터 내 인코드된 패턴을 이용하여 수행된다. 인코더(865) 및 디코더 시스템(865)은 모두 ECC 유닛(867)의 부분들로 간주되며, ECC 유닛(867)은 메모리 시스템(421)과 같은 메모리 시스템 내에 구현될 수 있다(ECC 유닛(867)은 ECC 유닛(431)으로서 사용될 수 있는 유닛의 예이다). 다양한 인코딩 체계들이 SISO 디코더와 함께 사용할 수 있다. 디코더(861)는 또한 SISO 디코더(865)로부터의 소프트-출력을 하드 출력으로 변환하기 위해 하드-소프트 컨버터(864)를 포함할 수 있다.8 shows soft-input data as described above being supplied to a decoder system 861 including a SISO decoder 863. SISO decoders generally accept low probability data and perform ECC calculations on the low probability data to provide the calculated probability data. The calculated probability data can be considered as soft-output. In many cases, this soft-output is provided as an input to the SISO decoder to allow a second decoding iteration to be performed. The SISO decoder may perform successive iterations until at least one predetermined condition is achieved. For example, the predetermined condition may be that all bits have a probability greater than a predetermined minimum value. The predetermined condition may also be the sum of the probability values, such as the mean probability value. The predetermined condition may be the convergence of the results from one iteration to the next (ie, repeat the iteration until there is some improvement from further iterations). The predetermined condition may be that a predetermined number of iterations are completed. Combinations of these conditions can also be used. Decoding is performed using an encoded pattern in the data that is the result of the encoding performed by the encoder 865 on the data before the data is stored. Encoder 865 and decoder system 865 are both considered parts of ECC unit 867, and ECC unit 867 may be implemented within a memory system such as memory system 421 (ECC unit 867). Is an example of a unit that can be used as the ECC unit 431). Various encoding schemes can be used with the SISO decoder. Decoder 861 may also include a hard-soft converter 864 to convert the soft-output from SISO decoder 865 to hard output.

몇몇 경우, SISO 디코딩은 하드-입력 하드-출력 디코딩이 하는 것보다 동일한 양의 오버헤드 데이터에 대해 보다 나은 에러 보정을 제공할 수 있다. 도 9는 SISO 디코더(863)와 같은 SISO 디코더에서 사용될 수 있는 예시적인 인코딩 체계를 도시한다. 데이터 엔트리들 D11-D33은 각각의 행과 열에 대해 계산된 패리티 비트들을 갖는 행과 열들로 정렬된다. 예를 들어, P1은 엔트리(D11, D12 및 D13)를 포함하는 행으로부터 계산된다. 유사하게, P2는 엔트리(D21, D22 및 D23)를 포함하는 행으로부터 계산된다. P4는 엔트리(D11, D21 및 D23)를 포함하는 열로부터 계산된다.In some cases, SISO decoding may provide better error correction for the same amount of overhead data than hard-input hard-output decoding does. 9 illustrates an example encoding scheme that may be used in an SISO decoder such as SISO decoder 863. Data entries D 11 -D 33 are arranged in rows and columns with parity bits calculated for each row and column. For example, P 1 is calculated from the row containing entries D 11 , D 12 and D 13 . Similarly, P 2 is calculated from the row containing entries D 21 , D 22 and D 23 . P 4 is calculated from the column containing entries D 11 , D 21 and D 23 .

도 10은 도 9에 도시된 바와 같이 인코드된 데이터가 후에 하드-입력 하드-출력 디코더와 SISO 디코더 모두에서 디코드될 때 결과를 도시한다. 이러한 실시예에서, 2진 시스템의 2개의 논리 상태들은 각각 0 과 1 대신에 -1과 +1로 표현된다. 어떠한 적절한 표시가 사용될 수 있으며 이러한 표시는 단순히 이러한 예의 편의를 위한 것이라는 것이 이해될 것이다. 소프트 수들에 대해, 부호는 비트가 필시 0 또는 1인지를 나타내며 수의 크기는 이것이 올바른 값인 확률을 나타낸다. FIG. 10 shows the result when the encoded data as shown in FIG. 9 is later decoded in both the hard-input hard-output decoder and the SISO decoder. In this embodiment, the two logical states of the binary system are represented by -1 and +1 instead of 0 and 1, respectively. It will be appreciated that any suitable indication may be used and this indication is merely for convenience of this example. For soft numbers, the sign indicates whether the bit is necessarily 0 or 1 and the magnitude of the number indicates the probability that it is a correct value.

신호(101)는 도 9의 인코딩 체계에 따라서 계산된 데이터 비트들과 패리티 비트들을 포함하는 비트들의 그룹으로서 도시된다. 신호는 일반적으로 패리티 비트들을 계산하기 위해 적절한 회로들을 갖는 인코더의 출력이다. 그 다음, 신호는 신호 데이터를 기록하기 위해 상태들로 메모리 셀들로 프로그램하기 위해 메모리 셀들로 적절한 전압들을 제공하는 변조기로 제공될 수 있다. Signal 101 is shown as a group of bits including data bits and parity bits calculated according to the encoding scheme of FIG. 9. The signal is generally the output of an encoder with appropriate circuits for calculating parity bits. The signal can then be provided to a modulator that provides the appropriate voltages to the memory cells for programming the memory cells into states for writing signal data.

노이즈(103)는 본 발명의 예에서 2개의 데이터 비트들에 영향을 미치는 것으로 도시된다. 노이즈는 데이터 비트들로 제한되지 않으며 또한 패리티 비트들에 영향을 끼칠 수 있다. 노이즈는 특별한 셀들의 몇몇 물리적인 특성의 결과이거나 하나의 셀이 어레이내 다른 셀들에 관해 수행되는 동작들에 의해 영향을 미칠 때 메모리 내에서 발생하는 방해들의 결과일 수 있다. 본 발명의 예에서, 노이즈는 추가로 간주되며 따라서 메모리로부터의 데이터 판독은 신호 데이터 더하기 노이즈를 반영하며, 이것은 디코딩을 위한 입력 데이터가 된다. 그러나 노이즈는 판독 값에 영향을 미치는 포지티브 또는 네거티브를 가질 수 있다. Noise 103 is shown to affect two data bits in the example of the present invention. Noise is not limited to data bits and may also affect parity bits. Noise may be the result of some physical characteristics of particular cells or of disturbances that occur in memory when one cell is affected by operations performed on other cells in the array. In the example of the invention, the noise is considered to be further and thus the data read from the memory reflects the signal data plus noise, which becomes the input data for decoding. However, noise can have a positive or negative effect on the reading.

입력(105)은 메모리에 연결된 복조기로부터 획득된 로우 데이터이다. 예를 들어, 판독 동작은 높은 분석에 의해 수행되는 경우, 입력 데이터는 신호 또는 패리티 데이터의 비트가 1 또는 0 대신에 0.1로 표현되도록 이러한 형태로 발생될 수도 있다. 이것은 1을 나타내는 포지티브 값과 0을 나타내는 네거티브 값을 갖는 확률 값을 간주될 수 있으며, 표시된 상태가 올바른 확률을 나타내는 값의 크기이다. 입력(105)은 소프트-입력으로서 간주되는데 이는 입력(105)이 단순히 0 또는 1 값을 포함한다. Input 105 is raw data obtained from a demodulator connected to a memory. For example, if the read operation is performed by high analysis, the input data may be generated in this form such that the bits of the signal or parity data are represented as 0.1 instead of 1 or 0. This can be considered a probability value having a positive value representing 1 and a negative value representing 0, where the indicated state is the magnitude of the value representing the correct probability. Input 105 is considered a soft-input, where input 105 simply contains a zero or one value.

하드-입력 하드-출력 디코더에 대해, 입력(105)은 모든 포지티브 값들을 +1로 대체하고 모든 네거티브 값들을 -1로 대체함으로써 하드 입력(107)으로 변환된다. 소프트-입력 확률 값들을 표현하기 위해 1의 보수 논리를 이용하는 시스템에 있어서, 최상위 비트는 부호를 나타내며 변환의 수단으로서 사용될 수 있다. 하드-입력 하드-출력 디코더는 이러한 하드 입력을 이용하는 데이터를 보정하기 위해 시도할 수 있다. 그러나 패리티 계산들은 각각의 제 2 및 제 3 행렬들 내 에러와 각각의 제 2 및 제 3 열들 내 에러를 나타낸다. D22와 D33이 에러일 수 있거나 대안으로 D32와 D23이 에러일 수 있기 때문에 이러한 상황에서 유일한 솔루션이 존재하지 않는다. 하드-입력 하드-출력 디코더는 이들 솔루션중 어느 솔루션이 옳은지 판단할 수 없다. 따라서, 하드-입력 하드-출력 디코더는 이러한 상황에서 데이터를 보정할 수 없다. Hard-Input For a hard-output decoder, input 105 is converted to hard input 107 by replacing all positive values with +1 and replacing all negative values with -1. In a system that uses one's complement logic to represent soft-input probability values, the most significant bit represents a sign and can be used as a means of conversion. Hard-Input Hard-Output Decoder may attempt to correct data using this hard input. However, parity calculations represent an error in each of the second and third matrices and an error in each of the second and third columns. There is no unique solution in this situation because D22 and D33 may be errors or alternatively D32 and D23 may be errors. The hard-input hard-output decoder cannot determine which of these solutions is correct. Thus, the hard-input hard-output decoder cannot correct data in this situation.

제 1 SISO 디코딩 단계에서, 소프트-입력 보정 데이터(109)는 입력으로부터 제 1 로우를 위해 발생된다. 소프트-입력 보정 데이터(109)의 각각의 엔트리는 동일한 행렬내 다른 엔트리들과 행렬내 최소 엔트리의 크기의 곱(확률 값들의 계산은 이하 보다 상세히 기술된다)의 부호로부터 계산된다. 이것은 행렬내 다른 엔트리들중 무엇이 엔트리어야 하는지의 표시를 제공하며 계산된 확률 또는 비본질적인 확률(입력의 고유의 가능에 반대되는)일 수 있다. 그 다음, 소프트-입력 보정 데이터(109)는 제 1 행렬-반복의 소프트-출력(111)을 획득하기 입력(105)에 가산된다. 따라서, 제 1 행렬-반복의 소프트-출력(111)은 본질적인 확률 값들과 비본질적인 확률 값들을 조합한다. 소프트-출력은 로우 데이터로부터의 본질적인 확률 정보와 동일한 패리티 비트를 공유하는 동일한 로우내 다른 엔트리들로부터 유도된 비본질적인 확률 정보 모두를 반영한다. (소프트-출력을 하드-출력으로 변환하는) 시점에서 소프트-출력(113)의 부호를 보면 데이터가 완전히 보정되는 것을 본다. 따라서, 소프트-입력 소프트-출력 디코딩은 하드-입력 하드-출력 디코더일 수 없는 이러한 데이터를 보정할 수 있다. 더욱이, 소프트-입력 소프트-출력 디코더는 행렬 패리티 계산들만을 이용하여 하나의 반복에서 이러한 보정을 할 수 있다. 보정이 완료되지 않았다면, 열 패리티 계산들을 이용하여 계산들이 더 수행될 수 있다. 이러한 제 1 열-반복이 완전한 보정을 제공하지 않았다면, 제 2 행렬-반복이 수행될 수 있다. 따라서, SISO는 하드-입력 디코더가 솔루션을 발견함이 없이 멈추는 솔루션을 향해 작업을 지속할 수 있다. In the first SISO decoding step, soft-input correction data 109 is generated for the first row from the input. Each entry of the soft-input correction data 109 is calculated from the sign of the product of the other entries in the same matrix and the size of the minimum entry in the matrix (calculation of probability values is described in more detail below). This provides an indication of which of the other entries in the matrix should be and can be a calculated probability or a non-essential probability (as opposed to the inherent possibility of the input). The soft-input correction data 109 is then added to the input 105 to obtain the first matrix-repeated soft-output 111. Thus, the first matrix-repeat soft-output 111 combines intrinsic probability values with non-essential probability values. The soft-output reflects both the intrinsic probability information from the row data and the non-essential probability information derived from other entries in the same row sharing the same parity bit. Looking at the sign of the soft-output 113 at the time of converting the soft-output to the hard-output, we see that the data is fully corrected. Thus, soft-input soft-output decoding can correct this data, which cannot be a hard-input hard-output decoder. Moreover, the soft-input soft-output decoder can make this correction in one iteration using only matrix parity calculations. If the correction has not been completed, further calculations may be performed using thermal parity calculations. If this first column-repeat did not provide full correction, the second matrix-repeat may be performed. Thus, the SISO can continue working towards a solution where the hard-input decoder stops without finding a solution.

도 11에 제 2 예가 도시된다. 전술한 예에서와 같이, 패리티 비트들은 입력 데이터(본 발명의 예에서 행렬 또는 열당 단 2개의 입력 데이터)의 행렬들과 열들 모두에 대해 계산된다. 여기서 패리티 비트들은 행렬 또는 열의 입력 데이터 비트들의 합 모듈로 2가 되도록 계산된다. A second example is shown in FIG. As in the above example, parity bits are calculated for both matrices and columns of input data (in the example of the invention, only two input data per matrix or column). Where the parity bits are calculated to be a modulo two of the input data bits of the matrix or column.

도 12는 패리티 비트들을 계산하여 이들을 데이터에 부가하는 ECC 유닛(123)내 인코더(121)에 의해 수신되는 입력 데이터를 도시한다. 이러한 경우에 있어서, 패리티 데이터의 4 비트들은 입력 데이터의 4 비트들에 부가된다. 따라서, 입력 데이터와 패리티 비트들은 변조기(125)로 전송되는 인코드된 신호 데이터를 형성한다. 변조기(125)는 신호 데이터에 따른 개별적인 메모리 셀들을 프로그램한다. 이러한 경우에 있어서, 2 비트들이 메모리 어레이(126)의 메모리 셀내에 저장되어, 따라서 신호 데이터의 8 비트들이 각각의 임계 전압 레벨들(V1-V4)을 갖는 4 셀들 내에 저장된다. 이어서, 메모리 셀들은 임계 전압 범위들(V1'-V4')을 갖는 것으로 판독된다. 판독 임계 전압 범위들은 복조기(127)에서 변조되어 로우 확률 데이터(1.5, 1.0, 0.2, 0.3, 2.5, 2.0, 6.0, 1.0)를 제공한다. 이것은 룩업 테이블 또는 다른 것을 이용하여 획득될 수 있다. 몇몇 경우들에 있어서, 로우 확률을 제공하는 것은 디코더 내 함수로서 간주되지만, 현재의 경우에 대해 이것은 복조기(127) 내에서 발생하는 것으로서 간주된다. 로우 확률 값은 각각의 비트에 대해 획득되어 비트들이 동일한 셀에 저장된다 하더라도, 이들은 서로 다른 로우 확률 값들을 가질 수 있다. 본 발명의 예에서, 확률이 비록 다른 포맷으로 또한 표현될 수 있다고 하더라도, 복조기(127)는 로그 확률 비 값들로서 확률 값들을 제공한다. 로우 확률 값들은 하드-출력이 이들 엔트리들로부터 직접적으로 획득되었다면, 모 든 데이터 엔트리들이 (2 에러를 제공하는) 시점에서 1일 것으로 간주될 것을 나타내는 모든 데이터 엔트리들에 대해 포지티브이다. 그러나 ECC 유닛(123)내 SISO 디코더(129)를 이용함으로써, 데이터는 완전히 보정될 수 있다. 도 13a~13d는 SISO 디코더(129)가 입력 데이터를 보정하는 방법을 도시한다. 디코더(129)는 메모리 시스템(421)과 같은 메모리 시스템에서 사용될 수 있는 SISO 디코더의 특별한 예이다(디코더(129)는 디코더(429)로서 사용될 수 있다).12 shows input data received by encoder 121 in ECC unit 123 that calculates parity bits and adds them to the data. In this case, four bits of parity data are added to four bits of input data. Thus, the input data and parity bits form encoded signal data that is sent to modulator 125. The modulator 125 programs the individual memory cells in accordance with the signal data. In this case, two bits are stored in the memory cell of the memory array 126 so that eight bits of the signal data are stored in four cells having respective threshold voltage levels V1-V4. The memory cells are then read as having threshold voltage ranges V1'-V4 '. Read threshold voltage ranges are modulated in demodulator 127 to provide low probability data (1.5, 1.0, 0.2, 0.3, 2.5, 2.0, 6.0, 1.0). This can be obtained using a lookup table or something else. In some cases, providing a low probability is considered as a function in the decoder, but for the present case it is considered as occurring in demodulator 127. Although low probability values are obtained for each bit and the bits are stored in the same cell, they may have different low probability values. In the example of the present invention, demodulator 127 provides the probability values as log probability ratio values, although the probability may also be represented in other formats. The low probability values are positive for all data entries indicating that if a hard-output was obtained directly from these entries, all data entries would be considered to be 1 at the time (providing 2 errors). However, by using the SISO decoder 129 in the ECC unit 123, the data can be completely corrected. 13A-13D illustrate how the SISO decoder 129 corrects input data. Decoder 129 is a special example of a SISO decoder that can be used in a memory system such as memory system 421 (decoder 129 can be used as decoder 429).

도 13a는 행렬 확률 값들(132)로부터 제 1 계산된 확률 값들(133)을 획득하기 위해 로우 패리티 비트들(131)을 이용한 제 1 수평 반복을 도시한다. 이러한 경우에 있어서, LLR들이 계산된 확률 값들(133)을 획득하기 위해 가산된다. 본 발명의 예에서 두 LLR의 합이 보다 작은 LLR 값에 의해 곱해지는 두 LLR의 부호들과 (-1)의 곱에 의해 주어진다는 것을 알 수 있다.FIG. 13A shows a first horizontal iteration using low parity bits 131 to obtain first calculated probability values 133 from matrix probability values 132. In this case, LLRs are added to obtain calculated probability values 133. In the example of the present invention it can be seen that the sum of the two LLRs is given by the product of the signs of the two LLRs multiplied by the smaller LLR value and (-1).

Figure 112009024990153-PCT00004
Figure 112009024990153-PCT00004

여기서,

Figure 112009024990153-PCT00005
는 LLR 추가(addition)를 나타낸다. 엔트리들에 이러한 LLR 추가를 적용함으로써 도시된 계산된 확률 값들을 제공한다. 예를 들어, 엔트리 D11에 대응하는 계산 확률은 0.1
Figure 112009024990153-PCT00006
2.5
Figure 112009024990153-PCT00007
-0.1이며, 엔트리 D12에 대응하는 계산된 확률은 1.5
Figure 112009024990153-PCT00008
2.5
Figure 112009024990153-PCT00009
-1.5이다. 그 다음, 계산된(비본질적인) 확률 값들(133)은 로우(본질적인) 확률 값들(132)에 추가되어 제 1 수평 반복으로부터 출력 확률 값들(135)을 획득한다. 따라서, 엔트리 D11에 대응하는 출력 확률 값은 로우 확률값 1.5 + 계산된 확률값 -0.1이며, 1.4가 된다. 알 수 있는 바와 같이, 상단 행렬(1.4, -1.4)의 출력 확률 값들(135)은 올바른 비트들이 1과 0을 나타내는 상대적으로 높은 확률 값들을 나타낸다. 그러나 하단 행렬(-0.1, 0.1)의 확률 값들(135)은 비트들이 각각 0과 1인 낮은 확률 값들을 나타낸다. 이들 확률 값들은 올바른 입력 비트들을 나타낸다. 그러나 이러한 낮은 확률 값들은 이 시점에서 디코딩을 종료하기에 충분하다고 간주되지 않을 것이다. 따라서, 추가적인 반복들이 수행될 수 있다.here,
Figure 112009024990153-PCT00005
Denotes an LLR addition. Applying this LLR addition to the entries provides the calculated probability values shown. For example, the calculation probability corresponding to entry D 11 is 0.1
Figure 112009024990153-PCT00006
2.5
Figure 112009024990153-PCT00007
-0.1 and the calculated probability corresponding to entry D 12 is 1.5
Figure 112009024990153-PCT00008
2.5
Figure 112009024990153-PCT00009
-1.5. The calculated (non-essential) probability values 133 are then added to the low (essential) probability values 132 to obtain output probability values 135 from the first horizontal iteration. Therefore, the output probability value corresponding to the entry D11 is the low probability value 1.5 + the calculated probability value -0.1 and becomes 1.4. As can be seen, the output probability values 135 of the top matrices 1.4, -1.4 represent relatively high probability values where the correct bits represent ones and zeros. However, the probability values 135 of the bottom matrix (-0.1, 0.1) represent low probability values with bits 0 and 1, respectively. These probability values represent the correct input bits. However, these low probability values will not be considered sufficient to end decoding at this point. Thus, additional iterations may be performed.

도 13b는 열 패리티 비트들(137)을 이용한 제 1 수직 반복에 종속되는 제 1 수평 반복으로부터 출력 확률 값들(135)을 도시한다. 제 1 수직 반복의 계산된 확률 값들(139)은 전과 동일한 방법으로 계산되며, 이번에 열 패리티 엔트리들(137)을 이용한 열들과 함께 사용된다. 따라서, D11은 D12와 P3의 LLR 합(-0.1과 6.0으로, 0.1이 됨)으로부터 획득된다. D12는 D11과 P3의 LLR 합(1.4와 6.0으로, -1.4가 됨)으로부터 획득된다. 이러한 방법에 있어서, 계산된 확률 값들(139)은 각각의 엔트리에 대해 획득된다. 이어서, 계산된(비본질적인) 확률 값들(139)은 입력 확률 값들(135)(제 1 수평 반복의 출력 확률 값들)에 더해져 제 1 수직 반복의 출력 확률 값들(141)을 획득한다. 제 1 수직 반복(1.5, -1.5, -1.5, 1.1)으로부터 획득된 출력 확률 값들(141)은 이 시점에서 디코딩을 종료하기에 충분한 것으로 간주될 수 있다. 그러나 디코딩을 종료하기 위해 필요한 사전결정된 조건에 따라서, 보다 많은 디코딩 반복들이 수행될 수 있다. 13B shows output probability values 135 from a first horizontal iteration that depends on the first vertical iteration using column parity bits 137. The calculated probability values 139 of the first vertical iteration are calculated in the same way as before, this time being used with the columns using the column parity entries 137. Thus, D11 is obtained from the LLR sum of D12 and P3 (-0.1 and 6.0, which is 0.1). D12 is obtained from the LLR sum of D11 and P3 (1.4 and 6.0, which is -1.4). In this way, the calculated probability values 139 are obtained for each entry. The calculated (non-essential) probability values 139 are then added to the input probability values 135 (output probability values of the first horizontal iteration) to obtain output probability values 141 of the first vertical iteration. The output probability values 141 obtained from the first vertical iterations (1.5, -1.5, -1.5, 1.1) may be considered sufficient to end decoding at this point. However, more decoding iterations may be performed, depending on the predetermined condition needed to end decoding.

도 13c는 수행되고 있는 제 2 수평 반복을 도시한다. 제 1 수직 반복으로부터 계산된 확률 값들(139)은 로우 확률 값들(132)에 더해져 입력 값들(143)을 획득한다. 그 다음, 입력 값들(143)은 전과 같이 행렬 패리티 엔트리들(131)과 함께 사 용되어 제 2 수평 계산된 확률 값들(145)을 획득한다. 그 다음, 제 2 수평 확률 값들(145)은 입력 값들(132)에 더해져 제 2 수평 반복의 출력 확률 값들(147)을 획득한다. 제 2 수평 반복의 출력 확률 값들(147)은 제 1 수직 반복의 출력으로부터 확률 값들 내 전반적인 개선을 제공하지 않는다. 13C shows the second horizontal iteration being performed. Probability values 139 calculated from the first vertical iteration are added to the low probability values 132 to obtain input values 143. The input values 143 are then used together with the matrix parity entries 131 as before to obtain second horizontally calculated probability values 145. Second horizontal probability values 145 are then added to input values 132 to obtain output probability values 147 of the second horizontal iteration. The output probability values 147 of the second horizontal iteration do not provide an overall improvement in the probability values from the output of the first vertical iteration.

도 13d는 수행되고 있는 제 2 수직 반복을 도시한다. 제 2 수평 반복으로부터 출력 값들(147)은 이러한 반복 동안 입력 값들로서 사용된다. 열 패리티 엔트리들(137)은 입력 값들과 함께 사용되어 전과 같이 계산된 확률 값들(149)을 획득한다. 그 다음, 계산된 확률 값들(149)은 입력 확률 값들(147)에 가산되어 출력 확률 값들(151)을 획득한다. 제 2 수직 반복으로부터 출력 값들(151)이 제 1 수직 반복으로부터 출력 값들(141)과 비교되어 개선될 것으로 도시된다. 따라서, 추가적인 반복들이 데이터 내에서 추가적인 개선을 제공할 수 있다는 것을 알 수 있다. 13D shows the second vertical iteration being performed. Output values 147 from the second horizontal iteration are used as input values during this iteration. The column parity entries 137 are used with the input values to obtain probability values 149 calculated as before. The calculated probability values 149 are then added to the input probability values 147 to obtain output probability values 151. The output values 151 from the second vertical iteration are shown to be improved compared to the output values 141 from the first vertical iteration. Thus, it can be seen that additional iterations can provide further improvement in the data.

반복적인 디코딩은 몇몇 사전결정된 조건이 충족될 때까지 반복들을 통한 사이클일 수 있다. 예를 들어, 사전결정된 조건은 확률 값들의 출력 세트내 각각의 확률 값이 몇몇 최소 확률 값을 초과할 수 있다. 대안으로, 사전결정된 조건은 최소 또는 평균 확률과 같은 하나 이상의 확률 값으로부터 유도된 몇몇 파라미터일 수 있다. 사전결정된 조건은 단순히 소정의 반복들이 수행되는 것일 수 있다. (후에 논의될) 몇몇 경우들에 있어서, 추가적인 SISO 반복들이 수행되거나 수행되지 않는지를 나타내는 다른 동작에 종속되는 출력 확률 값들을 제공한다. Iterative decoding may be a cycle through iterations until some predetermined condition is met. For example, the predetermined condition may be that each probability value in the output set of probability values exceeds some minimum probability value. Alternatively, the predetermined condition may be several parameters derived from one or more probability values, such as minimum or average probability. The predetermined condition may simply be that certain iterations are performed. In some cases (discussed later), output probability values are subject to other operations that indicate whether additional SISO iterations are performed or not.

도 13a ~ 13d의 예는 터보 코딩으로서 알려진 기법의 예를 고려할 수 있다. 수평적 그리고 수직적 패리티 비트들은 개별적으로 디코드될 수 있는 2개의 대안적 인 인코딩 체계들을 제공한다. 2개의 이러한 디코딩 체계들과 함께 다른 것을 위한 입력으로서 하나의 디코딩 체계로부터의 출력을 이용함으로써, 터보 코딩은 일반적으로 높은 에러 보정 능력을 제공한다. 13A-13D may consider an example of a technique known as turbo coding. Horizontal and vertical parity bits provide two alternative encoding schemes that can be decoded separately. By using the output from one decoding scheme as input for the other with two such decoding schemes, turbo coding generally provides high error correction capability.

효율적인 디코딩은 적절한 인코딩/디코딩 체계를 갖는 것에 따른다. 다양한 체계들은 SISO 디코더에서 연속적인 디코딩을 위한 적절한 방법으로 데이터를 인코딩하는 것으로 알려져 있다. 인코딩/디코딩 체계들은 터보 코드들, 제품 코드들, BCH 코드들, 리드-솔로몬 코드들, 컨볼루션 코드들(미국 특허출원 제 11/383,401호 및 제 11/383,405호 참조), 해밍 코드들, 및 저밀도 패리티 체크(LDPC) 코드들을 포함하지만 이에 제한되지 않는다.Efficient decoding depends on having an appropriate encoding / decoding scheme. Various schemes are known to encode data in a suitable way for continuous decoding in a SISO decoder. Encoding / decoding schemes include turbo codes, product codes, BCH codes, Reed-Solomon codes, convolution codes (see US patent applications Ser. Nos. 11 / 383,401 and 11 / 383,405), hamming codes, and Includes but is not limited to Low Density Parity Check (LDPC) codes.

LDPC 코드들은 소정의 요구조건들을 충족시키며, 빈약한 패리티 체크 매트릭스의 결과를 가져오는 패리티 체크 매트릭스를 갖는 코드들이다. 이것은 각각의 패리티 체크가 상대적으로 적은 수의 비트들에 걸쳐서 수행된다는 것을 의미한다. LDPC 코드를 위한 패리티 체크 매트릭스 H의 예가 도 14에 도시된다. LDPC 코드를 위한 조건들은, (1) 각각의 행렬내 1의 수가 동일하고 수가 행렬내 전체 수의 엔트리들에 비해 적다. (2) 각각의 열내 1의 수가 동일하고 수가 열내 전체 수의 엔트리들에 비해 적다. (3) 통상적으로 어떠한 2 열간의 1의 수는 1보다 크지 않다(통상적으로 1의 수는 단지 0 또는 1일 수 있다). 불규칙한 LDPC 코드들은 열들과 행렬들 내 1의 수에서 몇몇 편차를 허용한다. H를 보면, 각각의 행렬은 행렬내 전체 7개의 엔트리들로부터 3개의 1을 가져서 조건(1)이 충족된다. 각각의 열은 열내 전체 7개의 엔트리들로부터 3개의 1을 가져서 조건(2)이 충족된다. 통상적으로 2개의 열들이 하나 이상의 1을 가져서 조건(3)이 충족되는 경우는 없다. 예를 들어, 제 1, 제 2 및 제 4 열들은 모두 탑 엔트리로서 1을 갖지만, 통상적으로 이들 열들의 어느 것도 다른 1을 갖지 않는다. 따라서, 매트릭스 H는 LDPC 코드를 정의한다. 코드는 매트릭스 H를 충족시키는 모든 코드 단어들로 구성된다. 이것은 (7개의 행렬들에 의해 정의된) 7개의 서로 다른 패리티 체크 조건들이 충족되어야만 한다는 것을 의미한다. 각각의 패리티 체크 조건은 단어에서 3개의 엔트리들을 조사한다. 예를 들어, 제 1 행렬은 제 1, 제 2 그리고 제 4 엔트리들이 0의 합 모듈로 2를 가져야 한다는 것을 나타낸다. LDPC codes are codes with a parity check matrix that meet certain requirements and result in a poor parity check matrix. This means that each parity check is performed over a relatively small number of bits. An example of a parity check matrix H for an LDPC code is shown in FIG. 14. The conditions for LDPC codes are: (1) The number of 1s in each matrix is the same and the number is less than the total number of entries in the matrix. (2) The number of 1s in each column is the same and the number is less than the total number of entries in the column. (3) Typically, the number of 1s in any two rows is not greater than 1 (typically the number of 1s can only be 0 or 1). Irregular LDPC codes allow some variation in the number of 1s in columns and matrices. Looking at H, each matrix has three 1s out of all seven entries in the matrix so that condition (1) is met. Each column has three 1s out of all seven entries in the column so that condition (2) is met. Typically, two columns have more than one 1 so that condition (3) is not satisfied. For example, the first, second and fourth columns all have 1 as the top entry, but typically none of these columns have the other 1. Thus, matrix H defines the LDPC code. The code consists of all the code words that satisfy the matrix H. This means that seven different parity check conditions (defined by seven matrices) must be met. Each parity check condition examines three entries in a word. For example, the first matrix indicates that the first, second and fourth entries should have a sum modulo 2 of zero.

데이터는 코드워드를 형성하기 위해 소정의 패리티 비트들을 계산함으로써 LDPC 코드에 따라서 인코드될 수 있다. 따라서, 패리티 체크 매트릭스 H의 코드워드는 4개의 데이터 비트와 4개의 데이터 비트로부터 계산된 3개의 패리티 비트로 형성될 수 있다. 각각의 패리티 비트는 상대적으로 적은 수의 데이터 비트들로부터 계산되며, 따라서 인코딩이 상대적으로 간단할 수 있으며, 심지어 대량의 엔트리들이 블록으로서 인코드된다. Data can be encoded according to the LDPC code by calculating certain parity bits to form a codeword. Therefore, the codeword of the parity check matrix H may be formed of three parity bits calculated from four data bits and four data bits. Each parity bit is calculated from a relatively small number of data bits, so the encoding can be relatively simple, even a large number of entries are encoded as a block.

메모리 어플리케이션들을 위해 적절한 LDPC 코드는 약 4,000 ~ 8,000 비트들의 단어를 사용한다(1-2 섹터들, 여기서 섹터는 512바이트이다). 예를 들어, LDPC 코드에 따른 인코딩은 인코드되지 않은 데이터에 약 12%를 더할 수 있다. 이러한 코드와 같은 패리티 체크 매트릭스의 행렬 내 1s의 수는 약 4,000 중 약 32일 수 있어서, 비록 단어가 크더라도, 패리티 계산들은 과도하게 길지 않다. 따라서, 패리티 비트들은 인코딩 동안 상대적으로 쉽게 계산될 수 있으며, 패리티는 또한 디 코딩 동안 상대적으로 쉽게 체크될 수 있다. LDPC 코드들은 하드-입력 하드-출력 디코딩 또는 SISO 디코딩과 함께 사용될 수 있다. 앞서 도시된 바와 같이, SISO 디코딩은 때때로 하드-입력 하드-출력 디코딩에 걸쳐서 성능을 개선할 수 있다. 로우 확률 값들은 LLRs로서 또는 몇몇 다른 형태로 SISO 디코더에 공급될 수 있다. LDPC는 반복적인 방법으로 SISO 디코더를 사용할 수 있다. 엔트리는 여러 패리티 그룹들에 공통이어서 하나의 그룹으로부터 획득된 계산된 확률 값은 다른 패리티 그룹을 위한 개선된 데이터를 제공하도록 한다. 이러한 계산들은 몇몇 사전결정된 조건이 충족될 때까지 반복적으로 수행될 수 있다.An LDPC code suitable for memory applications uses a word of about 4,000-8,000 bits (1-2 sectors, where the sector is 512 bytes). For example, encoding according to the LDPC code may add about 12% to unencoded data. The number of 1s in a matrix of parity check matrix, such as this code, may be about 32 of about 4,000, so that even if the word is large, the parity calculations are not excessively long. Thus, parity bits can be calculated relatively easily during encoding, and parity can also be checked relatively easily during decoding. LDPC codes can be used with hard-input hard-output decoding or SISO decoding. As shown above, SISO decoding can sometimes improve performance over hard-input hard-output decoding. The low probability values may be supplied to the SISO decoder as LLRs or in some other form. LDPC may use the SISO decoder in an iterative manner. The entry is common to several parity groups so that calculated probability values obtained from one group provide improved data for another parity group. These calculations may be performed repeatedly until some predetermined condition is met.

LDPC 디코딩은 때때로 에러들의 수가 매우 적을 때 좋지 않은 결과들을 제공할 수 있다. 소정 수 미만의 보정 에러들은 "에러 플로어"를 생성하기 어렵게 만든다. 이러한 문제에 대한 하나의 솔루션은 디코딩의 몇몇 다른 형태와 LDPC 디코딩을 조합하는 것이다. BCH를 이용한 하드-입력 하드-출력 디코더 또는 몇몇 유사한 대수 코드가 LDPC 디코더에 더해질 수 있다. 따라서, LDPC 디코더는 약간 낮은 레벨로 에러들의 수를 감소시킨 다음에, BCH 디코더는 나머지 에러들을 디코드한다. 이러한 방법으로 연속적으로 동작하는 디코더들은 "연쇄적"으로서 언급된다. 연쇄적 인코딩은 또한 데이터가 이러한 경우에 있어서 메모리 어레이내에 저장되기 전에 수행된다. LDPC decoding can sometimes give poor results when the number of errors is very small. Correction errors below a certain number make it difficult to produce an "error floor". One solution to this problem is to combine LDPC decoding with some other form of decoding. A hard-input hard-output decoder or some similar algebraic code using BCH may be added to the LDPC decoder. Thus, after the LDPC decoder reduces the number of errors to a slightly lower level, the BCH decoder decodes the remaining errors. Decoders that operate continuously in this way are referred to as "chained." Concatenated encoding is also performed before the data is stored in the memory array in this case.

도 15는 인코딩 시스템(157)과 디코딩 시스템(159)을 포함하는 ECC 유닛(155)에서 연쇄적 인코딩 및 디코딩의 예를 도시한다. 데이터는 ECC 유닛(155)에 의해 수신되며 인코딩 체계 A에 따라서 인코드되는 인코더 A에서 1차적으로 인코드 된다. 그 다음, 인코드된 데이터는 인코딩 체계(B)에 따라서 인코드 되는 인코더 B에서 1차적으로 인코드 된다. 본 발명의 예에서, 인코딩 체계 A는 패리티 비트들을 입력 데이터에 가산하는 BCH 인코딩 체계로서, 일례에서 약 4%까지 데이터의 양을 증가시킨다. 인코딩 체계 B는 추가적인 패리티 비트들을 인코더 A로부터 인코드된 데이터에 추가하는 LDPC 인코딩 체계로서, 본 발명의 예에서 데이터에 추가적으로 12%를 더한다. 그 다음, 이중으로 인코드된 데이터는 변조/복조 유닛으로 전송되고 비휘발성 메모리 어레이로 프로그램된다. 이어서, 이중으로 인코드된 데이터는 메모리 어레이로부터 판독되고 디코더 B로 소프트-입력을 제공하기 위해 복조된다. 디코더 B는 인코딩 체계 B를 이용하여 데이터를 디코드한다. 유사하게, 디코더 A는 인코딩 체계 A를 이용한다. 본 발명의 예의 디코더 B는 이중으로 인코드된 데이터에 관해 하나 이상의 디코딩 반복들을 수행하는 SISO 디코더이다. 몇몇 사전결정된 조건이 충족될 때, 디코더 B는 출력 데이터를 디코더 A로 전송한다. 디코더 B로부터의 출력 데이터는 일반적으로 인코더 B에 의해 더해지는 패리티 비트들을 위한 엔트리들을 포함하지 않는다. 이들 엔트리들은 이미 디코더 B에 의해 사용되었으며 더이상 필요하지 않다. 디코더 B의 출력은 소프트-출력이다. 이러한 소프트 출력은 확률 정보를 제거하고 데이터를 2진 정보로 변환하는 소프트-하드 컨버터(161)에서 하드-데이터로 변환될 수 있다. 그 다음, 이러한 하드 데이터는 하드-입력, 하드-출력 디코딩을 수행하는 디코더 A로 하드-입력으로서 제공된다. 그 다음, 하드-출력 제 2 디코더로부터의 하드-출력이 보정된 데이터로서 ECC 유닛(155)으로부터 전송된다. 15 shows an example of concatenated encoding and decoding in an ECC unit 155 that includes an encoding system 157 and a decoding system 159. Data is first encoded by encoder A, which is received by ECC unit 155 and encoded according to encoding scheme A. The encoded data is then primarily encoded at encoder B, which is encoded according to the encoding scheme B. In the example of the present invention, encoding scheme A is a BCH encoding scheme that adds parity bits to input data, which in one example increases the amount of data by about 4%. Encoding scheme B is an LDPC encoding scheme that adds additional parity bits to the encoded data from encoder A, which in the example of the present invention adds an additional 12% to the data. The double encoded data is then transferred to a modulation / demodulation unit and programmed into a nonvolatile memory array. The dually encoded data is then read from the memory array and demodulated to provide soft-input to decoder B. Decoder B decodes the data using encoding scheme B. Similarly, decoder A uses encoding scheme A. Decoder B of the example of the present invention is a SISO decoder that performs one or more decoding iterations on double encoded data. When some predetermined condition is met, decoder B sends the output data to decoder A. The output data from decoder B generally does not include entries for parity bits added by encoder B. These entries have already been used by decoder B and are no longer needed. The output of decoder B is a soft-output. This soft output may be converted to hard-data in a soft-hard converter 161 that removes probability information and converts the data into binary information. This hard data is then provided as hard-input to decoder A, which performs hard-input, hard-output decoding. The hard-output from the hard-output second decoder is then sent from the ECC unit 155 as corrected data.

일 실시예에 있어서, 디코더 B에서 반복적인 디코딩을 종료하기 위한 사전결정된 조건은 디코더 A가 데이터가 양호하다는 것을 나타내는 것이다. 디코더 B에서 반복이 완료된 후, 소프트-출력은 하드 데이터로 변환되어 하드-입력으로서 디코더 A에 제공될 수 있다. 그 다음, 디코더 A는 데이터 디코드를 시도한다. 디코더 A가 데이터를 디코드할 수 없다면, 디코더 B는 적어도 하나의 추가적인 반복을 수행한다. 디코더 A가 데이터를 디코드할 수 있다면, 디코더 B에서 더 이상의 반복들이 필요하지 않다. 따라서, 본 발명의 예에서, 디코더 A는 디코더 B로 피드백(163)을 제공하여 디코더 B가 종료될 때를 나타낸다.In one embodiment, the predetermined condition for terminating repetitive decoding at decoder B is that decoder A indicates that the data is good. After the iteration at decoder B is complete, the soft-output can be converted to hard data and provided to decoder A as hard-input. Decoder A then tries to decode the data. If decoder A cannot decode the data, decoder B performs at least one additional iteration. If decoder A can decode the data, no further iterations are needed at decoder B. Thus, in the example of the present invention, decoder A provides feedback 163 to decoder B to indicate when decoder B terminates.

비록 도 15의 예가 하드-입력 하드-출력의 연쇄를 다루지만, 다른 조합들이 또한, 사용될 수 있다. 둘 이상의 SISO 디코더들이 연속적으로 사용될 수 있으며 둘 이상의 하드-입력 하드-출력 디코더들이 또한 사용될 수 있다. Although the example of FIG. 15 addresses a chain of hard-input hard-outputs, other combinations may also be used. Two or more SISO decoders may be used in succession and two or more hard-input hard-output decoders may also be used.

전술한 예들에 있어서 소프트-입력은 데이터를 프로그램하기 위해 사용된 것보다 높은 분석을 갖는 데이터를 판독함으로써 획득된다. 다른 예들에 있어서, 다른 정보가 소프트-입력 데이터를 유도하기 위해 사용될 수 있다. 메모리에 저장된 데이터 비트에 관해 단순히 1 또는 0을 판단하기 위해 추가적으로 제공된 어떠한 품질 정보는 소프트-입력을 제공하기 위해 사용될 수 있다. 몇몇 메모리 설계들에 있어서, 카운트는 블록이 삭제된 횟수만큼 유지된다. 메모리의 물리적인 속성은 카운트 증가를 삭제하고, 소정의 에러들을 보다 자주 만드는 것과 같은 예측 가능한 방법으로 변할 수 있다. 삭제 카운트는 이러한 패턴이 알려진 확률 데이터를 획득하기 위해 사용될 수 있다. 예측 가능한 방법으로 프로그램된 데이터에 영향을 끼 치는 것으로 알려진 다른 인자들이 또한 확률 정보를 획득하기 위해 사용될 수 있다. 이러한 방법에 있어서, 데이터는 데이터를 프로그램하기 위해 사용된 동일한 분석에 의해 메모리 어레이로부터 판독될 수 있으며 소프트-입력을 제공하기 위해 계속해서 사용될 수 있다. 확률 정보의 다양한 소스들이 조합될 수 있다. 따라서, 높은 분석을 갖는 판독 데이터로부터의 확률 정보는 다른 소스로부터의 확률 데이터와 조합될 수 있다. 따라서, 소프트-입력은 메모리 어레이를 판독함으로써 직접적으로 획득된 확률 정보에 제한되지 않는다.In the above examples, soft-input is obtained by reading data with a higher analysis than that used to program the data. In other examples, other information may be used to derive soft-input data. Any quality information additionally provided to simply determine 1 or 0 for the data bits stored in the memory can be used to provide soft-input. In some memory designs, the count is maintained the number of times the block has been erased. The physical nature of the memory can change in a predictable way, such as eliminating count increments and making certain errors more frequent. The erase count can be used to obtain probability data for which this pattern is known. Other factors known to affect the programmed data in a predictable manner can also be used to obtain probability information. In this way, data can be read from the memory array by the same analysis used to program the data and continue to be used to provide soft-input. Various sources of probability information can be combined. Thus, probability information from read data with high analysis can be combined with probability data from other sources. Thus, soft-input is not limited to probability information obtained directly by reading the memory array.

전술한 다양한 예들은 플래시 메모리로 언급된다. 그러나 다양한 다른 비휘발성 메모리들이 현재 사용되고 있으며 본 명세서에 기술된 기법들은 어느 적절한 비휘발성 메모리 시스템들에 적용될 수 있다. 이러한 메모리 시스템들은 강유전체 스토리지에 기초한 메모리 시스템들(FRAM 또는 FeRAM), 자기저항 저장장치에 기초한 메모리 시스템들(MRAM), 그리고 위상 변화에 기초한 메모리들("Ovonic Unified Memory"를 위한 PRAM 또는 "OUM")을 포함할 수 있지만, 이에 한정되지 않는다.The various examples described above are referred to as flash memory. However, various other nonvolatile memories are currently in use and the techniques described herein may be applied to any suitable nonvolatile memory systems. These memory systems are memory systems based on ferroelectric storage (FRAM or FeRAM), memory systems based on magnetoresistive storage (MRAM), and memory based on phase change (PRAM or "OUM" for "Ovonic Unified Memory". ), But is not limited thereto.

모든 특허들, 특허 출원들, 논문들, 교재들, 명세서들, 다른 간행물들, 문서들 및 본 명세서에 참조된 것들은 모든 목적들을 위해 이들 전부가 본 명세서에 참조로서 인용된다. 모든 인용된 간행물들, 문서들 및 본 발명의 문서의 원문 간의 용어의 정의 또는 사용 또는 본 발명의 문서에 있어서 용어의 사용에 있어서 어떠한 불일치 또는 충돌이 있을 것이다.All patents, patent applications, papers, textbooks, specifications, other publications, documents, and references herein are incorporated by reference in their entirety for all purposes. There will be any discrepancies or conflicts in the definition or use of terms between all cited publications, documents and the text of the present document, or in the use of the term in the document of the present invention.

비록 본 발명의 다양할 실시예들이 소정의 바람직한 실시예들에 관하여 기술되었다 하더라도, 본 발명이 첨부된 청구항들의 전 범위 내에서 보호된다는 것이 이해된다.Although various embodiments of the invention have been described with respect to certain preferred embodiments, it is understood that the invention is protected within the scope of the appended claims.

상술한 바와 같이, 본 발명은, 비휘발성 메모리 시스템과, 비휘발성 메모리 시스템을 동작하기 위한 방법을 제공하는데 사용된다.As described above, the present invention is used to provide a nonvolatile memory system and a method for operating the nonvolatile memory system.

Claims (46)

사전결정된 체계에 따라서 인코드되고 비휘발성 메모리 어레이에 저장된 데이터를 디코딩하는 방법에 있어서, 상기 방법은A method for decoding data encoded according to a predetermined scheme and stored in a nonvolatile memory array, the method comprising: 복수의 비트들을 획득하기 위해 상기 비휘발성 메모리 어레이로부터 상기 인코드된 데이터를 판독하는 단계;Reading the encoded data from the nonvolatile memory array to obtain a plurality of bits; 상기 복수의 비트들에 관한 확률 정보를 획득하는 단계; 및Obtaining probability information about the plurality of bits; And 상기 사전결정된 체계를 이용하여 상기 복수의 비트들과 상기 확률 정보로부터 계산된 출력 확률 값들을 계산하는 단계를Calculating output probability values calculated from the plurality of bits and the probability information using the predetermined scheme. 포함하는, 데이터 디코딩 방법.Including a data decoding method. 제 1항에 있어서, 상기 복수의 비트들에 관한 확률 정보를 획득하는 단계는 상기 인코드된 데이터를 프로그램하기 위해 사용된 상기 다수의 프로그램 상태보다 많은 판독 상태들 분석하는 분석에 의해 상기 인코드된 데이터를 판독하는 단계를 포함하는, 데이터 디코딩 방법.2. The method of claim 1, wherein obtaining probability information about the plurality of bits comprises encoding the encoded data by analysis to analyze more read states than the plurality of program states used to program the encoded data. And reading the data. 제 1항에 있어서, 상기 출력 확률 값들을 계산하는 단계는 제 1 반복에서 발생하고, 이어서 상기 출력 확률 값들은 적어도 하나의 추가적인 반복에서 상기 사전결정된 체계를 이용하여 추가적인 출력 확률 값들을 계산하기 위해 사용되는, 데이터 디코딩 방법.The method of claim 1, wherein calculating the output probability values occurs in a first iteration, and then the output probability values are used to calculate additional output probability values using the predetermined scheme in at least one additional iteration. Data decoding method. 제 3항에 있어서, 상기 추가적인 확률 값들은 사전결정된 조건이 충족될 때까지 추가적인 반복들에서 계산되는, 데이터 디코딩 방법.4. The method of claim 3, wherein the additional probability values are calculated at additional iterations until a predetermined condition is met. 제 1항에 있어서, 상기 출력 확률 값들은 하드-입력 하드-출력 디코더에 제공되는 하드 데이터를 획득하기 위해 사용되는, 데이터 디코딩 방법.The method of claim 1, wherein the output probability values are used to obtain hard data provided to a hard-input hard-output decoder. 비휘발성 메모리 어레이에서 데이터를 저장하고 검색하기 위한 방법에 있어서, 상기 방법은A method for storing and retrieving data in a nonvolatile memory array, the method comprising 상기 비휘발성 메모리 어레이에 저장될 복수의 입력 데이터 비트들을 수신하는 단계;Receiving a plurality of input data bits to be stored in the nonvolatile memory array; 상기 복수의 입력 데이터 비트들로부터 복수의 여분 데이터 비트들을 계산하는 단계;Calculating a plurality of redundant data bits from the plurality of input data bits; 상기 복수의 입력 데이터 비트들과 상기 비휘발성 메모리 어레이내 n 상태들 중 하나에 개별적으로 프로그램된 복수의 셀들내 상기 복수의 여분 데이터 비트들을 저장하는 단계;Storing the plurality of redundant data bits in the plurality of cells individually programmed to one of the plurality of input data bits and the n states in the nonvolatile memory array; 이어서, 로우 데이터(raw data)를 획득하기 위해 상기 복수의 셀들을 판독하는 단계로서, 셀당 n 상태보다 많은 분석을 하는 단계를 포함하는 판독 단계;Subsequently reading the plurality of cells to obtain raw data, the reading step comprising analyzing more than n states per cell; 상기 로우 데이터로부터 입력 데이터 비트들과 여분 데이터 비트들에 대응하는 복수의 로우 확률 값들을 계산하는 단계;Calculating a plurality of row probability values corresponding to input data bits and redundant data bits from the row data; 상기 복수의 로우 확률 값들, 입력 데이터 비트에 대응하는 적어도 하나의 로우 확률 값 및 여분 데이터 비트에 대응하는 적어도 하나의 로우 확률 값으로부터 계산된 제 1 복수의 계산된 확률 값들중 개별적인 값으로부터 제 1 복수의 계산된 확률 값들을 계산하는 단계; 및A first plurality from a respective one of a first plurality of calculated probability values calculated from the plurality of row probability values, at least one row probability value corresponding to an input data bit and at least one row probability value corresponding to a redundant data bit Calculating the calculated probability values of; And 상기 제 1 복수의 계산된 확률 값들로부터 복수의 출력 데이터를 계산하는 단계를Calculating a plurality of output data from the first plurality of calculated probability values 포함하는, 데이터 저장 및 검색 방법.Including, data storage and retrieval methods. 제 6항에 있어서, 상기 복수의 출력 데이터 비트들을 계산하는 단계는 상기 제 1 복수의 계산된 확률 값들로부터 제 2 복수의 계산된 확률 값들을 계산하는 단계를 포함하는, 데이터 저장 및 검색 방법.7. The method of claim 6, wherein calculating the plurality of output data bits comprises calculating a second plurality of calculated probability values from the first plurality of calculated probability values. 제 7항에 있어서, 상기 제 1 복수의 계산된 확률 값들과 제 2 복수의 계산된 확률 값들은 사전결정된 조건들이 충족될 때까지 복수의 확률 값들을 반복적으로 계산하는 터보 코드에서 단계들에 따라서 계산되는, 데이터 저장 및 검색 방법.8. The method of claim 7, wherein the first plurality of calculated probability values and the second plurality of calculated probability values are calculated according to the steps in a turbo code that repeatedly calculates a plurality of probability values until predetermined conditions are met. Data storage and retrieval methods. 제 6항에 있어서, 상기 복수의 여분 데이터 비트들은 저밀도 패리티 체크(Low Density Parity Check : LDPC) 인코더에 의해 발생되는, 데이터 저장 및 검색 방법.7. The method of claim 6, wherein the plurality of redundant data bits are generated by a Low Density Parity Check (LDPC) encoder. 제 6항에 있어서, 상기 복수의 출력 데이터 비트들에 대해 하드-입력 하드-출력 에러 보정 코드(ECC)를 수행하는 단계를 더 포함하는, 데이터 저장 및 검색 방법.7. The method of claim 6, further comprising performing a hard-input hard-output error correction code (ECC) on the plurality of output data bits. 제 10항에 있어서, 상기 ECC 동작인 임계치 수보다 큰 다수의 에러들을 나타내면, 상기 제 1 복수의 확률 값들로부터 제 2 복수의 확률 값들을 계산하는 단계를 포함하는, 데이터 저장 및 검색 방법.12. The method of claim 10, comprising calculating a second plurality of probability values from the first plurality of probability values if the plurality of errors is greater than a threshold number that is the ECC operation. 제 10항에 있어서, 상기 ECC 동작이 상기 임계치 미만인 다수의 에러들을 나타내면, 상기 복수의 출력 데이터 비트들 내 에러들을 보정하는 단계를 포함하는, 데이터 저장 및 검색 방법.11. The method of claim 10, comprising correcting errors in the plurality of output data bits if the ECC operation indicates a number of errors that are below the threshold. 메모리 셀당 데이터의 적어도 2개의 데이터를 저장하는 비휘발성 메모리 어레이 내에 데이터를 판독하고 저장하기 위한 방법에 있어서,A method for reading and storing data in a nonvolatile memory array that stores at least two data of data per memory cell, the method comprising: 상기 비휘발성 메모리 어레이내에 저장될 복수의 입력 데이터 비트들을 수신하는 단계;Receiving a plurality of input data bits to be stored in the nonvolatile memory array; 상기 복수의 입력 데이터 비트들로부터 복수의 여분 데이터 비트들을 계산하는 단계;Calculating a plurality of redundant data bits from the plurality of input data bits; 상기 복수의 입력 데이터 비트들과 상기 비휘발성 메모리 내 복수의 셀들내 상기 복수의 여분 데이터 비트들을 저장하는 단계로서, 상기 복수의 셀들은 셀당 적어도 2개의 비트들을 나타내는 제 1 다수의 프로그램 상태들 중 하나로 개별적으로 프로그램되는 단계;Storing the plurality of input data bits and the plurality of redundant data bits in a plurality of cells in the non-volatile memory, wherein the plurality of cells are in one of a first plurality of program states representing at least two bits per cell. Individually programmed; 이어서, 로우 데이터를 획득하기 위해 상기 복수의 셀들을 판독하는 단계로서, 상기 판독 단계는 상기 제 1 수보다 클 제 2 다수의 판독 상태들을 분석하는 단계; 및Thereafter, reading the plurality of cells to obtain row data, the reading step comprising: analyzing a second plurality of read states that are greater than the first number; And 이어서, 상기 로우 데이터로부터 복수의 로우 확률 값들, 싱글 입력 데이터 비트 또는 싱글 여분 데이터 비트에 대응하는 상기 복수의 로우 확률 값들중 개별적인 값을 계산하는 단계를Subsequently, calculating an individual value of the plurality of row probability values corresponding to a plurality of row probability values, a single input data bit, or a single redundant data bit from the row data. 포함하는, 데이터 판독 및 저장 방법.Comprising, the method of reading and storing data. 제 13항에 있어서, 상기 복수의 로우 확률 값들은 상기 메모리 셀로부터 로우 데이터를 갖는 메모리 셀내에 저장된 각각의 비트를 위한 확률을 개별적으로 상관시키는 룩업 테이블로부터 유도되는, 데이터 판독 및 저장 방법.14. The method of claim 13, wherein the plurality of row probability values are derived from a lookup table that individually correlates probabilities for each bit stored in a memory cell having row data from the memory cell. 제 13항에 있어서, 상기 복수의 입력 데이터 비트들과 상기 복수의 여분 데이터 비트들은 2이상의 비트들을 개별적으로 나타내는 임계 전압 범위들로 상기 복수의 셀들을 프로그래밍함으로써 저장되는, 데이터 판독 및 저장 방법.14. The method of claim 13, wherein the plurality of input data bits and the plurality of redundant data bits are stored by programming the plurality of cells into threshold voltage ranges that individually represent two or more bits. 제 15항에 있어서, 상기 임계 전압 범위들은 그레이 코드에 따라서 비트들로 맵되는, 데이터 판독 및 저장 방법.16. The method of claim 15, wherein the threshold voltage ranges are mapped to bits according to a gray code. 제 15항에 있어서, 상기 임계 전압 범위들은 2진 인코딩 체계에 따라서 비트들로 맵되는, 데이터 판독 및 저장 방법.16. The method of claim 15, wherein the threshold voltage ranges are mapped to bits according to a binary encoding scheme. 제 13항에 있어서, 상기 판독은 상기 임계 전압 범위의 중심에서 보다 프로그램 상태의 임계 전압 범위의 외부에서 보다 높은 밀도의 기준 전압들을 갖는 사전결정된 패턴의 기준 전압들과 셀로부터의 전압을 비교함으로써 달성되는, 데이터 판독 및 저장 방법.14. The method of claim 13, wherein the reading is achieved by comparing the voltage from the cell with a predetermined pattern of reference voltages having higher density reference voltages outside of the threshold voltage range of a program state than at the center of the threshold voltage range. Method of reading and storing data. 제 13항에 있어서, 상기 복수의 로우 확률 값들로부터 복수의 계산된 확률 값들, 입력 데이터 비트에 대응하는 적어도 하나의 로우 확률 값 및 여분 데이터 비트에 대응하는 적어도 하나의 로우 확률 값으로부터 유도된 개별적인 계산된 확률 값을 계산하는 단계를 더 포함하는, 데이터 판독 및 저장 방법.14. The method of claim 13, wherein a plurality of calculated probability values are derived from the plurality of row probability values, at least one row probability value corresponding to an input data bit and at least one row probability value corresponding to a redundant data bit. And calculating a probability value that has been determined. 제 13항에 있어서, 복수의 출력 데이터 비트들은 소프트-입력 소프트-출력 보정 코드에 따라서 상기 복수의 로우 확률 값들로부터 계산되는, 데이터 판독 및 저장 방법.14. The method of claim 13, wherein a plurality of output data bits are calculated from the plurality of row probability values in accordance with a soft-input soft-output correction code. 제 20항에 있어서, 상기 에러 보정 코드는 터보 코드인, 데이터 판독 및 저장 방법.21. The method of claim 20, wherein the error correction code is a turbo code. 제 20항에 있어서, 상기 에러 보정 코드는 LDPC 코드인, 데이터 판독 및 저장 방법.21. The method of claim 20, wherein the error correction code is an LDPC code. 데이터가 메모리 셀 상태들에 개별적으로 대응하는 임계 전압 범위들로 프로그램되는 메모리 셀들에 저장되는 비휘발성 메모리 어레이로부터 데이터를 판독하기 위한 방법에 있어서,A method for reading data from a nonvolatile memory array in which data is stored in memory cells that are programmed to threshold voltage ranges that individually correspond to memory cell states. 임계 전압 범위로 프로그램되는 메모리 셀에 상기 임계 전압 범위의 제 2 부분을 위한 것보다 상기 임계 전압 범위의 제 1 부분을 위한 보다 높은 밀도의 판독 동작들을 제공하는 사전결정된 패턴에 따라서 수행되는 복수의 판독 동작들을 수행하는 단계와;A plurality of reads performed according to a predetermined pattern that provides a memory cell programmed to a threshold voltage range to provide higher density read operations for the first portion of the threshold voltage range than for the second portion of the threshold voltage range. Performing the operations; 특별한 논리 상태를 갖는 상기 메모리 셀에서 프로그램된 비트의 확률을 나타내는 적어도 하나의 확률 값을 상기 복수의 판독 동작들로부터 유도하는 단계를Deriving from said plurality of read operations at least one probability value representing a probability of a programmed bit in said memory cell having a particular logic state. 포함하는, 데이터 판독 방법.And a data reading method. 제 23항에 있어서, 적어도 하나의 확률 값이 메모리 셀내에 저장된 각각의 비트를 위한 개별적인 확률 값들을 제공하는 룩업 테이블을 이용하여 상기 복수의 판독 동작들로부터 유도되는, 데이터 판독 방법.24. The method of claim 23, wherein at least one probability value is derived from the plurality of read operations using a lookup table that provides individual probability values for each bit stored in a memory cell. 제 23항에 있어서, 소프트-입력 소프트-출력 디코더를 위한 소프트-입력을 제공하는 확률 값은 복수의 메모리 셀들 내에 저장된 각각의 비트를 위해 획득되는, 데이터 판독 방법.24. The method of claim 23, wherein a probability value providing a soft-input for a soft-input soft-output decoder is obtained for each bit stored in the plurality of memory cells. 제 25항에 있어서, 상기 소프트-입력 소프트-출력 디코더로부터 에러 보정을 더 수행하는 하드-입력 하드-출력 디코더로 출력 정보를 패스하는 단계를 더 포함하는, 데이터 판독 방법.27. The method of claim 25, further comprising passing output information from the soft-input soft-output decoder to a hard-input hard-output decoder that further performs error correction. 비휘발성 메모리 시스템으로서,A nonvolatile memory system, 인코딩 체계에 따라서 상기 복수의 데이터 비트들로부터 계산되는 복수의 데이터와 복수의 패리티 비트들을 포함하는 메모리 어레이;A memory array including a plurality of data and a plurality of parity bits calculated from the plurality of data bits in accordance with an encoding scheme; 상기 복수의 셀들을 판독하고 상기 복수의 데이터 비트들과 상기 복수의 패리티 비트들에 대응하는 로우 확률 값들을 유도하고 복조기; 및Read the plurality of cells and derive low probability values corresponding to the plurality of data bits and the plurality of parity bits; And 상기 로우 확률 값들 및 상기 인코딩 체계를 이용하여 출력 확률 값들을 계산하는 디코더를A decoder for calculating output probability values using the row probability values and the encoding scheme. 포함하는, 비휘발성 메모리 시스템.And a non-volatile memory system. 제 27항에 있어서, 상기 복조기는 상기 복수의 셀들을 프로그램하기 위해 사용된 상기 다수의 프로그램 상태들보다 큰 셀당 다수의 판독 상태들을 분석하는, 비휘발성 메모리 시스템.28. The non- volatile memory system of claim 27, wherein the demodulator analyzes a plurality of read states per cell that are greater than the plurality of program states used to program the plurality of cells. 제 27항에 있어서, 상기 디코더는 이어서 상기 인코딩 체계를 이용하여 상기 출력 확률 값들로부터 추가적인 확률 값들을 계산하는, 비휘발성 메모리 시스템.28. The non- volatile memory system of claim 27, wherein the decoder then calculates additional probability values from the output probability values using the encoding scheme. 제 29항에 있어서, 상기 디코더는 사전결정된 조건이 충족될 때까지 수행된 2이상의 반복들에서 추가적인 확률 값들을 계산하는, 비휘발성 메모리 시스템.30. The non- volatile memory system of claim 29, wherein the decoder calculates additional probability values in two or more iterations performed until a predetermined condition is met. 제 30항에 있어서, 하드-입력 하드-출력 디코더를 더 포함하는, 비휘발성 메모리 시스템.31. The non- volatile memory system of claim 30, further comprising a hard-input hard-output decoder. 제 27항에 있어서, 상기 인코딩 체계는 터보 코딩을 이용하는, 비휘발성 메모리 시스템.28. The non- volatile memory system of claim 27, wherein the encoding scheme uses turbo coding. 제 27항에 있어서, 상기 인코딩 체계는 저밀도 패리티 체크(LDPC) 코드를 이용하는, 비휘발성 메모리 시스템.28. The non- volatile memory system of claim 27, wherein the encoding scheme uses low density parity check (LDPC) codes. 제 27항에 있어서, 소프트 입력을 하드 출력으로 변환하는 컨버터를 더 포함하는, 비휘발성 메모리 시스템.28. The non- volatile memory system of claim 27, further comprising a converter that converts a soft input into a hard output. 비휘발성 메모리 시스템으로서,A nonvolatile memory system, 개별적인 메모리 셀내에 2 이상의 비트들을 저장하는 비휘발성 메모리 어레 이와;A nonvolatile memory array for storing two or more bits in a separate memory cell; 상기 개별적인 메모리 셀내에 저장된 상기 2 이상의 각각의 비트들을 위해 개별적인 확률 값을 유도하는 복조기를A demodulator that derives an individual probability value for each of the two or more bits stored in the respective memory cell. 포함하는, 비휘발성 메모리 시스템.And a non-volatile memory system. 제 35항에 있어서, 상기 2 이상의 각각의 비트들을 위해 상기 개별적인 확률 값들을 획득하기 위해 사용되는 룩업 테이블을 더 포함하는, 비휘발성 메모리 시스템.36. The non- volatile memory system of claim 35, further comprising a lookup table used to obtain the respective probability values for the two or more respective bits. 제 35항에 있어서, 상기 2이상의 비트들은 인코딩 체계에 따라서 더해진 적어도 하나의 패리티 비트를 포함하는, 비휘발성 메모리 시스템.36. The non- volatile memory system of claim 35, wherein the two or more bits comprise at least one parity bit added according to an encoding scheme. 제 35항에 있어서, 상기 복조기는 보다 많은 상기 개별적인 메모리 셀의 상기 다수의 프로그램 상태들을 식별하는 분석에 의해 상기 개별적인 메모리 셀을 판독함으로써 상기 개별적인 확률 값들을 유도하는, 비휘발성 메모리 시스템.36. The non- volatile memory system of claim 35, wherein the demodulator derives the individual probability values by reading the individual memory cell by analysis identifying more of the plurality of program states of the individual memory cell. 제 35항에 있어서, 입력으로서 상기 개별적인 확률 값들을 수신하고 상기 개별적인 확률 값들로부터 출력 확률 값들을 계산하는 소프트-입력 소프트-출력 디코더를 더 포함하는, 비휘발성 메모리 시스템.36. The non- volatile memory system of claim 35, further comprising a soft-input soft-output decoder that receives the individual probability values as input and calculates output probability values from the individual probability values. 제 35항에 있어서, 상기 복조기는 적어도 하나의 보다 높은 밀도의 영역과 보다 낮은 밀도의 영역을 갖는 판독 동작들의 사전결정된 패턴을 이용하여 상기 개별적인 메모리 셀을 판독하는, 비휘발성 메모리 시스템.36. The non- volatile memory system of claim 35, wherein the demodulator reads the individual memory cell using a predetermined pattern of read operations having at least one region of higher density and region of lower density. 비휘발성 메모리 시스템으로서,A nonvolatile memory system, 2이상의 상태들을 나타내는 2 이상의 임계 전압 범위들 중 하나로 개별적으로 프로그램되는 비휘발성 메모리 셀들의 어레이와;An array of nonvolatile memory cells individually programmed into one of two or more threshold voltage ranges representing two or more states; 상기 2 이상의 임계 전압 범위들 중 식별된 하나로 개별적인 셀 임계 전압을 분석하고 상기 식별된 임계 전압 범위의 제 2 부분을 위해 보다 상기 식별된 임계 전압 범위의 제 1 부분을 위해 판독 동작들의 보다 높은 밀도를 제공함으로써 상기 식별된 임계 전압 범위 내에서 상기 개별적인 셀 임계 전압을 더 분석하는 상기 제 1 및 제 2 부분들을 위해 상기 판독 동작들로부터 확률 값들을 유도하는 복조기를Analyze the individual cell threshold voltage with the identified one of the two or more threshold voltage ranges, and determine a higher density of read operations for the first portion of the identified threshold voltage range than for the second portion of the identified threshold voltage range. Providing a demodulator that derives probability values from the read operations for the first and second portions further analyzing the respective cell threshold voltage within the identified threshold voltage range. 포함하는, 비휘발성 메모리 시스템.And a non-volatile memory system. 제 41항에 있어서, 입력으로서 상기 확률 값들을 수신하는 소프트-입력 소프트-출력 디코더를 더 포함하는, 비휘발성 메모리 시스템.42. The non- volatile memory system of claim 41, further comprising a soft-input soft-output decoder that receives the probability values as input. 제 42항에 있어서, 상기 소프트-입력 소프트-출력 디코더는 사전결정된 조건이 충족될 때까지 다중 반복들에서 출력 확률 값들을 계산하는, 비휘발성 메모리 시스템.43. The non- volatile memory system of claim 42, wherein the soft-input soft-output decoder calculates output probability values in multiple iterations until a predetermined condition is met. 제 43항에 있어서, 상기 사전결정된 조건이 충족될 때 상기 출력 확률 값들을 하드 출력 값들로 변환하는 소프트-하드 컨버터를 더 포함하는, 비휘발성 메모리 시스템.44. The non- volatile memory system of claim 43, further comprising a soft-hard converter that converts the output probability values into hard output values when the predetermined condition is met. 제 43항에 있어서, 상기 소프트-입력 소프트-출력 디코더로부터 상기 출력 확률 값들을 수신하는 상기 사전결정된 조건들이 충족될 때를 결정하는 하드-입력 하드-출력 디코더를 더 포함하는, 비휘발성 메모리 시스템.44. The non- volatile memory system of claim 43, further comprising a hard-input hard-output decoder that determines when the predetermined conditions of receiving the output probability values from the soft-input soft-output decoder are met. 제 41항에 있어서, 비휘발성 메모리 셀들은 2이상의 비트들을 저장하기 위해 4 이상의 상태들과 상기 2이상의 각각의 비트들을 위해 확률 값들을 유도하는 상기 복조기를 나타내는 4이상의 임계 전압 범위들로 개별적으로 프로그램되는, 비휘발성 메모리 시스템.42. The non- volatile memory cell of claim 41, wherein the nonvolatile memory cells are individually programmed with four or more threshold voltage ranges representing the demodulator deriving four or more states and probable values for each of the two or more bits to store two or more bits. Nonvolatile memory system.
KR1020097008466A 2006-09-28 2007-09-19 Nonvolatile memory with error correction based on the likehood the error may occur KR20090086523A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/536,327 2006-09-28
US11/536,286 US7818653B2 (en) 2006-09-28 2006-09-28 Methods of soft-input soft-output decoding for nonvolatile memory
US11/536,327 US7904783B2 (en) 2006-09-28 2006-09-28 Soft-input soft-output decoder for nonvolatile memory
US11/536,286 2006-09-28

Publications (1)

Publication Number Publication Date
KR20090086523A true KR20090086523A (en) 2009-08-13

Family

ID=39015990

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097008466A KR20090086523A (en) 2006-09-28 2007-09-19 Nonvolatile memory with error correction based on the likehood the error may occur

Country Status (3)

Country Link
KR (1) KR20090086523A (en)
TW (1) TWI353521B (en)
WO (1) WO2008042593A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110101475A (en) * 2010-03-08 2011-09-16 삼성전자주식회사 Nonvolatile memory using interleaving technology and program method thereof
US10573379B2 (en) 2014-06-03 2020-02-25 Micron Technology, Inc. Determining soft data

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805663B2 (en) 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
US7818653B2 (en) 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
US7904783B2 (en) 2006-09-28 2011-03-08 Sandisk Corporation Soft-input soft-output decoder for nonvolatile memory
US7814401B2 (en) * 2006-12-21 2010-10-12 Ramot At Tel Aviv University Ltd. Soft decoding of hard and soft bits read from a flash memory
US7904793B2 (en) 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
WO2008121553A1 (en) * 2007-03-29 2008-10-09 Sandisk Corporation Non-volatile storage with decoding of data using reliability metrics based on multiple reads
CN102132350B (en) 2008-07-01 2015-06-17 Lsi公司 Methods and apparatus for soft demapping and intercell interference mitigation in flash memories
US8406048B2 (en) * 2008-08-08 2013-03-26 Marvell World Trade Ltd. Accessing memory using fractional reference voltages
JP5535219B2 (en) 2008-09-30 2014-07-02 エルエスアイ コーポレーション Method and apparatus for soft data generation in a memory device using a reference cell
US8458114B2 (en) 2009-03-02 2013-06-04 Analog Devices, Inc. Analog computation using numerical representations with uncertainty
US8107306B2 (en) 2009-03-27 2012-01-31 Analog Devices, Inc. Storage devices with soft processing
US8504885B2 (en) 2010-03-31 2013-08-06 Lsi Corporation Methods and apparatus for approximating a probability density function or distribution for a received value in communication or storage systems
US8429500B2 (en) 2010-03-31 2013-04-23 Lsi Corporation Methods and apparatus for computing a probability value of a received value in communication or storage systems
US8775913B2 (en) 2010-03-31 2014-07-08 Lsi Corporation Methods and apparatus for computing soft data or log likelihood ratios for received values in communication or storage systems
US8782495B2 (en) 2010-12-23 2014-07-15 Sandisk Il Ltd Non-volatile memory and methods with asymmetric soft read points around hard read points
US8099652B1 (en) 2010-12-23 2012-01-17 Sandisk Corporation Non-volatile memory and methods with reading soft bits in non uniform schemes
US8498152B2 (en) 2010-12-23 2013-07-30 Sandisk Il Ltd. Non-volatile memory and methods with soft-bit reads while reading hard bits with compensation for coupling
US9898361B2 (en) 2011-01-04 2018-02-20 Seagate Technology Llc Multi-tier detection and decoding in flash memories
US9292377B2 (en) 2011-01-04 2016-03-22 Seagate Technology Llc Detection and decoding in flash memories using correlation of neighboring bits and probability based reliability values
US9502117B2 (en) * 2011-03-14 2016-11-22 Seagate Technology Llc Cell-level statistics collection for detection and decoding in flash memories
US8780659B2 (en) 2011-05-12 2014-07-15 Micron Technology, Inc. Programming memory cells
US9064575B2 (en) 2012-08-03 2015-06-23 Micron Technology, Inc. Determining whether a memory cell state is in a valley between adjacent data states
US8990670B2 (en) * 2012-09-28 2015-03-24 Intel Corporation Endurance aware error-correcting code (ECC) protection for non-volatile memories
US9065483B2 (en) 2013-01-21 2015-06-23 Micron Technology, Inc. Determining soft data using a classification code
TWI492234B (en) 2014-04-21 2015-07-11 Silicon Motion Inc Method, memory controller, and memory system for reading data stored in flash memory
US10304550B1 (en) 2017-11-29 2019-05-28 Sandisk Technologies Llc Sense amplifier with negative threshold sensing for non-volatile memory
TWI685850B (en) 2018-08-22 2020-02-21 大陸商深圳大心電子科技有限公司 Memory management method and storage controller
US10643695B1 (en) 2019-01-10 2020-05-05 Sandisk Technologies Llc Concurrent multi-state program verify for non-volatile memory
CN114270307A (en) * 2019-08-22 2022-04-01 谷歌有限责任公司 Slicing for synchronizing processors
US11024392B1 (en) 2019-12-23 2021-06-01 Sandisk Technologies Llc Sense amplifier for bidirectional sensing of memory cells of a non-volatile memory
CN111110247B (en) * 2020-01-13 2023-05-26 广东高驰运动科技股份有限公司 Method and device for monitoring motion data index
CN113129993A (en) * 2020-01-16 2021-07-16 华邦电子股份有限公司 Memory device and data reading method thereof

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5172338B1 (en) * 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US6279133B1 (en) * 1997-12-31 2001-08-21 Kawasaki Steel Corporation Method and apparatus for significantly improving the reliability of multilevel memory architecture
US6347125B1 (en) * 1999-01-11 2002-02-12 Ericsson Inc. Reduced complexity demodulator for multi-bit symbols
JP4167646B2 (en) * 2004-11-30 2008-10-15 株式会社東芝 OFDM demodulator
US20070266296A1 (en) * 2006-05-15 2007-11-15 Conley Kevin M Nonvolatile Memory with Convolutional Coding

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110101475A (en) * 2010-03-08 2011-09-16 삼성전자주식회사 Nonvolatile memory using interleaving technology and program method thereof
US10573379B2 (en) 2014-06-03 2020-02-25 Micron Technology, Inc. Determining soft data
US11170848B2 (en) 2014-06-03 2021-11-09 Micron Technology, Inc. Determining soft data
US11688459B2 (en) 2014-06-03 2023-06-27 Micron Technology, Inc. Determining soft data

Also Published As

Publication number Publication date
TW200823666A (en) 2008-06-01
WO2008042593A1 (en) 2008-04-10
TWI353521B (en) 2011-12-01

Similar Documents

Publication Publication Date Title
US7818653B2 (en) Methods of soft-input soft-output decoding for nonvolatile memory
US7904783B2 (en) Soft-input soft-output decoder for nonvolatile memory
KR20090086523A (en) Nonvolatile memory with error correction based on the likehood the error may occur
US8001441B2 (en) Nonvolatile memory with modulated error correction coding
US7904780B2 (en) Methods of modulating error correction coding
KR101144096B1 (en) Involatile memory with soft-input, soft-outputsiso decoder, statistical unit and adaptive operation
US7558109B2 (en) Nonvolatile memory with variable read threshold
US7805663B2 (en) Methods of adapting operation of nonvolatile memory
US7904788B2 (en) Methods of varying read threshold voltage in nonvolatile memory
KR101017847B1 (en) Nonvolatile memory with variable read threshold
KR102059209B1 (en) Differential vector storage for non-volatile memory
KR100845529B1 (en) Ecc controller for use in flash memory device and memory system including the same
US20080092015A1 (en) Nonvolatile memory with adaptive operation
US7840875B2 (en) Convolutional coding methods for nonvolatile memory
US8635508B2 (en) Systems and methods for performing concatenated error correction
US8589765B1 (en) Memory read-out
US20140281128A1 (en) Decoding data stored in solid-state memory
US10804938B2 (en) Decoding data using decoders and neural networks
TWI385512B (en) Method of storing data and decoding data stored in a nonvolatile semiconductor memory array, nonvolatile semiconductor and flash memory systems, and method of managing data in flash memory
US20140211564A1 (en) Level-estimation in multi-level cell memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20120221

Effective date: 20130913

Free format text: TRIAL NUMBER: 2012101001803; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20120221

Effective date: 20130913

N231 Notification of change of applicant