KR102475279B1 - 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 - Google Patents
컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR102475279B1 KR102475279B1 KR1020170174168A KR20170174168A KR102475279B1 KR 102475279 B1 KR102475279 B1 KR 102475279B1 KR 1020170174168 A KR1020170174168 A KR 1020170174168A KR 20170174168 A KR20170174168 A KR 20170174168A KR 102475279 B1 KR102475279 B1 KR 102475279B1
- Authority
- KR
- South Korea
- Prior art keywords
- sub
- codeword
- data
- decoding
- matrix
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
-
- 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/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1154—Low-density parity-check convolutional codes [LDPC-CC]
-
- 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/3972—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using sliding window techniques or parallel windows
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 개시의 기술적 사상의 일측면에 따른 컨볼루션 타입의 저밀도 패리티 체크 코드에 대응한 패리티 체크 매트릭스를 이용하여 디코딩을 수행하는 메모리 컨트롤러의 동작 방법은, 제1 서브 코드워드 및 제2 서브 코드워드를 포함하는 상기 코드워드를 적어도 하나의 메모리 장치로부터 수신하는 단계, 상기 패리티 체크 매트릭스에 포함되고, 상기 제1 서브 코드워드와 연관된 제1 서브 매트릭스를 기반으로 설정된 제1 방향의 슬라이딩 윈도우를 이용하여 상기 제1 서브 코드워드를 제1 데이터로 디코딩하는 단계 및 상기 패리티 체크 매트릭스에 포함되고, 상기 제2 서브 코드워드와 연관된 제2 서브 매트릭스를 기반으로 설정된 제2 방향의 슬라이딩 윈도우를 이용하여 상기 제2 서브 코드워드를 제2 데이터로 디코딩하는 단계를 포함한다.
Description
본 개시의 기술적 사상은 메모리 컨트롤러에 관한 것으로, 구체적으로는 메모리 동작을 위하여 데이터에 대한 인코딩 동작 및 디코딩 동작을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법에 관한 것이다.
컨볼루션 타입의 저밀도 패리티 체크 코드(low density parity check code; 이하, LDPC 코드), 예를 들면, 공간적으로 연결된(spatially coupled) LDPC 코드를 기반으로 코드워드에 대한 디코딩을 수행할 때에, 전체 코드워드 중 일부만으로 슬라이딩 윈도우 디코딩을 수행할 수 있다. 이러한 디코딩 방식을 통해 기존 블록 LDPC 코드와 동등한 수준의 메모리 시스템의 데이터 출력 레이턴시를 확보하는 동시에 메모리 시스템은 개선된 정정 능력을 가질 수 있었다. 다만, 메모리 시스템은 길이가 긴 컨볼루션 타입의 LDPC 코드를 기반으로 인코딩 및 디코딩을 수행할 때에, 메모리 시스템으로부터 호스트가 수신하는 리드 데이터에 대한 크기 단위로 인하여, 리드 데이터를 호스트로 출력하기 위해서는 전체 코드워드를 디코딩한 후에 원하는 부분만을 리드 데이터로서 출력해야되는 문제가 있었다. 이와 같은 문제는 메모리 시스템의 데이터 출력 레이턴시 개선에 한계로 작용하였다.
본 개시의 기술적 사상이 해결하려는 과제는, 메모리 시스템의 출력 레이턴시를 개선하기 위한 디코딩 동작이 가능한 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법을 제공하는 데에 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 컨볼루션 타입의 저밀도 패리티 체크 코드에 대응한 패리티 체크 매트릭스를 이용하여 디코딩을 수행하는 메모리 컨트롤러의 동작 방법은, 제1 서브 코드워드 및 제2 서브 코드워드를 포함하는 상기 코드워드를 적어도 하나의 메모리 장치로부터 수신하는 단계, 상기 패리티 체크 매트릭스에 포함되고, 상기 제1 서브 코드워드와 연관된 제1 서브 매트릭스를 기반으로 설정된 제1 방향의 슬라이딩 윈도우를 이용하여 상기 제1 서브 코드워드를 제1 데이터로 디코딩하는 단계 및 상기 패리티 체크 매트릭스에 포함되고, 상기 제2 서브 코드워드와 연관된 제2 서브 매트릭스를 기반으로 설정된 제2 방향의 슬라이딩 윈도우를 이용하여 상기 제2 서브 코드워드를 제2 데이터로 디코딩하는 단계를 포함한다.
본 개시의 기술적 사상의 일측면에 따른 컨볼루션 타입의 저밀도 패리티 체크 코드에 대응한 패리티 체크 매트릭스를 이용하여 인코딩 및 디코딩을 수행하고, 메모리 컨트롤러 및 적어도 하나의 메모리 장치를 포함하는 메모리 시스템의 동작 방법은, 상기 메모리 컨트롤러는 호스트로부터 라이트 요청 및 데이터를 수신하는 단계, 상기 메모리 컨트롤러는 상기 패리티 체크 매트릭스에 포함된 제1 서브 매트릭스를 기반으로 상기 데이터 중에서 제1 데이터를 제1 서브 코드워드로 인코딩하는 단계, 상기 메모리 컨트롤러는 상기 패리티 체크 매트릭스에 포함된 제2 서브 매트릭스를 기반으로 상기 데이터 중에서 제2 데이터를 제2 서브 코드워드로 인코딩하는 단계 및 상기 메모리 컨트롤러는 상기 제1 서브 코드워드 및 상기 제2 서브 코드워드를 포함하는 코드워드를 상기 메모리 장치에 라이트하는 단계를 포함한다.
본 개시의 기술적 사상의 일측면에 따른 컨볼루션 타입의 저밀도 패리티 체크 코드에 대응한 패리티 체크 매트릭스를 이용하여 디코딩을 수행하는 메모리 컨트롤러의 동작 방법은, 상기 패리티 체크 매트릭스는, 제1 부분 패리티 체크 매트릭스, 제2 부분 패리티 체크 매트릭스 및 상기 제1 부분 패리티 체크 매트릭스와 상기 제2 부분 패리티 체크 매트릭스와 연관된 터널링(tunneling) 정보를 포함하며, 메모리 장치로부터 제1 서브 코드워드를 포함하는 코드워드를 수신하는 단계, 상기 제1 서브 코드워드와 연관된 상기 제1 부분 패리티 체크 매트릭스를 기반으로 설정된 슬라이딩 윈도우를 이용하여 상기 제1 서브 코드워드에 대한 제1 페이즈 디코딩 동작을 수행하는 단계 및 상기 제1 페이즈 디코딩 동작의 결과를 기반으로 상기 터널링 정보를 이용하여 상기 제1 서브 코드워드에 대한 제2 페이즈 디코딩 동작을 수행하는 단계를 포함한다.
본 개시의 기술적 사상에 따른 메모리 컨트롤러는 패리티 체크 매트릭스의 일부만을 이용하여 서브 코드워드 단위로 디코딩을 수행할 수 있기 때문에, 호스트로부터 요청되는 데이터를 제공하기 위해 소요되는 시간을 줄일 수 있다. 그 결과, 메모리 시스템의 데이터 출력 레이턴시는 개선될 수 있다.
또한, 본 개시의 기술적 사상에 따른 메모리 컨트롤러 또는 메모리 장치는 향후 신속한 디코딩 동작을 고려하여 코드워드를 재정렬함으로써, 효율적으로 디코딩 동작을 수행할 수 있으며, 더 나아가, 좀 더 심플한 디코딩 동작을 수행할 수 있는 효과가 있다.
도 1은 본 개시의 일 실시예에 따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 ECC 로직의 동작을 설명하기 위한 블록도이다.
도 3은 본 개시의 일 실시예에 따른 LDPC 코드에 대응하는 패리티 체크 매트릭스에 대하여 설명하기 위한 도면이다.
도 4는 패리티 체크 매트릭스의 구조에 부합하는 도 2의 ECC 인코더의 동작을 설명하기 위한 도면이다.
도 5는 메모리 장치의 메모리 동작을 설명하기 위한 도면이다.
도 6a 및 도 6b는 패리티 체크 매트릭스의 구조에 부합하는 도 2의 ECC 디코더의 동작을 설명하기 위한 도면이다.
도 7a는 패리티 체크 매트릭스의 구조에 부합하는 도 2의 ECC 인코더의 동작을 설명하기 위한 도면이고, 도 7b는 도 7a의 패리티 체크 매트릭스의 구조에서 터미네이션 패리티를 생성하는 방법을 설명하기 위한 순서도이다.
도 8a 및 도 8b는 메모리 장치의 메모리 동작을 설명하기 위한 도면이다.
도 9는 패리티 체크 매트릭스 구조에 부합하는 도 2의 ECC 디코더의 동작을 설명하기 위한 도면이다.
도 10a 및 도 10b는 메모리 장치의 메모리 동작을 설명하기 위한 도면이다.
도 11은 패리티 체크 매트릭스 구조에 부합하는 도 2의 ECC 디코더(19b)의 동작을 설명하기 위한 도면이다.
도 12a 및 도 12b는 패리티 체크 매트릭스 구조에 부합하는 도 2의 ECC 디코더의 제1 서브 코드워드에 대한 디코딩 동작을 설명하기 위한 도면이다.
도 13은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 14a 내지 도 14d는 본 개시의 일 실시예에 따른 인코딩, 디코딩 방법을 설명하기 위한 도면이다.
도 15는 패리티 체크 매트릭스의 구조에 부합하는 도 2의 ECC 인코더의 동작을 설명하기 위한 도면이다.
도 16은 본 개시의 일 실시예에 따른 터널링 패리티를 생성하는 방법을 설명하기 위한 순서도이다.
도 17은 본 개시의 일 실시예에 따른 디코딩 동작을 설명하기 위한 순서도이다.
도 18 내지 도 20b는 도 17의 제2 페이즈 디코딩 동작의 다양한 실시예를 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시예에 따른 ECC 로직의 동작을 설명하기 위한 블록도이다.
도 3은 본 개시의 일 실시예에 따른 LDPC 코드에 대응하는 패리티 체크 매트릭스에 대하여 설명하기 위한 도면이다.
도 4는 패리티 체크 매트릭스의 구조에 부합하는 도 2의 ECC 인코더의 동작을 설명하기 위한 도면이다.
도 5는 메모리 장치의 메모리 동작을 설명하기 위한 도면이다.
도 6a 및 도 6b는 패리티 체크 매트릭스의 구조에 부합하는 도 2의 ECC 디코더의 동작을 설명하기 위한 도면이다.
도 7a는 패리티 체크 매트릭스의 구조에 부합하는 도 2의 ECC 인코더의 동작을 설명하기 위한 도면이고, 도 7b는 도 7a의 패리티 체크 매트릭스의 구조에서 터미네이션 패리티를 생성하는 방법을 설명하기 위한 순서도이다.
도 8a 및 도 8b는 메모리 장치의 메모리 동작을 설명하기 위한 도면이다.
도 9는 패리티 체크 매트릭스 구조에 부합하는 도 2의 ECC 디코더의 동작을 설명하기 위한 도면이다.
도 10a 및 도 10b는 메모리 장치의 메모리 동작을 설명하기 위한 도면이다.
도 11은 패리티 체크 매트릭스 구조에 부합하는 도 2의 ECC 디코더(19b)의 동작을 설명하기 위한 도면이다.
도 12a 및 도 12b는 패리티 체크 매트릭스 구조에 부합하는 도 2의 ECC 디코더의 제1 서브 코드워드에 대한 디코딩 동작을 설명하기 위한 도면이다.
도 13은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 14a 내지 도 14d는 본 개시의 일 실시예에 따른 인코딩, 디코딩 방법을 설명하기 위한 도면이다.
도 15는 패리티 체크 매트릭스의 구조에 부합하는 도 2의 ECC 인코더의 동작을 설명하기 위한 도면이다.
도 16은 본 개시의 일 실시예에 따른 터널링 패리티를 생성하는 방법을 설명하기 위한 순서도이다.
도 17은 본 개시의 일 실시예에 따른 디코딩 동작을 설명하기 위한 순서도이다.
도 18 내지 도 20b는 도 17의 제2 페이즈 디코딩 동작의 다양한 실시예를 설명하기 위한 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일
실시예에
따른 메모리 시스템(1)을 개략적으로 나타내는
블록도이다
.
도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(10) 및 메모리 장치(20)를 포함할 수 있다. 도 1에 도시된 메모리 시스템(10)은 메모리 카드, USB 메모리, SSD(solid state drive) 등과 같은 비휘발성 메모리를 기반으로 하는 데이터 저장 매체들 중 어느 하나에 해당될 수 있다. 메모리 장치(20)는 메모리 셀 어레이(22) 및 메모리 컨트롤러(10)와의 데이터 등의 송수신을 위한 인터페이스(24)를 포함할 수 있다. 메모리 셀 어레이(22)는 메모리 셀들의 구조에 따라, 기판과 수평 방향으로 형성되는 2차원 구조(또는, 수평 구조)이거나, 기판과 수직 방향으로 형성되는 3차원 구조(또는, 수직 구조)일 수 있다. 메모리 셀 어레이(22)에 포함된 메모리 셀은 비휘발성 메모리 셀일 수 있으며, 예를 들면, 메모리 셀 어레이(22)는 낸드(NAND) 플래쉬 메모리 셀 어레이 또는 노아(NOR) 플래쉬 메모리 셀 어레이일 수 있다. 이하에서는, 복수의 메모리 셀들이 플래쉬 메모리 셀들인 경우를 예로 하여 본 발명의 실시예들을 상술하기로 한다. 그러나, 본 발명은 이에 한정되지 아니하고, 다른 실시예에서, 복수의 메모리 셀들은 RRAM(resistive RAM), PRAM(phase change RAM) 또는 MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
메모리 컨트롤러(10)는 호스트(HOST)의 요청에 응답하여 메모리 장치(20)에 대한 라이트(또는, 프로그램), 리드, 이레이즈 동작 등의 메모리 동작을 제어할 수 있다. 메모리 컨트롤러(10)는 호스트 인터페이스(11), 중앙처리장치(또는, 프로세서)(13), 메모리 인터페이스(15), 램(17) 및 부분 디코딩 가능 ECC(error checking & correcting) 로직(19)을 포함할 수 있다. 이하에서, 부분 디코딩 가능 ECC 로직(19)은 서술의 편의상 ECC 로직(19)으로 서술한다.
메모리 컨트롤러(10)는 호스트 인터페이스(11)를 통해 호스트(HOST)와 데이터 등을 송수신하고, 메모리 인터페이스(15)를 통해 메모리 장치(20)와 데이터 등을 송수신할 수 있다. 호스트 인터페이스(11)는 PATA 버스(parallel AT attachment bus), SATA 버스(serial AT attachment bus), SCSI(small computer system interface), USB, PCIe 등을 통해 호스트(HOST)와 연결될 수 있다. 중앙처리장치(13)는 메모리 장치(20)에 대한 전반적인 동작들(예를 들면, 라이트, 리드, 파일 시스템 관리)을 제어할 수 있다. 램(17)은 중앙처리장치(13)의 제어에 따라 동작하며, 워크 메모리(work memory), 버퍼 메모리(memory), 캐시 메모리(cache memory) 등으로 사용될 수 있다. 램(17)이 워크 메모리로 사용되는 경우에, 중앙처리장치(13)에 의해 처리되는 데이터가 임시 저장될 수 있다. 램(17)이 버퍼 메모리로 사용되는 경우에는, 램(17)은 호스트(HOST)에서 메모리 장치(20)로 또는 메모리 장치(20)에서 호스트(HOST)로 전송될 데이터를 버퍼링하는 데에 사용될 수 있다. 더 나아가, 디코딩 가능 ECC부(19)가 호스트(HOST)로부터 수신한 데이터를 인코딩하거나, 메모리 장치(20)로부터 수신한 코드워드를 디코딩할 때에, 램(17)에 인코딩 및 디코딩 동작을 위한 버퍼로 사용될 수 있다.
ECC 로직(19)은 메모리 장치(20)로부터 코드워드를 수신하고, 이에 대한 에러 정정 디코딩을 수행할 수 있다. 즉, 메모리 셀 어레이(22)의 메모리 셀의 열화, 메모리 동작 관련 노이즈 등으로 인하여, 메모리 장치(20)로부터 수신한 코드워드는 페일 비트(fail bit)를 포함할 수 있기 때문에, ECC 로직(19)은 코드워드에 대한 에러를 정정하여, 무결성(integrity)가 확보된 데이터를 호스트(HOST)에 제공할 수 있다. ECC 로직(19)은 컨볼루션 타입의 LDPC 코드, 예를 들어, 공간적으로 연결된 LDPC 코드를 기반으로 코드워드에 대한 디코딩을 수행할 수 있다. LDPC 코드는 반복적인 디코딩을 수행할 수 있는 선형 블록 코드의 한 종류이며, LDPC 코드는 하나의 패리티 체크 매트릭스로 구현될 수 있다. 이하에서는, LDPC 코드에 대응하는 패리티 체크 매트릭스를 중심으로 ECC 로직(19)의 동작을 서술하겠으며, 코드워드는 LDPC 코드에 대응하는 하나의 패리티 체크 매트릭스를 통해 인코딩되어 생성되거나 디코딩될 수 있는 크기 단위를 갖는 데이터 집합임을 가정하겠다. 또한, 코드워드는 서브 코드워드들을 포함하고, 서브 코드워드의 크기 단위는 리드 요청에 응답하여 메모리 컨트롤러(10)가 호스트(HOST)로 송신하는 데이터 크기 단위 이하일 수 있다.
일 실시예로, ECC 로직(19)은 서브 코드워드 단위로 디코딩을 수행할 수 있다. 서브 코드워드 단위로 디코딩을 수행하는 것은 부분 디코딩 동작으로 정의될 수 있다. 구체적으로, ECC 로직(19)은 패리티 체크 매트릭스의 구조에 부합하여, 서브 매트릭스 또는 부분 패리티 체크 매트릭스를 기반으로 서브 코드워드 단위로 디코딩을 수행할 수 있다. 이와 같이, ECC 로직(19)은 패리티 체크 매트릭스의 일부만을 이용하여 서브 코드워드 단위로 디코딩을 수행할 수 있기 때문에, 호스트(HOST)로부터 요청되는 데이터를 제공하기 위해 소요되는 시간을 줄일 수 있다. 그 결과, 메모리 시스템(1)의 데이터 출력 레이턴시는 개선될 수 있다.
일 실시예로, ECC 로직(19)은 서브 코드워드 단위의 디코딩이 가능하도록 서브 코드워드 단위로 인코딩을 수행할 수 있다. 구체적으로, ECC 로직(19)은 패리티 체크 매트릭스의 구조에 부합하여, 서브 매트릭스 또는 부분 패리티 체크 매트릭스를 기반으로 서브 코드워드 단위로 인코딩을 수행할 수 있다.
한편, 메모리 컨트롤러(10)는 향후 신속한 디코딩이 수행될 수 있도록 ECC 로직(19)의 인코딩 동작 결과 생성된 코드워드를 재정렬하여 메모리 장치(20)에 제공할 수 있다. 메모리 장치(20)는 재정렬된 코드워드를 그대로 메모리 셀 어레이(22)에 저장하고, 메모리 컨트롤러(10)로부터의 리드 커맨드에 응답하여 재정렬된 코드워드를 메모리 컨트롤러(10)에 제공할 수 있다. 일 실시예로, 메모리 컨트롤러(10)는 향후 신속한 디코딩이 수행될 수 있도록 ECC 로직(19)의 인코딩 동작 수행 전에 데이터를 미리 재정렬할 수 있다. 또한, 메모리 장치(20)는 향후 신속한 디코딩이 수행될 수 있도록 저장된 코드워드를 메모리 컨트롤러(10)로부터의 리드 커맨드에 응답하여 출력하기 전에, 저장된 코드워드를 재정렬하여 메모리 컨트롤러(10)에 출력할 수 있다. 이와 같이, 메모리 컨트롤러(10) 또는 메모리 장치(20)는 향후 신속한 디코딩 동작을 고려하여 코드워드를 재정렬함으로써, 효율적으로 디코딩 동작을 수행할 수 있으며, 더 나아가, 심플한 부분 디코딩 동작을 수행할 수 있는 효과가 있다.
도 2는 본 개시의 일 실시예에 따른 ECC 로직(19)의 동작을 설명하기 위한 블록도이다. 이하에서는, ECC 로직(19)의 동작을 설명하기 위한 메모리 시스템(1)의 일부 구성만을 도시하였으며, 구체적인 메모리 시스템(1)의 구성은 도 1과 유사하다.
도 2를 참조하면, ECC 로직(19)은 ECC 인코더(19a) 및 ECC 디코더(19b)를 포함할 수 있다. ECC 인코더(19a)는 페일 비트를 정정하기 위한 에러 정정 코드(ECC; error correction code)를 생성할 수 있다. ECC 인코더(19a)는 호스트로부터 수신한 데이터(Data)를 인코딩하여, 코드워드(CW)를 생성할 수 있다. 코드워드(CW)는 적어도 두 개의 서브 코드워드들(SubCWs) 및 터미네이션(termination) 패리티(PT)를 포함할 수 있다. 터미네이션 패리티(PT)는 코드워드(CW)의 신드롬(syndrome)이 제로 벡터가 되는 것을 보장하기 위한 비트 데이터일 수 있다. 이에 대한 구체적인 내용은 도 3에서 후술한다. 각 서브 코드워드들(SubCWs)은 데이터(Data)에 대응하는 정보 비트들 및 에러 정정을 위한 패리티를 포함할 수 있다. 이하에서는, 패리티는 복수의 패리티 비트들을 포함하고, 터미네이션 패리티는 복수의 터미네이션 패리티 비트들을 포함할 수 있음을 가정한다. 일 예로, ECC 인코더(19a)는 패리티 체크 매트릭스를 제1 서브 매트릭스 및 제2 서브 매트릭스로 구분하고, 제1 서브 매트릭스를 기반으로 데이터(Data)의 일부를 인코딩하여 제1 서브 코드워드를 생성하고, 제2 서브 매트릭스를 기반으로 데이터(Data)의 나머지를 인코딩하여 제2 서브 코드워드를 생성할 수 있다.
메모리 인터페이스(15)는 ECC 인코더(19a)로부터 코드워드(CW)를 수신하여, 메모리 장치(20)로 출력할 수 있다. 이 때에, 메모리 인터페이스(15)는 시퀀스 재정렬부(15a)를 포함할 수 있으며, 시퀀스 재정렬부(15a)는 코드워드(CW)의 서브 코드워드들(SubCWs), 터미네이션 패리티(PT)간의 순서를 재정렬하거나, 하나의 서브 코드워드(SubCW)에 포함된 비트들의 순서를 재정렬할 수 있다. 메모리 장치(20)는 코드워드(CW)를 수신하여, 메모리 셀 어레이에 저장할 수 있으며, 이후, 메모리 컨트롤러(10)의 리드 커맨드에 응답하여 메모리 장치(20)에 저장된 코드워드(CW')를 메모리 컨트롤러(10)에 출력할 수 있다. 전술한 바와 같이, 메모리 장치(20)의 메모리 셀의 열화 등으로 인하여 코드워드(CW')는 페일 비트들을 포함할 수 있다. 메모리 인터페이스(15)는 메모리 장치(20)로부터 수신한 코드워드(CW')를 ECC 디코더(19b)에 제공할 수 있다. 도 2에서는 메모리 인터페이스(15)에서 ECC 디코더(19b)로 코드워드(CW')가 바로 제공되는 것으로 도시되어 있으나, 이에 국한되지 않고, 메모리 컨트롤러(10)는 소정의 버퍼(예를 들면, 도 1의 램(17))를 더 포함할 수 있으며, 버퍼는 코드워드(CW')를 임시적으로 저장할 수 있다. ECC 디코더(19b)는 코드워드의 일부를 버퍼로부터 선택적으로 리드(또는, 수신)하여 서브 코드워드 단위로 디코딩 동작을 수행할 수 있다. ECC 디코더(19b)는 서브 코드워드 단위로 디코딩 동작을 수행하며, 메모리 컨트롤러(10)에서 호스트로 출력하는 데이터 크기 단위에 상응하는 데이터(Data)에 대한 디코딩이 완료된 때에, 메모리 컨트롤러(10)는 디코딩이 완료된 데이터(Data)를 바로 호스트로 출력할 수 있다.
도 3은 본 개시의 일
실시예에
따른
LDPC
코드에 대응하는 패리티 체크 매트릭스(H)에 대하여 설명하기 위한 도면이다.
도 3을 참조하면, 터너 그래프는 예시적으로 12개의 체크 노드(S1~S12)들 및 27개의 변수 노드들, 즉, 15개의 정보 노드들(X1, X2, X4, X5, X7, X8, X10, X11, X13, X14, X16, X17, X19, X20, X22), 7개의 패리티 노드들(X3, X6, X9, X12, X15, X18, X21) 및 5개의 터미네이션 패리티 노드들(X23, X24, X25, X26, X27)로 구성될 수 있다. 패리티 체크 매트릭스(H)의 i 번째 열(단, i는 정수)과 j번째 행(단, j는 정수)은 각각 변수 노드 Xi와 체크 노드 Sj와 대응될 수 있다. 한편, 패리티 체크 방정식은 하나의 체크 노드에 연결된 변수 노드로 나타낼 수 있다. 예를 들어, 체크 노드 S1에는 두 개의 정보 노드들(X1, X2) 및 패리티 노드(X3)가 연결될 수 있으며, 이를 통해 하나의 패리티 체크 방정식이 도출될 수 있다. 패리티 체크 방정식은 H●CWT=0(단, CW는 코드워드에 대응하는 매트릭스)을 구성하는 수식인 바, 패리티 체크 방정식은 패리티 체크 매트릭스(H)에 의해 결정될 수 있다.
패리티 체크 매트릭스(H)은 열이 27개로 구성되어 있으므로, 패리티 체크 매트릭스(H)을 기반으로 생성된 코드워드의 길이는 27비트로 구성될 수 있다. 코드워드는 호스트로부터 수신한 데이터에 대응하는 정보 비트들, 페일 비트를 체크하고, 정정하기 위한 패리티 및 터미네이션 패리티를 포함할 수 있다. 특히, 터미네이션 패리티는 메모리 장치의 코드워드에 대한 수신 품질을 보장하기 위한 것으로, 메모리 컨트롤러 및 메모리 장치에서 값을 미리 알고 있는 가상의 정보 비트를 이용하여 패리티 체크 매트릭스(H)를 기반으로 터미네이션 패리티가 생성될 수 있다. 다시 말해, 터미네이션 패리티는 전체 코드워드의 신드롬이 제로 벡터가 되는 것을 보장하기 위한 비트 데이터일 수 있다. 전체 코드워드의 신드롬이란 H●CWT 의 연산 결과일 수 있다. 일 예로, 터미네이션 패리티는 제8 및 제9 베이스 매트릭스(BM8, BM9) 각각의 일부 또는 전부를 기반으로 생성될 수 있다. 다만, 도 3에 도시된 패리티 체크 매트릭스(H)는 예시적인 실시예에 불과한 바, 이에 국한되지 않으며, 다양하게 설계될 수 있다. 또한, 코드워드의 코드 레이트 및 변수 노드의 정도(degree) 값에 따라 터미네이션 패리티는 하나의 서브 블록 LPDC 코드내에 존재할 수 있고, 복수의 서브 블록 LPDC 코드에 걸쳐 존재할 수 있다.
도 4는 패리티 체크 매트릭스(Ha)의 구조에 부합하는 도 2의
ECC
인코더(19a)의 동작을 설명하기 위한 도면이다.
도 2 및 도 4를 참조하면, 패리티 체크 매트릭스(Ha)는 제1 및 제2 서브 매트릭스(Sub_M1a, Sub_M2a)를 포함할 수 있으며, 터미네이션 패리티를 생성하기 위한 터미네이션 매트릭스(BM_Ta)는 제2 서브 매트릭스(Sub_M2a) 내의 마지막 부분에 배치될 수 있다. 즉, 제12 베이스 매트릭스(BM12)는 터미네이션 매트릭스(BM_Ta)에 해당될 수 있다. ECC 인코더(19a)는 호스트로부터 수신한 데이터(Data) 중 제1 데이터(Data_1)를 제1 서브 매트릭스(Sub_M1a)를 기반으로 인코딩하여, 제1 서브 코드워드(SubCW_1a)를 생성하고, 데이터(Data) 중 제2 데이터(Data_2)를 제2 서브 매트릭스(Sub_M2a)를 기반으로 인코딩하여, 제2 서브 코드워드(SubCW_2a)를 생성할 수 있다. 제1 및 제2 서브 코드워드(SubCW_1a, SubCW_2a) 각각은 정보 비트들이 배치되는 정보 섹터(I_Sec) 및 패리티가 배치되는 패리티 섹터(P_Sec)를 포함할 수 있다. ECC 인코더(19a)는 제2 데이터(Data_2)에 대한 인코딩 수행시에 제12 베이스 매트릭스(BM12)를 이용하여 터미네이션 패리티를 생성할 수 있다. 코드워드(CWa)는 제1 서브 코드워드, 제2 서브 코드워드 및 터미네이션 패리티를 포함할 수 있다. 터미네이션 패리티는 제2 서브 코드워드(SubCW_2a) 후단의 터미네이션 패리티 섹터(PT_sec)에 배치될 수 있다. 메모리 컨트롤러(10)는 위와 같이 인코딩된 코드워드(CWa)를 메모리 장치(20)로 출력할 수 있다.
일 실시예로, 메모리 컨트롤러(10)는 향후 도 6a 등에서 설명될 디코딩을 고려하여, 인코딩이 수행 전에, 데이터를 미리 재정렬할 수 있다. 일 예로, 메모리 컨트롤러(10)는 제1 케이스(case1)에서 제1 데이터(Data_1)는 재정렬하지 않고, 제2 데이터(Data_2)를 리버스(reverse)하여, 제2 데이터(Data_2)의 MSB(most significant bit)부터 LSB(least significant bit) 방향으로 인코딩되도록 제어할 수 있다. 다만, 메모리 컨트롤러(10)는 제2 케이스(case2)와 같이, 제1 데이터(Data_1) 및 제2 데이터(Data_2)에 대한 별도의 재정렬 동작을 제어하지 않을 수 있다.
도 5는 메모리 장치(100)의 메모리 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 메모리 장치(100)는 컨트롤 로직(110), 페이지 버퍼 회로(120), 데이터 입출력 회로(130), 전압 발생기(140), 로우 디코디(150) 및 메모리 셀 어레이(160)를 포함할 수 있다. 데이터 입출력 회로(130)는 도 1의 메모리 장치(20)의 인터페이스(24)와 대응될 수 있다.
메모리 셀 어레이(160)는 워드라인들(WLs; Word Line(s)), 스트링 선택 라인 (SSL; String Select Line(s)) 및 접지 선택 라인들(GSLs; Ground Select Lines)을 통해 로우 디코더(150)에 연결되고, 비트라인들(BLs; Bit Lines)을 통해 데이터 입출력 회로(130)에 연결될 수 있다. 메모리 셀 어레이(160)는 복수 개의 메모리 블록들을 포함할 수 있다.
로우 디코더(150)는 어드레스를 디코딩하여 메모리 셀 어레이(160)의 워드 라인들(WLs) 중 어느 하나를 선택할 수 있다. 로우 디코더(150)는 메모리 셀 어레이(160)의 선택 워드 라인(WL)에 전압 발생기(140)로부터 제공되는 워드 라인 전압(VWL)을 제공할 수 있다. 페이지 버퍼 회로(120)는 제어 로직(110)에 의해 수행되는 동작에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다.
제어 로직(110)은 메모리 컨트롤러로부터 수신한 커맨드(CMD) 및 어드레스(ADDR)를 기반으로 메모리 동작을 제어할 수 있다. 데이터 입출력 회로(130)는 제1 및 제2 코드워드(CW1a, CW2a)를 수신할 수 있다. 데이터 입출력 회로(130)는 수신한 제1 및 제2 코드워드(CW1a, CW2a)를 순차적으로, 예를 들면, 각각의 코드워드(CW1a, CW2a)를 LSB에서 MSB 순으로, 페이지 버퍼 회로(120)에 제공할 수 있다. 페이지 버퍼 회로(120)는 미리 설정된 크기의 페이지 버퍼(BF)를 포함할 수 있으며, 페이지 버퍼(BF)에 제1 및 제2 코드워드(CW1a, CW2a)가 임시적으로 라이트될 수 있다. 페이지 버퍼(BF)의 크기는 메모리 셀 어레이(160)에 라이트되거나, 메모리 셀 어레이(160)로부터 리드되는 데이터의 최소 크기 단위에 해당할 수 있다. 일 예로, 제1 코드워드(CW1a)는 제1 서브 코드워드(SubCW_11a), 제2 서브 코드워드(SubCW_12a) 및 터미네이션 패리티(PT) 순으로 페이지 버퍼(BF)에 저장되고, 제2 코드워드(CW2a)는 제1 서브 코드워드(SubCW_21a), 제2 서브 코드워드(SubCW_22a) 및 터미네이션 패리티(PT) 순으로 페이지 버퍼(BF)에 저장될 수 있다. 이후, 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 메모리 셀 어레이(160)에 페이지 버퍼(BF)에 저장된 코드워드들(CW1a, CW2a)을 하나의 단위(예를 들면, 페이지(page) 단위)로서 메모리 셀 어레이(160)에 라이트할 수 있다.
제어 로직(110)은 메모리 컨트롤러로부터 리드 커맨드(CMD) 및 어드레스(ADDR)를 수신할 수 있다. 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 메모리 셀 어레이(160)에 저장된 코드워드들(CW1a', CW2a')을 리드하여, 페이지 버퍼(BF)에 임시적으로 라이트할 수 있다. 이후, 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 페이지 버퍼(BF)에 저장된 코드워드들(CW1a', CW2a')을 데이터 입출력 회로(130)를 통해 메모리 컨트롤러로 출력할 수 있다.
도 5에서는 두 개의 코드워드들의 데이터 크기와 상응하는 크기를 갖는 페이지 버퍼(BF)를 도시하고 있으나, 이는 예시적 실시예에 불과하며, 이에 국한되지 않고, 메모리 동작 스펙에 따라서 다양한 크기로 페이지 버퍼(BF)가 구현될 수 있다.
도 6a 및 도 6b는 패리티 체크 매트릭스(Ha)의 구조에 부합하는 도 2의 ECC 디코더(19b)의 동작을 설명하기 위한 도면이다. 도 6a는 도 4의 제1 케이스(case1)의 경우를 가정하여 디코딩을 수행하는 것을 나타내는 도면이고, 도 6b는 도 4의 제2 케이스(case2)의 경우를 가정하여 디코딩을 수행하는 것을 나타내는 도면이다.
도 2 및 도 6a를 참조하면, ECC 디코더(19b)는 제1 서브 코드워드(SubCW_1a')와 연관된 제1 서브 매트릭스(Sub_M1a)를 기반으로 설정된 제1 방향의 슬라이딩 윈도우(WD_1a, WD_2a,..)를 이용하여 제1 서브 코드워드(Sub_M1a)를 제1 데이터(Data_1)로 디코딩할 수 있다. ECC 디코더(19b)는 제1 방향의 슬라이딩 윈도우(WD_1a, WD_2a,..) 각각에 포함된 행과 열 성분으로 도출되는 패리티 체크 방정식을 이용하여 제1 서브 코드워드(Sub_M1a)를 디코딩할 수 있다. 구체적으로, ECC 디코더(19b)는 슬라이딩 윈도우(WD_1a, WD_2a,..)를 패리티 체크 매트릭스(Ha)를 기준으로 우측 하단을 향하는 대각선 방향으로 이동시키면서 제1 서브 코드워드(SubCW_1a')에 대한 디코딩을 수행할 수 있으며, 이에 따라, 제1 서브 코드워드(SubCW_1a')는 LSB에서 MSB 방향으로 디코딩될 수 있다. 그 결과, 디코딩이 수행됨에 따라 제1 데이터(Data_1)의 LSB가 먼저 생성되고, 순차적으로 MSB가 생성될 수 있다. 디코딩이 완료된 섹터에 대응하는 제1 데이터(Data_1)의 비트들은 우선적으로 호스트(HOST)로 출력될 수 있다.
ECC 디코더(19b)는 제2 서브 코드워드(SubCW_2a')와 연관된 제2 서브 매트릭스(Sub_M2a)를 기반으로 설정된 제2 방향의 슬라이딩 윈도우(WD_1b, WD_2b,..)를 이용하여 제2 서브 코드워드(Sub_M2a)를 제2 데이터(Data_2)로 디코딩할 수 있다. 구체적으로, ECC 디코더(19b)는 슬라이딩 윈도우(WD_1b, WD_2b,..)를 패리티 체크 매트릭스(Ha)를 기준으로 좌측 상단을 향하는 대각선 방향으로 이동시키면서 제2 서브 코드워드(SubCW_2a')에 대한 디코딩을 수행할 수 있으며, 제2 서브 코드워드(SubCW_2a')는 MSB에서 LSB 방향으로 디코딩될 수 있다. 한편, 도 4의 제1 케이스(case1)에서는 제2 데이터(Data_2)를 인코딩하기 전에 미리 리버스된 상태이기 때문에, 디코딩 수행됨에 따라, 제2 데이터(Data_2)의 LSB가 먼저 생성되고, 순차적으로 MSB가 생성될 수 있다. 디코딩이 완료된 섹터에 대응하는 제2 데이터(Data_2)의 비트들은 우선적으로 호스트(HOST)로 출력될 수 있다.
도 6b를 더 참조하면, 도 6a와 달리, 제2 케이스(case2)에서는 제2 데이터(Data_2)에 대한 인코딩 수행 전 별도의 재정렬 동작을 수행하지 않는 바, 제2 서브 코드워드(SubCW_2a')에 대한 디코딩이 수행됨에 따라, 제2 데이터(Data_2)의 MSB가 먼저 생성되고, 순차적으로 LSB가 생성될 수 있다. 이에 따라, 제2 서브 코드워드(SubCW_2a')에 대한 디코딩이 완료되어 전체 제2 데이터(Data_2)가 생성된 때에, 제2 데이터(Data_2)의 LSB부터 호스트(HOST)로 출력될 수 있다.
도 7a는 패리티 체크 매트릭스(
Hb
)의 구조에 부합하는 도 2의
ECC
인코더(19a)의 동작을 설명하기 위한 도면이고, 도 7b는 도 7a의 패리티 체크 매트릭스(Hb)의 구조에서
터미네이션
패리티를 생성하는 방법을 설명하기 위한
순서도이다
.
도 2 및 도 7a를 참조하면, 패리티 체크 매트릭스(Hb)는 제1 및 제2 서브 매트릭스(Sub_M1b, Sub_M2b)를 포함할 수 있으며, 터미네이션 패리티를 생성하기 위한 터미네이션 매트릭스(BM_Tb)는 제1 서브 매트릭스(Sub_M1b)와 제2 서브 매트릭스(Sub_M2b)간의 경계에 배치될 수 있다. 즉, 제6 베이스 매트릭스(BM6)의 일부 및 제7 베이스 매트릭스(BM7)의 일부는 터미네이션 매트릭스(BM_Tb)에 해당될 수 있다. ECC 인코더(19a)는 호스트로부터 수신한 데이터(Data) 중 제1 데이터(Data_1)를 제1 서브 매트릭스(Sub_M1b)를 기반으로 인코딩하여, 제1 서브 코드워드(SubCW_1b)를 생성하고, 데이터(Data) 중 제2 데이터(Data_2)를 제2 서브 매트릭스(Sub_M2b)를 기반으로 인코딩하여, 제2 서브 코드워드(SubCW_2b)를 생성할 수 있다.
다만, 도 4의 패리티 체크 매트릭스(Ha)의 구조와 달리, 도 7a에서는 제1 서브 매트릭스(Sub_M1b)와 제2 서브 매트릭스(Sub_M2b)간의 경계에 터미네이션 매트릭스(BM_Tb)가 배치되었기 때문에, 터미네이션 패리티는 제1 및 제2 서브 코드워드(SubCW_1b, SubCW_2b)와 연관될 수 있다. 이에 따라, 터미네이션 패리티는 제1 데이터(Data_1)에 대한 인코딩 결과와 제2 데이터(Data_2)에 대한 인코딩 결과를 이용하여 생성될 수 있다.
구체적인 터미네이션 패리티의 생성 방법을 설명하기 위해, 도 7b를 더 참조하면, 제1 데이터(Data_1)를 제1 서브 매트릭스(Sub_M1b)를 기반으로 인코딩하여, 제1 서브 코드워드(SubCW_1b)를 생성하고(S100), 제2 데이터(Data_2)를 제2 서브 매트릭스(Sub_M2b)를 기반으로 인코딩하여, 제2 서브 코드워드(SubCW_2b)를 생성한다(S110). 터미네이션 패리티와 연관된 터미네이션 매트릭스(BM_Tb)를 기반으로 제1 서브 코드워드(SubCW_1b)의 제1 부분 신드롬을 획득하고(S120), 터미네이션 패리티와 연관된 터미네이션 매트릭스(BM_Tb)를 기반으로 제2 서브 코드워드(SubCW_2b)를 기반으로 제2 서브 코드워드(SubCW_2b)의 제2 부분 신드롬을 획득한다(S130). 제1 부분 신드롬 및 제2 부분 신드롬을 이용하여 터미네이션 패리티를 생성한다(S140)
도 7a로 돌아오면, 메모리 컨트롤러(10)는 코드워드(CWb) 상의 터미네이션 패리티 섹터(PT_sec)를 제2 서브 코드워드(SubCW_2b)의 후단에 위치시킬 수 있다. 이와 관련된 메모리 장치(20)의 동작 및 ECC 디코더(19b)의 동작은 도 8a 내지 도9 에서 서술한다. 또한, 메모리 컨트롤러(10)는 코드워드(CWb) 상의 터미네이션 패리티 섹터(PT_sec)를 제1 서브 코드워드(SubCW_1b)와 제2 서브 코드워드(SubCW_2b) 사이에 위치시킬 수 있다. 이와 관련된 메모리 장치(20)의 동작 및 ECC 디코더(19b)의 동작은 도 10a 내지 도 11에서 서술한다.
도 8a 및 도 8b는 메모리 장치(100)의 메모리 동작을 설명하기 위한 도면이다. 이하에서, 메모리 장치(100)의 구성은 도 5에서 서술한 바, 구체적인 내용은 생략한다.
도 8a를 참조하면, 제어 로직(110)은 메모리 컨트롤러로부터 수신한 라이트 커맨드(W_CMD) 및 어드레스(ADDR)를 기반으로 라이트 동작을 제어할 수 있다. 데이터 입출력 회로(130)는 제1 및 제2 코드워드(CW1b, CW2b)를 수신할 수 있다. 데이터 입출력 회로(130)는 수신한 제1 및 제2 코드워드(CW1b, CW2b)를 순차적으로 페이지 버퍼 회로(120)에 제공할 수 있다. 페이지 버퍼 회로(120)는 미리 설정된 크기의 페이지 버퍼(BF)를 포함할 수 있으며, 제1 코드워드(CW1b)는 제1 서브 코드워드(SubCW_11b), 제2 서브 코드워드(SubCW_12b) 및 터미네이션 패리티(PT) 순으로 페이지 버퍼(BF)에 저장되고, 제2 코드워드(CW2b)는 제1 서브 코드워드(SubCW_21b), 제2 서브 코드워드(SubCW_22b) 및 터미네이션 패리티(PT) 순으로 페이지 버퍼(BF)에 저장될 수 있다. 이후, 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 메모리 셀 어레이(160)에 페이지 버퍼(BF)에 저장된 코드워드들(CW1b, CW2b)을 메모리 셀 어레이(160)에 라이트할 수 있다.
도 8b를 참조하면, 제어 로직(110)은 메모리 컨트롤러로부터 리드 커맨드(R_CMD) 및 어드레스(ADDR)를 수신할 수 있다. 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 메모리 셀 어레이(160)에 저장된 코드워드들(CW1b', CW2b')을 리드하여, 페이지 버퍼(BF)에 임시적으로 라이트할 수 있다. 이후, 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 페이지 버퍼(BF)에 저장된 코드워드들(CW1b', CW2b')을 데이터 입출력 회로(130)를 통해 메모리 컨트롤러로 출력할 수 있다.
일 실시예에 따른 제어 로직(110)은 출력 순서 관리 정보(M_Info)를 기반으로 페이지 버퍼(BF)에 저장된 코드워드들(CW1b', CW2b')을 각각 재정렬하여, 데이터 입출력 회로(130)를 통해 출력하고, 메모리 장치(100)로부터 출력되는 코드워드들(CW1b', CW2b')의 비트 순서대로 메모리 컨트롤러가 순차적인 디코딩을 수행할 수 있다. 일 실시예로, 제어 로직(110)은 출력 순서 관리 정보(M_Info)를 기반으로 'A' 어드레스 내지 'B' 어드레스에 대응하는 제1 서브 코드워드(SubCW_11b'), 'C' 어드레스 내지 'D' 어드레스에 대응하는 터미네이션 패리티(PT) 및 'B' 어드레스 내지 'C' 어드레스에 대응하는 제2 서브 코드워드(SubCW_12b') 순으로 제1 코드워드(CW1b')가 메모리 컨트롤러에 출력되도록 제어할 수 있다. 또한, 제어 로직(110)은 제2 서브 코드워드(SubCW_12b')는 역방향 어드레스, 즉, 'C' 어드레스에서 'B' 어드레스로 각각 대응하는 비트 순으로 출력되도록 제어할 수 있다. 결과적으로, 제1 서브 코드워드(SubCW_11b')는 LSB에서 MSB 순으로 출력되는 반면, 제2 서브 코드워드(SubCW_12b')는 MSB에서 LSB 순으로 출력될 수 있다. 제2 코드워드(CW2b')도 제1 코드워드(CW1b')와 동일한 방식으로 출력될 수 있다.
페이지 버퍼(BF)의 어드레스 기준으로 데이터 입출력 회로(130)에 의해 출력되는 어드레스 영역의 순서가 미리 설정되고, 어드레스 영역에 따라 정방향 출력, 역방향 출력이 미리 설정될 수 있다. 이러한 설정 정보는 출력 순서 관리 정보(M_Info)로서 제어 로직(110)에 의해 관리될 수 있다. 또한, 이는 예시적인 실시예에 불과한 바, 이에 국한되지 않으며, 각각의 코드워드(CW1b', CW2b')의 각각의 서브 코드워드(SubCW_11b', SubCW_12b', SubCW_21b', SubCW_22b'), 터미네이션 패리티(PT)간의 출력 순서, 각각의 서브 코드워드(SubCW_11b', SubCW_12b', SubCW_21b', SubCW_22b')들의 정방향 출력, 역방향 출력등은 플래그 비트를 통해 설정될 수 있다. 제어 로직(110)은 각 코드워드(CW1b', CW2b')에 대한 플래그 비트를 각각 설정함으로써, 메모리 장치(100)가 출력하는 코드워드들(CW1b', CW2b')의 비트 순서대로 메모리 컨트롤러가 순차적인 디코딩을 수행할 수 있도록 코드워드들(CW1b', CW2b')의 출력 순서를 제어할 수 있다.
도 9는 패리티 체크 매트릭스( Hb ) 구조에 부합하는 도 2의 ECC 디코더(19b)의 동작을 설명하기 위한 도면이다. 도 9에서는 도 8b에서 서술된 방식으로 코드워드(CWb')가 메모리 장치로부터 출력된 것을 가정한다.
도 2 및 도 9를 참조하면, 메모리 장치(20)는 제1 서브 코드워드(SubCW_1b') 및 터미네이션 패리티를 순차적으로 메모리 컨트롤러(10)에 출력할 수 있다. 이후, 메모리 장치(20)는 제2 서브 코드워드(SubCW_2b')를 MSB부터 LSB 순으로 메모리 컨트롤러(10)에 출력할 수 있다. ECC 디코더(19b)는 제1 서브 코드워드(SubCW_1b') 및 터미네이션 패리티를 수신하고, 바로 제1 방향의 슬라이딩 윈도우(WD_1a, WD_2b,..)를 이용하여 제1 서브 코드워드(SubCW_1b')에 대한 디코딩을 수행할 수 있다.
ECC 디코더(19b)는 제2 서브 코드워드(SubCW_2b')를 MSB 부터 수신하기 때문에, 제2 서브 코드워드(SubCW_2b')의 MSB부터 제2 방향의 슬라이딩 윈도우(WD_1b, WD_2b,..)를 이용하여 바로 제2 서브 코드워드(SubCW_2b')에 대한 디코딩을 수행할 수 있다. ECC 디코더(19b)의 다른 구체적인 동작은 도 6b에 서술된 내용과 유사한 바, 구체적인 내용은 생략한다.
도 10a 및 도 10b는 메모리 장치(100)의 메모리 동작을 설명하기 위한 도면이다. 이하에서, 메모리 장치(100)의 구성은 도 5에서 서술한 바, 구체적인 내용은 생략한다.
도 10a를 참조하면, 제어 로직(110)은 메모리 컨트롤러로부터 라이트 커맨드(W_CMD) 및 어드레스(ADDR)를 수신하고, 도 8a와 달리, 데이터 입출력 회로(130)는 메모리 컨트롤러로부터 재정렬된 코드워드들(CW1b, CW2b)을 수신할 수 있다. 일 실시예로, 제1 코드워드(CW1b)는 제1 서브 코드워드(SubCW_11b), 터미네이션 패리티(PT) 및 리버스된 제2 서브 코드워드(SubCW_12b) 순으로 페이지 버퍼 회로(120)의 페이지 버퍼(BF)에 저장되고, 제2 코드워드(CW2b)는 제1 서브 코드워드(SubCW_21b), 터미네이션 패리티(PT) 및 리버스된 제2 서브 코드워드(SubCW_22b) 순으로 페이지 버퍼(BF)에 저장될 수 있다. 이후, 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 메모리 셀 어레이(160)에 페이지 버퍼(BF)에 저장된 코드워드들(CW1b, CW2b)을 메모리 셀 어레이(160)에 라이트할 수 있다.
도 10b를 참조하면, 제어 로직(110)은 메모리 컨트롤러로부터 리드 커맨드(R_CMD) 및 어드레스(ADDR)를 수신하고, 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 메모리 셀 어레이(160)에 저장된 코드워드들(CW1b', CW2b')을 리드하여 페이지 버퍼(BF)에 임시적으로 라이트할 수 있다. 이후, 페이지 버퍼 회로(120)는 제어 로직(110)의 제어 하에 페이지 버퍼(BF)에 저장된 코드워드들(CW1b', CW2b')을 데이터 입출력 회로(130)를 통해 메모리 컨트롤러로 출력할 수 있다.
도 11은 패리티 체크 매트릭스( Hb ) 구조에 부합하는 도 2의 ECC 디코더(19b)의 동작을 설명하기 위한 도면이다. 도 11에서는 도 10b에서 서술된 방식으로 코드워드(CWb')가 메모리 장치로부터 출력된 것을 가정한다.
도 2 및 도 11을 참조하면, 메모리 장치(20)는 제1 서브 코드워드(SubCW_1b'), 터미네이션 패리티 및 리버스된 제2 서브 코드워드(SubCW_2b')를 각각 LSB부터 MSB 순으로 메모리 컨트롤러(10)에 출력할 수 있다. ECC 디코더(19b)는 리버스된 제2 서브 코드워드(SubCW_2b')를 LSB부터 수신하나, 제2 서브 코드워드(SubCW_2b')는 메모리 컨트롤러(10)에서 인코딩 완료 후에 리버스된 형태이기 때문에, ECC 디코더(19b)는 리버스된 제2 서브 코드워드(SubCW_2b')의 LSB부터 제2 방향의 슬라이딩 윈도우(WD_1b, WD_2b,..)를 이용하여 바로 리버스된 제2 서브 코드워드(SubCW_2b')에 대한 디코딩을 수행할 수 있다. ECC 디코더(19b)의 다른 구체적인 동작은 도 9에서 서술된 내용과 유사한 바, 구체적인 내용은 생략한다.
도 12a 및 도 12b는 패리티 체크 매트릭스(
Hb
) 구조에 부합하는 도 2의
ECC
디코더(19b)의 제1 서브
코드워드(SubCW_1b')에
대한 디코딩 동작을 설명하기 위한 도면이다.
도 2 및 도 12a를 참조하면, ECC 디코더(19b)는 제1 서브 매트릭스(Sub_M1b)만을 기반으로 제1 서브 코드워드(SubCW_1b')를 디코딩할 수 있다. 즉, ECC 디코더(19b)는 제1 방향의 슬라이딩 윈도우(WD_1a~WD_na)가 제1 서브 매트릭스(Sub_M1b) 내에서만 설정될 수 있도록 제1 방향의 슬라이딩 윈도우(WD_1a~WD_na)의 크기를 변경할 수 있다. 일 예로, ECC 디코더(19b)는 마지막 슬라이딩 윈도우(WD_na)가 터미네이션 매트릭스(BM_Tb)의 일부를 포함하도록 설정할 수 있다. ECC 디코더(19b)는 크기가 가변되는 제1 방향의 슬라이딩 윈도우(WD_1a~WD_na) 및 터미네이션 매트릭스(BM_Tb)의 일부와 연관된 터미네이션 패리티(Partial PT)를 이용하여, 제1 서브 코드워드(SubCW_1b')를 디코딩할 수 있다. 이와 같은 방식을 통해, 서브 코드워드(SubCW_1b')에 대한 디코딩 소요 시간을 줄일 수 있으며, 결과적으로 메모리 시스템(1)의 데이터 출력 레이턴시를 개선할 수 있다.
도 2 및 도 12b를 참조하면, ECC 디코더(19b)는 제1 서브 매트릭스(Sub_M1b) 및 제2 서브 매트릭스(Sub_M2b)의 일부를 기반으로 제1 서브 코드워드(SubCW_1b')를 디코딩할 수 있다. 즉, ECC 디코더(19b)는 고정된 크기의 제1 방향의 슬라이딩 윈도우(WD_1a~WD_na)가 제2 서브 매트릭스(Sub_M2b)의 일부를 포함할 수 있도록 설정할 수 있다. 예를 들어, ECC 디코더(19b)는 마지막 슬라이딩 윈도우(WD_na)가 제2 서브 매트릭스(Sub_M2b)의 일부를 포함하도록 설정할 수 있다. ECC 디코더(19b)는 제1 방향의 슬라이딩 윈도우(WD_1a~WD_na), 터미네이션 패리티(PT) 및 제2 서브 매트릭스(Sub_M2b)의 일부와 연관된 제2 서브 코드워드의 일부(Partial SubCW_2b')를 이용하여, 제1 서브 코드워드(SubCW_1b')를 디코딩할 수 있다. ECC 디코더(19b)는 필요한 제2 서브 코드워드의 일부(Partial SubCW_2b') 또는 터미네이션 패리티(PT)는 메모리 컨트롤러(10)내의 버퍼로부터 선택적으로 리드할 수 있다. 이와 같은 방식을 통해, 서브 코드워드(SubCW_1b')에 대한 페일 비트 정정 능력을 개선하여, 메모리 시스템(1)의 신뢰성을 향상시킬 수 있다.
도 13은 본 개시의 일
실시예에
따른 메모리 시스템(200)을 나타내는
블록도이다
.
도 13을 참조하면, 메모리 시스템(200)은 메모리 컨트롤러(210) 및 복수의 메모리 장치들(230_1~230_k)을 포함할 수 있다. 메모리 컨트롤러(210)는 메모리 인터페이스부(211), ECC 로직(212), 호스트 인터페이스(213), 램(214) 및 중앙처리장치(215)를 포함할 수 있다. ECC 로직(212)은 제1 내지 제k ECC 회로(212_1~212_k)를 포함할 수 있고, 메모리 인터페이스부(211)는 제1 내지 제k 메모리 인터페이스(211_1~211_k)를 포함할 수 있다. 각 메모리 인터페이스(211_1~211_k)는 각각의 메모리 장치들(230_1~230_k)과 채널(CH1~CHk)을 통해 연결될 수 있다. 각각의 ECC 회로들(212_1~212_k)은 호스트로부터 라이트 요청과 함께 수신한 데이터를 나누어 병렬적인 인코딩을 수행하여, 서브 코드워드들을 각각 생성할 수 있다. 생성된 각각의 서브 코드워드들은 메모리 장치들(230_1~230_k)에 분산되어 저장될 수 있다. 이후, 호스트로부터 데이터에 대한 리드 요청을 수신한 때에, 각각의 ECC 회로들(212_1~212_k)은 서브 코드워드들을 메모리 장치들(230_1~230_k)로부터 메모리 인터페이스부(211)를 통해 수신할 수 있다. 각각의 ECC 회로들(212_1~212_k)은 수신한 서브 코드워드에 대한 병렬적인 디코딩을 수행할 수 있으며, 이후, 디코딩 결과 생성된 데이터를 램(214)을 이용하여, 머지(merge)하고, 호스트 인터페이스(213)를 통해 머지된 데이터를 호스트로 출력할 수 있다. 다만, 도 13의 실시예는 예시적인 내용에 불과한 바, 이에 국한되지 않고, 메모리 컨트롤러(210)의 인코딩/디코딩 동작 정책에 따라 다양한 방법으로 인코딩/디코딩 동작을 수행할 수 있다.
도 14a
내지 도
14d는 본 개시의 일
실시예에
따른 인코딩, 디코딩 방법을 설명하기 위한 도면이다.
도 14a를 참조하면, 호스트로부터 수신한 데이터는 제1 데이터(Data_1) 및 제2 데이터(Data_2)로 분리되어, 제1 ECC 회로(212_1) 및 제2 ECC 회로(212_2)가 각각 수신할 수 있다. 제1 ECC 회로(212_1)는 제1 데이터(Data_1)에 대한 인코딩 동작을 수행하고, 제2 ECC 회로(212_2)는 제2 데이터(Data_2)에 대한 인코딩 동작을 수행할 수 있다. 제1 ECC 회로(212_1)의 인코딩 동작과 제2 ECC 회로(212_2)의 인코딩 동작을 병렬적으로 수행될 수 있다.
제1 ECC 회로(212_1)와 제2 ECC 회로(212_2)는 각각 인코딩 동작에 필요한 제1 정보(SH_Info_1)를 공유할 수 있다. 이러한 제1 정보(SH_Info_1)는 제1 데이터(Data_1)의 일부 또는 전부, 제2 데이터(Data_2)의 일부 또는 전부, 제1 데이터(Data_1)에 대한 인코딩 결과 및 제2 데이터(Data_2)에 대한 인코딩 결과 중 적어도 하나를 포함할 수 있다. 제1 ECC 회로(212_1)와 제2 ECC 회로(212_2)는 각각 인코딩 동작을 수행할 때에, 제1 정보(SH_Info_1)를 이용할 수 있다.
제1 ECC 회로(212_1)는 제1 데이터(Data_1)를 인코딩하여 생성한 제1 서브 코드워드(SubCW_1)를 제1 메모리 인터페이스(211_1)를 통해 제1 메모리 장치(230_1)에 출력할 수 있고, 제2 ECC 회로(212_2)는 제2 데이터(Data_2)를 인코딩하여 생성한 제2 서브 코드워드(SubCW_2)를 제2 메모리 인터페이스(211_2)를 통해 제2 메모리 장치(230_2)에 출력할 수 있다. 제1 메모리 장치(230_1)는 제1 서브 코드워드(SubCW_1)를 저장하고, 제2 메모리 장치(230_2)는 제2 서브 코드워드(SubCW_2)를 저장할 수 있다.
도 14b를 참조하면, 도 14a와 달리, 제1 ECC 회로(212_1)는 데이터(Data)를 수신하여, 제1 데이터, 제2 데이터로 구분하여, 제1 데이터 및 제2 데이터에 대하여 각각 인코딩을 수행할 수 있다.
도 14c를 참조하면, 제1 ECC 회로(212_1)는 제1 메모리 장치(230_1)로부터 제1 메모리 인터페이스(211_1)를 통해 제1 서브 코드워드(SubCW_1')를 수신하여, 제1 서브 코드워드(SubCW_1')에 대한 디코딩을 수행할 수 있다. 제2 ECC 회로(212_2)는 제2 메모리 장치(230_2)로부터 제2 메모리 인터페이스(211_2)를 통해 제2 서브 코드워드(SubCW_2')를 수신하여, 제2 서브 코드워드(SubCW_2')에 대한 디코딩을 수행할 수 있다. 제1 ECC 회로(212_1)의 디코딩 동작과 제2 ECC 회로(212_2)의 디코딩 동작은 병렬적으로 수행될 수 있다.
제1 ECC 회로(212_1)와 제2 ECC 회로(212_2)는 각각 디코딩 동작에 필요한 제2 정보(SH_Info_2)를 공유할 수 있다. 이러한 제2 정보(SH_Info_2)는 제1 서브 코드워드(SubCW_1')의 일부 또는 전부, 제2 서브 코드워드(SubCW_2')의 일부 또는 전부, 제1 서브 코드워드(SubCW_1')에 대한 디코딩 결과 및 제2 서브 코드워드(SubCW_2')에 대한 디코딩 결과 중 적어도 하나를 포함할 수 있다. 제1 ECC 회로(212_1)와 제2 ECC 회로(212_2)는 각각 디코딩 동작을 수행할 때에, 제2 정보(SH_Info_2)를 이용할 수 있다.
제1 ECC 회로(212_1)는 제1 서브 코드워드(SubCW_1')를 디코딩하여 생성한 제1 데이터(Data_1)를 출력하고, 제2 ECC 회로(212_2)는 제2 서브 코드워드(SubCW_2')를 디코딩하여 생성한 제2 데이터(Data_2)를 출력할 수 있다.
도 14d를 참조하면, 도 14c와 달리, 제1 ECC 회로(212_1)는 제1 서브 코드워드(SubCW_1')와 제2 서브 코드워드(SubCW_2')가 머지되어 생성된 코드워드를 수신할 수 있다. 이후, 제1 ECC 회로(212_1)는 코드워드를 디코딩하여 생성한 데이터(Data)를 출력할 수 있다.
도 15는 패리티 체크 매트릭스(
Hc
)의 구조에 부합하는 도 2의
ECC
인코더(19a)의 동작을 설명하기 위한 도면이다.
도 2 및 도 15를 참조하면, 패리티 체크 매트릭스(Hc)는 제1 내지 제4 부분 패리티 체크 매트릭스(Partial_H1~Partial_H4)를 포함할 있다. 제1 내지 제4 부분 패리티 체크 매트릭스(Partial_H1~Partial_H4)는 독립적인 매트릭스로서, 부분 패리티 체크 매트릭스들(Partial_H1~Partial_H4)간에 서로 연관되지 않을 수 있다. 제1 내지 제4 부분 패리티 체크 매트릭스(Partial_H1~Partial_H4)의 독립적인 특성으로 인하여, 패리티 체크 매트릭스(Hc)를 이용한 인코딩/디코딩시에 정정 능력이 떨어질 수 있기 때문에, 이를 보완하기 위하여, 패리티 체크 매트릭스(Hc)는 제1 내지 제3 터널링 정보(T_Info1~T_Info3)를 더 포함할 수 있다. 제1 터널링 정보(T_Info1)는 제1 및 제2 부분 패리티 체크 매트릭스(Partial_H1, Partial_H2)와 연관된 것으로, 제1 터널링 정보(T_Info1)를 통해 제1 터널링 체크 방정식이 도출될 수 있다. 제2 터널링 정보(T_Info2)는 제2 및 제3 부분 패리티 체크 매트릭스(Partial_H2, Partial_H3)와 연관된 것으로, 제2 터널링 정보(T_Info2)를 통해 제2 터널링 체크 방정식이 도출될 수 있다. 제3 터널링 정보(T_Info3)는 제3 및 제4 부분 패리티 체크 매트릭스(Partial_H3, Partial_H4)와 연관된 것으로, 제3 터널링 정보(T_Info3)를 통해 제3 터널링 체크 방정식이 도출될 수 있다.
ECC 인코더(19a)는 호스트로부터 수신한 데이터(Data) 중 제1 데이터를 제1 부분 패리티 체크 매트릭스(Partial_H1)를 기반으로 인코딩하여, 제1 서브 코드워드(SubCW_1a)를 생성하고, 데이터(Data) 중 제2 데이터를 제2 부분 패리티 체크 매트릭스(Partial_H2)를 기반으로 인코딩하여, 제2 서브 코드워드(SubCW_2a)를 생성하고, 데이터(Data) 중 제3 데이터를 제3 부분 패리티 체크 매트릭스(Partial_H3)를 기반으로 인코딩하여, 제3 서브 코드워드(SubCW_3a)를 생성하며, 데이터(Data) 중 제4 데이터를 제4 부분 패리티 체크 매트릭스(Partial_H4)를 기반으로 인코딩하여, 제4 서브 코드워드(SubCW_4a)를 생성할 수 있다. 또한, ECC 인코더(19a)는 제1 터널링 정보(T_Info1)를 이용하여 제1 터널링 패리티(P_Tunnel_1)를 생성하고, 제2 터널링 정보(T_Info2)를 이용하여 제2 터널링 패리티(P_Tunnel_2)를 생성하며, 제3 터널링 정보(T_Info3)를 이용하여 제3 터널링 패리티(P_Tunnel_3)를 생성할 수 있다. 제1 내지 제3 터널링 패리티(P_Tunnel_1~P_Tunnel_3)은 각각 제1 내지 제3 터널링 체크 방정식을 만족할 수 있다.
ECC 인코더(19a)는 위와 같은 방식으로, 데이터(Data)를 제1 내지 제4 서브 코드워드(SubCW_1c~SubCW_4c) 및 제1 내지 제3 터널링 패리티(P_Tunnel_1~P_Tunnel_3)를 포함하는 코드워드(CWc)로 인코딩할 수 있다. 도 15와 이후 서술되는 서브 코드워드 크기는 도 15 이전에 서술된 서브 코드워드 크기와 동일하거나 상이할 수 있다.
도 16은 본 개시의 일
실시예에
따른
터널링
패리티를 생성하는 방법을 설명하기 위한
순서도이다
.
도 2, 도 15 및 도 16을 참조하면, ECC 인코더(19a)는 제1 부분 패리티 체크 매트릭스(Partial_H1)를 기반으로 제1 데이터를 인코딩할 수 있다(S200). ECC 인코더(19a)는 메모리 컨트롤러(10) 내의 버퍼에 제1 서브 코드워드(SubCW_1c)의 적어도 일부를 저장할 수 있다(S210). ECC 인코더(19a)는 제2 부분 패리티 체크 매트릭스(Partial_H2)를 기반으로 제2 데이터를 인코딩할 수 있다(S220). ECC 인코더(19a)는 메모리 컨트롤러(10) 내의 버퍼에 제2 서브 코드워드(SubCW_2c)의 적어도 일부를 저장할 수 있다(S230). 이후, ECC 인코더(19a)는 제1 서브 코드워드(SubCW_1c)의 적어도 일부 및 제2 서브 코드워드(SubCW_2c)의 적어도 일부를 이용하여 제1 터널링 정보(T_Info_1)에 의해 도출된 제1 터널링 체크 방정식을 만족하는 제1 터널링 패리티(P_Tunnel_1)를 생성할 수 있다(S235). 일 실시예로, 결정된 제1 서브 코드워드(SubCW_1c)와 제2 서브 코드워드(SubCW_2c)를 이용하여 터널링을 위한 체크 매트릭스의 신드롬이 '0'이 되는 값을 제1 터널링 패리티(P_Tunnel_1)로 결정할 수 있다.
ECC 인코더(19a)는 제3 부분 패리티 체크 매트릭스(Partial_H3)를 기반으로 제3 데이터를 인코딩할 수 있다(S240). ECC 인코더(19a)는 메모리 컨트롤러(10) 내의 버퍼에 제3 서브 코드워드(SubCW_3c)의 적어도 일부를 저장할 수 있다(S250). 이후, ECC 인코더(19a)는 제2 서브 코드워드(SubCW_2c)의 적어도 일부 및 제3 서브 코드워드(SubCW_3c)의 적어도 일부를 이용하여 제2 터널링 정보(T_Info_2)에 의해 도출된 제2 터널링 체크 방정식을 만족하는 제2 터널링 패리티(P_Tunnel_2)를 생성할 수 있다(S255).
ECC 인코더(19a)는 제4 부분 패리티 체크 매트릭스(Partial_H4)를 기반으로 제4 데이터를 인코딩할 수 있다(S260). ECC 인코더(19a)는 메모리 컨트롤러(10) 내의 버퍼에 제4 서브 코드워드(SubCW_4c)의 적어도 일부를 저장할 수 있다(S270). 이후, ECC 인코더(19a)는 제3 서브 코드워드(SubCW_3c)의 적어도 일부 및 제4 서브 코드워드(SubCW_4c)의 적어도 일부를 이용하여 제3 터널링 정보(T_Info_3)에 의해 도출된 제3 터널링 체크 방정식을 만족하는 제3 터널링 패리티(P_Tunnel_3)를 생성할 수 있다(S270).
도 17은 본 개시의 일 실시예에 따른 디코딩 동작을 설명하기 위한 순서도이다 . 이하에서는, 도 16의 패리티 체크 매트릭스(Hc)의 구조를 중심으로 디코딩 동작이 서술되나, 이에 국한되지 않고, 도 4 및 도 7a의 패리티 체크 매트릭스(Ha, Hb)의 구조에서도 적용될 수 있음은 분명하다.
ECC 디코더는 두 페이즈(Phase)에 걸쳐 디코딩 동작을 수행할 수 있다. 먼저, ECC 디코더는 메모리 컨트롤러 내의 버퍼로부터 타겟 서브 코드워드를 리드할 수 있다(S300). ECC 디코더는 타겟 서브 코드워드와 연관된 하나의 부분 패리티 체크 매트릭스를 이용하여 타겟 서브 코드워드에 대한 슬라이딩 윈도우 방식의 디코딩을 수행할 수 있다(S310). 제1 페이즈 디코딩 동작은 단계 S300 및 단계 S310를 포함할 수 있다. 이후, ECC 디코더는 제1 페이즈 디코딩 동작이 성공하였는지 여부를 판별할 수 있다(S320). 디코딩이 성공한 때(S320, YES)에는, 디코딩되어 생성된 데이터를 호스트로 전송할 수 있다(S330). 디코딩이 실패한 때(S320, NO)에는, ECC 디코더는 타겟 서브 코드워드와 인접한 적어도 하나의 서브 코드워드를 선택할 수 있다(S340). ECC 디코더는 선택 서브 코드워드의 일부 또는 전체 및 터널링 패리티를 메모리 컨트롤러 내의 버퍼로부터 더 리드할 수 있다. 이후, ECC 디코더는 선택 서브 코드워드의 일부와 연관된 부분 패리티 체크 매트릭스, 터널링 정보 등을 더 이용하여 슬라이딩 윈도우 방식의 조인트(joint) 디코딩을 수행할 수 있다(S360). 제2 페이즈 디코딩 동작은 단계 S350 및 단계 S360를 포함할 수 있다. 이후, ECC 디코더는 제2 페이즈 디코딩 동작이 성공하였는지 여부를 판별할 수 있다(S370). 디코딩이 성공한 때(S370, YES)에는, 디코딩되어 생성된 데이터를 호스트로 전송할 수 있다(S330). 디코딩이 실패한 때(S370, NO)에는, ECC 디코더는 디코딩 실패로 판별하여(S380), 타겟 서브 코드워드에 대한 디코딩 동작을 종료할 수 있다. 다만, 이는 예시적인 실시예에 불과한 바, 이에 국한되지 않으며, 타겟 서브 코드워드에 대한 디코딩이 성공할 때까지 더 많은 페이즈의 디코딩 동작들을 수행할 수 있다. 또한, 더 많은 페이즈의 디코딩 동작이 수행될수록 ECC 디코더는 더 많은 디코딩 관련 데이터가 필요할 수 있다.
도 18
내지 도
20b는 도 17의 제2
페이즈
디코딩 동작의 다양한
실시예를
설명하기 위한 도면이다.
도 2 및 도 18을 참조하면, ECC 디코더(19b)는 제2 페이즈 디코딩 동작시에 메모리 컨트롤러(10) 내의 버퍼로부터 제1 터널링 패리티(P_Tunnel_1) 및 제2 서브 코드워드의 일부(P_SubCW_2c)를 더 리드하고, 제1 방향의 슬라이딩 윈도우(WD_1a~WD_na)가 제1 터널링 정보(T_Info1) 및 제2 부분 패리티 체크 매트릭스(Partial_H2)의 일부를 포함할 수 있도록 크기를 가변하여 설정할 수 있다. 예를 들어, ECC 디코더(19b)는 마지막 슬라이딩 윈도우(WD_na)가 제1 터널링 정보(T_Info1) 및 제2 부분 패리티 체크 매트릭스(Partial_H2)의 일부를 포함하도록 설정할 수 있다. ECC 디코더(19b)는 제1 터널링 패리티(P_Tunnel_1) 및 제2 서브 코드워드의 일부(P_SubCW_2c), 크기가 가변되는 제1 방향의 슬라이딩 윈도우(WD1a~WD_na)를 이용하여 제1 서브 코드워드(SubCW_1c)에 대한 제2 페이지 디코딩 동작을 수행할 수 있다.
도 2 및 도 19a를 참조하면, 제2 페이즈 디코딩 동작시에 ECC 디코딩(19b)는 메모리 컨트롤러(10) 내의 버퍼로부터 제2 서브 코드워드(SubCW_2c)를 더 리드하고, 제2 부분 패리티 체크 매트릭스(Partial_H2)를 기반으로 제2 서브 코드워드(SubCW_2c)에 대한 부분 디코딩을 수행할 수 있다. 부분 디코딩 동작에 의하여 생성된 데이터(HD)는 하드 디시젼 데이터로 지칭될 수 있다. 도 19b를 참조하면, ECC 디코더(19b)는 메모리 컨트롤러(10) 내의 버퍼로부터 제1 터널링 패리티(P_Tunnel_1)를 더 리드하고, 제1 부분 패리티 체크 매트릭스(Partial_H1) 및 제1 터널링 정보(T_Info_1)의 일부를 기반으로 제1 서브 코드워드(SubCW_1c')를 디코딩할 수 있다. ECC 디코더(19b)는 고정된 크기의 제2 방향의 슬라이딩 윈도우(WD_1a~WD_na)가 제1 터널링 정보(T_Info_1)의 일부를 포함하도록 설정할 수 있다. 예를 들어, ECC 디코더(19b)는 첫 슬라이딩 윈도우(WD_na)가 제1 터널링 정보(T_Info_1)의 일부를 포함하도록 설정할 수 있다. ECC 디코더(19b)는 제2 방향의 슬라이딩 윈도우(WD_1a~WD_na), 제1 터널링 패리티(또는, 제1 터널링 패리티의 일부)(P_Tunnel_1) 및 하드 디시젼 데이터(HD)를 이용하여 제1 서브 코드워드(SubCW_1c)에 대한 제2 페이즈 디코딩 동작을 수행할 수 있다.
도 19c를 참조하면, 도 19b와 다르게 ECC 디코더(19b)는 제1 방향의 슬라이딩 윈도우(WD_1a~WD_na)를 이용하여 제1 서브 코드워드(SubCW_1c)에 대한 제2 페이즈 디코딩 동작을 수행할 수 있다.
도 20a를 참조하면, ECC 디코더(19b)는 디코딩 실패 정도를 판별하여, 실패 정도가 임계치를 초과하는 경우에, 도 18에 서술된 제2 페이즈 디코딩 동작과 달리, 인접한 서브 코드워드 및 터널링 패리티를 더 리드하여, 제2 페이즈 디코딩 동작을 수행할 수 있다. ECC 디코더(19b)는 디코딩 실패 정도는 제1 부분 패리티 체크 매트릭스(Partial_H1)에 대응하는 패리티 체크 방정식을 만족하지 못하는 체크 노드의 개수를 기준으로 판별할 수 있다.
도 20a에서는 ECC 디코더(19b)의 제2 서브 코드워드(SubCW_2c)에 대한 제1 페이즈 디코딩 동작이 실패한 것을 가정한다. ECC 디코더(19b)는 제2 페이즈 디코딩 동작시에 메모리 컨트롤러(10) 내의 버퍼로부터 제1 터널링 패리티(P_Tunnel_1), 제1 서브 코드워드의 일부(P_SubCW_1c), 제2 터널링 패리티(P_Tunnel_2) 및 제3 서브 코드워드의 일부(P_SubCW_3c)를 더 리드하고, 제1 방향의 슬라이딩 윈도우(WD_1b~WD_nb)가 제1 터널링 정보(T_Info_1), 제1 부분 패리티 체크 매트릭스(Partial_H1)의 일부, 제2 터널링 정보(T_Info_2) 및 제3 부분 패리티 체크 매트릭스(Partial_H3)의 일부를 포함하도록 설정할 수 있다. 예를 들어, ECC 디코더(19b)는 첫 슬라이딩 윈도우(WD_1b)가 제1 터널링 정보(T_Info_1) 및 제1 부분 패리티 체크 매트릭스(Partial_H1)의 일부를 포함하고, 마지막 슬라이딩 윈도우(WD_nb)가 제2 터널링 정보(T_Info_2) 및 제3 부분 패리티 체크 매트릭스(Partial_H3)의 일부를 포함하도록 설정할 수 있다. ECC 디코더(19b)는 제1 방향의 슬라이딩 윈도우(WD_1b~WD_nb), 제1 터널링 패리티(P_Tunnel_1), 제1 서브 코드워드의 일부(P_SubCW_1c), 제2 터널링 패리티(P_Tunnel_2) 및 제3 서브 코드워드의 일부(P_SubCW_3c)를 이용하여 제2 서브 코드워드(SubCW_2c)에 대한 제2 페이즈 디코딩 동작을 수행할 수 있다.
도 20b를 참조하면, ECC 디코더(19b)는 디코딩 실패 정도를 판별하여, 실패 정도가 임계치를 초과하는 경우에, 도 19b에 서술된 제2 페이즈 디코딩 동작과 달리, 인접한 서브 코드워드를 더 리드하고, 하드 디시젼 데이터를 더 생성한 후에, 제2 페이즈 디코딩 동작을 수행할 수 있다.
도 20b에서는 ECC 디코더(19b)의 제2 서브 코드워드(SubCW_2c)에 대한 제1 페이즈 디코딩 동작이 실패한 것을 가정한다. ECC 디코더(19b)는 제2 페이즈 동작시에 메모리 컨트롤러(10) 내의 버퍼로부터 제1 서브 코드워드(SubCW_1c) 및 제3 서브 코드워드(SubCW_3c)를 더 리드하고, 제1 서브 코드워드(SubCW_1c)에 대한 부분 디코딩 동작, 제3 서브 코드워드(SubCW_3c)에 대한 부분 디코딩 동작을 수행하여, 제1 하드 디시젼 데이터(HD1) 및 제2 하드 디시젼 데이터(HD2)를 각각 생성할 수 있다. ECC 디코더(19b)는 제1 방향의 슬라이딩 윈도우(WD_1a~WD_na), 제1 및 제2 터널링 패리티(P_Tunnel_1, P_Tunnel_2), 제1 및 제2 하드 디시젼 데이터(HD1, HD2)를 이용하여 제2 서브 코드워드(SubCW_2c)에 대한 제2 페이즈 디코딩 동작을 수행할 수 있다. 또한, 더 나아가, ECC 디코더(19b)는 제1 페이즈 동작 및 제2 페이즈 동작을 포함하는 페이즈 동작 실패시에, 디코딩 대상 서브 코드워드와 인접한 서브 코드워드를 이용하여 본 개시의 실시예들에 따른 조인트 디코딩 동작을 수행할 수 있다.
또한, 본 개시에 따른 디코딩 방식은 이에 국한되지 않고, 도 6a 등에서 서술된 서로 방향이 다르게 설정된 슬라이딩 윈도우를 이용한 디코딩 방식은 하나의 부분 패리티 체크 매트릭스 내에 적용될 수 있다. 즉, 서브 코드워드를 부분 패리티 체크 매트릭스를 기반으로 디코딩할 때에, 서브 코드워드를 더 작은 단위의 데이터로 나누고, 부분 패리티 체크 매트릭스를 부분 서브 패리티 체크 매트릭스, 부분 서브 패리티 체크 매트릭스로 구분하여, 도 6a 등에서 서술된 양방향 디코딩 방식의 적용이 가능하다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
Claims (20)
- 컨볼루션 타입의 저밀도 패리티 체크 코드(Low Density Parity Check code, 이하, LDPC 코드)에 대응한 패리티 체크 매트릭스를 이용하여 디코딩을 수행하는 메모리 컨트롤러의 동작 방법에 있어서,
제1 서브 코드워드 및 제2 서브 코드워드를 포함하는 상기 코드워드를 적어도 하나의 메모리 장치로부터 수신하는 단계;
상기 패리티 체크 매트릭스에 포함되고, 상기 제1 서브 코드워드와 연관된 제1 서브 매트릭스를 기반으로 설정된 제1 방향의 슬라이딩 윈도우를 이용하여 상기 제1 서브 코드워드를 제1 데이터로 디코딩하는 단계; 및
상기 패리티 체크 매트릭스에 포함되고, 상기 제2 서브 코드워드와 연관된 제2 서브 매트릭스를 기반으로 설정된 제2 방향의 슬라이딩 윈도우를 이용하여 상기 제2 서브 코드워드를 제2 데이터로 디코딩하는 단계를 포함하고,
상기 코드워드는, 상기 코드워드의 신드롬(syndrome)이 제로 벡터가 되는 것을 보장하기 위한 터미네이션 패리티(termination parity)를 더 포함하고,
상기 터미네이션 패리티와 연관된 터미네이션 매트릭스의 상기 패리티 체크 매트릭스 내의 배치 위치에 부합하는 상기 제1 서브 코드워드 및 상기 제2 서브 코드워드에 대한 디코딩 동작을 수행하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 제1 방향은,
상기 제2 방향과 반대인 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 제1 데이터 및 상기 제2 데이터 각각의 크기는,
상기 메모리 컨트롤러가 리드 요청에 응답하여 호스트로 출력하는 데이터 크기 단위 이하인 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 제1 서브 코드워드를 디코딩하는 단계는, 상기 제1 서브 코드워드를 LSB(least significant bit)에서 MSB(most significant bit) 방향으로 디코딩하고,
상기 제2 서브 코드워드를 디코딩하는 단계는, 상기 제2 서브 코드워드를 MSB에서 LSB 방향으로 디코딩하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 삭제
- 제1항에 있어서,
상기 제2 서브 매트릭스의 마지막 부분에 상기 터미네이션 매트릭스가 배치된 때에,
상기 제2 서브 코드워드를 디코딩하는 단계는,
상기 터미네이션 패리티 및 상기 제2 방향의 슬라이딩 윈도우를 이용하여 상기 제2 서브 코드워드를 상기 제2 데이터로 디코딩하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 제1 서브 매트릭스와 상기 제2 서브 매트릭스간의 경계 부분에 상기 터미네이션 매트릭스가 배치된 때에,
상기 제1 서브 코드워드를 디코딩하는 단계는,
상기 제1 서브 매트릭스에 배치된 상기 터미네이션 매트릭스의 일부를 포함하고, 상기 제2 서브 매트릭스의 일부를 포함하지 않도록 크기가 가변되는 상기 제1 방향의 슬라이딩 윈도우 및 상기 터미네이션 패리티의 일부를 이용하여 상기 제1 서브 코드워드를 상기 제1 데이터로 디코딩하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 제1 서브 매트릭스와 상기 제2 서브 매트릭스간의 경계 부분에 상기 터미네이션 매트릭스가 배치된 때에,
상기 제1 서브 코드워드를 디코딩하는 단계는,
상기 제2 서브 매트릭스의 일부를 포함하도록 크기가 일정한 상기 제1 방향의 슬라이딩 윈도우, 상기 터미네이션 패리티, 상기 제2 서브 코드워드의 일부를 이용하여 상기 제1 서브 코드워드를 상기 제1 데이터로 디코딩하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 코드워드를 적어도 하나의 메모리 장치로부터 수신하는 단계는,
상기 메모리 컨트롤러와 제1 채널을 통해 연결된 제1 메모리 장치로부터 상기 제1 서브 코드워드를 수신하는 단계; 및
상기 메모리 컨트롤러와 제2 채널을 통해 연결된 제2 메모리 장치로부터 상기 제2 서브 코드워드를 수신하는 단계를 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제9항에 있어서,
상기 메모리 컨트롤러는, 제1 ECC(error checking and correcting) 회로 및 제2 ECC 회로를 포함하고,
상기 제1 서브 코드워드를 디코딩하는 단계는, 상기 제1 ECC 회로에 의해 수행되고,
상기 제2 서브 코드워드를 디코딩하는 단계는, 상기 제1 서브 코드워드를 디코딩하는 단계와 병렬적으로 상기 제2 ECC 회로에 의해 수행되는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제10항에 있어서,
상기 제1 서브 코드워드를 디코딩하는 단계는,
상기 제2 ECC 회로로부터 상기 제2 서브 코드워드에 대한 디코딩 관련 정보를 수신하는 단계를 더 포함하고,
상기 디코딩 관련 정보 및 상기 제1 방향의 슬라이딩 윈도우를 이용하여 상기 제1 서브 코드워드를 상기 제1 데이터로 디코딩하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 제1항에 있어서,
상기 메모리 컨트롤러의 동작 방법은,
호스트로부터 수신한 상기 제1 데이터에 대한 리드 요청에 응답하여, 상기 제1 데이터를 상기 호스트로 송신하는 단계; 및
상기 호스트로부터 수신한 상기 제2 데이터에 대한 리드 요청에 응답하여, 상기 제2 데이터를 상기 호스트로 송신하는 단계를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법. - 컨볼루션 타입의 저밀도 패리티 체크 코드에 대응한 패리티 체크 매트릭스를 이용하여 인코딩 및 디코딩을 수행하고, 메모리 컨트롤러 및 적어도 하나의 메모리 장치를 포함하는 메모리 시스템의 동작 방법에 있어서,
상기 메모리 컨트롤러는 호스트로부터 라이트 요청 및 데이터를 수신하는 단계;
상기 메모리 컨트롤러는 상기 패리티 체크 매트릭스에 포함된 제1 서브 매트릭스를 기반으로 상기 데이터 중에서 제1 데이터를 제1 서브 코드워드로 인코딩하는 단계;
상기 메모리 컨트롤러는 상기 패리티 체크 매트릭스에 포함된 제2 서브 매트릭스를 기반으로 상기 데이터 중에서 제2 데이터를 제2 서브 코드워드로 인코딩하는 단계; 및
상기 메모리 컨트롤러는 상기 제1 서브 코드워드 및 상기 제2 서브 코드워드를 포함하는 코드워드를 상기 메모리 장치에 라이트하는 단계를 포함하고,
상기 코드워드는, 상기 코드워드의 신드롬이 제로 벡터가 되는 것을 보장하기 위한 터미네이션 패리티를 더 포함하고,
상기 제1 서브 매트릭스와 상기 제2 서브 매트릭스간의 경계 부분에 상기 터미네이션 패리티와 연관된 터미네이션 매트릭스가 배치된 때에,
상기 메모리 컨트롤러는 상기 제1 데이터에 대한 인코딩 결과로부터 제1 부분 신드롬을 획득하고, 상기 제2 데이터에 대한 인코딩 결과로부터 제2 부분 신드롬을 획득하는 단계; 및
상기 메모리 컨트롤러는 상기 제1 부분 신드롬 및 상기 제2 부분 신드롬을 이용하여 상기 터미네이션 패리티를 생성하는 단계를 더 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법. - 제13항에 있어서,
상기 제1 데이터를 상기 제1 서브 코드워드로 인코딩하는 단계에서,
상기 메모리 컨트롤러는 상기 제1 데이터의 LSB에서 MSB 방향으로 인코딩을 수행하고,
상기 제2 데이터를 상기 제2 서브 코드워드로 인코딩하는 단계에서,
상기 메모리 컨트롤러는 상기 제2 데이터의 MSB에서 LSB 방향으로 인코딩을 수행하는 것을 특징으로 하는 메모리 시스템의 동작 방법. - 삭제
- 제13항에 있어서,
상기 코드워드를 상기 메모리 장치에 라이트하는 단계에서, 상기 메모리 컨트롤러가 상기 메모리 장치로부터 향후 수신하는 상기 코드워드의 비트 순서대로 순차적인 디코딩을 수행할 수 있도록 상기 코드워드 내의 상기 제1 서브 코드워드, 상기 제2 서브 코드워드 및 상기 터미네이션 패리티를 재정렬하여 메모리 장치로 출력하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법. - 제13항에 있어서,
상기 메모리 장치가 출력하는 상기 코드워드의 비트 순서대로 상기 메모리 컨트롤러가 순차적인 디코딩을 수행할 수 있도록 라이트된 상기 코드워드 내의 상기 제1 서브 코드워드, 상기 제2 서브 코드워드 및 상기 터미네이션 패리티를 재정렬하여 상기 메모리 컨트롤러로 출력하는 단계를 더 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법. - 삭제
- 삭제
- 삭제
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170174168A KR102475279B1 (ko) | 2017-12-18 | 2017-12-18 | 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
US16/057,855 US10789127B2 (en) | 2017-12-18 | 2018-08-08 | Method of operating memory controller for performing encoding and decoding by using a convolution-type low density parity check code |
CN201811300521.3A CN109933456B (zh) | 2017-12-18 | 2018-11-02 | 操作存储器控制器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170174168A KR102475279B1 (ko) | 2017-12-18 | 2017-12-18 | 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190072972A KR20190072972A (ko) | 2019-06-26 |
KR102475279B1 true KR102475279B1 (ko) | 2022-12-07 |
Family
ID=66815147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170174168A KR102475279B1 (ko) | 2017-12-18 | 2017-12-18 | 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10789127B2 (ko) |
KR (1) | KR102475279B1 (ko) |
CN (1) | CN109933456B (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080137B2 (en) * | 2019-05-09 | 2021-08-03 | Rambus Inc. | Error coalescing |
JP2020198577A (ja) * | 2019-06-04 | 2020-12-10 | キオクシア株式会社 | メモリシステム |
US12119931B2 (en) * | 2020-05-04 | 2024-10-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Zigzag decoding of upstream-processed signals from independent receiver subarrays |
KR20210138390A (ko) * | 2020-05-12 | 2021-11-19 | 에스케이하이닉스 주식회사 | 에러 정정 디코더, 이를 포함하는 에러 정정 회로 및 에러 정정 디코더의 동작 방법 |
US12094551B2 (en) * | 2020-12-24 | 2024-09-17 | Intel Corporation | Modular error correction code circuitry |
US11481271B2 (en) * | 2021-03-16 | 2022-10-25 | Western Digital Technologies, Inc. | Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130232389A1 (en) * | 2009-10-12 | 2013-09-05 | Marvell World Trade Ltd. | Power consumption in ldpc decoder for low-power applications |
KR101482684B1 (ko) | 2013-10-15 | 2015-01-16 | 한국과학기술원 | 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 |
US20170257117A1 (en) * | 2016-03-04 | 2017-09-07 | Sandisk Technologies Llc | Convolutional low-density parity-check coding |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7254769B2 (en) | 2002-12-24 | 2007-08-07 | Electronics And Telecommunications Research Insitute | Encoding/decoding apparatus using low density parity check code |
WO2007089165A1 (en) | 2006-01-31 | 2007-08-09 | Intel Corporation | Iterative decoding of concatenated low-density parity-check codes |
JP5354979B2 (ja) * | 2007-07-12 | 2013-11-27 | パナソニック株式会社 | 低密度パリティ検査畳み込み符号(ldpc−cc)符号化器及びldpc−cc復号器 |
US9106264B2 (en) | 2011-01-04 | 2015-08-11 | Lsi Corporation | Encoding and decoding in flash memories using convolutional-type low-density parity check codes |
US8869000B2 (en) | 2011-01-31 | 2014-10-21 | Marvell World Trade Ltd. | Methods and systems for efficient decoding of concatenated error correction codes |
US20130139022A1 (en) * | 2011-11-28 | 2013-05-30 | Lsi Corporation | Variable Sector Size LDPC Decoder |
KR102068030B1 (ko) * | 2012-12-11 | 2020-01-20 | 삼성전자 주식회사 | 메모리 컨트롤러 및 그 동작방법 |
JP5794240B2 (ja) | 2013-02-05 | 2015-10-14 | ソニー株式会社 | 誤り検出訂正装置、誤り検出訂正方法、情報処理装置、および、プログラム |
US9405624B2 (en) | 2014-06-19 | 2016-08-02 | Seagate Technology Llc | On-die error detection and correction during multi-step programming |
US9712187B2 (en) | 2014-12-05 | 2017-07-18 | Samsung Electronics Co., Ltd. | SC-LDPC codes for wireless communication systems: framework and zigzag-window decoder |
US9692450B2 (en) * | 2015-05-11 | 2017-06-27 | Maxio Technology (Hangzhou) Ltd. | Systems and methods for early exit of layered LDPC decoder |
US10547332B2 (en) * | 2017-02-01 | 2020-01-28 | Tsofun Algorithm Ltd. | Device, system and method of implementing product error correction codes for fast encoding and decoding |
-
2017
- 2017-12-18 KR KR1020170174168A patent/KR102475279B1/ko active IP Right Grant
-
2018
- 2018-08-08 US US16/057,855 patent/US10789127B2/en active Active
- 2018-11-02 CN CN201811300521.3A patent/CN109933456B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130232389A1 (en) * | 2009-10-12 | 2013-09-05 | Marvell World Trade Ltd. | Power consumption in ldpc decoder for low-power applications |
KR101482684B1 (ko) | 2013-10-15 | 2015-01-16 | 한국과학기술원 | 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법 |
US20170257117A1 (en) * | 2016-03-04 | 2017-09-07 | Sandisk Technologies Llc | Convolutional low-density parity-check coding |
Also Published As
Publication number | Publication date |
---|---|
CN109933456A (zh) | 2019-06-25 |
KR20190072972A (ko) | 2019-06-26 |
CN109933456B (zh) | 2024-08-06 |
US20190188078A1 (en) | 2019-06-20 |
US10789127B2 (en) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102475279B1 (ko) | 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 | |
US10437668B2 (en) | Memory controller, memory system, and method for controlling memory system | |
KR102275717B1 (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
CN113345513B (zh) | 使用来自先前迭代的准则配置迭代性错误校正参数 | |
US11184026B2 (en) | Super-HPC error correction code | |
KR102556479B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
KR20180010448A (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US9904609B2 (en) | Memory controller and memory device | |
CN112068778B (zh) | 用于保持从存储阵列中读取的数据的完整性的方法和设备 | |
KR102706981B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US8856616B1 (en) | Two dimensional encoding for non-volatile memory blocks | |
KR20180010447A (ko) | 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 | |
US10312944B2 (en) | Error correction code (ECC) operations in memory for providing redundant error correction | |
JP2020154728A (ja) | メモリシステム及びその制御方法 | |
US11387845B2 (en) | LDPC decoder, operating method of LDPC decoder, and semiconductor memory system | |
CN112134573B (zh) | 用于将数据存储在存储器装置内的方法和检索数据的方法 | |
US10942805B2 (en) | Error correcting circuit performing error correction on user data and error correcting method using the error correcting circuit | |
CN117153232A (zh) | 用于不规则低密度奇偶校验解码的跨列缩放的位翻转阈值 | |
CN115273956B (zh) | 在存储器装置中通过校正子计算进行错误校正 | |
CN116743188A (zh) | 存储系统和控制存储系统的方法 | |
US11204834B1 (en) | Implementation of keeping data integrity in multiple dimensions | |
KR102513782B1 (ko) | 컨트롤러 및 그것의 동작 방법 | |
US10855316B2 (en) | Error correction code (ECC) operations in memory | |
US11394403B1 (en) | Error correction based on rate adaptive low density parity check (LDPC) codes with flexible column weights in the parity check matrices | |
US11336296B2 (en) | Controller and memory system having the controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |