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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/43—Majority logic or threshold decoding
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
Abstract
Description
본 발명은, 비휘발성 메모리 시스템과, 비휘발성 메모리 시스템을 동작시키기 위한 방법에 관한 것이다. 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
도 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
도 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
도 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
함수들 간의 중첩은 메모리 어레이내 물리적인 결함들과 메모리 어레이내 나중 프로그래밍 또는 판독 동작들에 의해 프로그램된 셀들에 기인한 방해를 포함하는 다수의 이유들 때문에 발생한다. 중첩은 또한 매우 타이트한 임계 전압 범위내 큰 다수의 셀들을 유지하기 위한 일반적인 능력의 부족에 기인하여 발생할 수 있다. 소정의 프로그래밍 기법들은 좁은(보다 작은 규격 편차를 갖는) 임계 전압들의 기능들을 허용할 수 있다. 그러나 이러한 프로그래밍은 보다 많은 시간이 걸릴 수 있다. 몇몇 메모리 시스템들에 있어서, 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
그 다음, 입력 데이터 비트들과 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 /
데이터는 일정 기간 동안 메모리 어레이(209) 내에 저장될 수 있다. 이 시간 동안, 다양한 이벤트들이 메모리 셀들의 임계 전압들을 변경하기 위해 발생할 수 있다. 특히, 프로그래밍과 판독을 포함하는 동작들이 다른 앞서서 프로그램된 셀들에 영향을 끼치는 방법으로 워드 라인들 및 비트 라인들에 적용될 수 있다. 이러한 방해들은 특히 디바이스들의 면적이 인접한 셀들 간의 상호작용이 의미가 있도록 감소되는 경우 일반적이다. 전하는 또한 오래 기간에 걸쳐서 손실될 수 있다. 이러한 데이터 유지 실패들은 또한 판독시 데이터가 변경되도록 야기할 수 있다. 이러한 변경들의 결과로서, 데이터 비트들은 초기에 프로그램된 데이터 비트들과 다른 상태들을 갖는 판독 출력일 수 있다. 도 2의 실시예에 있어서, 하나의 입력 데이터 211은 VD보다 큰 임계 전압(>VD)을 갖는 것으로 초기에 기록될 때 VD 보다 작은 임계 전압(<VD)을 갖는 것으로서 판독된다. Data may be stored in
메모리 셀들의 임계 전압들은 변조/복조 유닛(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
복조기(213)의 출력은 ECC 유닛(201) 내 디코더(215)로 전송된다. 디코더(215)는 어떠한 에러들이 존재하는지 데이터 비트들과 ECC 비트들로부터 결정한다. 작은 수의 에러들이 코드의 보정 능력 내에 존재한다면, 에러들이 보정된다. 많은 수의 에러들이 존재한다면, 이들이 코드의 감지 능력 내이면 이들은 식별될 수 있지만 보정되지 않을 것이다. 다수의 에러들이 코드의 감지 능력을 초과하면, 에러들이 감지되지 않을 수 있거나, 또는 잘못된 보정의 결과를 가져온다. 도 2의 예에 있어서, 제 2 비트 내 에러가 감지되고 보정된다. 이것은 입력 시퀀스와 동일한 디코더(215)로부터 출력(1001)을 제공한다. 메모리 시스템(200)의 디코딩은 하 드-입력 하드-출력 디코딩으로서 간주되는데 이는 디코더(215)가 입력 데이터 비트들과 ECC 비트들을 나타내는 데이터 비트들만을 수신하기 때문이며, 디코더(215)는 입력 데이터 비트들에 대응하는 데이터 비트들의 보정된 시퀀스를 출력하거나(또는 다수의 에러들이 너무 높다면 출력을 제공하는데 실패한다).The output of
도 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
도 4는 서로 다른 판독 프로세스를 갖는 (동일한 입력 데이터 비트들과 ECC 비트들을 이용하는) 메모리 시스템(200)의 것과 유사한 데이터 저장 프로세스를 이용하는 메모리 시스템(421)을 도시한다. 특히, 임계 전압이 특별한 값을 초과하는지 또는 미만인지를 단순히 결정하는 대신에, 메모리 시스템(421)은 도 3에 도시된 바와 같이 임계 전압들을 판독한다. 실제적인 임계 전압이 반드시 판독될 필요가 없다는 것이 이해될 것이다. 셀 동작의 다른 수단이 데이터(예를 들어, 전류 감지)를 저장하고 검색하기 위해 사용될 수 있다. 전압 감지는 단지 예로서 사용된다. 일반적으로, 임계 전압은 트랜지스터가 턴온되는 게이트 전압을 언급한다. 도 4는 전술한 예보다 상세한 정보를 제공하는 판독 발생을 도시한다. 이것은 도 2의 분석보다 높은 분석(및 프로그래밍을 위해 사용되는 것보다 상태들을 분석하는 분석)을 갖는 판독으로 간주될 수 있다. 전술한 예에 있어서, 에러들이 판독 데이터에서 발생한다. 본 명세서에서, 제 2 및 제 3 비트들에 대응하는 판독들은 에러이다. 제 2 및 제 3 비트들은 논리 "0"이었고 프로그래밍에 의해 셀에 VD보다 작은 임계 전압을 갖도록 저장되었지만 셀들은 VD보다 높은(VD=0) 0.05볼트 및 0.10 볼트의 임계 전압을 갖는 것으로 판독된다. 4 shows a
일련의 판독 동작들에 의해 도 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
확률 값들은 ECC 유닛(431) 내 디코더(429)로 전송된다(몇몇 경우들에 있어서, 로우 값들로부터 확률 값들을 획득하는 것은 디코더에서 수행되고 있는 것으로서 간주될 수 있다). 디코더(429)는 확률 값들에 대해 디코딩 동작들을 수행한다. 이러한 디코더는 소프트-입력 디코더로서 간주될 수 있다. 일반적으로, 소프트-입력은 디코드 될 데이터에 관련된 몇몇 품질 정보를 포함하는 입력을 언급한다. 소프트-입력으로서 제공된 추가적인 정보는 일반적으로 디코더가 보다 나은 결과를 획득하도록 허용한다. 디코더는 출력으로서 계산된 확률 값들을 제공하기 위해 소프트-입력을 이용하여 디코딩 계산들을 수행할 수 있다. 이것은 소프트-출력으로서 간주되며 이러한 디코더는 소프트-입력 소프트-출력(SISO) 디코더로서 간주된다. 그 다음, 이러한 출력은 디코딩을 반복하고 결과들을 개선하기 위해 SISO 디코더에 입력으로서 다시 사용될 수 있다. SISO 디코더는 다른 유닛으로 하드 출력을 제공하는 보다 큰 디코더의 부분을 형성할 수 있다. SISO 디코더들은 일반적으로 양호한 성능을 제공하며 몇몇 경우들에 있어서 하드-입력 하드-출력 디코딩에 의해 가능한 것보다 나은 성능을 제공할 수 있다. 특히, 오버헤드의 동일한 양을 위해(다수의 ECC 비트들), SISO 디코더는 보다 큰 에러 보정 능력을 제공할 수 있다. SISO 디코더를 효율적으로 사용하기 위해, 적절한 인코딩/디코딩 체계가 구현될 수 있으며 복조는 과도한 복잡함이 없고 메모리 어레이로부터 데이터를 판독하기 위한 과 도한 시간을 필요로 하지 않고 소프트-입력을 효율적으로 획득하기 위해 적용된다. The probability values are sent to the
일 실시예에 있어서, 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
도 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 (
도 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
전술한 상세한 설명은 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
확률은 다른 방법들로 표현될 수 있다. 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:
여기서 는 비트가 "1"인 확률이고, 는 비트가 "0"인 확률이다. LLR은 비록 다른 시스템들이 또한 사용될 수 있다고 하더라도 확률을 표현하기 편리한 방법이다. 메모리로부터 판독들로부터 확률을 획득하기 위해, 몇몇 변환 또는 복조가 일반적으로 수행된다. 이러한 복조를 수행하기 위한 하나의 편리한 방법은 임계 전압(또는 메모리 내 몇몇 측정된 파라미터)과 하나 이상의 비트들의 확률 값들 간의 관계를 표로 만드는 룩업 테이블을 사용하는 것이다. 판독 동작의 분석이 메모리 셀의 임계 전압 범위를 N 판독 상태들로 구분하는 경우, 셀은 R 비트들을 저장하고, 테이블은 확률이 각각의 판독 상태에 대해 각각의 비트를 위해 제공되도록 N×R 에트리들을 가질 수 있다. 이러한 방법에 있어서, 높은 분석 판독은 메모리내에 저장된 데이터에 관해 확률 정보를 제공할 수 있다. 이러한 로우 확률 데이터는 디코더로의 소프트-입력으로서 디코더에 제공될 수 있다.here Is the probability that the bit is "1", 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
몇몇 경우, 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
도 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의 인코딩 체계에 따라서 계산된 데이터 비트들과 패리티 비트들을 포함하는 비트들의 그룹으로서 도시된다. 신호는 일반적으로 패리티 비트들을 계산하기 위해 적절한 회로들을 갖는 인코더의 출력이다. 그 다음, 신호는 신호 데이터를 기록하기 위해 상태들로 메모리 셀들로 프로그램하기 위해 메모리 셀들로 적절한 전압들을 제공하는 변조기로 제공될 수 있다.
노이즈(103)는 본 발명의 예에서 2개의 데이터 비트들에 영향을 미치는 것으로 도시된다. 노이즈는 데이터 비트들로 제한되지 않으며 또한 패리티 비트들에 영향을 끼칠 수 있다. 노이즈는 특별한 셀들의 몇몇 물리적인 특성의 결과이거나 하나의 셀이 어레이내 다른 셀들에 관해 수행되는 동작들에 의해 영향을 미칠 때 메모리 내에서 발생하는 방해들의 결과일 수 있다. 본 발명의 예에서, 노이즈는 추가로 간주되며 따라서 메모리로부터의 데이터 판독은 신호 데이터 더하기 노이즈를 반영하며, 이것은 디코딩을 위한 입력 데이터가 된다. 그러나 노이즈는 판독 값에 영향을 미치는 포지티브 또는 네거티브를 가질 수 있다.
입력(105)은 메모리에 연결된 복조기로부터 획득된 로우 데이터이다. 예를 들어, 판독 동작은 높은 분석에 의해 수행되는 경우, 입력 데이터는 신호 또는 패리티 데이터의 비트가 1 또는 0 대신에 0.1로 표현되도록 이러한 형태로 발생될 수도 있다. 이것은 1을 나타내는 포지티브 값과 0을 나타내는 네거티브 값을 갖는 확률 값을 간주될 수 있으며, 표시된 상태가 올바른 확률을 나타내는 값의 크기이다. 입력(105)은 소프트-입력으로서 간주되는데 이는 입력(105)이 단순히 0 또는 1 값을 포함한다.
하드-입력 하드-출력 디코더에 대해, 입력(105)은 모든 포지티브 값들을 +1로 대체하고 모든 네거티브 값들을 -1로 대체함으로써 하드 입력(107)으로 변환된다. 소프트-입력 확률 값들을 표현하기 위해 1의 보수 논리를 이용하는 시스템에 있어서, 최상위 비트는 부호를 나타내며 변환의 수단으로서 사용될 수 있다. 하드-입력 하드-출력 디코더는 이러한 하드 입력을 이용하는 데이터를 보정하기 위해 시도할 수 있다. 그러나 패리티 계산들은 각각의 제 2 및 제 3 행렬들 내 에러와 각각의 제 2 및 제 3 열들 내 에러를 나타낸다. D22와 D33이 에러일 수 있거나 대안으로 D32와 D23이 에러일 수 있기 때문에 이러한 상황에서 유일한 솔루션이 존재하지 않는다. 하드-입력 하드-출력 디코더는 이들 솔루션중 어느 솔루션이 옳은지 판단할 수 없다. 따라서, 하드-입력 하드-출력 디코더는 이러한 상황에서 데이터를 보정할 수 없다. Hard-Input For a hard-output decoder,
제 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
도 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
도 13a는 행렬 확률 값들(132)로부터 제 1 계산된 확률 값들(133)을 획득하기 위해 로우 패리티 비트들(131)을 이용한 제 1 수평 반복을 도시한다. 이러한 경우에 있어서, LLR들이 계산된 확률 값들(133)을 획득하기 위해 가산된다. 본 발명의 예에서 두 LLR의 합이 보다 작은 LLR 값에 의해 곱해지는 두 LLR의 부호들과 (-1)의 곱에 의해 주어진다는 것을 알 수 있다.FIG. 13A shows a first horizontal iteration using
여기서, 는 LLR 추가(addition)를 나타낸다. 엔트리들에 이러한 LLR 추가를 적용함으로써 도시된 계산된 확률 값들을 제공한다. 예를 들어, 엔트리 D11에 대응하는 계산 확률은 0.12.5 -0.1이며, 엔트리 D12에 대응하는 계산된 확률은 1.52.5 -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, 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 2.5 -0.1 and the calculated probability corresponding to entry D 12 is 1.5 2.5 -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
도 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
도 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
도 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
반복적인 디코딩은 몇몇 사전결정된 조건이 충족될 때까지 반복들을 통한 사이클일 수 있다. 예를 들어, 사전결정된 조건은 확률 값들의 출력 세트내 각각의 확률 값이 몇몇 최소 확률 값을 초과할 수 있다. 대안으로, 사전결정된 조건은 최소 또는 평균 확률과 같은 하나 이상의 확률 값으로부터 유도된 몇몇 파라미터일 수 있다. 사전결정된 조건은 단순히 소정의 반복들이 수행되는 것일 수 있다. (후에 논의될) 몇몇 경우들에 있어서, 추가적인 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
일 실시예에 있어서, 디코더 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
비록 도 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)
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)
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)
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)
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 |
-
2007
- 2007-09-17 TW TW096134734A patent/TWI353521B/en not_active IP Right Cessation
- 2007-09-19 WO PCT/US2007/078819 patent/WO2008042593A1/en active Application Filing
- 2007-09-19 KR KR1020097008466A patent/KR20090086523A/en active Search and Examination
Cited By (4)
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 |