KR20180009558A - 저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러 - Google Patents
저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러 Download PDFInfo
- Publication number
- KR20180009558A KR20180009558A KR1020160091397A KR20160091397A KR20180009558A KR 20180009558 A KR20180009558 A KR 20180009558A KR 1020160091397 A KR1020160091397 A KR 1020160091397A KR 20160091397 A KR20160091397 A KR 20160091397A KR 20180009558 A KR20180009558 A KR 20180009558A
- Authority
- KR
- South Korea
- Prior art keywords
- variable node
- strong error
- channel reception
- check
- messages
- Prior art date
Links
Images
Classifications
-
- 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
- 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/1068—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 in sector programmable memories, e.g. flash disk
-
- 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
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- 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/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- 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/3738—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct 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/63—Joint error correction and other techniques
- H03M13/6325—Error control coding in combination with demodulation
-
- 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/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
본 발명의 실시 예들에 따른 디코더는 경판정 정보 및 연판정 정보를 기초로, 복수의 채널 수신 값들을 생성하는 채널 매퍼, 복수의 체크 노드 메세지들 및 상기 복수의 채널 수신 값들을 이용해, 스트롱 에러(strong error)의 발생 여부를 판단하고, 판단 결과에 따라, 상기 복수의 채널 수신 값들을 보정하여, 복수의 보정된 채널 수신 값들을 산출하는 스트롱 에러 검출기, 상기 복수의 체크 노드 메세지들 및 상기 복수의 보정된 채널 수신 값들을 이용해, 복수의 변수 노드 메세지들을 생성하는 변수 노드 유닛 및 상기 복수의 변수 노드 메세지들을 이용해, 상기 복수의 체크 노드 메세지들을 생성하는 체크 노드 유닛을 더 포함하고, 상기 변수 노드 유닛은 복수의 변수 노드들을 포함하고, 상기 체크 노드 유닛은 복수의 체크 노드들을 포함한다.
Description
본 발명은 저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러에 관한 것이다.
반도체 메모리 분야에서 에러 정정 코드들에 기초한 코딩 및 디코딩 기술을 적용하여 잡음에 의하여 발생되는 에러를 정정한다. 에러 정정 코드들 중에서 확률 기반 반복 연산을 이용하는 에러 정정 코드인 저밀도 패리티 체크(LDPC; Low Density Parity Check) 코드가 주목받고 있다.
낸드 플래시 메모리 장치(NAND Flash Memory Device)에는 스트롱 에러(strong error)가 발생할 수 있다. 스트롱 에러란, 인접한 셀의 프로그램 상태(program state) 간에 간섭으로 인해 발생된 에러(error) 중 간섭의 정도가 커서, 디코더의 채널 LLR(Log-Likelihood Ratio) 절대값에 큰 값을 할당하도록 하는 에러를 지칭한다.
스트롱 에러는 LDPC 코드를 이용하는 디코더의 오류 정정 능력에 큰 열화를 일으킬 수 있고, 스트롱 에러의 비율이 높은 낸드 플래시 장치에서, LDPC 디코더는 정정 능력이 크게 감소할 수 있다.
본 발명이 이루고자 하는 기술적 과제는 오류 정정 능력이 개선된 저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러를 제공하는데 있다.
본 발명의 실시 예들에 따른 디코더는 경판정 정보 및 연판정 정보를 기초로, 복수의 채널 수신 값들을 생성하는 채널 매퍼, 복수의 체크 노드 메세지들 및 상기 복수의 채널 수신 값들을 이용해, 스트롱 에러(strong error)의 발생 여부를 판단하고, 판단 결과에 따라, 상기 복수의 채널 수신 값들을 보정하여, 복수의 보정된 채널 수신 값들을 산출하는 스트롱 에러 검출기, 상기 복수의 체크 노드 메세지들 및 상기 복수의 보정된 채널 수신 값들을 이용해, 복수의 변수 노드 메세지들을 생성하는 변수 노드 유닛 및 상기 복수의 변수 노드 메세지들을 이용해, 상기 복수의 체크 노드 메세지들을 생성하는 체크 노드 유닛을 더 포함하고, 상기 변수 노드 유닛은 복수의 변수 노드들을 포함하고, 상기 체크 노드 유닛은 복수의 체크 노드들을 포함한다.
본 발명의 실시 예들에 따른 메모리 컨트롤러는 CPU 및 디코더를 포함하고, 불휘발성 메모리에 접근하여 데이터를 프로그램하고, 상기 디코더는 경판정 정보 및 연판정 정보를 기초로, 복수의 채널 수신 값들을 생성하는 채널 매퍼 및 복수의 체크 노드 메세지들 및 상기 복수의 채널 수신 값들을 이용해, 스트롱 에러(strong error)의 발생 여부를 판단하고, 판단 결과에 따라, 상기 복수의 채널 수신 값들을 보정하여, 복수의 보정된 채널 수신 값들을 산출하는 스트롱 에러 검출기를 포함하고, 상기 CPU는 상기 스트롱 에러 검출기가 보정을 수행하는 제1 모드 및 상기 스트롱 에러 검출기가 보정을 수행하지 않는 제2 모드 중 어느 하나로 동작하도록 상기 스트롱 에러 검출기를 제어한다.
본 발명의 실시 예들에 따른 디코더 및 이를 포함하는 메모리 컨트롤러는 스트롱 에러(strong error)이 발생한 변수 노드의 채널 LLR(log likelihood ratio) 값을 보정함으로써, 오류 정정 능력을 향상시키고 신뢰성을 개선할 수 있다.
도 1은 본 발명의 실시 예들에 따른 메모리 시스템의 구성을 나타내는 블록도이다.
도 2는 본 발명의 실시 예들에 따른 복수의 채널을 구비하는 메모리 시스템의 구성을 나타내는 블록도이다.
도 3은 본 발명의 실시 예들에 따른 메모리 시스템의 채널 및 뱅크의 구성을 나타내는 블록도이다.
도 4는 본 발명의 실시 예들에 따른 메모리 장치(200)를 구성하는 하나의 플래시 메모리 칩(201-1)의 회로 구성을 나타내는 블록도이다.
도 5는 본 발명의 실시 예들에 따른 메모리 메모리 셀 어레이(10)의 개념적인 구성을 나타내는 블록도이다.
도 6은 본 발명의 실시 예들에 따른 메모리 시스템(1000)의 소프트웨어 구조를 보여주는 블록도이다.
도 7은 본 발명의 실시 예들에 따른 디코더(130)의 구성을 나타내는 블록도이다.
도 8은 본 발명의 실시 예들에 따른 변수 노드의 메시지 교환을 나타내는 도면이다.
도 9는 본 발명의 실시 예들에 따른 디코더의 동작 방법을 나타내는 순서도이다.
도 10은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 11는 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 메모리 카드 시스템의 일 구현 예를 나타내는 블록도이다.
도 12는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
도 2는 본 발명의 실시 예들에 따른 복수의 채널을 구비하는 메모리 시스템의 구성을 나타내는 블록도이다.
도 3은 본 발명의 실시 예들에 따른 메모리 시스템의 채널 및 뱅크의 구성을 나타내는 블록도이다.
도 4는 본 발명의 실시 예들에 따른 메모리 장치(200)를 구성하는 하나의 플래시 메모리 칩(201-1)의 회로 구성을 나타내는 블록도이다.
도 5는 본 발명의 실시 예들에 따른 메모리 메모리 셀 어레이(10)의 개념적인 구성을 나타내는 블록도이다.
도 6은 본 발명의 실시 예들에 따른 메모리 시스템(1000)의 소프트웨어 구조를 보여주는 블록도이다.
도 7은 본 발명의 실시 예들에 따른 디코더(130)의 구성을 나타내는 블록도이다.
도 8은 본 발명의 실시 예들에 따른 변수 노드의 메시지 교환을 나타내는 도면이다.
도 9는 본 발명의 실시 예들에 따른 디코더의 동작 방법을 나타내는 순서도이다.
도 10은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 11는 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 메모리 카드 시스템의 일 구현 예를 나타내는 블록도이다.
도 12는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시 예들에 따른 메모리 시스템(1000)의 구성을 나타내는 블록도이다. 도 1을 참조하면, 메모리 시스템(1000)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함한다.
메모리 컨트롤러(100)는 CPU(110), ECC(error correction code) 블록(125), 버퍼(140), 호스트 인터페이스(150), 메모리 인터페이스(160) 및 버스(170)를 포함할 수 있다.
CPU(110)는 버스(170)를 통하여 인코더(120), 디코더(130), 버퍼(140), 호스트 인터페이스(150) 및 메모리 인터페이스(160)와 전기적으로 접속할 수 있다.
CPU(110)는 메모리 시스템(1000)의 전반적인 동작을 제어할 수 있다. 상세하게는 CPU(110)는 호스트로부터 수신한 커맨드를 해독하고, 해독된 결과에 따라, 메모리 시스템(1000)이 동작을 수행하도록 메모리 시스템(1000)을 제어할 수 있다.
CPU(110)는, 리드(read) 동작 시에, 리드 커맨드 및 어드레스(address)를 메모리 장치(200)에 제공할 수 있다. 또한, CPU(110)는, 라이트(write) 동작 시에, 라이트 커맨드, 어드레스, 그리고 인코딩 처리된 코드워드(codeword)를 메모리 장치(200)에 제공할 수 있다.
CPU(110)는 디코더(130)의 동작을 제어하는 제어 신호(예컨대, 검출 제어 신호(DC))를 디코더(130)로 출력할 수 있다. 상세한 내용은 후술한다.
CPU(110)는 버퍼(140)에 저장된 메타 데이터를 이용하여 호스트로부터 수신한 논리적 주소를 물리적 페이지 주소로 변환시키는 처리를 수행할 수 있다.
CPU(110)는 메모리 시스템(1000)이 파워 온(Power-on) 된 후에, 메모리 장치(200)에 저장되어 있는 메타 데이터를 읽고, 버퍼(140)에 저장하도록 메모리 시스템(1000)을 제어할 수 있다. CPU(110)는 버퍼(140)에 저장된 메타 데이터를 업데이트 하도록, 메모리 컨트롤러(100)를 제어할 수 있다.
CPU(110)는 메모리 시스템(1000)이 파워 오프(Power-off) 되기 전에, 버퍼(140)에 저장되어 있는 메타 데이터를 메모리 장치(200)에 라이트하도록 메모리 시스템(1000)을 제어할 수 있다.
CPU(110)는 라이트 동작 시, 호스트로부터 전송된 정보 워드를 인코더(120)에서 LDPC 인코딩 처리하도록 메모리 컨트롤러(100)를 제어할 수 있다. 또한, CPU(110)는 리드 동작 시, 메모리 장치(200)로부터 읽어낸 데이터를 디코더(130)에서 LDPC 디코딩하도록 메모리 컨트롤러(100)를 제어할 수 있다.
ECC 블록(125)은 호스트로부터 수신한 데이터를 인코딩하거나, 메모리 장치(200)로부터 판독한 데이터를 디코딩 할 수 있다. ECC 블록(125)은 인코더(120) 및 디코더(130)을 포함할 수 있다.
인코더(120)는 호스트로부터 전송된 정보 워드에, LDPC 코드에 의해 명시된 다수의 패리티 비트들을 첨부하여 코드워드를 생성할 수 있다. 코드워드의 비트 수가 N이고, 정보 워드의 비트 수가 K이면, 패리티 비트 수는 (N-K)이다. LDPC 코드워드의 각각의 패리티 비트는 LDPC 코드를 만족시키도록 설정될 수 있다.
디코더(130)는 메모리 장치(200)로부터 읽어낸 데이터를 코드워드 단위로 LDPC 디코딩 처리하여 정보 워드를 복원할 수 있다. 예컨대, 코드워드는 한 페이지 단위를 의미할 수 있으며, 페이지는 i개의(i는 자연수) 비트를 포함할 수 있다.
디코더(130)는 변수 노드들과 체크 노드들 간의 메시지를 교환할 수 있다.
디코더(130)는 스케줄링 정보에 기초하여 LDPC 디코딩을 수행할 수 있다. 여기에서, 스케줄링 정보는 저밀도 패리티 체크(LDPC) 디코딩을 위한 체크 노드들과 변수 노드들 간의 메시지 교환 순서를 나타내는 정보가 포함될 수 있다.
스케줄링 정보는 LDPC 이분 그래프로부터 체크 노드들의 순서 조작 또는 변수 노드들의 순서 조작을 통하여, 메모리 액세스 충돌(memory access collision) 및 쓰기 전 읽기 위반(read-before-write violation)이 발생되지 않는 조건을 만족하도록 결정된다.
디코더(130)에 대한 구성 및 동작에 대해서는 아래에서 상세히 설명될 것이다.
버퍼(140)는 호스트로부터 전송된 정보 워드, CPU(110)에서 생성된 신호 및 데이터, 또는 메모리 장치(200)에서 읽어낸 데이터(예컨대, 코드워드)를 임시로 저장할 수 있다.
또한, 버퍼(140)는 메모리 장치(200)로부터 읽어낸 메타 데이터(meta data)를 저장할 수 있고, 버퍼(140)는 메모리 장치(200)로부터 읽어낸 저밀도 패리티 체크(LDPC)의 스케줄링 정보도 저장할 수 있다.
버퍼(140)은 DRAM, SRAM 등으로 구현될 수 있다. 메타 데이터(meta data)는 메모리 장치(200)를 관리하기 위하여 메모리 시스템(1000)에서 생성된 정보이다. 메타 데이터는 관리(management) 정보로서, 논리적 주소(Logical Address)를 메모리 장치(200)의 물리적 페이지 주소(PPA)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보를 포함할 수 있다.
본 발명의 실시 예들에 따라, 메타 데이터는 페이지 단위로 어드레스 매핑 처리를 수행하는데 필요한 페이지 매핑 테이블 정보를 포함할 수 있다. 또한, 메타 데이터는 메모리 장치(200)의 저장 공간(storage space)을 관리하기 위한 정보들을 포함할 수 있다.
호스트 인터페이스(150)는 호스트와의 데이터 교환 프로토콜을 포함할 수 있다. 호스트 인터페이스(150)는 호스트와 연결될 수 있다. 호스트 인터페이스(150)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현될 수 있다. 그러나, 본 발명이 이에 제한되는 것은 아니다. 세부적으로, 호스트 인터페이스(150)는 CPU(110)의 제어에 따라서 호스트와 커맨드, 어드레스 및 데이터를 교환할 수 있다.
메모리 인터페이스(160)는 메모리 장치(200)와 연결될 수 있다. 메모리 인터페이스(160)는 NAND 플래시 메모리 칩 또는 NOR 플래시 메모리 칩과의 인터페이스를 지원할 수 있다. 메모리 인터페이스(160)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브(interleave) 동작들을 선택적으로 수행할 수 있다.
버스(170)는 메모리 컨트롤러(100)의 구성 요소들(110, 120, 130, 140, 150, 160) 간의 정보를 전송하거나 수신하는 전송로를 의미할 수 있다.
도 1에는 도시되지 않았지만, 메모리 컨트롤러(100)는 판독 임계치 생성기를 더 포함할 수 있다. 판독 임계치 생성기는 복수의 판독 임계치들을 생성할 수 있고, 복수의 판독 임계치들은 메모리 장치(200)을 판독하기 위해 이용될 수 있다.
메모리 장치(200)는 비휘발성 메모리 디바이스로 구현할 수 있다. 예로서, 메모리 장치(200)는 플래시 메모리 디바이스, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 디바이스 등으로 구성될 수 있다. 메모리 장치(200)는 적어도 하나의 비휘발성 메모리 디바이스들과 적어도 하나의 휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수도 있다.
그리고, 메모리 장치(200)는 단일의 플래시 칩으로 구성될 수 있다. 또한, 메모리 장치(200)는 복수의 플래시 메모리 칩들로 구성될 수 있다.
도 2는 본 발명의 실시 예들에 따른 복수의 채널을 구비하는 메모리 시스템의 구성을 나타내는 블록도이다. 도 2를 참조하면, 메모리 장치(200)는 SSD(Solid State Drive)로 구현될 수 있다. SSD는 솔리드 스테이트 디스크(Solid State Disc)로 칭해질 수 있다. 도 2는 메모리 장치(200)이 복수개의 플래시 메모리 칩들(201, 203)로 구현된 실시 예를 도시한다.
도 1 및 도 2를 참조하면, 메모리 시스템(1000)은 y(y은 자연수)개의 채널들을 포함할 수 있다.
도 2에서는 복수의 채널들(CH1~CHy) 각각이 4개의 플래시 메모리 칩들에 할당되는 것으로 도시되나, 본 발명이 이에 한정되는 것은 아니다. 한 개의 채널에 할당되는 플래시 메모리 칩들의 개수는 다양하게 설정될 수 있다.
도 2에 도시된 메모리 컨트롤러(100)의 구성은 도 1에 도시된 메모리 컨트롤러(100)의 구성과 실질적으로 동일할 수 있다. 따라서, 설명의 중복을 피하기 위하여, 메모리 컨트롤러(1000)에 대한 설명은 생략한다.
도 3은 본 발명의 실시 예들에 따른 메모리 시스템의 채널 및 뱅크의 구성을 나타내는 블록도이다. 도 3을 참조하면, 복수의 채널들(CH1~CHy)은 복수의 플래시 메모리 칩들(201, 202, 203)에 전기적으로 연결될 수 있다.
복수의 채널들(CH1~CHy) 각각은 상응하는 복수의 플래시 메모리 칩들(201, 202, 203)과 커맨드, 어드레스 및 데이터를 송수신할 수 있는 독립적인 버스를 의미할 수 있다. 따라서, 서로 다른 채널에 접속된 플래시 메모리 칩들은 각각 독립적으로 동작할 수 있다.
각각의 채널에 접속된 복수의 플래시 메모리 칩들(201, 202, 203)은 복수 개의 웨이(WAY1~WAYx)들을 형성할 수 있다. 복수의 채널들(CH1~CHy) 중 어느하나는 x개의 웨이들 각각에 상응하는 x개의 플래시 메모리 칩들이 연결될 수 있다. 예컨대, 제1 채널(CH1)은 x개의 웨이들(WAY1~WAYx) 각각에 상응하는 복수의 플래시 메모리 칩들(201-1~201-x)이 연결될 수 있다. 이와 같은 플래시 메모리 칩들과 각각의 채널과 웨이의 형성 관계는 참조 번호 202의 플래시 메모리 칩들 및 참조번호 203의 플래시 메모리 칩들에도 적용될 수 있다.
웨이는 동일한 채널을 공유하는 플래시 메모리 칩들을 구분하기 위한 단위이다. 복수의 플래시 메모리 칩들은 채널 번호와 웨이 번호에 따라서, 식별될 수 있다. 호스트로부터 제공된 리퀘스트(request)가 어느 채널의 어느 웨이의 플래시 메모리 칩에서 수행될 지는 호스트로부터 전달된 논리적 주소에 의해 정해질 수 있다.
도 4는 본 발명의 실시 예들에 따른 메모리 장치(200)를 구성하는 하나의 플래시 메모리 칩(201-1)의 회로 구성을 나타내는 블록도이다. 도 4를 참조하면, 플래시 메모리 칩(201-1)은 메모리 셀 어레이(10), 페이지 버퍼(20), 제어 회로(30) 및 로우 디코더(40)를 포함할 수 있다. 메모리 셀 어레이(10)는 트랜지스터에 일정 전압을 인가하는 방식으로 데이터가 기입되는 영역이다.
메모리 셀 어레이(10)는 데이터를 저장하기 위한 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(10)는 2차원 구조로 구현될 수 있고, 3차원 구조로 구현될 수 있다.
메모리 셀 어레이(10)는 3차원 메모리 셀 어레이를 포함할 수 있다. 3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다.
3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
메모리 셀 어레이(10)는 워드라인들(WL0~WLm-1) 및 비트라인들(BL0~BLn-1)이 교차한 곳에 형성된 메모리 셀들을 포함할 수 있다. 여기에서, m 및 n은 자연수이다.
도 4에서는 하나의 메모리 블록이 도시되어 있으나 메모리 셀 어레이(10)는 복수의 메모리 블록들을 포함할 수 있다. 각각의 메모리 블록들은 각 워드 라인들(WL0~WLm-1)에 대응되는 페이지들을 포함하고 있다. 그리고 페이지들 각각은 해당 워드라인에 연결된 복수의 메모리 셀들을 포함한다.
플래시 메모리 칩(201-1)은 블록 단위로 소거 동작을 수행하고, 페이지 단위로 프로그램 동작 혹은 읽기 동작을 수행한다. 메모리 메모리 셀 어레이(10)는 셀 스트링(cell string) 구조를 갖는다. 각각의 셀 스트링은 스트링 선택 라인(String Selection Line; SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WLO ~ WLm-1)에 각각 연결된 복수의 메모리 셀들(MC0 ~ MCm-1), 그리고 접지 라인(Ground Section Line; GSL)에 연결된 접지 선택 트랜지스터(GST)를 포함한다. 여기에서, 스트링 선택 트랜지스터(SST)는 비트라인과 스트링 채널 사이에 연결되고, 접지 선택 트랜지스터(GST)는 스트링 채널과 공통 소스 라인(Common Source Line; CSL) 사이에 연결된다.
페이지 버퍼(20)는 복수의 비트라인들(BL0~BLn-1)을 통해 메모리 셀 어레이(10)에 연결될 수 있다. 페이지 버퍼(20)는 선택된 워드라인에 연결된 메모리 셀들에 기입할 데이터를 임시로 저장하거나 또는 선택된 워드라인에 연결된 메모리 셀들로부터 독출된 데이터를 임시로 저장할 수 있다.
제어 회로(30)는 프로그램(program) 또는 리드(read) 동작 그리고 소거 동작에 필요한 각종 전압들을 생성하고, 플래시 메모리 칩(201-1)의 제반 동작을 제어할 수 있다.
로우 디코더(40)는 선택 라인들(SSL, GSL) 및 복수의 워드라인들(WL0~WLm-1)을 통해 메모리 셀 어레이(10)에 연결될 수 있다. 로우 디코더(40)는 프로그램 동작 또는 리드 동작 시 어드레스를 입력받고, 입력된 어드레스에 따라 어느 하나의 워드라인을 선택할 수 있다. 여기에서 선택된 워드라인에는 프로그램 동작이 수행되거나 또는 리드 동작이 수행될 메모리 셀들이 연결될 수 있다.
또한, 로우 디코더(40)는 선택된 워드라인, 비선택된 워드라인들, 그리고 선택 라인들(SSL, GSL)로 프로그램 동작 또는 리드 동작에 필요한 전압들(예컨대, 프로그램 전압, 패스 전압, 읽기 전압, 스트링 선택 전압, 접지 선택 전압)을 인가할 수 다.
각각의 메모리 셀은 한 비트의 데이터 혹은 2비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장하는 메모리 셀은 싱글 레벨 셀(Single Level Cell; SLC)이라고 불린다. 그리고, 하나의 메모리 셀에 2비트 이상의 데이터를 저장하는 메모리 셀은 멀티 레벨 셀(Multi Level Cell; MLC)이라고 불린다.
싱글 레벨 셀은 문턱 전압에 따라 소거 상태(Erase State) 또는 프로그램 상태(Program State)를 갖는다.
도 5는 본 발명의 실시 예들에 따른 메모리 메모리 셀 어레이(10)의 개념적인 구성을 나타내는 블록도이다. 도 5를 참조하면, 메모리 메모리 셀 어레이(10)는 복수의 블록들(Block 0~Block q-1)을 포함할 수 있다.
각 블록들은 복수의 페이지(Page 0~Page p-1)들을 포함할 수 있다. 플래시 메모리 칩(201-1)에서 데이터의 기입 및 독출은 페이지 단위로 수행되고, 전기적 소거는 블록 단위로 이루어진다.
또한, 기입 전에 블록의 전기적 소거 작업이 요구된다. 이에 따라서, 덮어쓰기가 불가능하다. 덮어쓰기가 불가능한 메모리 장치에서는 사용자 데이터를 사용자가 원하는 물리적 영역에 기입할 수 없다. 따라서 호스트로부터 기입 또는 독출을 위하여 액세스를 요청받는 경우, 기입 또는 독출이 요청된 영역을 나타내는 논리적 주소를 실제로 데이터가 저장되어 있는 또는 데이터가 저장될 물리적 영역을 나타내는 물리적 페이지 주소로 변환시키는 주소 변환 동작이 필요하다.
메모리 시스템(1000)에서 논리적 주소를 물리적 페이지 주소로 변환시키는 과정을 도 6을 참조하여 설명하기로 한다.
도 6은 본 발명의 실시 예들에 따른 메모리 시스템(1000)의 소프트웨어 구조를 보여주는 블록도이다. 도 6은 본 발명의 실시 예들에 따른 메모리 장치(200)를 플래시 메모리로 구현한 경우의 소프트웨어 구조를 도시한다.
도 6을 참조하면, 메모리 시스템(1000)은 애플리케이션 계층(101), 파일 시스템 계층(102), 플래시 변환 계층(103), 그리고 플래시 메모리 계층(104)순으로 소프트웨어 계층 구조를 갖는다.
애플리케이션 계층(101)은 호스트에서의 사용자 입력에 응답하여 데이터를 가공하는 펌웨어를 의미한다. 애플리케이션 계층(101)에서는 사용자의 입력에 응답하여 사용자 데이터를 처리하고, 처리된 사용자 데이터를 플래시 메모리 칩에 저장하기 위한 커맨드를 파일 시스템 계층(102)으로 전달한다.
파일 시스템 계층(102)에서는 애플리케이션 계층(101)으로부터의 전달된 커맨드에 응답하여, 사용자 데이터가 저장될 논리적 주소를 할당한다. 파일 시스템(102)의 일종으로 FAT(File Allocation Table) 파일 시스템, NTFS 등이 있다.
플래시 변환 계층(Flash Translation Layer; FTL, 103)에서는 파일 시스템 계층(102)으로부터 전달받은 논리적 주소를 플래시 메모리 칩에서의 읽기/쓰기 동작을 위한 물리적 페이지 주소로의 변환을 수행할 수 있다.
플래시 변환 계층(103)에서는 메타 데이터에 포함된 매핑 정보를 이용하여 논리적 주소를 물리적 페이지 주소 변환할 수 있다.
도 1 및 도 6을 참조하면, 플래시 변환 계층(Flash Translation Layer; FTL, 103)의 주소 변환 동작은 메모리 컨트롤러(100)의 CPU(110)에서 수행될 수 있다.
플래시 메모리 계층(104)에서는 논리적 주소로부터 변환된 물리적 페이지 주소를 액세스하여 데이터를 저장하거나 독출하기 위한 제어 신호들을 발생할 수 있다.
도 7은 본 발명의 실시 예들에 따른 디코더(130)의 구성을 나타내는 블록도이다. 도 7을 참조하면, 채널 매퍼(131), 스트롱 에러 검출기(132), 디코더(130)는 변수 노드 유닛(133), 체크 노드 유닛(134), 및 판정 회로(135)를 포함할 수 있다.
이하, 디코더(130)의 동작을 설명하기 위하여, 메모리 시스템(1000)은 판독 모드인 것으로 가정하고 설명한다.
채널 매퍼(131)는 초기에 수행된 판독에 의해 생성된 경판정 정보(HDI) 및 연판정 정보(SDI)를 수신할 수 있다. 예컨대, 경판정 정보(HDI) 및 연판정 정보(SDI) 각각은 i개(a는 자연수)의 셀들을 포함하는 페이지 또는 세그먼트의 경판정 값들 및 연판정 값들을 각각 포함할 수 있다. 즉, 경판정 정보(HDI)는 i개의 경판정 값들을 포함할 수 있고, 연판정 정보(SDI)는 i개의 연판정 값들을 포함할 수 있다.
실시 예들에 따라, 메모리 장치(200)가 단일 레벨의 셀들(SLC)를 포함하면, 각 경판정 값들은 1 또는 0이 될 수 있다.
다양한 다른 실시예들에 있어서, 메모리 장치(200)는 두 개의 비트들이 셀마다 저장되는 다수-레벨 셀들(MLC), 셀마다 3개의 비트들이 저장되는 3중 레벨 셀들(TLC) 등을 포함할 수 있다.
채널 매퍼(131)는 경판정 정보(HDI) 및 연판정 정보(SDI)를 기초로 복수의 채널 수신 값들(CHL1~CHLi)을 생성할 수 있다. 복수의 채널 수신 값들(CHL1~CHLi)은 i개일 수 있다.
복수의 채널 수신 값들(CHL1~CHLi)은 크기와 부호를 갖는 정수로 표현될 수 있다. 예컨대, 채널 수신 값(CHL)은 각 채널의 로그-우도 비(Log Likelihood Ratio) 값일 수 있다.
실시 예들에 따라, 채널 수신 값(CHL)의 부호는 경판정 정보(HDI)에 기초하여 결정될 수 있다. 예컨대, 셀의 경판정 결과 값이 0인 경우, 상응하는 채널 수신 값(CHL)의 부호는 양의 부호(+) 일 수 있고, 셀의 경판정 결과 값이 1인 경우, 상응하는 채널 수신 값(CHL)의 부호는 음의 부호(-)일 수 있다. 그러나 본 발명이 이에 한정되는 것은 아니다.
실시 예들에 따라, 채널 수신 값(CHL)의 절대값(크기)은 연판정 정보(SDI)에 기초하여 결정될 수 있다. 셀의 연판정 결과 값에 따라, 상응하는 채널 수신 값(CHL)의 절대값은 경판정 결과에 대한 확실성 또는 가능성을 나타내는 값일 수 있다. 채널 수신 값(CHL)의 절대값은 경판정 결과의 확실성 또는 가능성이 클수록 큰 값일 수 있다.
본 발명의 실시 예들에 따르면, 채널 수신 값(CHL)의 절대값을 나타내기 위해 b개의 비트가 할당된 경우, 상기 절대 값은 기 설정된 값들의 집합에 속한 값들 중 어느 하나 일 수 있고, 기 설정된 값들의 집합은 [0, 1,…, 2b-1]일 수 있다. 예컨대, 채널 수신 값(CHL)의 절대값을 나타내기 위해 3비트가 할당 된 경우, 기 설정된 값들의 집합은 [0, 1, 2, 3, 4, 5, 6, 7] 일 수 있다.
채널 매퍼(131)는 복수의 채널 수신 값들(CHL1~CHLi)을 스트롱 에러 검출기(132)로 출력할 수 있다.
도 1 및 도 7을 참조하면, 스트롱 에러 검출기(132)는 검출 제어 신호(DC)에 따라, 동작할 수 있다. 실시 예들에 따라, 스트롱 에러 검출기(132)는 검출 제어 신호(DC)를 CPU(110)으로부터 수신할 수 있다.
CPU(110)는 스트롱 에러 검출기(132)가 보정을 수행하는 제1 모드 및 상기 스트롱 에러 검출기(132)가 보정을 수행하지 않는 제2 모드 중 어느 하나로 동작하도록, 스트롱 에러 검출기(132)를 제어할 수 있다.
예컨대, CPU(110)는 스트롱 에러 검출기(132)가 제1 모드로 동작하다가, 기 설정된 시간이 흐른 후, 제2 모드로 동작하도록, 스트롱 에러 검출기(132)를 제어할 수 있다.
다른 실시 예들에 따르면, CPU(110)는 스트롱 에러 검출기(132)가 제1 모드로 동작하고, 후처리 동작으로, 제2 모드로 동작하도록 스트롱 에러 검출기(132)를 제어할 수 있다.
또 다른 실시 예들에 따르면, CPU(110)는 스트롱 에러 검출기(132)가 주기적으로 제1 모드 및 제2 모드 중 어느 하나로 동작하도록 스트롱 에러 검출기(132)를 제어할 수 있다.
스트롱 에러 검출기(132)는 체크 노드 유닛(134)로부터 복수의 체크 노드 메세지들(Cji)를 수신할 수 있다. 복수의 체크 메세지들(Cji)은 체크 노드 유닛(134)의 복수의 체크 노드들(CN1~CNj)로부터 변수 노드 유닛(133)의 복수의 변수 노드들(VN1~VNi)로 전송되는 메시지들일 수 있다. 상세한 내용은 후술한다.
스트롱 에러 검출기(132)는 복수의 체크 노드 메세지들(Cji) 및 복수의 채널 수신 값들(CHL1~CHLi)를 기초로, 스트롱 에러의 발생 여부를 판단하고, 판단 결과에 따라, 상기 복수의 채널 수신 값들(CHL1~CHLi)를 보정하여 복수의 보정된 채널 수신 값들(CHL'1~CHL'i)를 산출할 수 있다.
이하에서, 설명의 편의를 위해 스트롱 에러가 발생한 변수 노드를 스트롱 에러 노드라 칭하기로 한다.
스트롱 에러 검출기(132)는 복수의 변수 노드들(VN1~VNi) 중 어느 하나를 선택하고, 선택된 변수 노드(VN)에 스트롱 에러가 발생했는지 판단할 수 있다.
상세하게는, 먼저, 스트롱 에러 검출기(132)는 복수의 채널 수신 값들(CHL1~CHLi) 가운데 절대값이 가장 큰 채널 수신 값에 상응하는 변수 노드를 선택할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니다.
예컨대, 스트롱 에러 검출기(132)는 채널 수신 값(CHL)의 절대값이 7인 변수 노드(VN)를 선택할 수 있다. 이때, 선택된 변수 노드는 강한 확실성 또는 가능성을 가진 노드 일 수 있다. 즉, 선택된 변수 노드는 스트롱 에러 또는 스트롱 코렉션(strong correction)이 발생한 노드일 수 있다. 스트롱 코렉션이란 스트롱 에러와 반대되는 개념으로서, 판정 값이 정확한 것으로 강하게 확실시 되는 상태를 말한다.
그 다음, 스트롱 에러 검출기(132)는 선택된 변수 노드가 스트롱 에러 노드인지, 스트롱 코렉션 노드인지 판단할 수 있다. 이하에서 상세히 설명한다.
실시 예들에 따라, 스트롱 에러 검출기(132)는 상기 선택된 변수 노드(VN)로 입력되는 상기 복수의 체크 노드 메세지들(Cj)의 부호 중 다수에 해당하는 부호가, 상기 선택된 변수 노드(VN)에 상응하는 상기 채널 수신 값(CHL)의 부호와 다르고, 상기 선택된 변수 노드(VN)에 상응하는 상기 채널 수신 값(CHL)의 절대 값이 상기 선택된 변수 노드(VN)로 입력되는 상기 복수의 체크 노드 메세지들(Cj)의 합보다 작은 경우, 상기 선택된 변수 노드(VN)에 상기 스트롱 에러가 발생했다고 판단하고, 상기 선택된 변수 노드(VN)로 입력되는 상기 복수의 체크 노드 메세지들(Cj)의 부호 중 다수에 해당하는 부호가, 상기 선택된 변수 노드(VN)에 상응하는 상기 채널 수신 값(CHL)의 부호와 같거나, 상기 선택된 변수 노드(VN)에 상응하는 상기 채널 수신 값(CHL)의 절대 값이 상기 선택된 변수 노드(VN)로 입력되는 상기 복수의 체크 노드 메세지들(Cj)의 합보다 크거나 같은 경우, 상기 선택된 변수 노드(VN)에 상기 스트롱 에러가 발생하지 않았다고 판단할 수 있다.
다른 실시 예들에 따르면, 스트롱 에러 검출기(132)는 복수의 체크 노드 메세지들(Cji) 및 복수의 채널 수신 값(CHL1~CHLi)의 조합에 상응하는 스트롱 에러 정보를 저장하는 룩업 테이블을 포함하고, 스트롱 에러 검출기(132)는 룩업 테이블을 기초로 스트롱 에러의 발생 여부를 판단할 수 있다.
스트롱 에러 검출기(132)는 선택된 변수 노드(VN)에 스트롱 에러가 발생했다고 판단한 경우, 선택된 변수 노드(VN)에 상응하는 채널 수신 값(CHL)을 보정하여, 선택된 변수 노드(VN)에 상응하는 상기 보정된 채널 수신 값(CHL')을 산출하고, 선택된 변수 노드(VN)에 스트롱 에러가 발생했다고 판단하지 않은 경우, 선택된 변수 노드(VN)에 상응하는 상기 채널 수신 값(CHL)을 보정하지 않고, 그대로, 선택된 변수 노드(VN)에 상응하는 보정된 채널 수신 값(CHL')으로 산출할 수 있다.
또한, 스트롱 에러 검출기(132)는 검출 제어 신호(DC)를 수신한 경우, 스트롱 에러 노드의 채널 수신 값(CHL)을 보정하고, 검출 제어 신호(DC)를 수신하지 않은 경우, 스트롱 에러 노드의 채널 수신 값(CHL)을 보정하지 않을 수 있다.
실시 예들에 따라, 스트롱 에러 검출기(132)는 스트롱 에러 노드의 채널 수신 값(CHL)의 절대값을 낮춤으로써 보정을 수행할 수 있다.
예컨대, 스트롱 에러 검출기(132)는 보정을 수행할 때, 채널 수신 값(CHL)의 절대 값에서, 보정 값(CV)만큼 뺀 값을 보정된 채널 수신 값(CHL')의 절대 값으로 설정할 수 있다. 이때, 스트롱 에러 검출기(132)는 CPU(110)로부터 보정 값(CV)를 수신할 수 있으며, 보정 값(CV)는 기 설정된 값일 수 있다.
즉, 스트롱 에러 검출기(132)는 선택된 변수 노드(VN)에 스트롱 에러가 발생했다고 판단한 경우, 선택된 변수 노드(VN)에 상응하는 채널 수신 값(CHL)의 절대값에서 보정 값(CV)만큼 작은 값을 선택된 변수 노드(VN)에 상응하는 보정된 채널 수신 값(CHL')의 절대값으로 설정하고, 채널 수신 값(CHL)의 부호와 동일한 부호를 보정된 채널 수신 값(CHL')의 부호로 설정함으로써, 보정된 채널 수신 값(CHL')을 산출할 수 있다.
보정 값(CV)은 선택된 변수 노드(VN)에 상응하는 복수의 변수 노드 메세지들(Vj)의 부호 중 다수에 해당하는 부호가 선택된 변수 노드(VN)에 상응하는 채널 수신 값(CHL)의 부호와 같아지도록 설정될 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니다.
다른 실시 예에서, 스트롱 에러 검출기(132)는 보정을 수행할 때, 스트롱 에러 노드의 보정된 채널 수신 값(CHL')을 0으로 설정할 수 있다.
즉, 스트롱 에러 검출기(132)는 선택된 변수 노드(VN)에 스트롱 에러가 발생했다고 판단한 경우, 선택된 변수 노드(VN)에 상응하는 채널 수신 값(CHL)을 0으로 보정하여, 선택된 변수 노드(VN)에 상응하는 보정된 채널 수신 값(CHL')을 산출 할 수 있다.
변수 노드 유닛(133)은 스트롱 에러 검출기(132)로부터 보정된 채널 수신 값들(CHL’i)를 수신할 수 있다. 또한, 변수 노드 유닛(133)은 체크 노드 유닛(134)로부터 복수의 체크 메세지들(Cji)들 수신할 수 있다.
변수 노드 유닛(133)은 복수의 변수 노드들(VN1~VNi)을 포함할 수 있다. 예컨대, 복수의 변수 노드들(VN1~VNi)은 i개(i는 자연수)일 수 있다. 마찬가지로, 체크 노드 유닛(134)는 복수의 체크 노드들(CN1~CNj)을 포함할 수 잇다. 예컨대, 복수의 체크 노드들은 j개(j는 자연수)일 수 있다.
변수 노드 유닛(133)은 체크 노드 유닛(134)과 메시지를 교환하기 위하여, 보정된 채널 수신 값들(CHL’i) 및 복수의 체크 노드 메세지들(Cji)을 이용해 논리 연산을 수행할 수 있다. 변수 노드 유닛(133)은 논리 연산을 수행함으로써, 복수의 변수 노드 메세지들(Vij)을 생성하여, 체크 노드 유닛(134)으로 출력할 수 있다.
체크 노드 유닛(134)은 변수 노드 유닛(133)과 메시지를 교환하기 위하여, 복수의 변수 노드 메세지들(Vij)을 이용해 논리 연산을 수행할 수 있다. 체크 노드 유닛(134)은 논리 연산을 수행함으로써, 복수의 체크 노드 메세지들(Cji)을 생성하여, 변수 노드 유닛(133)으로 출력할 수 있다.
실시 예들에 따라, 변수 노드 유닛(133)은 수학식 1 및 수학식 2에 따라 연산을 수행할 수 있다.
[수학식 1]
Mi=CHL'i+∑Cji, for all j
여기서, Mi는 중간 매개 변수이다. CHL'i는 보정된 채널 수신 값이다. ∑Cji는 제i 변수 노드가 수신한 모든 체크 노드 메세지들의 합이다.
[수학식 2]
Vij=Q(Mi-Cji), for each i
수학식 2에서, Q함수는 기 설정된 값들 중 어느 하나를 입력에 따라 할당하는 양자화 함수일 수 있다. 예컨대, 복수의 변수 노드 메세지들(Vij)의 절대값은 집합 [0, 1 ,…, LM] 중 어느 하나일 수 있다. 이때, LM는 2이상의 자연수이다. 마찬가지로, 복수의 체크 노드 메세지들(Cji)의 절대값은 집합 [0, 1 ,…, LM] 중 어느 하나일 수 있다. 예컨대, LM이 3인 경우, 복수의 변수 노드 메세지들(Vij) 및 복수의 체크 노드 메세지들(Cji)의 절대 값은 [0, 1, 2, 3] 중 어느 하나를 나타낼 수 있다. 또한, 채널 수신 값의 경우와 마찬가지로 복수의 변수 노드 메세지들(Vij) 및 복수의 체크 노드 메세지들(Cji)의 절대 값은 확실성 또는 가능성이 클수록 큰 값을 가질 수 있다.
변수 노드 유닛(133)은 복수의 변수 노드 메세지들(Vij)을 판정 회로(135)로 출력할 수 있다.
판정 회로(135)는 수신한 복수의 변수 노드 메세지들(Vij)을 기초로 복수의 변수 노드들(VN1~VNi)을 최종적으로 판정할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 도 7에 도시된 바와 달리, 판정 회로(135)는 복수의 체크 노드 메세지들(Cji)을 기초로 복수의 변수 노드들(VN1~VNi)을 최종적으로 판정할 수 있다.
판정 회로(135)는 판정 결과에 따라, 길이 i의 코드워드(CW)를 출력할 수 있다.
도 8은 본 발명의 실시 예들에 따른 변수 노드의 메시지 교환을 나타내는 도면이다. 도 8을 참조하면, 제1 변수 노드(VN1)는 제1 내지 제5 체크 노드(CN1~CN5)와 메시지 교환을 수행할 수 있다.
아래에서, 제1 변수 노드(VN1)는 스트롱 에러 노드 인 것으로 가정한다.
본 발명의 구체적인 기능을 설명하기 위하여, 스트롱 에러 노드의 채널 수신 값을 보정하지 않는 경우의, 변수 노드 유닛(133)에서의 메시지 교환을 먼저 설명한다.
(1) 스트롱 에러 노드의 채널 수신 값을 보정하지 않는 경우
제1 변수 노드(VN1)이 수신한 제1 채널 수신 값(CHL'1)은 -7인 것으로 가정한다. 이는 상술한 바와 같이, 상응하는 셀의 값이 1인 것이 확실한 것을 의미할 수 있다.
또한, 제1 변수 노드(VN1)이 수신한 복수의 체크 노드 메세지들(C11~C51)은 각각 순서대로 3, 3, 3, -3, 1인 것으로 가정한다. 이는 상술한 바와 같이 복수의 체크 노드 메세지들 중 제1 내지 제3 체크 노드 메세지들(C11, C21, C31)은 상응하는 셀의 값이 0인 것이 확실한 것을 의미할 수 있다.
다수의 체크 노드 메세지들이 셀의 값이 0인 것이 확실한 것으로 알려주고 있음에도 불구하고, 제1 채널 수신 값(CHL'1)의 절대 값이 7로 상대적으로 너무 크게 설정되어 있으면, 제1 변수 노드(VN1)은 상응하는 셀의 값이 1인 것을 의미하는 메시지를 생성할 수 있다. 즉, 상기 수학식 1 및 수학식 2에 따라서, 제1 변수 노드(VN1)은 제1 내지 제3 변수 노드 메세지들(V11~V13)을 -3으로, 제4 변수 노드 메세지(V14)를 1로, 제5 변수 노드 메세지(V15)를 -1로 산출할 수 있다. 즉, 제1 변수 노드(VN1)은 복수의 체크 노드들(CN1~CN5)에 잘못된 메시지를 전송하여, LDPC 디코더의 에러 정정이 정상적으로 동작하지 않을 수 있다.
따라서, 스트롱 에러 노드의 채널 수신 값을 보정하지 않는 경우, LDPC 디코더의 코딩 성능이 감소할 수 있다.
(2) 스트롱 에러 노드의 채널 수신 값을 보정한 경우
상기 가정에 따라서, 제1 변수 노드(VN1)이 수신한 보정된 제1 채널 수신 값(CHL'1)은 -3인 것으로 가정한다. 이는 상술한 바와 같이, 상응하는 셀의 값이 1인 것을 의미할 수 있다.
이때 보정된 제1 채널 수신 값(CHL'1)은, 도 7을 참조하면, 스트롱 에러 검출기(132)가 CPU(110)로부터 수신한 4를 나타내는 보정 값(CV)을 이용해 보정한 것으로 이해할 수 있다.
또한, 제1 변수 노드(VN1)이 수신한 복수의 체크 노드 메세지들(C11~C51)은 각각 순서대로 3, 3, 3, -3, 1인 것으로 가정한다. 이는 상술한 바와 같이 복수의 체크 노드 메세지들 중 제1 내지 제3 체크 노드 메세지들(C11, C21, C31)은 상응하는 셀의 값이 0인 것이 확실한 것을 의미할 수 있다.
예컨대, 상기 수학식 1 및 수학식 2에 따라서, 제1 변수 노드(VN1)은 제1 내지 제3 변수 노드 메세지들(V11~V13)을 1으로, 제4 변수 노드 메세지(V14)를 3으로, 제5 변수 노드 메세지(V15)를 -1로 산출할 수 있다. 즉, 제1 변수 노드(VN1)는 제1 채널 수신 값(CHL'1)이 셀의 값을 1을 의미함에도 불구하고, 대체로, 0을 의미하는 복수의 체크 노드 메세지들을 생성함으로써, LDPC 디코더의 에러 정정을 정상적으로 수행할 수 있다.
따라서, 스트롱 에러 노드의 채널 수신 값을 보정하여, LDPC 디코더의 코딩 성능을 향상시킬 수 있다.
도 9는 본 발명의 실시 예들에 따른 디코더의 동작 방법을 나타내는 순서도이다. 도 1 및 도 9를 참조하면, 단계 S110에서, 디코더(130)는 경판정 정보(HDI) 및 연판정 정보(SDI)를 기초로, 복수의 채널 수신 값들(CHL1~CHLi)을 생성할 수 있다.
경판정 정보(HDI)는 페이지를 구성하는 복수의 셀들 각각의 경판정 값들을 포함할 수 있고, 연판정 정보(SDI)는 페이지를 구성하는 복수의 셀들 각각의 연판정 값들을 포함할 수 있다. 복수의 채널 수신 값들(CHL1~CHLi) 각각은 상기 페이지를 구성하는 복수의 셀들에 상응할 수 있다. 즉, 복수의 채널 수신 값들(CHL1~CHLi)의 부호는 경판정 값에 따라 결정되고, 절대값은 연판정 값에 따라 결정될 수 있다.
단계 S120에서, 디코더(130)는 복수의 체크 노드 메세지들(Cji) 및 채널 수신 값들(CHL1~CHLi)을 이용하여, 복수의 변수 노드들 중 어느 하나를 선택하고, 선택된 변수 노드(VN)에 스트롱 에러가 발생했는지 여부를 판단할 수 있다.
단계 S130에서, 선택된 변수 노드(VN)에 스트롱 에러가 발생한 경우, 디코더(130)는 선택된 변수 노드(VN)에 상응하는 채널 수신 값(CHL)을 보정하여, 선택된 변수 노드(VN)에 상응하는 보정된 채널 수신 값(CHL')을 산출할 수 있다.
단계 S140에서, 선택된 변수 노드(VN)에 스트롱 에러가 발생하지 않은 경우, 디코더(130)는 선택된 변수 노드(VN)에 상응하는 채널 수신 값(CHL)을 보정하지 않고, 그대로 선택된 변수 노드(VN)에 상응하는 보정된 채널 수신 값(CHL')으로 산출할 수 있다.
단계 S150에서, 디코더(130)는 복수의 체크 노드 메세지들(Cji) 및 복수의 보정된 채널 수신 값들(CHL'1~CHL'i)을 이용하여 복수의 변수 노드 메세지들(Vij)를 생성할 수 있다.
도 10은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 10을 참조하면, 전자 장치(2000)는 프로세서(2100), RAM(2200), 입출력 장치(2300), 전원 장치(2400) 및 메모리 시스템(1000)을 포함할 수 있다.
한편, 도 10에는 도시되지 않았지만, 전자 장치(2000)는 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 전자 장치(2000)는 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 10에 도시된 메모리 시스템(1000)은 도 1 및 도 2에서 도시된 본 발명의 실시 예에 따른 메모리 시스템(1000)이 적용될 수 있다. 따라서, 메모리 컨트롤러(100)는 메모리 장치(200)에서 읽어낸 데이터를 본 발명에서 제안하는 LDPC 디코딩 방법을 적용함으로써, 디코딩할 수 있다.
프로세서(2100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(2100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 프로세서(2100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2500)를 통하여 RAM(2200), 입출력 장치(2300) 및 메모리 시스템(1000)과 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(2100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2200)는 전자 장치(2000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(2200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(2300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(2400)는 전자 장치(2000)의 동작에 필요한 동작 전압을 공급할 수 있다.
도 11는 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 메모리 카드 시스템을 나타내는 블록도이다. 도 11를 참조하면, 메모리 카드 시스템(3000)은 호스트(3100) 및 메모리 카드(3200)를 포함할 수 있다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 접속부(3120)를 포함할 수 있다. 메모리 카드(3200)는 카드 접속부(3210), 카드 컨트롤러(3220) 및 메모리 장치(3230)를 포함할 수 있다.
도 11에 도시된 카드 컨트롤러(3220) 및 메모리 장치(3230)는 각각 도 1 또는 도 2에 도시된 메모리 컨트롤러(100) 및 메모리 장치(200)가 적용될 수 있다.
호스트(3100)는 메모리 카드(3200)에 데이터를 기입하거나, 메모리 카드(3200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(3110)는 커맨드(CMD), 호스트(3100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK), 및 데이터(DATA)를 호스트 접속부(3120)를 통해 메모리 카드(3200)로 전송할 수 있다.
카드 컨트롤러(3220)는 카드 접속부(3210)를 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(3220)는 메모리 장치(3230)에서 읽어낸 데이터를 본 발명에서 제안하는 효율적인 스케줄링에 따른 LDPC 디코딩 방법을 적용하여 디코딩 처리할 수 있다.
메모리 카드(3200)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC:Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 12는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다. 도 12를 참조하면, 본 발명의 실시 예에 따른 네트워크 시스템(4000)은 네트워크(4200)를 통해 연결되는 서버 시스템(4100) 및 다수의 단말들(4300, 4400, 4500)을 포함할 수 있다. 본 발명의 실시예에 따른 서버 시스템(4100)은 네트워크(4200)에 연결되는 다수의 단말들(4300, 4400, 4500)로부터 수신되는 요청을 처리하는 서버(4110) 및 단말들(4300, 4400, 4500)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD(4120)를 포함할 수 있다. 이때, SSD(4120)는 도 1 또는 도 2에 도시된 메모리 시스템(1000)이 적용될 수 있다.
한편, 상기에서 설명된 본 발명에 따른 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000: 메모리 시스템
100: 메모리 컨트롤러
200: 메모리 장치
110: CPU
120: 인코더
130: 디코더
131: 채널 매퍼
132: 스트롱 에러 검출기
133: 변수 노드 유닛
134: 체크 노드 유닛
135: 판정 회로
100: 메모리 컨트롤러
200: 메모리 장치
110: CPU
120: 인코더
130: 디코더
131: 채널 매퍼
132: 스트롱 에러 검출기
133: 변수 노드 유닛
134: 체크 노드 유닛
135: 판정 회로
Claims (10)
- 경판정 정보 및 연판정 정보를 기초로, 복수의 채널 수신 값들를 생성하는 채널 매퍼; 및
복수의 체크 노드 메세지들 및 상기 복수의 채널 수신 값들을 이용해, 스트롱 에러(strong error)의 발생 여부를 판단하고, 판단 결과에 따라, 상기 복수의 채널 수신 값들을 보정하여, 복수의 보정된 채널 수신 값들을 산출하는 스트롱 에러 검출기를 포함하는 디코더.
- 제1항에 있어서, 상기 디코더는
상기 복수의 체크 노드 메세지들 및 상기 복수의 보정된 채널 수신 값들을 이용해, 복수의 변수 노드 메세지들을 생성하는 변수 노드 유닛; 및
상기 복수의 변수 노드 메세지들을 이용해, 상기 복수의 체크 노드 메세지들을 생성하는 체크 노드 유닛을 더 포함하고,
상기 변수 노드 유닛은 복수의 변수 노드들을 포함하고,
상기 체크 노드 유닛은 복수의 체크 노드들을 포함하는 디코더.
- 제2항에 있어서, 상기 스트롱 에러 검출기는
상기 복수의 변수 노드들 중 어느 하나를 선택하고,
상기 선택된 변수 노드로 입력되는 상기 복수의 체크 노드 메세지들의 부호 중 다수에 해당하는 부호가, 상기 선택된 변수 노드에 상응하는 상기 채널 수신 값의 부호와 다르고, 상기 선택된 변수 노드에 상응하는 상기 채널 수신 값의 절대 값이 상기 선택된 변수 노드로 입력되는 상기 복수의 체크 노드 메세지들의 합보다 작은 경우, 상기 선택된 변수 노드에 상기 스트롱 에러가 발생했다고 판단하고,
상기 선택된 변수 노드로 입력되는 상기 복수의 체크 노드 메세지들의 부호 중 다수에 해당하는 부호가, 상기 선택된 변수 노드에 상응하는 상기 채널 수신 값의 부호와 같은 경우, 상기 선택된 변수 노드에 상기 스트롱 에러가 발생하지 않았다고 판단하는 디코더.
- 제2항에 있어서, 상기 스트롱 에러 검출기는
상기 선택된 변수 노드에 상기 스트롱 에러가 발생했다고 판단한 경우, 상기 선택된 변수 노드에 상응하는 상기 채널 수신 값을 보정하여, 상기 선택된 변수 노드에 상응하는 상기 보정된 채널 수신 값을 산출하고,
상기 선택된 변수 노드에 상기 스트롱 에러가 발생했다고 판단하지 않은 경우, 상기 선택된 변수 노드에 상응하는 상기 채널 수신 값을 보정하지 않고, 그대로 상기 선택된 변수 노드에 상응하는 상기 보정된 채널 수신 값으로 산출하는 디코더.
- 제4항에 있어서, 상기 스트롱 에러 검출기는
상기 선택된 변수 노드에 상기 스트롱 에러가 발생했다고 판단한 경우, 상기 선택된 변수 노드에 상응하는 상기 채널 수신 값의 절대값에서 보정 값만큼 작은 값을 상기 선택된 변수 노드에 상응하는 상기 보정된 채널 수신 값의 절대값으로 설정하고, 상기 채널 수신 값의 부호와 동일한 부호를 상기 보정된 채널 수신 값의 부호로 설정함으로써, 상기 보정된 채널 수신 값을 산출하는 디코더.
- 제5항에 있어서, 상기 보정 값은 상기 선택된 변수 노드에 상응하는 상기 복수의 변수 노드 메세지들의 부호 중 다수에 해당하는 부호가 상기 선택된 변수 노드에 상응하는 상기 채널 수신 값의 부호와 같아지도록 설정된 디코더.
- 제4항에 있어서, 상기 스트롱 에러 검출기는
상기 선택된 변수 노드에 상기 스트롱 에러가 발생했다고 판단한 경우, 상기 선택된 변수 노드에 상응하는 상기 채널 수신 값을 0으로 보정하여, 상기 선택된 변수 노드에 상응하는 상기 보정된 채널 수신 값을 산출하는 디코더.
- 제2항에 있어서, 상기 스트롱 에러 검출기는
상기 복수의 체크 노드 메세지들 및 상기 복수의 채널 수신 값의 조합에 상응하는 스트롱 에러 정보를 저장하는 룩업 테이블을 포함하고,
상기 스트롱 에러 검출기는 상기 룩업 테이블을 기초로 상기 스트롱 에러의 발생 여부를 판단하는 디코더.
- CPU 및 디코더를 포함하고, 메모리 장치에 접근하여 데이터를 프로그램하는 메모리 컨트롤러에 있어서,
상기 디코더는
경판정 정보 및 연판정 정보를 기초로, 복수의 채널 수신 값들를 생성하는 채널 매퍼; 및
복수의 체크 노드 메세지들 및 상기 복수의 채널 수신 값들을 이용해, 스트롱 에러(strong error)의 발생 여부를 판단하고, 판단 결과에 따라, 상기 복수의 채널 수신 값들을 보정하여, 복수의 보정된 채널 수신 값들를 산출하는 스트롱 에러 검출기를 포함하고,
상기 CPU는 상기 스트롱 에러 검출기가 보정을 수행하는 제1 모드 및 상기 스트롱 에러 검출기가 보정을 수행하지 않는 제2 모드 중 어느 하나로 동작하도록 상기 스트롱 에러 검출기를 제어하는 메모리 컨트롤러.
- 제9항에 있어서, 상기 디코더는
상기 복수의 체크 노드 메세지들 및 상기 복수의 보정된 채널 수신 값들을 이용해, 복수의 변수 노드 메세지들을 생성하는 변수 노드 유닛; 및
상기 복수의 변수 노드 메세지들을 이용해, 상기 복수의 체크 노드 메세지들을 생성하는 체크 노드 유닛을 더 포함하고,
상기 변수 노드 유닛은 복수의 변수 노드들을 포함하고,
상기 체크 노드 유닛은 복수의 체크 노드들을 포함하는 메모리 컨트롤러.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160091397A KR20180009558A (ko) | 2016-07-19 | 2016-07-19 | 저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러 |
US15/652,521 US10324785B2 (en) | 2016-07-19 | 2017-07-18 | Decoder using low-density parity-check code and memory controller including the same |
CN201710590347.XA CN107634764B (zh) | 2016-07-19 | 2017-07-19 | 使用低密度奇偶校验码的解码器及存储控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160091397A KR20180009558A (ko) | 2016-07-19 | 2016-07-19 | 저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180009558A true KR20180009558A (ko) | 2018-01-29 |
Family
ID=60988544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160091397A KR20180009558A (ko) | 2016-07-19 | 2016-07-19 | 저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10324785B2 (ko) |
KR (1) | KR20180009558A (ko) |
CN (1) | CN107634764B (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112838872A (zh) * | 2019-11-25 | 2021-05-25 | 中国科学院微电子研究所 | 卫星导航用ldpc码译码方法、译码器及接收机 |
US11128315B2 (en) | 2019-03-27 | 2021-09-21 | SK Hynix Inc. | Error correction decoder |
KR102505857B1 (ko) * | 2021-11-15 | 2023-03-06 | 삼성전자 주식회사 | 스트롱 에러 정보를 관리하는 메모리 컨트롤러 및 그 동작방법 |
US11886293B2 (en) | 2021-11-15 | 2024-01-30 | Samsung Electronics Co., Ltd. | Memory controller managing strong error information and operating method thereof |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112017003859T5 (de) * | 2016-08-01 | 2019-04-25 | Sony Semiconductor Solutions Corporation | Kommunikationseinheit und Kommunikationssystem |
US10824507B2 (en) * | 2018-10-24 | 2020-11-03 | Samsung Electronics Co., Ltd. | Semiconductor memory device, controller, and memory system |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100891782B1 (ko) | 2002-06-11 | 2009-04-07 | 삼성전자주식회사 | 고속 데이터 전송 시스템에서 순방향 오류 정정 장치 및방법 |
US7237181B2 (en) | 2003-12-22 | 2007-06-26 | Qualcomm Incorporated | Methods and apparatus for reducing error floors in message passing decoders |
KR100762619B1 (ko) * | 2004-05-21 | 2007-10-01 | 삼성전자주식회사 | 저밀도 패리티 검사 코드를 이용한 복호화 장치 및 방법 |
CN1713530A (zh) * | 2004-06-22 | 2005-12-28 | 印芬龙科技股份有限公司 | 解码低密度奇偶校验(ldpc)码字的ldpc解码器 |
US7401283B2 (en) | 2004-09-28 | 2008-07-15 | Broadcom Corporation | Amplifying magnitude metric of received signals during iterative decoding of LDPC (Low Density Parity Check) code and LDPC coded modulation |
FR2904499B1 (fr) | 2006-07-27 | 2009-01-09 | Commissariat Energie Atomique | Procede de decodage a passage de messages avec ordonnancement selon une fiabilite de voisinage. |
US20090319860A1 (en) | 2008-06-23 | 2009-12-24 | Ramot At Tel Aviv University Ltd. | Overcoming ldpc trapping sets by decoder reset |
WO2009156935A1 (en) | 2008-06-23 | 2009-12-30 | Ramot At Tel Aviv University Ltd. | Using damping factors to overcome ldpc trapping sets |
JP5276173B2 (ja) | 2008-08-15 | 2013-08-28 | エルエスアイ コーポレーション | ニア・コードワードのromリスト復号 |
US8175012B2 (en) * | 2009-03-26 | 2012-05-08 | Mediatek Inc. | Decoding/encoding method for booting from a NAND flash and system thereof |
JP2012050008A (ja) | 2010-08-30 | 2012-03-08 | Toshiba Corp | 誤り検出訂正方法および半導体メモリ装置 |
JP5370337B2 (ja) * | 2010-10-29 | 2013-12-18 | 株式会社Jvcケンウッド | 復号装置および復号方法 |
US9009574B2 (en) | 2011-06-07 | 2015-04-14 | Marvell World Trade Ltd. | Identification and mitigation of hard errors in memory systems |
US8935600B1 (en) | 2011-09-28 | 2015-01-13 | Marvell International Ltd. | Modification of decoder operating mode based on a probability of non-standard errors in concatenated decoding systems |
TWI460733B (zh) * | 2011-11-15 | 2014-11-11 | Silicon Motion Inc | 具有低密度奇偶校驗碼解碼能力的記憶體控制裝置及方法 |
JP5765281B2 (ja) | 2012-03-27 | 2015-08-19 | 株式会社Jvcケンウッド | 復号装置、復号方法、及び、プログラム |
US8781033B2 (en) | 2012-06-26 | 2014-07-15 | Lsi Corporation | Apparatus and method for breaking trapping sets |
JP2014027432A (ja) | 2012-07-25 | 2014-02-06 | Toshiba Corp | 復号装置、記憶装置、および復号方法 |
US20140082449A1 (en) | 2012-09-18 | 2014-03-20 | Fan Zhang | LDPC Decoder With Variable Node Hardening |
US9043674B2 (en) * | 2012-12-26 | 2015-05-26 | Intel Corporation | Error detection and correction apparatus and method |
US9231619B2 (en) | 2013-02-04 | 2016-01-05 | SK Hynix Inc. | LDPC decoder with a variable node updater which uses a scaling constant |
US20140229788A1 (en) | 2013-02-13 | 2014-08-14 | Qualcomm Incorporated | Ldpc design for high rate, high parallelism, and low error floor |
US20150372695A1 (en) | 2013-03-14 | 2015-12-24 | Jian Li | Method and apparatus of ldpc decoder with lower error floor |
US9513989B2 (en) | 2013-03-26 | 2016-12-06 | Seagate Technology Llc | Priori information based post-processing in low-density parity-check code decoders |
US9184767B2 (en) | 2013-09-19 | 2015-11-10 | SanDisk Technologies, Inc. | Scoring variable nodes for low density parity check code decoding |
CN104518801A (zh) | 2013-09-29 | 2015-04-15 | Lsi公司 | 非二进制的分层低密度奇偶校验解码器 |
KR101599336B1 (ko) | 2014-04-22 | 2016-03-04 | 아주대학교 산학협력단 | 저밀도 패리티 검사 코드의 복호화 방법 및 그 장치 |
GB2525430B (en) * | 2014-04-25 | 2016-07-13 | Ibm | Error-correction encoding and decoding |
US9344116B2 (en) * | 2014-05-29 | 2016-05-17 | Yuan Ze University | Method for determining layer stoppage in LDPC decoding |
CN105304142B (zh) * | 2014-06-20 | 2019-01-11 | 群联电子股份有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
-
2016
- 2016-07-19 KR KR1020160091397A patent/KR20180009558A/ko unknown
-
2017
- 2017-07-18 US US15/652,521 patent/US10324785B2/en active Active
- 2017-07-19 CN CN201710590347.XA patent/CN107634764B/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11128315B2 (en) | 2019-03-27 | 2021-09-21 | SK Hynix Inc. | Error correction decoder |
CN112838872A (zh) * | 2019-11-25 | 2021-05-25 | 中国科学院微电子研究所 | 卫星导航用ldpc码译码方法、译码器及接收机 |
KR102505857B1 (ko) * | 2021-11-15 | 2023-03-06 | 삼성전자 주식회사 | 스트롱 에러 정보를 관리하는 메모리 컨트롤러 및 그 동작방법 |
US11886293B2 (en) | 2021-11-15 | 2024-01-30 | Samsung Electronics Co., Ltd. | Memory controller managing strong error information and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
US20180024879A1 (en) | 2018-01-25 |
US10324785B2 (en) | 2019-06-18 |
CN107634764A (zh) | 2018-01-26 |
CN107634764B (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10102904B2 (en) | Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell | |
US9819361B2 (en) | List decoding method for polar code and memory system using the same | |
CN107634764B (zh) | 使用低密度奇偶校验码的解码器及存储控制器 | |
US9647695B2 (en) | Memory controllers and flash memory reading methods | |
US9411679B2 (en) | Code modulation encoder and decoder, memory controller including them, and flash memory system | |
US9281839B2 (en) | Hard-decision decoding method and low-density parity-check decoder using same | |
KR102257050B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US20180350441A1 (en) | Semiconductor memory system and operating method thereof | |
US10911068B2 (en) | Error correction circuit and method of operating the same | |
US10120753B2 (en) | Methods and apparatuses for error correction | |
KR102667783B1 (ko) | Ecc 관련 데이터를 키-밸류 맵핑 정보에서 관리하는 오브젝트 스토리지 시스템 | |
KR20200079811A (ko) | 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템 | |
US20130318419A1 (en) | Flash memory system including read counter logic | |
KR102605633B1 (ko) | 컨트롤러 및 그것의 동작 방법 | |
CN116954984A (zh) | Crc终止时的准确ber报告 | |
KR102632690B1 (ko) | 비휘발성 메모리 장치 및 그 프로그램 방법 | |
US9985647B2 (en) | Encoder and decoder design for near-balanced codes | |
CN107301873B (zh) | 译码方法、存储器储存装置及存储器控制电路单元 | |
CN110806947B (zh) | 预测错误校正装置、其操作方法和用该装置的存储器*** | |
US20240096411A1 (en) | Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell | |
KR20240048306A (ko) | G-ldpc 인코더, g-ldpc 인코딩 방법 및 스토리지 장치 | |
KR20240085385A (ko) | 오류 정정 디코딩 실패 여부를 빠르게 판단하는 스토리지 장치 및 그 동작 방법 | |
CN116825173A (zh) | 使用动态位翻转准则的位翻转解码器 | |
KR20230163847A (ko) | 신드롬 가중치를 기초로 신뢰성 데이터를 결정하는 컨트롤러 및 그 동작 방법 |