KR20150129325A - 솔리드 스테이트 메모리에 저장된 데이터 디코딩 - Google Patents
솔리드 스테이트 메모리에 저장된 데이터 디코딩 Download PDFInfo
- Publication number
- KR20150129325A KR20150129325A KR1020157029007A KR20157029007A KR20150129325A KR 20150129325 A KR20150129325 A KR 20150129325A KR 1020157029007 A KR1020157029007 A KR 1020157029007A KR 20157029007 A KR20157029007 A KR 20157029007A KR 20150129325 A KR20150129325 A KR 20150129325A
- Authority
- KR
- South Korea
- Prior art keywords
- memory location
- data
- probability values
- memory
- controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/14—Dummy cell management; Sense reference voltage generators
-
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/256—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with trellis coding, e.g. with convolutional codes and TCM
-
- 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/3723—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
-
- 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/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
-
- 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/45—Soft decoding, i.e. using symbol reliability information
-
- 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/63—Joint error correction and other techniques
- H03M13/6325—Error control coding in combination with demodulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0047—Decoding adapted to other signal detection operation
- H04L1/005—Iterative decoding, including iteration between signal detection and decoding operation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- 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/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Read Only Memory (AREA)
Abstract
솔리드 스테이트 메모리 어레이들에 저장된 데이터를 디코딩하는 실시형태들이 개시된다. 일 실시형태에서, 다수의 읽기 동작들이 셀간 간섭 (ICI) 을 고려하면서 수행된다. 로그 우도비 (LLR) 와 같은 연판정 정보가 알려진 데이터 및 그의 대응하는 다중 읽기 출력에 의해 결정된다. 연판정 정보가 검출기에 제공된다. 신뢰성이 향상되고 성능이 증가된다.
Description
본 개시는 컴퓨터 시스템을 위한 데이터 저장 시스템에 관한 것이다. 보다 구체적으로는, 본 개시는 솔리드 스테이트 메모리에 저장된 데이터를 디코딩하는 것에 관한 것이다.
데이터 저장 시스템에 저장된 데이터는 보통 신뢰성을 확보하기 위하여 인코딩된다. 인코딩된 데이터가 저장 매체로부터 취출될 때, 인코딩된 데이터로부터 원래 데이터를 획득하기 위하여 디코더가 사용된다. 연판정 (soft-decision) 디코더는 데이터 저장 시스템의 신뢰성을 향상시키고 데이터 에러의 수를 감소시킬 수 있다. 로그 우도 비 (log-likelihood ratio; LLR) 정보와 같은 연판정 정보의 생성은, 힘들고 시간 소모적이다. 따라서, 연판정 정보를 생성하기 위한 보다 효율적인 메카니즘을 제공하는 것이 바람직하다.
본 발명의 다양한 특징들을 구체화하는 시스템 및 방법은 이하의 도면들을 참조하여 이제 설명될 것이고, 여기서:
도 1a 는 본 발명의 일 실시형태에 따른 호스트 시스템 및 데이터 저장 시스템의 조합을 예시한다.
도 1b 는 본 발명의 또 다른 실시형태에 따른 호스트 시스템 및 데이터 저장 시스템의 조합을 예시한다.
도 2 는 본 발명의 일 실시형태에 따른 사용자 데이터의 인코더 및 디코더를 예시한다.
도 3 은 본 발명의 일 실시형태에 따른 데이터 검출기 및 디코더를 예시한다.
도 4 은 본 발명의 일 실시형태에 따른 연판정 정보를 생성하기 위한 표를 예시한다.
도 5 은 본 발명의 일 실시형태에 따른 연판정 정보를 생성하기 위한 트렐리스 다이어그램을 예시한다.
도 6a 내지 도 6d 는 본 발명의 일부 실시형태들에 따른 저장된 데이터를 읽는 프로세스들을 예시하는 흐름도이다.
도 7 은 본 발명의 또 다른 실시형태에 따른 저장된 데이터를 읽는 프로세스를 예시하는 흐름도이다.
도 1a 는 본 발명의 일 실시형태에 따른 호스트 시스템 및 데이터 저장 시스템의 조합을 예시한다.
도 1b 는 본 발명의 또 다른 실시형태에 따른 호스트 시스템 및 데이터 저장 시스템의 조합을 예시한다.
도 2 는 본 발명의 일 실시형태에 따른 사용자 데이터의 인코더 및 디코더를 예시한다.
도 3 은 본 발명의 일 실시형태에 따른 데이터 검출기 및 디코더를 예시한다.
도 4 은 본 발명의 일 실시형태에 따른 연판정 정보를 생성하기 위한 표를 예시한다.
도 5 은 본 발명의 일 실시형태에 따른 연판정 정보를 생성하기 위한 트렐리스 다이어그램을 예시한다.
도 6a 내지 도 6d 는 본 발명의 일부 실시형태들에 따른 저장된 데이터를 읽는 프로세스들을 예시하는 흐름도이다.
도 7 은 본 발명의 또 다른 실시형태에 따른 저장된 데이터를 읽는 프로세스를 예시하는 흐름도이다.
상세한 설명
특정 실시형태들이 설명되었지만, 이 실시형태들은 예로써만 제시되고, 보호의 범위를 제한하는 것으로 의도되지 않는다. 실제로, 본원에 기재된 신규한 방법 및 시스템은 다양한 다른 형태들에서 구체화될 수도 있다. 게다가, 본원에 기재된 방법 및 시스템의 형태의 다양한 생략, 치환 및 변경이 보호의 범위로부터 벗어남이 없이 이루어질 수도 있다.
개관
데이터 저장 시스템은 데이터를 저장하기 위한 솔리드 스테이트 플래시 메모리를 이용할 수 있다. 데이터 저장 시스템의 용량이 증가함에 따라, 플래시 메모리들의 밀도가 또한 증가된다. 플래시 메모리들의 크기 감소 및 밀도 증가에 따라, 셀간 간섭은 저장된 데이터의 신뢰성에 악영향을 줄 수 있고 데이터 에러의 수를 증가시킬 수 있다. 데이터 저장 시스템에 데이터를 저장하기 전에 데이터를 인코딩하기 위해 에러 정정 코드가 사용될 수 있다. 하지만, 솔리드 스테이트 메모리가 프로그램/삭제 사이클을 겪고 사용에 기인하여 열화됨에 따라, 메모리에 저장된 데이터를 올바르게 추출하는 것이 보다 어려워진다. 데이터 에러의 하나의 이유는 솔리드 스테이트 메모리 셀의 상이한 메모리 상태들 간의 마진 (margin) 의 감소이고, 저장된 데이터를 올바르게 취출하기 위하여 읽기를 위한 적절한 전압 임계치를 설정함에 있어서 부수되는 어려움이다. 저장된 데이터에 관한 연판정 정보 또는 연정보 (soft-information) 를 디코더에 제공하는 것은 데이터 저장 시스템의 신뢰성을 향상시키고 데이터 에러의 수를 감소시킬 수 있다. 예를 들어, P/E 사이클의 수 변화, 읽기의 수 변화, 및 동작 온도 변화에 기인하여, 솔리드 스테이트 메모리를 위해, 로그 우도 비 (LLR) 와 같은 연판정 정보를 생성하는 것은 힘이 든다.
본 발명의 일부 실시형태들은 다수의 읽기 동작 및 셀간 간섭 (ICI) 을 고려하는 것에 의해 솔리드 스테이트 메모리 어레이에 저장된 데이터를 디코딩하는 것에 관한 것이다. 일부 실시형태들에서, 연판정 정보, 이를테면 LLR 은 셀간 간섭을 갖는 솔리드 스테이트 메모리를 위해 생성된다. 연판정 정보는 메모리의 신뢰성을 표시할 수 있다. 연판정 정보는 그것을 더 증대시키는 검출기에 제공된다. 일 실시형태에서, 연판정 정보는 알려진 데이터 및 그의 대응하는 다중 읽기 출력을 이용하여 결정된다. 일부 실시형태들에서, 이것은 알려진 테스트 데이터를 메모리의 일부에 쓰고, 나중에, 알려진 데이터를 검출 및 디코딩하는 것에 의해 달성된다. 다른 실시형태들에서, 이것은 메모리의 일부에 저장된 이전에 알려지지 않은 데이터를 성공적으로 검출 및 디코딩하는 것에 의해 달성된다. 따라서, 신뢰성이 향상되고 성능이 증가된다.
시스템 개관
도 1a 는 본 발명의 일 실시형태에 따른 호스트 시스템 및 데이터 저장 시스템의 조합 (100A) 을 예시한다. 도시된 바처럼, 데이터 저장 시스템 (120A) (예를 들어, 솔리드 스테이트 드라이브) 는 제어기 (130) 및 비휘발성 솔리드 스테이트 메모리 어레이 (150) 를 포함한다. 솔리드 스테이트 메모리 어레이 (150) 는 플래시 집적 회로, 칼코게나이드 RAM (C-RAM), 상 변화 메모리 (PC-RAM 또는 PRAM), 프로그램가능 금속화 셀 RAM (PMC-RAM 또는 PMCm), 오보닉 통합 메모리 (OUM), 저항 RAM (RRAM), NAND 메모리 (예를 들어, 단일 레벨 셀 (SLC) 메모리, 멀티 레벨 셀 (MLC) 메모리, 또는 이들의 임의의 조합), NOR 메모리, EEPROM, 강유전 메모리 (FeRAM), 자기 저항 RAM (MRAM), 다른 이산 NVM (비휘발성 메모리) 칩, 또는 이들의 임의의 조합을 포함할 수도 있다. 일 실시형태에서, 메모리 어레이 (150) 는 2-비트 MLC NAND 메모리를 포함한다. 데이터 저장 시스템 (120A) 은 다른 타입의 스토리지를 더 포함할 수 있다.
제어기 (130) 는 호스트 시스템 (110) 의 저장 인터페이스 모듈 (112) (예를 들어, 디바이스 드라이버) 로부터 데이터 및/또는 저장 액세스 커맨드들을 수신하도록 구성될 수 있다. 저장 인터페이스 (112) 에 의해 통신되는 저장 액세스 커맨드들은 호스트 시스템 (110) 에 의해 이슈되는 쓰기 데이터 및 읽기 데이터 커맨드들을 포함할 수 있다. 읽기 및 쓰기 커맨드들은 데이터 저장 시스템 (120A) 에 액세스하는데 사용된 논리 어드레스 (예를 들어, 논리 블록 어드레스 또는 LBA) 를 명시할 수 있다. 제어기 (130) 는 솔리드 스테이트 메모리 어레이 (150) 에서 수신된 커맨드들을 실행할 수 있다.
데이터 저장 시스템 (120A) 은 호스트 시스템 (110) 에 의해 통신되는 데이터를 저장할 수 있다. 즉, 데이터 저장 시스템 (120A) 은 호스트 시스템 (110) 을 위한 메모리 스토리지로서 작용할 수 있다. 이 기능을 가능하게 하기 위하여, 제어기 (130) 는 논리 인터페이스를 구현할 수 있다. 논리 인터페이스는 사용자 데이터가 저장될 수 있는 논리 어드레스들 (예를 들어, 인접 어드레스들) 의 세트로서 데이터 저장 시스템의 메모리를 호스트 시스템 (110) 에 제시할 수 있다. 내부적으로, 제어기 (130) 는 솔리드 스테이트 메모리 어레이 (150) 및/또는 다른 저장 모듈들에서의 다양한 물리적 위치들 또는 어드레스들로 논리 어드레스들을 맵핑할 수 있다. 제어기 (130) 는, 솔리드 스테이트 메모리 어레이 (150) 에 데이터를 저장하고 이로부터 데이터를 취출하고, 데이터를 인코딩하고, 데이터를 검출 및 디코딩하고, 솔리드 스테이트 메모리 어레이로부터 취출된 데이터의 무결성을 결정하고, 필요한 경우, 취출된 데이터의 에러 정정을 수행하고, 데이터 저장 시스템 (120A) 과 호스트 시스템 (110) 사이의 데이터의 전송을 수행하도록 구성된 데이터 저장 및 에러 정정 모듈 (132) 을 포함한다.
도 1b 는 본 발명의 또 다른 실시형태에 따른 호스트 시스템 및 데이터 저장 시스템의 조합 (100B) 을 예시한다. 예시된 바처럼, 데이터 저장 시스템 (120B) (예를 들어, 하이브리드 디스크 드라이브) 는 제어기 (130), 솔리드 스테이트 메모리 어레이 (150) 및 자기 스토리지 (160) 를 포함하고, 이들은 자기 미디어 (164) 를 포함한다. 조합 (100B) 의 이들 및 다른 컴포넌트들이 상술되었다.
저장된 데이터의 디코딩
도 2 는 본 발명의 일 실시형태에 따른 인코더 및 디코더 (200) 를 예시한다. 일 실시형태에서, 인코딩 및 디코딩은 제어기 (130) 에 의해, 이를테면 예를 들어, 데이터 저장 및 에러 정정 모듈 (132) 에 의해 수행된다. 호스트 시스템 (110) 으로부터 수신된 사용자 데이터는 인코더 (210) 에 의해 인코딩된다. 일 실시형태에서, 인코더 (210) 는 인코딩을 위한 저밀도 패리티 체크 (LDPC) 코드를 사용한다. 블록 (212) 에서, 인코딩된 데이터는 메모리 어레이 (150) 에 저장된다. 인코딩된 데이터는 코드워드로서 지칭될 수 있다. 또한, 채널을 통해 데이터를 통신하는 아날로지 (analogy) 을 사용하여, 메모리 어레이는 통신 채널로 생각될 수 있고 데이터를 저장하는 것은 채널을 통해 데이터를 송신하는 것으로 생각될 수 있다. 메모리 어레이 채널은 다양한 파라미터들, 이를테면 셀간 간섭 (inter-cell interference), 페이지간 간섭 (inter-page interference), P/E 사이클 수, 웨어 (wear), 동작 온도 등에 의해 특성화된다. 이들 파라미터들의 하나 이상은 노이즈 (또는 데이터 에러) 를 저장된 데이터내에 도입한다.
저장된 데이터는 블록 220 에서 검출 및 디코딩된다. 일 실시형태에서, 블록 220 은 LDPC 디코더이다. 메모리 어레이 (150) (또는 코드워드) 로부터 취출된 데이터는 검출기 (222) 에서 검출된다. 메모리 어레이 (150) 채널이 메모리에 저장될 코드 워드를 채널에 의해 사용되는 포맷으로 변형할 수 있으므로, 검출기 (222) 는 메모리 어레이 채널로부터 취출된 데이터를 검출하고 (즉, 채널 출력을 검출하고) 그 취출된 데이터를 다시, 메모리 어레이에 저장을 위해 코드워드가 제공된 때 사용된 동일한 포맷으로 변환하는데 사용된다. 검출기 (222) 는 채널 추정기 (226) 에 의해 도출된 정보를 사용한다. 채널 추정기 (226) 는 통계 정보를 생성할 수 있다. 검출기 (222) 는 LLR 과 같은 연판정 정보를 생성하기 위해 채널 추정기 (226) 로부터 정보를 사용할 수 있다. 연판정 정보는 코드워드를 디코딩하고 사용자 데이터를 획득하기 위해 디코더 (224) 에 의해 사용된다.
도 3 은 본 발명의 일 실시형태에 따른 데이터 검출기 및 디코더 (300) 를 예시한다. 일 실시형태에서, 데이터 검출 및 디코딩은 제어기 (130) 에 의해, 예를 들어, 데이터 저장 및 에러 정정 모듈 (132) 에 의해 수행된다. 데이터 검출기 및 디코더 (300) 는 메모리 어레이 (150) 로부터 취출된 인코딩된 데이터를 수신한다. 검출기 (310) 는 통계 모듈 (316) 및 확률 모듈 (314) 에 의해 생성된 LLR 와 같은 연판정 정보를 사용한다. 연판정 정보는, LDPC 디코더일 수 있는 디코더 (312) 에 제공된다. 디코더 (312) 는 검출된 인코딩된 데이터 (또는 코드워드) 를 디코딩한다. 통계 모듈 (316) 은 디코딩된 데이터 및/또는 다른 데이터의 분석에 기초하여 확률 정보를 생성한다. 더 후술되는 바처럼, 일 실시형태에서, 통계 모듈 (316) 은 다중 읽기 스킴에 획득된 값들에서 비트 패턴들의 발생을 분석하여 확률 정보를 생성하고, 차례로 확률 모듈 (314) 은 통계 모듈 (316) 의 출력에 기초하여 연판정 정보를 생성한다.
연판정 정보 생성 - 통계 정보로부터 확률 정보 생성
도 4 은 본 발명의 일 실시형태에 따른 연판정 정보를 생성하기 위한 표 (400) 를 예시한다. 일 실시형태에서, 표 (400) 는 제어기 (130) 에 의해, 이를테면 예를 들어, 데이터 저장 및 에러 정정 모듈 (132) 에 의해 생성된다. 일 실시형태에서, 표 (400) 는, 실시형태들에 따라 메모리 어레이의 상이한 부분들을 참조할 수도 있는, 참조 메모리 장소에 대해 변화하는 읽기 전압들로 다수의 읽기를 수행하는 것에 의해 통계 모듈 (316) 에 의해 생성된다. 예를 들어, 메모리 어레이는, 페이지들로 더 분할되는, 블록들로 분할될 수 있다. 일 실시형태에서, 참조 메모리 장소 (reference memory location) 는, 알려진 데이터가 저장되는 메모리 페이지이다. 다른 실시형태들에서, 참조 메모리 장소는 셀, 부분 페이지, 부분 페이지들의 세트, 페이지들의 세트, 블록, 블록들의 세트, 및/또는 알려진 데이터가 저장되는 메모리 어레이 장소들의 임의의 다른 적합한 그룹핑을 지칭할 수도 있다. 일 실시형태에서, 알려진 데이터는 메모리 페이지에 저장된 트레이닝 데이터 (training data) 에 대응한다. 또 다른 실시형태에서, 알려진 데이터는 성공적으로 디코딩된 데이터에 대응한다. 예를 들어, 데이터 저장 시스템 (120A 또는 120B) 은 메모리 페이지들의 세트를 읽을 수 있고, 알려진 데이터는 세트에서 페이지로부터 성공적으로 읽혀진 데이터에 대응할 수 있다. 또 다른 실시형태에서, 트레이닝 데이터 및 성공적으로 디코딩된 데이터의 조합이 알려진 데이터로서 사용될 수 있다.
일 예로서, 통계 모듈 (316) 에 의해 분석된 메모리 장소는, 성공적으로 디코딩된 페이지 또는 알려진 비트 값들을 갖는 참조 페이지일 수 있다. 페이지의 크기에 따라, 약 512개, 1,024개, 2,048개 또는 더 많은 메모리 셀들이 있을 수 있으며, 각 셀은, 그의 원래 알려진 값에 더하여, 다수의 읽기의 각각에 대해 하나씩, 다수의 값들과 연관된다. 일 실시형태에서, 이들 값들은 비트들에 대응할 수도 있고, 다른 실시형태들에서 그 값들은 2개 이상의 비트들에 대응할 수도 있다. 이것은 아래 예의 표 (표 1) 에 예시되어 있다.
도 4로 돌아가면, 표 (400) 의 열 1에 있는 범례 (legend) 는, 메모리 셀 및 그의 이웃 셀들과 같은 메모리 어레이 (150) 장소의 이웃에 대응한다. 예를 들어, 메모리 어레이 장소 Xi (예를 들어, 셀) 은 바로 이웃들이 Xi-1 및 Xi+1 일 수 있다. 예를 들어, 위의 표에서, 셀들 0-2 에서의 볼드체의 비트들은 터플 (tuple) {Xi-1, Xi, Xi+1} 로 고려될 수 있으며, Xi 는 셀 1에 대응한다. 표시 L 은, 이 경우에 대상 셀 (Xi) 에 대해 이웃 셀들이 갖는 효과에 초점이 맞춰진 채널 파라미터들에 관한 정보를 표시한다. 일 실시형태에서, 메모리 어레이 장소는, 0 또는 1 중 하나의 값들을 취하는, 2진 데이터의 단일 비트를 저장하는 셀이다. 따라서, 이웃 메모리 장소들의 시퀀스 {Xi-1, Xi, Xi+1} (또는 X, L) 를 위한 상이한 비트 값들 또는 패턴들의 8개 (또는 23) 조합들이 있을 수 있다. 이들 상이한 조합들은 표 (400) 의 열 1에 반영되어 있다. (값들 “000” 을 갖는) 위의 셀들 0-2 은 표 (400) 의 셀 A-1 에 반영된 조합의 하나의 사례이다.
메모리 장소 Xi 는 다수회 읽혀질 수 있다. 일 실시형태에서, 메모리 장소는 솔리드 스테이트 메모리를 읽기 위한 다수의 전압 임계치들에서 3회 읽혀질 수 있다. 3번의 읽기에 대한 임계치들은 상이하거나, 동일할 수 있거나, 또는 하나의 임계치가 3개의 읽기 중 2개에 사용될 수 있고 또 다른 하나의 임계치가 남은 읽기 동작에 사용될 수 있다. 다수의 읽기 동안 획득된 값들의 총계 계산이 {Xi-1, Xi, Xi+1} 에 저장된 다양한 비트 패턴들에 대해 표 (400) 의 열 3 내지 10 에 보여져 있다. 열 3 내지 10 에 있는 각각의 박스는 다수의 읽기로부터 획득된 값들 내의 특정 비트 패턴의 발생 수의 계산을 나타낸다. 예를 들어, 표 (400) 의 행 A, 열 4 에 있는 값 “1” 은, 다수의 읽기들로부터 반환된 값들 중에서, 중간 비트 (Xi) 의 3개 읽기들에 의한 이웃 비트들의 패턴 “000” 에 대해, (예를 들어, 3개 읽기 임계치들을 사용하여) 제 1, 제 2 및 제 3 읽기에 대해 반환된 값들 0, 0, 및 1 의 하나의 발생이 있었다는 것을 표시한다. 패턴 “000” 에 의해 반영된 바처럼, 중간 메모리 장소 (또는 Xi) 는 0 의 값을 저장한다. 이것은 위 예의 표에서 셀 0-2 에 대응하고, 셀 1의 다중 읽기 읽기 값은 3개 읽기들에 대해 각각 0, 0, 1 이다. 즉, 표 (400) 의 행 A, 열 4 에 있는 값 “1” 은, 읽혀진 메모리 페이지에 있는 수백 또는 수천 비트들 중에서, 이 특정 패턴이 단 한번, 셀 1에서, 나타났음을 표시한다. 일 실시형태에서, 열 3 내지 10 에 있는 비트들은 제 3, 제 2, 및 제 1 읽기를 각각 나타내도록 또는 임의의 다른 적합한 순서로 순서화될 수 있다.
표 (400) 의 열 2 는 메모리 장소 시퀀스 {Xi-1, Xi, Xi+1} 에 저장된 열 1에 있는 특정 비트 패턴의 알려진 데이터에서의 전체 발생 수에 대응한다. 예를 들어, 표 (400) 의 행 A, 열 2에 있는 값 “2” 는 이웃 비트들의 패턴 “000” 이 알려진 데이터에서 2회 발생한다는 것을 표시한다. 또 다른 예로서, 표 (400) 의 행 F, 열 2에 있는 값 “9” 는 이웃 비트들의 패턴 “101” 이 알려진 데이터에서 9회 발생한다는 것을 표시한다.
일 실시형태에서, 표 (400) 에 있는 데이터는 연판정 정보를 생성하기 위한 확률 정보를 생성하는데 사용된다. Li = {Xi-1, Xi+1} 에 이웃하는 메모리 장소 Xi 의 다중 읽기 출력 Yi 의 확률은 다음에 따라 결정된다:
식중 #(Yi, Xi, Li) 는 비트들 (Xi, Li) 에 저장된 비트들의 전체 발생 수이며 대응하는 다중 읽기 값은 (이를테면, 열 3 - 10 에 표시된 바처럼) Yi 이고, #(Xi, Li) 는 (열 2에 표시된 바처럼) 패턴 (Xi, Li) 의 전체 발생수이다. 예를 들어, 이웃 비트들 {Xi-1, Xi, Xi+1} 의 저장된 데이터 패턴이 “000” 임을 고려하면, “001” 인 메모리 Xi 장소의 다중 읽기 출력 Y 의 확률은 다음과 같이 결정될 수 있다. 표 (400) 의 행 A, 열 4 는 메모리 장소 Xi 의 3개 읽기들에 대해 시퀀스 “001” 에 대응한다. 표에서 값 “1” 에 의해 표시된 바처럼, 시퀀스 “001” 는 한번 발생했다. 행 A, 열 2에 있는 “2” 에 의해 표시되는 바처럼, 이웃 비트들의 패턴 “000” 은 메모리 페이지의 알려진 비트 시퀀스에서 2회 발생했다. 그러므로, P(Yi=001 | Xi=0, [Xi-1=0, Xi+1=0]) 는 1/2 (또는 0.5) 이다.
일부 실시형태들에서, 메모리 장소 Xi 의 바로 이웃이 아닌 이웃 메모리 장소들이 사용된다. 임의의 적합한 수의 이웃 메모리 장소들이 사용될 수 있다. 일부 실시형태들에서, 이웃하지 않는 장소들이 사용된다. 일부 실시형태들에서, 메모리 장소 Xi 에 대해 수행된 읽기들의 수는, 3보다 더 작거나 또는 3보다 더 큰 값과 같은 임의의 정수 값이다. 일부 실시형태들에서, 동일한 읽기 임계치가 모든 읽기 동작들에 대해 사용되거나, 또는 동일한 전압 임계치가 다수의 읽기 동작들에 대해 사용되는 한편, 하나 이상의 상이한 전압 임계치들이 다른 읽기 동작들에 대해 사용된다
소프트-결정 정보 생성 - 트렐리스 기반 알고리즘을 사용하여 확률 정보로부터 연판정 정보 생성
일 실시형태에서, 확률 값들이 통계 모듈 (316) 로부터 생성되고 나면, 확률 모듈 (314) 은 디코딩에 사용된 연판정 정보 (예를 들어, LLR) 를 계산한다. 도 5 은 본 발명의 일 실시형태에 따른 연판정 정보를 생성하기 위한 트렐리스 다이어그램 (500) 을 예시한다. 트렐리스 (500) 는 제어기 (130) 에 의해, 이를테면 예를 들어, 데이터 저장 및 에러 정정 모듈 (132) 에 의해 생성될 수 있다. 일 실시형태에서, 트렐리스 (500) 는 검출기 (310) 에 의해 사용된다. 트렐리스 (500) 는 연출력 비터비 알고리즘 (SOVA), BCJR 알고리즘 등을 사용하여 연판정 정보를 도출하는데 사용될 수 있다.
일 실시형태에서, 트렐리스 (500) 는 메모리 페이지와 같은 메모리 장소에 저장된 값들의 가장 가능성 있는 시퀀스에 대응하는 가장 가능성 있는 경로 (path) 를 찾는데 사용될 수 있다. 도 5에 예시된 바처럼, 상태 (510) 는 시간 k 에서의 (Xi, Li) (또는 {Xi-1, Xi, Xi+1}) 에 저장된 비트들에 대응하고 상태 (530) 는 시간 k+1 에서의 (Xi+1, Li+1) (또는 {Xi, Xi+1, Xi+2}) 에 저장된 비트들에 대응한다. 다음 비트 (또는 데이터 값) 이 메모리로부터 읽혀질 때 천이 (520) 는 상태 (510) 로부터 상태 (520) 로 이루어진 천이에 대응한다. 예를 들어, 데이터 저장 시스템 (120A 또는 120B) 이 개개의 데이터 비트들을 저장하는 다수의 메모리 장소들을 포함하는 메모리 페이지를 읽는다고 가정한다. 메모리 페이지는 데이터가 검출되고 디코딩될 타겟 페이지 또는 알려진 데이터를 저장하는 참조 페이지일 수 있다. 데이터 저장 시스템은 개개의 메모리 장소들에 저장된 데이터에 대응하는 비트 시퀀스 b0, b1, b2, ..., bM-1 을 읽는다. 다음으로, 이 로 비트 시퀀스 (raw bit sequence) 는, 예를 들어, 검출기 (310) 에 의해 검출되고, 검출기는, 메모리 페이지에 저장된 사용자 데이터로 연판정 정보를 변환할 수 있는 디코더 (312) 에 의해 사용되는 연판정 정보로 비트 시퀀스를 변환할 수 있다. 통계 모듈 (316) 에 의해 생성된 확률 정보를 사용하여, 검출기 (310) 는 읽기 에러들과 같은 하나 이상의 메모리 에러들의 확률을 최소화하는 경로를 찾을 수 있다.
가령, 정해진 시간 k에서, 메모리 셀과 같은 메모리 장소는 3회 읽혀지고, 시퀀스 “111” 가 읽기 동작들에 의해 반환된다고 가정한다. 즉, 제 1, 제 2 및 제 3 읽기 동작들은 메모리 장소에 저장된 값으로서 값 “1” 을 반환한다. 트렐리스 (500) 는, 시간 k 및 k+1 에서의 참조 메모리 장소 (Xi) 및 그의 이웃에 대응하는 비트 시퀀스들 {Xi-1, Xi, Xi+1} 및 {Xi, Xi+1, Xi+2} 를 찾는데 사용될 수 있다. 그룹들 (510 및 530) 로부터의 시작 및 종료 상태들은, 읽기 에러의 확률이 감소 또는 최소화되도록 결정될 수 있다. 시작 상태들 (510) 에는 초기 값들, 그리고 아래 도입되는 순방향 및 역방향 확률들 α 및 β 에 기초하여 확률이 할당된다. 일 실시형태에서, 초기에 (예를 들어, 시간 0 에서) 모든 시작 상태들 (510) 에는 동일한 확률이 할당될 수 있다. 시간 k 에서, 최고 확률을 갖는 시작 상태는 비트 패턴 “100” 과 연관된 상태 512 라고 가정한다. (시간 k+1 에서의) 다음 상태는 최고 확률을 갖는 경로를 따르는 것에 의해 결정될 수 있다. 표 (400) 을 참조하면, 열 10 은 메모리 셀 Xi 의 “111” 다중 읽기 시퀀스에 대한 정보에 대응한다. 최대 확률은 행 C, 열 10과 연관된 3/8 이고 (즉, 행 C, 열 10은 “3” 을 저장하고, 행 C, 열 2는 “8” 을 저장하고), 이는 이웃 메모리 장소들 {Xi, Xi+1, Xi+2} 에 저장된 비트 패턴 “010” 에 대응한다. 따라서, 천이 (522) 와 연관된 확률이 3/8 일 때, 다음 상태는 “010” 이거나 또는 상태 532 이다. 예시된 실시형태에서, 새로운 비트 (Xi+2) 가 비트 시퀀스의 가장 좌측에 첨부되는 것에 유의한다. 또 다른 실시형태에서, 새로운 비트가, 중간 등에서 가장 우측에 첨부될 수 있다.
일 실시형태에서, 트렐리스 (500) 는 M 셀 메모리 페이지의 메모리 셀들 X0, X1, X2, ..., XM-1 에 대해 생성될 수 있다. 그러한 경우에, 트렐리스 (500) 는 상태들의 M+1 그룹들 및 상태들의 그룹들 사이에 M 천이들을 가질 수 있다. 각각의 메모리 셀 Xi 은 다중 읽기 값들을 산출하도록 다수회 읽혀질 수 있다. 표 (400) 에 있는 정보를 사용하여 천이 (530) 에 가중치들이 할당된다. 예를 들어, 위에 설명된 바처럼, 상태들 (512 및 532) 간의 천이 (522) 에 가중치 3/8 이 할당된다. 또 다른 예에서, 가중치에 의해 스케일링된 0 과 1 사이의 값이 상태들 (512 및 532) 간의 천이 (522) 에 할당된다.
일 실시형태에서, BCJR 알고리즘이 LLR과 같은 연판정 정보를 도출하는데 사용될 수 있다. BCJR 알고리즘은 표 (400) 및 트렐리스 (500) 에 있는 정보를 사용한다. 시간 ‘t’ 및 s’ 에서의 트렐리스의 상태가 시간 ‘t+1,’ 에서의 트렐리스 상태라고 하자, 여기서 s’ 는 천이에 의해 s 에 연결된다. γ t (s, s’) 는 천이 (520) 에 할당된 브랜치 메트릭 또는 가중치를 표기하는 것으로 둔다. 표 (400) 을 경험적으로 사용하여 계산된 상태 쌍들 (s, s’) 에 대해 천이 비트를 고려하면, 브랜치 메트릭은 수신된 샘플 Y(t) 의 조건부 확률 (conditional probability) 일 수 있다. 예를 들어, 천이 (522) 에 할당된 브랜치 메트릭 또는 가중치는 3/8 이다. 순방향 확률 (forward probability) (α) 및 역방향 확률 (backward probability) (β) 은 다음과 같이 회귀적으로 계산될 수 있다.
LLR 는 다음과 같이 계산될 수 있다:
일 실시형태에서, LLR 과 같은 연판정 정보는, 타겟 메모리 페이지와 같은 타겟 메모리 장소에 저장된 데이터를 디코딩하는 디코더에 대한 입력으로서 사용된다. 가령, LLR(Xk) 는 디코더 (312) 와 함께 사용될 수 있다. 연판정 정보는, 타겟 메모리 장소와 유사한 특성을 갖는 참조 메모리 장소에 저장된 알려진 데이터를 읽고 검출하는 것에 의해 생성된다. 예를 들어, 동일한 메모리 블록에 있는 메모리 페이지들은, 이들 페이지들이 동일 또는 유사한 수의 P/E 사이클들, 웨어, 셀간 간섭, 페이지간 간섭, 동작 또는 주위 온도 등을 경험한 바처럼 유사한 특성을 갖기 쉽다. 또 다른 예에서, (이웃 페이지들일 수도 있거나, 또는 이웃 페이지들이 아닐 수도 있는) 제 1 및 제 2 페이지 내에 동일한 위치를 갖는 메모리 장소들은 유사한 특성들을 갖기 쉽다.
연판정 정보 생성 및 애플리케이션 프로세스
도 6a 내지 도 6d 는 본 발명의 일부 실시형태들에 따른 저장된 데이터를 읽는 프로세스들을 예시하는 흐름도이다. 예시된 프로세스들은 제어기 (130) 및/또는 데이터 저장 및 에러 정정 모듈 (132) 에 의해 실행될 수 있다. 도 6a 는, 블록 602 에서, 메모리 어레이 (150) 에 있는 알려진 트레이닝 데이터를 저장하기 위한 프로세스 600A 를 예시하는 흐름도이다. 알려진 트레이닝 데이터는 하나 이상의 메모리 장소들에 저장될 수 있다. 예를 들어, 알려진 트레이닝 데이터는 메모리 어레이 (150) 에 있는 매 블록에 대한 하나 이상의 페이지들에 저장될 수 있다. 또 다른 예로서, 알려진 트레이닝 데이터는 매 N 블록들로부터 선택된 하나 이상의 페이지들에 저장될 수 있고, 여기서 N 은 정수이다. 가령, 알려진 트레이닝 데이터는 3개 이웃 블록들로부터 선택된 페이지에 저장될수 있다.
도 6b 는 프로세스 600A 에 따라 저장된 알려진 트레이닝 데이터를 사용하여 또는 성공적으로 디코딩된 데이터를 사용하여 저장된 데이터를 읽기 위한 프로세스 600B 를 예시하는 흐름도이다. 일 실시형태에서, 프로세스 600B 는 타겟 메모리 장소에 저장된 데이터를 검출 및 디코딩한다. 블록 604 에서, 프로세스 600B 는 참조 메모리 장소에 대해 복수의 읽기 동작들을 수행한다. 참조 메모리 장소는 (프로세스 600A 에 따라 저장될 수 있는) 알려진 트레이닝 데이터를 저장할 수 있다. 일 실시형태에서, 참조 메모리 장소는 메모리 페이지일 수 있다. 또 다른 실시형태에서, 참조 메모리 장소는 부분 페이지, 페이지, 페이지들의 수, 블록, 블록들의 수 등 또는 이들의 임의의 조합일 수 있다. 프로세스 600B 는 참조 메모리 장소에 대해 다수의 읽기 동작들을 수행함으로써, 메모리 장소에 저장된 복수의 데이터 패턴들을 획득한다. 예를 들어, 프로세스 600B 는 참조 메모리 페이지의 메모리 셀들 X0 내지 XM-1 에 대한 다중 읽기 값들을 획득한다. 참조 데이터는 알려져 있기 때문에, 프로세스 600B 는 표 (400) 와 유사한 표를 구성할 수 있다. 프로세스 600B 는 블록 606 으로 천이하고, 여기서 프로세스는 알려진 트레이닝 데이터 및 데이터 패턴들에 기초하여 확률 값을 할당한다. 일 실시형태에서, 프로세스 600B 는 트렐리스 (500) 와 유사한 트렐리스를 생성하고 가중치를 트렐리스에 할당한다. 가중치들은 표로부터의 확률 값들로부터 결정된다. 트렐리스를 이용하여, 프로세스 600B 는 LLR 과 같은 연판정 정보를 결정할 수 있다.
프로세스 600B 는 블록 608 으로 천이하고, 여기서 프로세스는 타겟 메모리 장소에 대해 하나 이상의 읽기 동작들을 수행한다. 일 실시형태에서, 블록들 604 및 606 에서의 동작들은 블록 608 에서 하나 이상의 읽기 동작들이 수행되기 전에 수행될 수 있다. 타겟 메모리 장소는 메모리 페이지일 수 있다. 또 다른 실시형태에서, 타겟 메모리 장소는 부분 페이지, 페이지, 페이지들의 수, 블록, 블록들의 수 등 또는 이들의 임의의 조합일 수 있다. 일 실시형태에서, 타겟 메모리 장소는, 참조 메모리 페이지의 것들과 유사한 특성들을 갖는 메모리 페이지일 수 있다. 일 실시형태에서, 프로세스 600B 는 블록 608 에서 단일 읽기 동작을 수행하고, 그 동작이 읽기 에러(들) 이 발생하는 원인인지 여부를 결정한다. 에러(들) 이 발생하지 않으면, 프로세스 600B 는 다수의 읽기들을 수행하지 않는다. 다른 한편, 하나 이상의 에러들이 발생하면, 프로세스 600B 는 타겟 메모리 장소에 대해 다수의 읽기 동작들을 수행한다. 예를 들어, 프로세스 600B 는 상이한 전압 임계치들을 사용하여 다수회 (예를 들어, 3회) 타겟 메모리 페이지에서 각각의 셀을 읽을 수 있다.
프로세스 600B 는 블록 610 으로 천이하고 여기서 그것은 블록 606 에서 할당된 확률 값들에 기초하여 저장된 데이터를 결정한다. 일 실시형태에서, 프로세스 600B 는 블록 606 에서 생생된 LLR 을 이용하여 저장된 데이터를 검출 및 디코딩한다. 프로세스 600B 는 블록 612 으로 천이하고, 여기서 그것은 타겟 메모리 장소에 저장된 사용자 데이터를 호스트 시스템 (110) 에 제공한다. 선택적으로, 블록 610 으로 천이하기 전에, 프로세스 600B 는 타겟 메모리 장소 읽기 동안 하나 이상의 읽기 에러(들) 가 발생했는지 여부를 결정할 수 있다. 읽기 에러(들) 에 대한 선택적인 검사는 타겟 메모리 장소가 다수회 읽혀지는 경우에 특히 적용가능할 수 있다. 읽기 에러(들) 에 직면하지 않았다면, 프로세스 600B 는 블록 612 으로 천이하고, 여기서 그것은 타겟 메모리 장소에 저장된 사용자 데이터를 호스트 시스템 (110) 에 반환한다. 프로세스 600B 는 타겟 메모리 장소 읽기 동안 하나 이상의 읽기 에러(들) 가 발생했다고 결정하면, 프로세스는 블록 610 으로 천이할 수 있다. 일부 실시형태들에서, 메모리 장소의 단일 읽기 및 다수의 읽기를 수행하는 것에 대응하는 연판정 정보를 생성하기 위한 표가 프로세스 600B 에 의해 생성 및 사용될 수 있다. 예를 들어, 표 (400) 와 유사한 여러 표들이 생성 및 이용될 수 있다.
도 6c 는 블록 612 의 동작 (즉, 타겟 메모리 장소에 저장된 데이터의 결정) 을 수행하기 위한 프로세스 600C 를 예시하는 흐름도이다. 블록 612A 에서, 프로세스 600C 는 이미 취출된 데이터에 검출을 재적용함으로써 저장된 데이터를 결정한다. 예를 들어, 저장된 데이터가 이미 블록 608 에서 읽혀졌고, 확률 값들에 기초한 검출 및/또는 디코딩이 그 데이터에 재적용될 수 있다. 다른 한편, 블록 612B 에서, 프로세스 600C 600D 는 타겟 메모리 장소에 저장된 데이터를 다시 읽을 수 있고 그 다시 읽혀진 데이터에 검출 및/또는 디코딩을 적용할 수 있다. 일 실시형태에서, 프로세스 600C 는, 그것이 타겟 메모리 장소를 다시 읽는 블록 612B 으로 천이하기 전에 블록 612A 에서 동작들을 수행하는 것을 시도한다.
도 6d 는 프로세스 600A 에 따라 알려진 트레이닝 데이터를 사용하여 또는 성공적으로 디코딩되었던 데이터를 사용하여 저장된 데이터를 읽기 위한 프로세스 600D 를 예시하는 흐름도이다. 일 실시형태에서, 프로세스 600D 는 메모리 페이지와 같은 타겟 메모리 장소에 저장된 데이터를 검출 및 디코딩한다. 블록 620 에서, 프로세스 600D 는 타겟 메모리 장소를 읽는다. 블록 622 에서, 프로세스 600D 는 타겟 메모리 장소 읽기 동안 하나 이상의 읽기 에러(들)이 발생했는지 여부를 결정한다. 읽기 에러(들) 에 직면하지 않았다면, 프로세스 600D 는 타겟 메모리 장소에 저장된 데이터를 성공적으로 검출 및 디코딩했다. 프로세스 600D 는 블록 632 으로 천이하고 여기서 취출된 데이터는 호스트 시스템 (110) 으로 반환된다.
프로세스 600D 가 블록 622 에서 하나 이상의 읽기 에러들에 직면하면, 프로세스는 블록들 624 및 626 으로 천이하고, 여기서 그것은 도 6b 의 블록들 604 및 608 에서 수행된 것들과 유사한 동작들을 수행한다. 다음으로, 프로세스 600D 는 블록 628 으로 천이하고, 여기서 프로세스는 타겟 메모리 장소에 대해 복수의 읽기 동작들을 수행한다. 일 실시형태에서, 프로세스 600D 는, 그 프로세스가 블록들 624 및 626 의 동작들을 수행하는 동안, 블록 628 의 동작들을 수행한다. 또 다른 실시형태에서, 프로세스 600D 는, 그 프로세스가 블록들 624 및 626 의 동작들을 수행하기 전에, 블록 628 의 동작들을 수행한다. 프로세스 600D 는 블록 630 으로 천이하고, 여기서 그것은 블록 626 에서 할당된 확률 값들 및 블록 628 에서 결정된 다중 읽기 값들에 기초하여 타겟 메모리 장소에 저장된 데이터를 결정한다. 프로세스는 블록 632 에서 호스트 시스템으로 취출된 데이터를 반환한다.
도 7 은 본 발명의 또 다른 실시형태에 따른 저장된 데이터를 읽는 프로세스 700 를 예시하는 흐름도이다. 예시된 프로세스는 제어기 (130) 및/또는 데이터 저장 및 에러 정정 모듈 (132) 에 의해 실행될 수 있다. 일 실시형태에서, 프로세스 700 는, 다수의 메모리 장소에 대한 읽기 커맨드를 수행하는 부분으로서, 메모리 페이지와 같은 메모리 장소에 저장된 데이터를 검출 및 디코딩한다. 메모리 장소들은, 메모리 어레이 (150) 에 무작위로 위치되거나 또는 연속적인 것과 같이 이웃할 수 있다.
블록 702 에서, 프로세스 700 는 메모리 페이지와 같은 제 1 메모리 장소에 대해 읽기 동작을 수행한다. 프로세스 700 는 블록 704 으로 천이하고 여기서 그것은 제 1 메모리 장소에 대한 다수의 읽기 동작들을 수행하고 복수의 데이터 패턴들을 결정한다. 이들 동작들은 상술된 바처럼 블록 604 에서 수행된 것들과 유사할 수 있다. 프로세스 700 는 블록 706 으로 천이하고 여기서 그것은 블록 704 에서 결정된 데이터 패턴들에 기초하여 확률 값들을 할당한다. 일 실시형태에서, 제 1 메모리 장소에 저장된 데이터는 블록 704 에서 성공적으로 검출 및 디코딩되었다. 블록 706 에서, 프로세스 700 는 데이터 패턴들에 기초하여 그리고 성공적으로 디코딩된 데이터 (또는 알려진 데이터) 에 기초하여 확률 값들을 할당할 수 있다. 블록 706 에서 수행된 동작들은 상술된 바처럼 블록 606 에서 수행된 것들과 유사할 수 있다.
프로세스 700 은 블록 708 으로 천이하고 여기서 그것은 블록 706 에서 할당된 확률 값들을 이용하여 이전에 결정된 확률 값들을 업데이트한다. 일 실시형태에서, 프로세스 700 는 다수의 메모리 장소들에 대해 읽기 동작들을 수행할 수 있고, 프로세스는, 그것이 저장된 데이터를 성공적으로 디코딩 및 검출할 때마다, 연판정 데이터 (예를 들면, LLR) 과 같은 확률 값들을 업데이트할 수 있다. 이런 식으로, 가장 최근의 확률 값들이, 현재 읽혀지고 있는 메모리 장소에 저장된 데이터를 검출 및/또는 디코딩하는데 사용된다. 또 다른 실시형태에서, 다수의 메모리 장소들을 성공적으로 검출 및 디코딩한 후와 같이 임의의 적합한 시간에, 프로세스 700 는 확률 값들을 업데이트한다.
프로세스 700 는 블록 710 으로 천이하고 여기서 그것은 제 2 메모리 장소를 읽는다. 일 실시형태에서, 제 2 메모리 장소는, 제 1 메모리 페이지의 이웃인 제 2 메모리 페이지이다. 또 다른 실시형태에서, 제 2 메모리 장소는 메모리 어레이 (150) 에 있는 임의의 장소이다. 제 2 메모리 장소는 업데이트된 확률 값들을 이용하여 검출 및 디코딩된다. 확률 값들은, LLR 과 같은 연판정 데이터일 수 있다.
일 실시형태에서, 프로세스 700 는 제 1 메모리 장소에 저장된 성공적으로 디코딩 및/또는 검출된 데이터를 알려진 데이터로서 이용할 수 있다. 이런 식으로, 프로세스는 메모리 어레이 (150) 에 저장된 알려진 트레이닝 데이터를 사용하거나 또는 그러한 데이터로부터 도출된 정보에 의거하지 않는다. 또 다른 실시형태에서, 프로세스 700 는 성공적으로 디코딩 및/또는 검출된 데이터 대신에 또는 추가로 알려진 트레이닝 데이터를 이용한다.
결론
개시된 실시형태들은, 메모리 어레이에서, 추가 센서들, 아날로그-디지털 컨버터 등을 설치할 필요 없이 솔리드 스테이트 메모리 어레이 셀에 저장된 전하의 양을 추정하는데 사용될 수 있다. 그러한 추가 컴포넌트들을 추가하는 것은 비용의 증가 및 메모리 어레이의 용량의 감소와 연관된다. 메모리 셀들의 다수의 읽기 동작들을 수행하는 것과 읽기 동작들의 결과에 기초하여 확률을 계산하는 것은, 저장된 데이터의 검출 및 디코딩을 위한 연판정 정보를 제공할 수 있다. 따라서, 신뢰성이 향상되고 성능이 증가된다.
다른 변형들
당업자는, 일부 실시형태들에서, 다른 적합한 디코더들이 LDPC 디코더 대신에 및/또는 추가로 사용될 수 있다는 것을 인식할 것이다. 예를 들어, 터보 디코더, 해밍 디코더, 리드 솔로몬 디코더, BCH 디코더 등이 사용될 수 있다. LLR 외의 또는 추가로 연판정 정보가 생성되고 디코더에 제공될 수 있다. 마르코프 모델, 은닉 마르코프 모델, 비터비 알고리즘, SBGT BCJR, 로그 맵 BCJR, 맥스 로그 맵 (max-log-map) BCJR 등과 같은 임의의 적합한 방법이 연판정 정보를 도출하는데 사용될 수 있다. 셀간 간섭에 추가하여 또는 대안으로, 본 개시는 하기 특징들 중의 하나 이상에 대해 통계 및/또는 확률 값들을 고려하고 생성하는 디코딩에 적용된다: 페이지간 간섭, 블록간 간섭, P/E 카운트, 웨어 레벨링, 동작 온도 등. 사용자 데이터는 호스트 시스템에 의해 제공된 데이터, 데이터 저장 시스템에 의해 내부적으로 생성된 데이터 등 및/또는 이들의 조합을 포함할 수 있다. 도 6a 내지 도 6d 및 도 7에 예시된 프로세스들과 같은 개시된 프로세스들에서 취해진 실제 단계들은 도면들에 도시된 것들과 상이할 수도 있다. 추가적인 시스템 컴포넌트들이 이용될 수 있고, 개시된 시스템 컴포넌트들이 조합되거나 또는 생략될 수 있다. 실시형태에 따라, 상술된 단계들 중의 어떤 것이 제거될 수도 있거나, 다른 것이 추가될 수도 있다. 따라서 본 개시의 범위는 첨부된 청구항들에 대한 참조에 의해서만 정의되도록 의도된다.
특정 실시형태들이 설명되었지만, 이 실시형태들은 예로써만 제시되었고, 보호의 범위를 제한하는 것으로 의도되지 않는다. 실제로, 본원에 기재된 신규한 방법 및 시스템은 다양한 다른 형태들에서 구체화될 수도 있다. 게다가, 본원에 개시된 방법 및 시스템의 형태의 다양한 생략, 치환 및 변경이 보호의 사상으로부터 벗어남이 없이 이루어질 수도 있다. 첨부 청구항들 및 그들의 균등물들은 보호의 범위 및 사상 내에 속하는 그러한 형태 또는 변형들을 커버하도록 의도된다. 예를 들어, 본원에 개시된 시스템 및 방법들은, 하드 디스크 드라이브, 하이브리드 하드 드라이브 등에 적용될 수 있다. 또한, 다른 형태의 스토리지 (예를 들어, DRAM 또는 SRAM, 배터리 백업 휘발성 DRAM 또는 SRAM 디바이스, EPROM, EEPROM 메모리 등) 가 추가적으로 또는 대안적으로 사용될 수도 있다. 또 다른 예로서, 도면들에 예시된 다양한 컴포넌트들은, 프로세서, ASIC/FPGA 또는 전용 하드웨어 상에서 소프트웨어 및/또는 펌웨어로서 구현될 수도 있다. 또한, 상술된 특정 실시형태들의 특징 및 속성들은 추가 실시형태들을 형성하기 위하여 상이한 방식으로 조합될 수도 있으며, 이들 전부는 본 개시의 범위 내에 속한다. 본 개시는 특정의 바람직한 실시형태들 및 응용들을 제공하지만, 본원에 제시된 특징 및 이점들을 모두 제공하는 것은 아닌 실시형태들을 포함한, 당업자에게 분명한 다른 실시형태들도 본 개시의 범위 내에 속한다. 따라서 본 개시의 범위는 첨부된 청구항들에 대한 참조에 의해서만 정의되도록 의도된다.
Claims (30)
- 데이터 저장 시스템으로서,
데이터를 저장하도록 구성된 복수의 메모리 장소들을 포함하는 비휘발성 솔리드 스테이트 메모리 어레이; 및
제어기를 포함하고,
상기 제어기는
복수의 데이터 패턴들을 획득하기 위하여 참조 메모리 장소에 대해 복수의 읽기 동작들을 수행하고;
상기 데이터 패턴들에 그리고 상기 참조 메모리 장소에 있는 알려진 데이터에 적어도 부분적으로 기초하여 확률 값들을 할당하고;
할당된 상기 확률 값들에 기초하여 타겟 메모리 장소에 저장된 데이터를 결정하도록 구성되는, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한, 복수의 전압 임계치들을 이용하여 상기 참조 메모리 장소에 대해 상기 복수의 읽기 동작들을 수행하도록 구성되는, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한, 상기 데이터 패턴들의 발생 수에 기초하여 상기 확률 값들을 할당하도록 구성되는, 데이터 저장 시스템. - 제 3 항에 있어서,
상기 참조 메모리 장소는 비트 값들 X0 내지 XN-1 를 저장하고;
할당된 상기 확률 값들은, (1) Xi 와 연관되고 (2) Xi 및 Xi 에 이웃하는 하나 이상의 비트 값들을 포함하는 비트 시퀀스에 상관되는 상기 데이터 패턴들의 발생 수에 기초하여 결정된 확률 값들을 포함하는, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 할당된 상기 확률 값들에 BCJR 알고리즘 또는 SOVA 알고리즘을 적용함으로써 연정보를 도출하도록 구성되는, 데이터 저장 시스템. - 제 5 항에 있어서,
상기 제어기는 상기 타겟 메모리 장소에 저장된 데이터를 디코딩하기 위해 도출된 상기 연정보를 사용하도록 구성되는, 데이터 저장 시스템. - 제 5 항에 있어서,
상기 연정보는 로그 우도 비 (LLR) 를 포함하는, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 제어기는 또한, 상기 타겟 메모리 장소에 저장된 상기 데이터를 결정하기 위하여 상기 타겟 메모리 장소에 대해 복수의 읽기 동작들을 수행하도록 구성되는, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 알려진 데이터는 상기 타겟 메모리 장소를 읽기 전에 상기 참조 메모리 장소에 저장된 트레이닝 데이터를 포함하는, 데이터 저장 시스템. - 제 1 항에 있어서,
상기 타겟 메모리 장소는 상기 참조 메모리 장소의 특성들과 유사한 하나 이상의 특성들을 갖는, 데이터 저장 시스템. - 데이터를 저장하도록 구성된 복수의 메모리 장소들을 갖는 비휘발성 솔리드 스테이트 메모리 어레이 및 제어기를 포함하는 데이터 저장 시스템에서, 데이터를 읽는 방법으로서,
복수의 데이터 패턴들을 획득하기 위하여 참조 메모리 장소에 대해 복수의 읽기 동작들을 수행하는 단계;
상기 데이터 패턴들에 그리고 상기 참조 메모리 장소에 있는 알려진 데이터에 적어도 부분적으로 기초하여 확률 값들을 할당하는 단계;
타겟 메모리 장소를 읽는 단계; 및
할당된 상기 확률 값들에 기초하여 상기 타겟 메모리 장소에 저장된 데이터를 결정하는 단계를 포함하고,
상기 방법은 상기 제어기의 제어하에 수행되는, 데이터를 읽는 방법. - 제 11 항에 있어서,
상기 메모리 장소에 대해 상기 복수의 읽기 동작들을 수행하는 단계는 복수의 전압 임계치들을 사용하는 단계를 포함하는, 데이터를 읽는 방법. - 제 11 항에 있어서,
상기 데이터 패턴들의 발생 수에 기초하여 상기 확률 값들을 할당하는 단계를 더 포함하는, 데이터를 읽는 방법. - 제 13 항에 있어서,
상기 참조 메모리 장소는 비트 값들 X0 내지 XN-1 를 저장하고;
할당된 상기 확률 값들은, (1) Xi 와 연관되고 (2) Xi 및 Xi 에 이웃하는 하나 이상의 비트 값들을 포함하는 비트 시퀀스에 상관되는 상기 데이터 패턴들의 발생 수에 기초하여 결정된 확률 값들을 포함하는, 데이터를 읽는 방법. - 제 11 항에 있어서,
할당된 상기 확률 값들에 BCJR 알고리즘 또는 SOVA 알고리즘을 적용함으로써 연정보를 도출하는 단계를 더 포함하는, 데이터를 읽는 방법. - 제 15 항에 있어서,
도출된 상기 연정보를 사용하여 상기 타겟 메모리 장소들에 저장된 데이터를 디코딩하는 단계를 더 포함하는, 데이터를 읽는 방법. - 제 15 항에 있어서,
상기 연정보는 로그 우도 비 (LLR) 를 포함하는, 데이터를 읽는 방법. - 제 11 항에 있어서,
상기 타겟 메모리 장소에 저장된 데이터를 결정하기 위하여 상기 타겟 메모리 장소에 대해 복수의 읽기 동작들을 수행하는 단계를 더 포함하는, 데이터를 읽는 방법. - 제 11 항에 있어서,
상기 알려진 데이터는 상기 타겟 메모리 장소를 읽기 전에 상기 참조 메모리 장소에 저장된 트레이닝 데이터를 포함하는, 데이터를 읽는 방법. - 제 11 항에 있어서,
상기 타겟 메모리 장소는 상기 참조 메모리 장소의 특성들과 유사한 하나 이상의 특성들을 갖는, 데이터를 읽는 방법. - 데이터 저장 시스템으로서,
데이터를 저장하도록 구성된 복수의 메모리 장소들을 포함하는 비휘발성 솔리드 스테이트 메모리 어레이; 및
상기 비휘발성 메모리 어레이에 저장된 데이터에 대응하는 로그 우도 비를 결정하도록 구성된 제어기를 포함하고,
상기 제어기는 또한,
제 1 메모리 장소에 대해 복수의 읽기 동작들을 수행하는 것으로서, 복수의 읽기 데이터 값들이 복수의 데이터 패턴들을 형성하는, 상기 복수의 읽기 동작들을 수행하고;
상기 데이터 패턴들에 기초하여 확률 값들을 할당하고;
할당된 상기 확률 값들을 사용하여 복수의 이전에 결정된 확률 값들을 업데이트하고;
상기 업데이트된 확률 값들을 이용하여 제 2 메모리 장소를 읽도록 구성되는, 데이터 저장 시스템. - 제 21 항에 있어서,
상기 제 1 메모리 장소는 비트 값들 X1 내지 XN 를 저장하고;
할당된 상기 확률 값들은, (1) Xi 와 연관되고 (2) Xi 및 Xi 에 이웃하는 하나 이상의 비트 값들을 포함하는 비트 시퀀스에 상관되는 상기 데이터 패턴들의 발생 수에 기초하여 결정된 확률 값들을 포함하는, 데이터 저장 시스템. - 제 21 항에 있어서,
상기 제어기는 또한, 복수의 전압 임계치들을 이용하여 상기 제 1 메모리 장소에 대해 상기 복수의 읽기 동작들을 수행하도록 구성되는, 데이터 저장 시스템. - 제 21 항에 있어서,
상기 제 1 메모리 장소는 제 1 메모리 페이지를 포함하고, 제 2 메모리 장소는 상기 제 1 메모리 페이지에 이웃하는 제 2 메모리 페이지를 포함하는, 데이터 저장 시스템. - 제 21 항에 있어서,
상기 제어기는, 상기 비휘발성 솔리드 스테이트 메모리 어레이에 저장된 트레이닝 데이터로부터 도출된 정보를 사용하지 않고서 상기 제 2 메모리 장소를 읽도록 구성되는, 데이터 저장 시스템. - 데이터를 저장하도록 구성된 복수의 메모리 장소들을 갖는 비휘발성 솔리드 스테이트 메모리 어레이 및 제어기를 포함하는 데이터 저장 시스템에서, 데이터를 읽는 방법으로서,
제 1 메모리 장소에 대해 복수의 읽기 동작들을 수행하는 단계로서, 복수의 읽기 데이터 값들이 복수의 데이터 패턴들을 형성하는, 상기 복수의 읽기 동작들을 수행하는 단계;
상기 데이터 패턴들에 기초하여 확률 값들을 할당하는 단계;
할당된 상기 확률 값들을 사용하여 복수의 이전에 결정된 확률 값들을 업데이트하는 단계; 및
상기 업데이트된 확률 값들을 이용하여 제 2 메모리 장소를 읽는 단계를 포함하고,
상기 방법은 상기 제어기의 제어하에 수행되는, 데이터를 읽는 방법. - 제 26 항에 있어서,
상기 제 1 메모리 장소는 비트 값들 X1 내지 XN 를 저장하고;
할당된 상기 확률 값들은, (1) Xi 와 연관되고 (2) Xi 및 Xi 에 이웃하는 하나 이상의 비트 값들을 포함하는 비트 시퀀스에 상관되는 상기 데이터 패턴들의 발생 수에 기초하여 결정된 확률 값들을 포함하는, 데이터를 읽는 방법. - 제 26 항에 있어서,
복수의 전압 임계치들을 사용하여 상기 제 1 메모리 장소에 대해 상기 복수의 읽기 동작들을 수행하는 단계를 더 포함하는, 데이터를 읽는 방법. - 제 26 항에 있어서,
상기 제 1 메모리 장소는 제 1 메모리 페이지를 포함하고, 제 2 메모리 장소는 상기 제 1 메모리 페이지에 이웃하는 제 2 메모리 페이지를 포함하는, 데이터를 읽는 방법. - 제 26 항에 있어서,
상기 제 2 메모리 장소를 읽는 단계는 상기 비휘발성 솔리드 스테이트 메모리 어레이에 저장된 트레이닝 데이터로부터 도출된 정보를 사용하지 않고서 읽는 단계를 포함하는, 데이터를 읽는 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/829,904 US8990668B2 (en) | 2013-03-14 | 2013-03-14 | Decoding data stored in solid-state memory |
US13/829,904 | 2013-03-14 | ||
PCT/US2014/023800 WO2014159470A1 (en) | 2013-03-14 | 2014-03-11 | Decoding data stored in solid-state memory |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150129325A true KR20150129325A (ko) | 2015-11-19 |
Family
ID=51533814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157029007A KR20150129325A (ko) | 2013-03-14 | 2014-03-11 | 솔리드 스테이트 메모리에 저장된 데이터 디코딩 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8990668B2 (ko) |
EP (1) | EP2972886A4 (ko) |
KR (1) | KR20150129325A (ko) |
CN (1) | CN105164649B (ko) |
HK (1) | HK1218008A1 (ko) |
WO (1) | WO2014159470A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9355716B2 (en) * | 2013-01-17 | 2016-05-31 | University Of Hawaii | Memory channel detector systems and methods |
US9202580B2 (en) * | 2013-01-30 | 2015-12-01 | Globalfoundries Inc. | Level-estimation in multi-level cell memory |
US9201729B2 (en) * | 2013-10-21 | 2015-12-01 | Seagate Technology, Llc | Systems and methods for soft data utilization in a solid state memory system |
US9640270B2 (en) * | 2014-08-12 | 2017-05-02 | Sandisk Technologies Llc | System and method of using multiple read operations |
US10374633B2 (en) * | 2016-07-08 | 2019-08-06 | Maxlinear, Inc. | Method and system for LDPC decoding |
TWI670717B (zh) * | 2016-09-13 | 2019-09-01 | 東芝記憶體股份有限公司 | 記憶裝置及記憶體系統 |
CN107657984B (zh) * | 2017-08-16 | 2020-09-22 | 深圳市江波龙电子股份有限公司 | 闪存的纠错方法、装置、设备以及计算机可读存储介质 |
US11288009B2 (en) * | 2019-07-10 | 2022-03-29 | Micron Technology, Inc. | Read sample offset bit determination using most probably decoder logic in a memory sub-system |
EP4329202A4 (en) * | 2021-05-25 | 2024-10-16 | Samsung Electronics Co Ltd | SELF-CORRECTING MIN-SUM DECODER BASED ON NEURAL NETWORK AND ELECTRONIC DEVICE COMPRISING SAME |
CN117854581B (zh) * | 2024-03-07 | 2024-05-24 | 合肥康芯威存储技术有限公司 | 一种存储器测试系统及存储器测试方法 |
Family Cites Families (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6731700B1 (en) * | 2001-01-04 | 2004-05-04 | Comsys Communication & Signal Processing Ltd. | Soft decision output generator |
US6980602B1 (en) | 2001-01-31 | 2005-12-27 | Comsys Communication & Signal Processing Ltd. | Normalization of equalizer soft output for channels with varying noise power |
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US7237074B2 (en) * | 2003-06-13 | 2007-06-26 | Sandisk Corporation | Tracking cells for a memory system |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
CN103280239B (zh) * | 2006-05-12 | 2016-04-06 | 苹果公司 | 存储设备中的失真估计和消除 |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US7800943B2 (en) * | 2008-01-18 | 2010-09-21 | Qimonda Ag | Integrated circuit having a memory cell arrangement and method for reading a memory cell state using a plurality of partial readings |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
KR101425020B1 (ko) * | 2008-03-17 | 2014-08-04 | 삼성전자주식회사 | 메모리 장치 및 데이터 판정 방법 |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
WO2009143375A2 (en) | 2008-05-21 | 2009-11-26 | The Regents Of The University Of Calfornia | Lower-complexity layered belief propagation deconding ldpc codes |
WO2010002945A1 (en) * | 2008-07-01 | 2010-01-07 | Lsi Corporation | Methods and apparatus for intercell interference mitigation using modulation coding |
US8458536B2 (en) | 2008-07-17 | 2013-06-04 | Marvell World Trade Ltd. | Data recovery in solid state memory devices |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8418021B2 (en) | 2009-03-27 | 2013-04-09 | Mediatek Inc. | Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof |
JP2011065599A (ja) | 2009-09-18 | 2011-03-31 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
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 |
US8332728B2 (en) | 2010-04-02 | 2012-12-11 | Skymedi Corporation | Method and apparatus of generating a soft value for a memory device |
TWI436370B (zh) | 2010-09-17 | 2014-05-01 | Phison Electronics Corp | 記憶體儲存裝置、其記憶體控制器與產生對數似然比之方法 |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8627175B2 (en) * | 2010-09-27 | 2014-01-07 | Seagate Technology Llc | Opportunistic decoding in memory systems |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US8464137B2 (en) | 2010-12-03 | 2013-06-11 | International Business Machines Corporation | Probabilistic multi-tier error correction in not-and (NAND) flash memory |
US8427875B2 (en) * | 2010-12-07 | 2013-04-23 | Silicon Motion Inc. | Method and memory controller for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8549382B2 (en) | 2010-12-17 | 2013-10-01 | Intel Corporation | Storage drive with LDPC coding |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8693258B2 (en) | 2011-03-17 | 2014-04-08 | Densbits Technologies Ltd. | Obtaining soft information using a hard interface |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US9130596B2 (en) | 2011-06-29 | 2015-09-08 | Seagate Technology Llc | Multiuse data channel |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
WO2013147797A1 (en) * | 2012-03-29 | 2013-10-03 | Intel Corporation | Method and apparatus for treatment of state confidence data retrieved from a non-volatile memory array |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
-
2013
- 2013-03-14 US US13/829,904 patent/US8990668B2/en active Active
-
2014
- 2014-03-11 WO PCT/US2014/023800 patent/WO2014159470A1/en active Application Filing
- 2014-03-11 CN CN201480021715.3A patent/CN105164649B/zh not_active Expired - Fee Related
- 2014-03-11 KR KR1020157029007A patent/KR20150129325A/ko not_active Application Discontinuation
- 2014-03-11 EP EP14773380.2A patent/EP2972886A4/en not_active Withdrawn
-
2016
- 2016-05-24 HK HK16105885.9A patent/HK1218008A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
EP2972886A1 (en) | 2016-01-20 |
HK1218008A1 (zh) | 2017-01-27 |
CN105164649B (zh) | 2018-07-03 |
US20140281128A1 (en) | 2014-09-18 |
EP2972886A4 (en) | 2016-11-23 |
CN105164649A (zh) | 2015-12-16 |
WO2014159470A1 (en) | 2014-10-02 |
US8990668B2 (en) | 2015-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10437668B2 (en) | Memory controller, memory system, and method for controlling memory system | |
KR20150129325A (ko) | 솔리드 스테이트 메모리에 저장된 데이터 디코딩 | |
US9985651B2 (en) | Read threshold calibration for LDPC | |
US9007854B1 (en) | Method and system for optimized soft decoding in a data storage device | |
US9092350B1 (en) | Detection and handling of unbalanced errors in interleaved codewords | |
US10666295B1 (en) | Mitigation of error correction failure due to trapping sets | |
JP5620973B2 (ja) | アナログメモリセルにおける最適スレッシュホールドのサーチ | |
US9411679B2 (en) | Code modulation encoder and decoder, memory controller including them, and flash memory system | |
US9213602B1 (en) | Write mapping to mitigate hard errors via soft-decision decoding | |
US20160350179A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
GB2537484A (en) | Read level grouping for increased flash performance | |
US9250994B1 (en) | Non-binary low-density parity check (LDPC) decoding using trellis maximization | |
US10998920B1 (en) | Overcoming saturated syndrome condition in estimating number of readout errors | |
US20150317203A1 (en) | Code-Based Read Control for Data Storage Devices | |
US20180351577A1 (en) | Iteration-adaptive decoding for non-binary ldpc codes | |
CN112331244B (zh) | 广义低密度奇偶校验码的软输入软输出分量代码解码器 | |
US11874736B2 (en) | Calculating soft metrics depending on threshold voltages of memory cells in multiple neighbor word lines | |
CN116954984A (zh) | Crc终止时的准确ber报告 | |
KR102708739B1 (ko) | 저장 장치 및 그것의 동작 방법 | |
CN107301873B (zh) | 译码方法、存储器储存装置及存储器控制电路单元 | |
US11621048B2 (en) | Positioning read thresholds in a nonvolatile memory based on successful decoding | |
US20240311236A1 (en) | Efficient hard decoding of error correction code via extrinsic bit information | |
US10673465B2 (en) | Memory controller, memory system, and control method | |
US12119075B2 (en) | Efficient soft decoding of error correction code via extrinsic bit information | |
CN113496752B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |