KR20200015283A - 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법 - Google Patents

유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법 Download PDF

Info

Publication number
KR20200015283A
KR20200015283A KR1020180090908A KR20180090908A KR20200015283A KR 20200015283 A KR20200015283 A KR 20200015283A KR 1020180090908 A KR1020180090908 A KR 1020180090908A KR 20180090908 A KR20180090908 A KR 20180090908A KR 20200015283 A KR20200015283 A KR 20200015283A
Authority
KR
South Korea
Prior art keywords
data
code word
error
buffer
integrity
Prior art date
Application number
KR1020180090908A
Other languages
English (en)
Inventor
황영준
이명규
손홍락
유근영
이기준
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180090908A priority Critical patent/KR20200015283A/ko
Priority to US16/444,056 priority patent/US10942805B2/en
Priority to CN201910583884.0A priority patent/CN110795271A/zh
Publication of KR20200015283A publication Critical patent/KR20200015283A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding 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
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)

Abstract

유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를 포함하는 에러 정정 회로가 개시된다. 본 개시에 따른 유저 데이터 및 패리티 코드를 포함하는 코드 워드를 수신하고, 상기 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로는 상기 코드 워드를 저장하고, 상기 코드 워드를 분할한 복수의 서브 그룹 데이터들을 순차적으로 출력하는 제1 버퍼, 상기 제1 버퍼로부터 수신한 상기 복수의 서브 그룹 데이터들 각각에 대한 복수의 무결성 데이터들을 생성하고, 상기 패리티 코드를 이용하여 상기 유저 데이터에 대한 에러 정정을 수행하는 디코더, 상기 복수의 서브 그룹 데이터들 각각에 대한 상기 복수의 무결성 데이터들을 순차적으로 저장하는 제2 버퍼 및 상기 제2 버퍼가 업데이트 되면, 상기 제2 버퍼에 저장된 상기 복수의 무결성 데이터들을 기초로 상기 코드 워드의 에러를 판단하는 코드 워드 에러 판단부를 포함할 수 있다.

Description

유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법 {ERROR CORRECTING CIRCUIT PERFORMING ERROR CORRETION ON USER DATA AND ERROR CORRECTING METHOD USING THEREOF}
본 개시의 기술적 사상은 반도체 회로에 관한 것으로서, 더욱 상세하게는 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를 포함하는 메모리 컨트롤러에 관한 것이다.
반도체 스토리지 장치는 컴퓨터, 스마트폰, 스마트패드 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 메모리 카드 등과 같이 반도체 메모리, 특히 비휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
비휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다.
반도체 제조 기술이 발전되면서, 스토리지 장치의 고집적화 및 그에 따른 대용량화가 지속적으로 진행되고 있다. 스토리지 장치의 고집적화는 스토리지 장치의 생산 비용을 감소시킨다는 장점을 갖는다. 그러나, 스토리지 장치의 고집적화로 인해 스토리지 장치의 스케일이 감소하면서, 기존에 발견되지 않은 다양한 문제들이 발견되고 있다. 예를 들어, 스토리지 장치의 고집적화가 진행되면서, 스토리지 장치에 저장된 데이터의 에러율이 증가하고 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는 코드 워드에 대한 디코딩 중에 정정 완료 여부를 판단할 수 있는 에러 정정 회로 및 이를 포함하는 메모리 컨트롤러를 제공하는데 있다.
본 개시의 기술적 사상이 해결하고자 하는 또 다른 과제는 코드 워드에 대한 디코딩 중에 정정 완료 여부를 판단할 수 있는 에러 정정 방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 유저 데이터 및 패리티 코드를 포함하는 코드 워드를 수신하고, 상기 유저 데이터에 대한 에러 정정을 수행하는 메모리 컨트롤러는, 상기 코드 워드를 저장하고, 상기 코드 워드를 분할한 복수의 서브 그룹 데이터들을 순차적으로 출력하는 제1 버퍼, 상기 제1 버퍼로부터 수신한 상기 복수의 서브 그룹 데이터들 각각에 대한 복수의 무결성 데이터들을 생성하고, 상기 패리티 코드를 이용하여 상기 유저 데이터에 대한 에러 정정을 수행하는 디코더, 상기 복수의 서브 그룹 데이터들 각각에 대한 상기 복수의 무결성 데이터들을 순차적으로 저장하는 제2 버퍼 및 상기 제2 버퍼가 업데이트 되면, 상기 제2 버퍼에 저장된 상기 복수의 무결성 데이터들을 기초로 상기 코드 워드의 에러를 판단하는 코드 워드 에러 판단부를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 유저 데이터 및 패리티 코드를 포함하는 코드 워드를 수신하고, 상기 코드워드에 대한 에러 정정을 수행하는 에러 정정 회로는 상기 코드 워드를 분할한 복수의 서브 그룹 데이터들 각각에 대한 복수의 무결성 데이터들을 순차적으로 생성하고, 상기 패리티 코드를 이용하여 상기 유저 데이터에 대한 에러 정정을 반복적으로 수행하는 디코더 및 상기 복수의 무결성 데이터들을 기초로 상기 코드 워드의 에러를 판단하는 코드 워드 에러 판단부;를 포함하고, 상기 디코더는 상기 코드 워드 에러 판단부의 판단 결과에 기초하여 상기 코드 워드에 대한 에러 정정을 중단하는 것을 특징으로 할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 유저 데이터와 패리티 코드를 포함하는 코드 워드에 대한 에러를 정정하는 에러 정정 방법에 있어서, 상기 코드 워드를 수신하고, 제1 버퍼에 저장하는 단계, 상기 코드 워드를 분할한 복수의 서브 그룹 데이터들 각각에 대한 복수의 무결성 데이터들을 생성하는 단계, 상기 복수의 무결성 데이터들을 순차적으로 제2 버퍼에 저장하는 단계 및 상기 제2 버퍼가 업데이트 되면, 상기 제2 버퍼에 저장된 상기 복수의 무결성 데이터들을 기초로 상기 코드 워드의 에러를 판단하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 에러 정정 회로는 코드 워드에 대한 디코딩중 정정 완료 여부를 판단함에 따라서, 오류 정정 속도 및 오류 정정 능력을 향상시킬 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시예에 따른 에러 정정 방법을 나타내는 순서도이다.
도 5는 본 개시의 예시적 실시예에 따른 디코더의 동작을 나타내는 순서도이다.
도 6a 및 도 6b는 본 개시의 예시적 실시예에 따른 에러 정정 회로의 동작을 나타내는 도면이다.
도 7은 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다.
도 8은 본 개시의 예시적 실시예에 따른 에러 정정 방법을 나타내는 순서도이다.
도 9a 및 도 9b는 본 개시의 예시적 실시예에 따른 에러 정정 완료 판단 방법을 나타내는 도면이다.
도 10은 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다.
도 11은 본 개시의 예시적 실시예에 따른 에러 정정 방법을 나타내는 순서도이다.
도 12는 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다.
도 13는 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다.
도 14은 본 개시의 예시적 실시예에 따른 메모리 시스템을 포함하는 메모리 카드 시스템을 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(1000)은 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰, 스마트 폰, e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션 장치, 블랙박스, 디지털 카메라, DMB (Digital Multimedia Broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등과 같은 컴퓨팅 시스템들 중 하나로 구현될수 있다.
메모리 시스템(1000)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함할 수 있다. 일 예시에서, 호스트(HOST), 메모리 컨트롤러(100) 및 메모리 장치(200) 각각은 하나의 칩, 하나의 패키지, 하나의 모듈 등으로 제공될 수 있다. 또는 메모리 컨트롤러(100) 및 메모리 장치(200)는 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 Metric Quad 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) 등과 같은 패키지들을 이용하여 실장되어 제공될 수 있다.
메모리 장치(200)는 비휘발성 메모리 장치 또는 휘발성 메모리 장치 중 어느 하나로 구현할 수 있다. 예로서, 메모리 장치(200)는 낸드 플래시 메모리(NAND Flash Memory;NAND), 수직형 낸드 플래시 메모리(Vertical NAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory), 상변화 메모리(Phase-Change Memory), 자기저항 메모리(Magnetoresistive Random Access Memory) 등과 같은 비휘발성 메모리 장치로 구성되거나, 정적 랜덤 억세스 메모리(Static Random Access Memory; SRAM), 동적 랜덤 억세스 메모리(Dynamic Random Access Memory;DRAM), 래치(Latch), 플립플롭(Flip-Flop), 레지스터(Register)와 같은 휘발성 메모리 장치로 구성될 수 있다. 메모리 장치(200)는 적어도 하나의 비휘발성 메모리 장치들과 적어도 하나의 휘발성 메모리 장치들이 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 장치들 또는 휘발성 메모리 장치들이 혼합된 형태로 구성될 수도 있다. 메모리 장치(200)는 단일의 플래시 칩으로 구성할 수 있다. 또한, 메모리 장치(200)는 복수의 플래시 메모리 칩들로 구성할 수도 있다.
메모리 컨트롤러(100)는 프로세서(110), 인코더(120), 에러 정정 회로(130), RAM(Random Access Memory; 140), 호스트 인터페이스(150), 메모리 인터페이스(160) 및 버스(170)를 포함할 수 있다. 프로세서(110)는 버스(170)를 통하여 인코더(120), 에러 정정 회로(130), RAM(140), 호스트 인터페이스(150) 및 메모리 인터페이스(160)와 전기적으로 연결될 수 있다. 버스(170)는 메모리 컨트롤러(100)의 구성 수단들 간의 정보를 전송하는 전기적 전송로를 의미할 수 있다.
프로세서(110)는 메모리 시스템(1000)의 전반적인 동작을 제어할 수 있다. 자세하게는, 호스트(HOST)로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 메모리 시스템(1000)을 제어할 수 있다. 프로세서(110)는 리드 동작 시에는 리드 커맨드 및 어드레스를 메모리 장치(200)에 제공하고, 라이트 동작 시에는 라이트 커맨드, 어드레스, 그리고 인코딩 처리된 코드워드를 메모리 장치(200)에 제공할 수 있다. 또한, 프로세서(110)는 RAM(140)에 저장된 메타 데이터를 이용하여 호스트로부터 수신되는 논리적 주소를 물리적 페이지 주소로 변환시키는 처리를 수행할 수 있다.
RAM(140)에는 호스트로부터 전송된 데이터 및 프로세서(110)에서 생성된 데이터가 임시로 저장되거나 메모리 장치(200)로부터 독출한 데이터가 임시로 저장될 수 있다. 또한, RAM(140)에는 메모리 장치(200)로부터 읽어낸 메타 데이터가 저장된다. RAM(140)은 DRAM, SRAM 등으로 구현될 수 있다. 메타 데이터(meta data)는 메모리 장치(200)를 관리하기 위하여 메모리 시스템(1000)에서 생성된 정보일 수 있다. 관리 정보인 메타 데이터에는 논리적 주소(Logical Address)를 메모리 장치(200)의 물리적 페이지 주소(Physical Page Address)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보가 포함될 수 있다. 일 예로서, 메타 데이터에는 페이지 단위로 어드레스 매핑 처리를 수행하는데 필요한 페이지 매핑 테이블 정보가 포함될 수 있다. 또한, 메타 데이터에는 메모리 장치(200)의 저장 공간을 관리하기 위한 정보들도 포함할 수 있다.
호스트 인터페이스(150)는 메모리 장치(200)와 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 장치(200)와 호스트를 연결할 수 있다. 호스트 인터페이스(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)는 프로세서(110)의 제어에 따라서 호스트와 커맨드, 어드레스 및 데이터를 교환할 수 있다.
메모리 인터페이스(160)는 메모리 장치(200)와 전기적으로 연결될 수 있다. 일 예시에서, 메모리 인터페이스(160)는 NAND 플래시 메모리 칩 또는 NOR 플래시 메모리 칩과의 인터페이스를 지원하도록 구성될 수 있다. 메모리 인터페이스(160)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수 있다.
프로세서(110)는 메모리 시스템(1000)에 전원이 공급되면 메모리 장치(200)에 저장되어 있는 메타 데이터를 읽어내어 RAM(140)에 저장하도록 메모리 시스템(1000)을 제어할 수 있다. 프로세서(110)는 메모리 장치(200)에서의 메타 데이터 변경을 발생시키는 동작에 따라서 RAM(140)에 저장된 메타 데이터를 업데이트 하도록 메모리 시스템(1000)을 제어할 수 있다. 그리고, 프로세서(110)는 메모리 시스템(1000)에서 파워 오프 되기 전에 RAM(140)에 저장되어 있는 메타 데이터를 메모리 장치(200)에 라이트하도록 메모리 시스템(1000)을 제어할 수 있다.
프로세서(110)는 라이트 동작 시에는 호스트로부터 수신된 정보 워드를 인코더(120)에서 저밀도 패리티 코드(Low Density Parity Code;LDPC)를 이용하여 인코딩하고, 리드 동작 시에는 메모리 장치(200)로부터 읽어낸 데이터를 에러 정정 회로(130)에서 저밀도 패리티 코드를 이용하여 디코딩하도록 메모리 컨트롤러(100)를 제어할 수 있다.
인코더(120)는 호스트로 수신된 유저 데이터에 저밀도 패리티 코드에 의해 명시된 다수의 패리티 비트들을 첨부하여 코드 워드를 생성할 수 있다. 코드 워드에 포함되는 패리티 비트는 저밀도 패리티 코드를 만족시키도록 설정될 수 있다.
에러 정정 회로(130)는 디코더(132)를 포함할 수 있다. 디코더(132)는 메모리 장치(200)로부터 읽어낸 데이터를 코드 워드 단위로 디코딩하여 유저 데이터를 복원할 수 있다. 일 예시에서, 디코더(132)는 저밀도 패리티 코드(LDPC)를 이용하여 유저 데이터를 디코딩할 수 있다. 저밀도 패리티 코드는 태너 그래프(Tanner graph)로 불리는 이분(bipartite) 그래프에 의해 표시될 수 있다. 즉, 에지는 변수 노드를 체크 노드에만 연결할 수 있고, 변수 노드를 다른 변수 노드에, 또는 체크 노드를 다른 체크 노드에 연결할 수 없다. 이러한 그래프에서 한 세트의 노드들, 변수 노드(variable node)들은 코드 워드의 비트들 및 다른 노드들의 세트에 대응하고, 체크 노드들로 불리는 제약 노드(constraint node)들은 코드를 정의하는 한 세트의 패리티 체크 제약들에 대응할 수 있다.
본 개시의 일 실시예에 따르면, 에러 정정 회로(130)는 코드 워드를 서브 그룹 데이터 단위로 나누고, 서브 그룹 데이터에 대한 에러 여부를 판단함으로써 에러 여부 판단 결과에 기초하여 디코더(132)가 코드 워드를 디코딩하는 중이라도 디코딩을 중지하고 코드 워드를 호스트(HOST)로 출력할 수 있다. 자세한 내용은 도 2에서 후술한다.
도 1에서는 에러 정정 회로(130)가 디코더(132) 만을 포함하고 있지만, 또 다른 실시예에서, 에러 정정 회로(130)는 인코더(120) 및 디코더(132)를 포함할 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다. 도 1과 중복되는 내용은 생략한다.
도 2를 참조하면, 에러 정정 회로(130)는 제1 버퍼(131), 디코더(132), 제2 버퍼(133) 및 코드 워드 에러 판단부(134)를 포함할 수 있다. 제1 버퍼(131)는 데이터를 저장할 수 있는 메모리 소자를 포함할 수 있고, 일 예시에서, 정적 랜덤 억세스 메모리(SRAM), 동적 랜덤 억세스 메모리(DRAM), 래치(Latch), 플립플롭(Flip-Flop), 레지스터(Register)와 같은 휘발성 메모리 장치로 구성될 수 있다. 제1 버퍼(131)는 메모리 장치(도 1, 200)으로부터 오리지널 코드 워드(CW_org)를 수신할 수 있다. 또한, 제1 버퍼(131)는 디코더(132)로부터 디코딩이 수행된 업데이트된 코드 워드(CW_udt)를 수신할 수 있다.
제1 버퍼(131)는 오리지널 코드 워드(CW_org) 또는 업데이트된 코드 워드(CW_udt)의 데이터 스트림을 소정의 데이터 단위로 분할한 제1 서브 그룹 데이터(SGD_1) 내지 제n 서브 그룹 데이터(SGD_n)를 순차적으로 디코더(132)에 출력할 수 있다.
디코더(132)는 오리지널 코드 워드(CW_org) 또는 업데이트된 코드 워드(CW_org)를 분할한 제k 서브 그룹 데이터(SGD_k)(k는 1이상 k이하의 자연수)를 수신하고, 수신한 제k 서브 그룹 데이터(SGD_k)를 디코딩할 수 있다. 코드 워드(CW_org, CW_udt)가 길어짐에 따라서 디코더(132)의 속도 향상 및 면적 감소를 위해 코드 워드(CW_org, CW_udt)을 분할한 서브 그룹 데이터 단위로 디코딩을 수행할 수 있다.
본 개시의 일 실시예에 따르면, 디코더(132)는 하나의 코드 워드에 대해 반복적으로 디코딩(iterative decoding)을 수행할 수 있다. 일 예시에서, 디코더(132)는 외부(예를 들면, 도 1의 메모리 장치(200))로부터 수신한 오리지널 코드 워드(CW_org)를 디코딩한 후, 에러 정정이 완료되지 않는 경우, 1차적으로 에러 정정이 수행된 업데이트된 코드 워드(CW_udt)를 제1 버퍼(131)에 저장할 수 있고, 업데이트된 코드 워드(CW_udt)를 이용하여 다시 디코딩을 수행할 수 있다.
즉, 디코더(132)는 오리지널 코드 워드(CW_org)를 분할한 모든 서브 그룹 데이터들(SGD_1~SGD_n)에 대한 디코딩을 모두 수행하고, 에러 정정이 완료되었는지 판단할 수 있다. 일 예시에서, 디코더(132)는 오리지널 코드 워드(CW_org)에 포함된 패리티 코드를 이용하여 에러 정정이 완료되었는지 판단할 수 있다. 디코더(132)는 오리지널 코드 워드(CW_org)에 대한 에러 정정이 완료되지 않은 경우, 업데이트된 코드 워드(CW_udt)를 제1 버퍼(131)에 저장하고, 업데이트된 코드 워드(CW_udt)를 분할한 복수의 서브 그룹 데이터들(SGD_1~SGD_n)에 대한 디코딩을 순차적으로 수행할 수 있다. 디코더(132)는 코드 워드(CW_org, CW_udt)에 대한 에러 정정이 완료된 경우, 정정된 코드 워드(CW_crt)를 외부(예를 들면, 도 1의 호스트(HOST))로 출력할 수 있다.
디코더(132)는 디코딩 과정에서 제k 서브 그룹 데이터(SGD_k)에 에러가 존재하는지 여부에 대한 정보를 포함하는 제k 무결성 데이터(ID_k)를 생성하고, 생성한 제k 무결성 데이터(ID_k)를 제2 버퍼(133)에 저장할 수 있다.
일 예시에서, 디코더(132)가 오리지널 코드 워드(CW_org)에 대한 디코딩을 완료한 경우, 제2 버퍼에는 제1 무결성 데이터(ID_1) 내지 제n 무결성 데이터(ID_n)가 저장될 수 있다. 이후, 디코더(132)가 업데이트된 코드 워드(CW_udt)를 분할한 복수의 서브 그룹 데이터들(SGD_1~SGD_n) 중 제k 서브 그룹 데이터(SGD_k)에 대한 디코딩을 수행하는 경우에 디코더(132)는 제k 무결성 데이터(ID_k)를 업데이트할 수 있다.
제2 버퍼(133)에 저장된 제k 무결성 데이터(ID_k) 가 업데이트 되면, 코드 워드 에러 판단부(134)는 업데이트된 복수의 무결성 데이터들(ID_1~ID_n)을 기초로 정정 중단 신호(CSF)를 디코더(132)에 출력할 수 있다.
일 실시예에서, 제1 무결성 데이터(ID_1) 내지 제n 무결성 데이터(ID_n)는 각각 대응하는 제1 서브 그룹 데이터(SGD_1) 내지 제n 서브 그룹 데이터(SGD_n)의 에러 존재 여부에 대한 정보를 포함할 수 있고, 코드 워드 에러 판단부(134)는 제1 무결성 데이터(ID_1) 내지 제n 무결성 데이터(ID_n)를 기초로 업데이트된 코드 워드(CW_udt)에 대한 에러 정정이 완료되었는지 여부(또는 업데이트된 코드 워드(CW_udt)에 에러가 없는지 여부)를 판단할 수 있다.
코드 워드 에러 판단부(134)가 제1 무결성 데이터(ID_1) 내지 제n 무결성 데이터(ID_n)를 기초로 업데이트된 코드 워드(CW_udt)에 대한 에러 정정이 완료된 것으로 판단하면, 코드 워드 에러 판단부(134)는 디코더(132)에 정정 완료 신호(CSF)를 출력할 수 있고, 디코더(132)는 이에 대응하여 복수의 서브 그룹 데이터들(SGD_1~SGD_n)에 대한 추가적인 디코딩을 수행하지 않고, 즉시 제1 버퍼(131)에 저장된 업데이트 코드 워드(CW_udt)를 정정된 코드 워드(CW_crt)로써 호스트(HOST)에 출력할 수 있다.
본 개시의 기술적 사상에 따르면, 코드 워드 에러 판단부(134)가 디코더(132)의 코드 워드(CW_org, CW_udt)에 대한 디코딩이 완료되기 전이라도 에러 정정이 완료되었는지 판단하고, 판단 결과에 기초하여 디코딩을 중단할 수 있다. 결과적으로, 디코딩 속도가 개선되고, 불필요한 전력 소비가 방지될 수 있다.
도 2에서는 제1 버퍼(131)와 제2 버퍼(133)가 별도의 소자로 구분되어 도시되어 있으나, 이는 일 실시 예일 뿐이고, 또 다른 실시예에서, 제1 버퍼(131)와 제2 버퍼(133)는 하나의 메모리 소자로 구성될 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다. 도 2와 중복되는 내용은 생략한다.
도 3을 참조하면, 에러 정정 회로(130)는 제1 버퍼(131), 디코더(132), 제2 버퍼(133), 코드 워드 에러 판단부(134) 및 무결성 데이터 생성부(135)를 포함할 수 있다. 제1 버퍼(131), 디코더(132), 제2 버퍼(133) 및 코드 워드 에러 판단부(134)는 도 2에서 상술한 바 이에 대한 설명은 생략한다.
무결성 데이터 생성부(135)는 제1 버퍼(131)로부터 제k 서브 그룹 데이터(SGD_k)를 수신하고, 제k 서브 그룹 데이터(SGD_k)에 대응하는 제k 무결성 데이터(ID_k)를 제2 버퍼(133)에 저장할 수 있다. 무결성 데이터 생성부(135)가 디코더(132)와 별도로 무결성 데이터(ID_1~ID_n)를 생성함으로써 디코더(132)의 디코딩 능력에 영향을 주지 않고도, 코드 워드 에러 판단부(134)가 무결성 데이터(ID_1~ID_n)를 기초로 코드 워드(CW_org, CW_udt)에 대한 에러 존재 여부를 판단할 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 에러 정정 방법을 나타내는 순서도이다.
도 2 및 도 4를 참조하면, 에러 정정 회로(130)는 오리지널 코드 워드(CW_org)를 수신하고, 제1 버퍼(131)에 저장할 수 있다(S110). 에러 정정 회로(130)는 제1 버퍼(131)에 저장된 코드 워드(CW_org, CW_udt)를 분할한 복수의 서브 그룹 데이터들(SGD_1~SGD_n) 각각에 대한 복수의 무결성 데이터들(ID_1~ID_n)을 순차적으로 생성할 수 있다(S120). 에러 정정 회로(130)는 생성된 복수의 무결성 데이터들(ID_1~ID_n)을 순차적으로 제2 버퍼(133)에 저장함으로써 제2 버퍼(133)를 업데이트할 수 있다(S130).
제2 버퍼(133)가 업데이트되면, 에러 정정 회로(130)는 제2 버퍼(133)에 저장된 복수의 무결성 데이터들(ID_1~ID_n)을 기초로 코드 워드(CW_org, CW_udt)에 대한 에러 존재 여부를 판단할 수 있다(S140). 코드 워드(CW_org, CW_udt)에 대한 에러가 없는 경우, 에러 정정 회로(130)는 에러 정정을 수행하지 않고 바로 코드 워드(CW_org, CW_udt)를 정정된 코드 워드(CW_crt)로써 출력할 수 있다(S150).
도 5는 본 개시의 예시적 실시예에 따른 디코더의 동작을 나타내는 순서도이다.
도 2 및 도 5를 참조하면, 플래그(k)가 초기값인 '1'로 설정되고(S210), 디코더(132)는 제1 버퍼(131)로부터 제k 서브 그룹 데이터(SGD_k)를 수신할 수 있다(S220). 디코더(132)는 제k 서브 그룹 데이터(SGD_k)로부터 제k 무결성 데이터(ID_k)를 생성하고, 제2 버퍼(133)에 생성한 제k 무결성 데이터(ID_k)를 업데이트할 수 있다(S230). 디코더(132)는 플래그(k)가 복수의 서브 그룹 데이터들(SGD_1~SGD_n)의 개수(n)와 동일한지 판단할 수 있다(S240).
플래그(k)가 복수의 서브 그룹 데이터들(SGD_1~SGD_n)의 개수(n)와 동일하지 않은 경우, 디코더(132)는 코드 워드 에러 판단부(134)로부터 정정 중단 신호(CSF)를 수신하였는지 판단할 수 있다(S250). 정정 중단 신호(CSF)를 수신한 경우, 디코더(132)는 디코딩을 중단하고 코드 워드(CW_crt)를 출력할 수 있다(S290). 정정 중단 신호(CSF)를 수신하지 않은 경우, 플래그(k)에 '1'을 더하고(S260), S220 단계 내지 S240 단계를 반복할 수 있다.
플래그(k)가 복수의 서브 그룹 데이터들(SGD_1~SGD_n)의 개수인 'n'과 동일한 경우, 디코더(132)는 코드 워드(CW_org, CW_udt)에 포함된 패리티 코드를 이용하여 유저 데이터에 대한 에러를 정정할 수 있다(S270). 디코더(132)는 코드 워드(CW_org, CW_udt)에 대한 에러 정정이 완료되었는지 판단할 수 있고(S280), 에러 정정이 완료된 경우, 코드 워드(CW_crt)를 출력할 수 있다(S290). 에러 정정이 완료되지 않은 경우, 디코더(132)는 S210 단계 내지 S270 단계를 반복할 수 있다.
도 5에는 디코더(132)가 무결성 데이터(ID_1~ID_n)를 생성하는 실시예가 도시되어 있으나, 본 개시의 기술적 사상은 이에 제한되지 않고, 도 3과 같이 별도의 구성인 무결성 데이터 생성부(135)가 무결성 데이터(ID_1~ID_n)를 생성하는 실시예에도 유추적용될 수 있음은 이해되어야 할 것이다.
도 6a 및 도 6b는 본 개시의 예시적 실시예에 따른 에러 정정 회로의 동작을 나타내는 도면이다. 자세하게는, 도 6a 및 도 6b는 오리지널 코드 워드에 대한 디코딩을 완료함으로써 복수의 서브 그룹 데이터들(SGD_1~SGD_7) 각각에 대응하는 복수의 무결성 데이터(ID_1~ID_7)가 제2 버퍼(133)에 저장된 이후, 업데이트된 코드 워드에 포함되는 제2 서브 그룹 데이터(SGD_2) 및 제3 서브 그룹 데이터(SGD_3)에 대한 디코딩 과정을 나타내는 도면이다. 또한, 도 6b는 시간의 흐름상 도 6a 이후의 동작을 나타낼 수 있다.
도 2 및 도 6a를 참조하면, 디코더(132)는 제1 버퍼(131)로부터 제1 코드 워드(CW1)에 포함되는 제2 서브 그룹 데이터(SGD_2)를 수신하고, 제2 서브 그룹 데이터(SGD_2)에 대한 무결성 체크를 수행할 수 있다. 본 명세서에서, 무결성 체크는 디코딩 과정 중 서브 그룹 데이터에 대한 에러가 존재하는지 여부를 확인하는 동작을 의미하고, 예시로써 부분적 신드롬 방법(Partial Syndrome Method), 부분적 순환 중복 검사 방법(Partial Cyclic Redundancy Check) 등이 있을 수 있으나, 이에 제한되지 않는다. 또한, 무결성 체크 방법에 대해서는 도 7 내지 도 12에서 후술한다.
디코더(132)는 무결성 체크를 통해 제2 서브 그룹 데이터(SGD_2)로부터 제2 무결성 데이터(ID_2)를 생성할 수 있고, 도 6a의 예시에서, 제2 무결성 데이터(ID_2)는 제2 서브 그룹 데이터(SGD_2)가 에러 없음(NE)을 나타내는 정보를 포함할 수 있다. 디코더(132)는 제2 버퍼(133)에 제2 무결성 데이터(ID_2)를 업데이트할 수 있고, 코드 워드 에러 판단부(134)는 제1 무결성 데이터(ID_1) 내지 제7 무결성 데이터(ID_7)에 기초하여 제1 코드 워드(CW1)에 에러가 존재하는지 여부를 판단할 수 있다. 제3 무결성 데이터(ID_3)가 제3 서브 그룹 데이터(SGD_3)가 에러 있음(E)을 나타내는 정보를 포함하고 있으므로, 코드 워드 에러 판단부(134)는 제1 무결성 데이터(ID_1) 내지 제7 무결성 데이터(ID_7)를 조합함으로써 제1 코드 워드(CW1)에 에러가 존재함을 판단할 수 있다. 따라서, 코드 워드 에러 판단부(134)는 디코더(132)에 정정 중단 신호(CSF)로써 '0'을 출력할 수 있고, 디코더(132)는 제1 코드 워드(CW1)에 대한 디코딩을 계속 진행할 수 있다.
도 2 및 도 6b를 참조하면, 디코더(132)는 제1 버퍼(131)로부터 제1 코드 워드(CW1)에 포함되는 제3 서브 그룹 데이터(SGD_3)를 수신하고, 제3 서브 그룹 데이터(SGD_3)에 대한 무결성 체크를 수행할 수 있다. 디코더(132)는 무결성 체크를 통해 제3 서브 그룹 데이터(SGD_3)로부터 제3 무결성 데이터(ID_3)를 생성할 수 있고, 도 6b의 예시에서, 제3 무결성 데이터(ID_3)는 제3 서브 그룹 데이터(SGD_3)가 에러 없음(NE)을 나타내는 정보를 포함할 수 있다. 디코더(132)는 제2 버퍼(133)에 제3 무결성 데이터(ID_3)를 에러 없음(NE)으로 업데이트할 수 있고, 코드 워드 에러 판단부(134)는 제1 무결성 데이터(ID_1) 내지 제7 무결성 데이터(ID_7)에 기초하여 제1 코드 워드(CW1)에 에러가 존재하는지 여부를 판단할 수 있다.
제3 무결성 데이터(ID_3)가 업데이트됨에 따라서, 제1 무결성 데이터(ID_1) 내지 제7 무결성 데이터(ID_7) 모두에 에러가 없음을 나타내는 정보를 포함할 수 있고, 코드 워드 에러 판단부(134)는 제1 무결성 데이터(ID_1) 내지 제7 무결성 데이터(ID_7)를 조합함으로써 제1 코드 워드(CW1)에 에러가 존재하지 않음을 판단할 수 있다. 따라서, 코드 워드 에러 판단부(134)는 디코더(132)에 정정 중단 신호(CSF)로써 '1'을 출력할 수 있고, 디코더(132)는 정정 중단 신호(CSF)로써 '1'을 수신함에 대응하여 제4 서브 그룹 데이터(SGD_4) 내지 제7 서브 그룹 데이터(SGD_7)에 대한 디코딩을 수행하지 않고, 제1 코드 워드(CS1)를 외부(예를 들면, 도 1의 호스트(HOST))에 출력할 수 있다. 본 개시의 예시적 실시예에 따르면, 도 6a 및 도 6b의 예시와 같이 복수의 서브 그룹 데이터들(SGD_1~SGD_7) 중 적어도 일부에 대한 디코딩을 생략할 수 있으므로 디코딩 성능이 개선되고, 전력 소모가 감소될 수 있다.
도 6a 및 도 6b에는 디코더(132)가 무결성 데이터(ID_1~ID_7)를 생성하는 실시예가 도시되어 있으나, 본 개시의 기술적 사상은 이에 제한되지 않고, 도 3과 같이 별도의 구성인 무결성 데이터 생성부(135)가 무결성 데이터(ID_1~ID_7)를 생성하는 실시예에도 유추적용될 수 있음은 이해되어야 할 것이다.
도 7은 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다. 도 3과 중복되는 내용은 생략한다.
도 7을 참조하면, 에러 정정 회로(130a)는 제1 버퍼(131a), 디코더(132a), 제2 버퍼(133a), 코드 워드 에러 판단부(134a) 및 무결성 데이터 생성부(135a)를 포함할 수 있다. 무결성 데이터 생성부(135a)는 제k 서브 그룹 데이터(SGD_k)를 기초로 제k 신드롬 데이터(Sdr_k)를 생성할 수 있다. 제k 신드롬 데이터(Sdr_k)는 제k 서브 그룹 데이터(SGD_k)가 미리 결정된 조건식에 만족하는지 여부를 나타내는 데이터일 수 있고, 일 예시에서 미리 결정된 조건식은 저밀도 패리티 코드(Low Density Parity Code; LDPC)에 따른 태너 그래프(Tanner graph)(이하 LDPC 그래프)에 만족하는지 여부를 의미할 수 있다.
무결성 데이터 생성부(135a)는 제k 신드롬 데이터(Sdr_k)를 이용하여 제2 버퍼(133a)의 제1 신드롬 데이터(Sdr_1) 내지 제n 신드롬 데이터(Sdr_n)를 업데이트할 수 있고, 코드 워드 에러 판단부(134a)는 제1 신드롬 데이터(Sdr_1) 내지 제n 신드롬 데이터(Sdr_n)에 기초하여 제1 코드 워드(CW1)가 미리 결정된 조건식을 만족시키는지 여부를 판단할 수 있다. 코드 워드 에러 판단부(134a)는 제1 코드 워드(CW1)가 미리 결정된 조건식을 만족시키는 경우 디코더(132a)에 정정 중단 신호(CSF)를 출력할 수 있고, 디코더(132a)는 디코딩을 중단하고, 제1 코드 워드(CW1)를 외부(예를 들어, 도 1의 호스트(HOST))에 출력할 수 있다.
도 7은 무결성 데이터 생성부(135a)가 제k 신드롬 데이터(Sdr_k)를 생성하는 실시예가 도시되어 있으나, 이는 일 실시예 일 뿐이고, 디코더(132a)가 제k 신드롬 데이터(Sdr_k)를 생성하는 실시예에도 유추 적용될 수 있음은 이해되어야 할 것이다.
도 8은 본 개시의 예시적 실시예에 따른 에러 정정 방법을 나타내는 순서도이다.
도 7 및 도 8을 참조하면, 에러 정정 회로(130a)는 플래그(k)의 초기값을 '1'로 설정하고(S310), 제1 코드 워드(CW1)에 포함되는 제k 서브 그룹 데이터(SDG_k)에 대한 제k 신드롬 데이터(Sdr_k)를 생성할 수 있다(S320). 에러 정정 회로(130a)는 제k 신드롬 데이터(Sdr_k)를 기초로 제2 버퍼(133a)에 저장된 LDPC 코드의 패리티 검사 행렬을 업데이트할 수 있다(S330). 에러 정정 회로(130a)는 패리티 검사 행렬을 기초로 LDPC 그래프를 생성하고(S340), 생성한 LDPC 그래프에 기초하여 에러 정정이 완료되었는지 판단할 수 있다(S350). 에러 정정이 완료되지 않은 경우(S360), 플래그(k)에 '1'을 더한 뒤(S380) S320 단계 내지 S360 단계를 반복할 수 있고, 에러 정정이 완료된 경우(S360), 제1 코드 워드(CW1)를 외부(예를 들면, 도 1의 호스트(HOST))에 출력할 수 있다(S370).
도 9a 및 도 9b는 본 개시의 예시적 실시예에 따른 에러 정정 완료 판단 방법을 나타내는 도면이다.
도 7, 도 9a 및 도 9b를 참조하면, 제1 코드 워드(CW1)에 대한 변수 노드들 및 체크 노드들은 LDPC 코드의 패리티 검사 행렬(H, Parity Check Matrix)에 기반하여 구성될 수 있다. 패리티 검사 행렬(H)은 제1 내지 제4 행들(R1~R4), 그리고 제1 내지 제8 열들(C1~C8)을 포함할 수 있다. 제1 코드 워드(CW1)의 체크 노드들의 수는 패리티 검사 행렬(H)의 행들의 수와 동일할 수 있다. 예를 들어, 패리티 검사 행렬(H)의 제1 내지 제4 행들(R1~R4)에 각각 대응하는 제1 내지 제4 체크 노드들(CN1~CN4)이 무결성 데이터 생성부(135a)에서 연산될 수 있고, 제k 신드롬 데이터(Sdr_k)에 의해 업데이트될 수 있다. 제1 코드 워드(CW1)의 변수 노드들의 수는 패리티 검사 행렬(H)의 열들의 수와 동일할 수 있다. 예를 들어, 패리티 검사 행렬(H)의 제1 내지 제8 열들(C1~C8)에 각각 대응하는 제1 내지 제8 변수 노드들(VN1~VN8)이 무결성 데이터 생성부(135a)에서 연산될 수 있고, 제k 신드롬 데이터(Sdr_k)에 의해 업데이트될 수 있다.
패리티 검사 행렬(H)의 각 원소는 'h(i,j)'로 표시될 수 있다. 변수(i)는 패리티 검사 행렬(H)의 행을 가리키고, 변수(j)는 패리티 검사 행렬(j)의 행을 가리킬 수 있다. 패리티 검사 행렬(H)의 각 원소(h(i,j))의 값이 '1'일 때, 제i 체크 노드와 제j 변수 노드는 서로 연관될 수 있다. 패리티 검사 행렬(H)의 각 원소(h(i,j))의 값이 '0'일 때, 제i 체크 노드와 제j 변수 노드는 서로 연관되지 않을 수 있다. 도 9b는 패리티 검사 행렬(H)에 기반한 변수 노드들(VN1~VN8) 및 체크 노드들(CN1~CN4)을 나타낸다.
제1 변수 노드(VN1)에 대응하는 제1 열(C1)에서, 제2 행(R2) 및 제4 행(R4)의 값이 '1'이므로, 제1 변수 노드(VN1)는 제2 체크 노드(CN2) 및 제4 체크 노드(CN4)와 연관될 수 있다. 제2 변수 노드(VN2)에 대응하는 제2 열(C2)에서, 제1 행(R1) 및 제2 행(R2)의 값이 '1'이므로, 제2 변수 노드(VN2)는 제1 체크 노드(CN1) 및 제2 체크 노드(CN2)와 연관될 수 있다. 제3 변수 노드(VN3)에 대응하는 제3 열(C3)에서, 제2 행(R2) 및 제3 행(R3)의 값이 '1'므로, 제3 변수 노드(VN3)는 제2 체크 노드(CN2) 및 제3 체크 노드(CN3)와 연관될 수 있다. 제4 변수 노드(VN4)에 대응하는 제4 열(C4)에서, 제1 행(R1) 및 제4 행(R4)의 값이 '1'므로, 제4 변수 노드(VN4)는 제1 체크 노드(CN1) 및 제4 체크 노드(CN4)와 연관될 수 있다.
제5 변수 노드(VN5)에 대응하는 제5 열(C5)에서, 제1 행(R1) 및 제4 행(R4)의 값이 '1'이므로, 제5 변수 노드(VN5)는 제1 체크 노드(CN1) 및 제4 체크 노드(CN4)와 연관될 수 있다. 제6 변수 노드(VN6)에 대응하는 제6 열(C6)에서, 제2 행(R2) 및 제3 행(R3)의 값이 '1'이므로, 제6 변수 노드(VN6)는 제2 체크 노드(CN2) 및 제3 체크 노드(CN3)와 연관될 수 있다. 제7 변수 노드(VN7)에 대응하는 제7 열(C7)에서, 제3 행(R3) 및 제4 행(R4)의 값이 '1'이므로, 제7 변수 노드(VN7)는 제3 체크 노드(CN3) 및 제4 체크 노드(CN4)와 연관될 수 있다. 제8 변수 노드(VN8)에 대응하는 제8 열(C8)에서, 제1 행(R2) 및 제3 행(R3)의 값이 '1'이므로, 제8 변수 노드(VN8)는 제1 체크 노드(CN1) 및 제3 체크 노드(CN3)와 연관될 수 있다.
코드 워드 에러 판단부(134a)는 생성한 LDPC 그래프를 기초로 제1 코드 워드(CW1)의 정정이 완료됐는지 판단할 수 있다. 코드 워드 에러 판단부(134a)는 제1 코드 워드(CW1)의 정정이 완료된 경우, 디코더(132a)에 정정 중단 신호(CSF)를 출력할 수 있고, 디코더(132a)는 정정 중단 신호(CSF)에 대응하여 제1 코드 워드(CW1)를 외부(예를 들면, 도 1의 호스트(HOST))에 출력할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다. 도 3과 중복되는 내용은 생략한다.
도 10을 참조하면, 에러 정정 회로(130b)는 제1 버퍼(131b), 디코더(132b), 제2 버퍼(133b), 코드 워드 에러 판단부(134b) 및 무결성 데이터 생성부(135b)를 포함할 수 있다. 무결성 데이터 생성부(135b)는 제k 서브 그룹 데이터(SGD_k)를 기초로 CRC 동작을 수행함으로써 제k 서브 CRC 데이터(SCRC_k)를 생성할 수 있다. 무결성 데이터 생성부(135b)는 제k 서브 CRC 데이터(SCRC_k)를 제2 버퍼(133b)에 저장할 수 있다.
본 명세서에서, CRC 동작은 데이터 송수신 시스템에서 데이터의 신뢰성을 검증하기 위한 오류 검출 방법일 수 있다. 자세하게는 CRC 동작은 서브 그룹 데이터를 미리 정해진 다항식으로 나누고, 나눈 나머지를 서브 CRC 데이터로 생성하는 동작을 의미할 수 있다. 즉, 제k 서브 CRC 데이터(SCRC_k)는 제k 서브 그룹 데이터(SGD_k)를 미리 결정된 다항식으로 나눈 나머지(예를 들면, mod 함수 결과값)에 대응할 수 있다.
제1 코드 워드(CW1)는 제1 CRC 데이터(CRC1)를 포함하는 유저 데이터를 포함할 수 있고, 코드 워드 에러 판단부(134b)는 제1 버퍼(131b)로부터 제1 코드 워드(CW1)에 포함되는 제1 CRC 데이터(CRC1)를 수신할 수 있다. 또한, 코드 워드 에러 판단부(134b)는 제2 버퍼(133b)로부터 수신한 제1 서브 CRC 데이터(SCRC_1) 내지 제n 서브 CRC 데이터(SCRC_n)를 기초로 제2 CRC 데이터를 생성할 수 있다. 일 예시에서, 코드 워드 에러 판단부(134b)는 제1 서브 CRC 데이터(SCRC_1) 내지 제n 서브 CRC 데이터(SCRC_n)에 대한 덧셈 연산 또는 곱 연산을 수행한 결과 값을 미리 결정된 다항식으로 나눈 나머지를 제2 CRC 데이터로써 생성할 수 있다.
코드 워드 에러 판단부(134b)는 제1 버퍼(131b)로부터 수신한 제1 CRC 데이터(CRC1) 및 생성한 제2 CRC 데이터를 비교할 수 있다. 비교 결과, 제1 CRC 데이터(CRC1)와 제2 CRC 데이터가 동일한 경우, 코드 워드 에러 판단부(134b)는 디코더(132a)에 정정 중단 신호(CSF)를 출력할 수 있고, 디코더(132b)는 디코딩을 중단하고, 제1 코드 워드(CW1)를 외부(예를 들어, 도 1의 호스트(HOST))에 출력할 수 있다.
도 10은 무결성 데이터 생성부(135b)가 제k 서브 CRC 데이터(SCRC_k)를 생성하는 실시예가 도시되어 있으나, 이는 일 실시예 일 뿐이고, 디코더(132b)가 제k 서브 CRC 데이터(SCRC_k)를 생성하는 실시예에도 유추 적용될 수 있음은 이해되어야 할 것이다.
도 11은 본 개시의 예시적 실시예에 따른 에러 정정 방법을 나타내는 순서도이다.
도 10 및 도 11을 참조하면, 에러 정정 회로(130b)는 플래그(k)의 초기값을 '1'로 설정하고(S410), 제1 버퍼(131b)로부터 제1 CRC 데이터(CRC1)를 독출할 수 있다(S420). 에러 정정 회로(130b)는 제1 코드 워드(CW1)에 포함되는 제k 서브 그룹 데이터(SDG_k)에 대한 제k 서브 CRC 데이터(SCRC_k)를 생성할 수 있다(S430). 에러 정정 회로(130b)는 복수의 서브 CRC 데이터들(SCRC_1~SCRC_n)을 기초로 제2 CRC 데이터(CRC2)를 생성할 수 있다(S440).
에러 정정 회로(130b)는 제1 버퍼(131b)로부터 수신한 제1 CRC 데이터(CRC1) 및 생성한 제2 CRC 데이터(CRC2)를 비교할 수 있다(S450). 제1 CRC 데이터(CRC1)와 제2 CRC 데이터(CRC2)가 동일하지 않은 경우(S460), 플래그(k)에 '1'을 더한 뒤(S480) S430 단계 내지 S460 단계를 반복할 수 있고, 제1 CRC 데이터(CRC1)와 제2 CRC 데이터(CRC2)가 동일한 경우(S460), 제1 코드 워드(CW1)를 외부(예를 들면, 도 1의 호스트(HOST))에 출력할 수 있다(S470).
도 12는 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다. 도 3과 중복되는 내용은 생략한다.
도 12를 참조하면, 에러 정정 회로(130c)는 제1 버퍼(131c), 디코더(132c), 제2 버퍼(133c), 코드 워드 에러 판단부(134c), 제1 무결성 데이터 생성부(135c) 및 제2 무결성 데이터 생성부(136c)를 포함할 수 있다. 제1 버퍼(131c), 디코더(132c), 제2 버퍼(133c) 및 코드 워드 에러 판단부(134c)는 도 3의 제1 버퍼(131), 디코더(132), 제2 버퍼(133) 및 코드 워드 에러 판단부(134)와 동일하거나 유사할 수 있는 바 그 설명은 생략한다.
제1 무결성 데이터 생성부(135c)는 홀수 서브 그룹 데이터(SGD_2k-1)를 수신하고, 홀수 무결성 데이터(ID_2k-1)를 생성할 수 있다. 또한, 제2 무결성 데이터 생성부(136c)는 짝수 서브 그룹 데이터(SGD_2k)를 수신하고, 짝수 무결성 데이터(ID_2k)를 생성할 수 있다. 제1 무결성 데이터 생성부(135c)가 생성한 홀수 무결성 데이터(ID_2k-1) 및 제2 무결성 데이터 생성부(136c)가 생성한 짝수 무결성 데이터는 제2 버퍼(133C)에 복수의 무결성 데이터들(ID_1~ID_n)로써 순차적으로 저장될 수 있다. 제1 무결성 데이터 생성부(135c)는 도 7에서 상술한 신드롬 데이터 또는 도 10에서 상술한 서브 CRC 데이터를 홀수 무결성 데이터로써 생성할 수 있고, 제2 무결성 데이터 생성부(136c)는 도 7에서 상술한 신드롬 데이터 또는 도 10에서 상술한 서브 CRC 데이터를 짝수 무결성 데이터로써 생성할 수 있다.
본 개시의 일 실시예에 따른 에러 정정 회로(130c)는 복수의 무결성 데이터 생성부들(135c, 136c)을 포함함으로써 복수의 서브 그룹 데이터들(SGD_1~SGD_n)에 대응하는 복수의 무결성 데이터들(ID_1~ID_n)을 빠른 시간에 생성할 수 있고, 코드 워드 에러 판단부(134c)에 의한 에러 존재 여부에 대한 판단이 빨라질 수 있다. 이에 따라서, 제1 코드 워드(CW1)에 대한 디코딩 종료가 더 빨라질 수 있다.
도 12에서는 두 개의 무결성 데이터 생성부들이 포함되는 실시예가 도시되어 있으나, 이는 일 실시예이고, 세 개 이상의 무결성 데이터 생성부들이 포함되는 실시예에도 본 개시의 기술적 사상이 적용될 수 있다. 또한, 일 실시예에서, 디코더(132c)가 제1 무결성 데이터 생성부(135c) 또는 제2 무결성 데이터 생성부(136c)의 역할을 수행할 수 있다.
도 13는 본 개시의 예시적 실시예에 따른 에러 정정 회로를 나타내는 블록도이다. 도 10과 중복되는 내용은 생략한다.
도 13를 참조하면, 에러 정정 회로(130d)는 제1 버퍼(131d), 디코더(132d), 제2 버퍼(133d), 코드 워드 에러 판단부(134d), 무결성 데이터 생성부(135d) 및 제3 버퍼(137d)를 포함할 수 있다. 제1 버퍼(131d), 제2 버퍼(133d), 코드 워드 에러 판단부(134d)는 도 10의 제1 버퍼(131b), 제2 버퍼(133b), 코드 워드 에러 판단부(134b)와 동일하거나 유사할 수 있는바 그 설명은 생략한다.
디코더(132d)는 제k 서브 그룹 데이터(SGD_k)를 수신하고, 제k 신드롬 데이터(Sdr_k)를 생성할 수 있다. 또한, 디코더(132d)는 생성한 제k 신드롬 데이터(Sdr_k)를 제3 버퍼(137d)에 저장할 수 있다. 제3 버퍼(137d) 데이터를 저장할 수 있는 메모리 소자를 포함할 수 있고, 일 예시에서, 정적 랜덤 억세스 메모리(SRAM), 동적 랜덤 억세스 메모리(DRAM), 래치(Latch), 플립플롭(Flip-Flop), 레지스터(Register)와 같은 휘발성 메모리 장치로 구성될 수 있다.
코드 워드 판단부(134d)는 제2 버퍼(133d)로부터 수신한 복수의 서브 CRC 데이터(SCRC_1~SCRC_n)로부터 생성한 제2 CRC 데이터 및 제1 버퍼(131d)로부터 수신한 제1 CRC 데이터(CRC1)를 기초로 1차 무결성 판단을 수행할 수 있다. 또한, 코드 워드 판단부(134d)는 제3 버퍼(137d)로부터 수신한 복수의 신드롬 데이터(Sdr_1~Sdr_n)를 기초로 2차 무결성 판단을 수행할 수 있다. 코드 워드 판단부(134d)는 1차 무결성 판단 및 2차 무결성 판단을 기초로 정정 중단 신호(CSF)를 디코더(132d)에 출력할 수 있다.
일 실시예에서, 코드 워드 판단부(134d)는 1차 무결성 판단 결과 및 2차 무결성판단 결과 모두 제1 코드 워드(CW1)에 에러가 없는 것으로 나타내는 경우 정정 중단 신호(CSF)를 디코더(132d)에 출력할 수 있다. 일 실시예에서, 코드 워드 판단부(134d)는 1차 무결성 판단 결과 및 2차 무결성 판단 결과 중 적어도 하나가 제1 코드 워드(CW1)에 에러가 없는 것으로 나타내는 경우 정정 중단 신호(CSF)를 디코더(132d)에 출력할 수 있다.
본 개시의 일 실시예에 따른 에러 정정 회로(130d)는 서로 다른 무결성 판단 방법에 기초하여 디코딩을 중단시킴에 따라서, 에러 정정 확률을 높히고, 신뢰도를 높힐 수 있다.
도 14은 본 개시의 예시적 실시예에 따른 메모리 시스템을 포함하는 메모리 카드 시스템을 나타내는 블록도이다.
도 14를 참조하면, 메모리 카드 시스템(3000)은 호스트(3100) 및 메모리 카드(3200)를 포함할 수 있다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 접속부(3120)를 포함할 수 있다. 메모리 카드(3200)는 카드 접속부(3210), 카드 컨트롤러(3220) 및 메모리 장치(3230)를 포함할 수 있다.
도 14에 도시된 카드 컨트롤러(3220) 및 메모리 장치(3230)는 각각 도 1 내지 도 13에 도시된 메모리 컨트롤러(100) 및 메모리 장치(200)가 적용될 수 있다. 카드 컨트롤러(3220)는 카드 접속부(3210)를 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(3220)는 메모리 장치(3230)에서 읽어낸 데이터를 본 개시에서 제안하는 디코딩 방법을 적용하여 디코딩 처리할 수 있다. 즉, 카드 컨트롤러(3220)는 코드 워드에 대한 디코딩 도중 서브 그룹 데이터에 대한 에러 존재 여부를 판단하고, 판단 결과에 기초하여 디코딩을 중단시킴으로써 디코딩 성능이 향상되고 전력 소비가 감소될 수 있다.
호스트(3100)는 메모리 카드(3200)에 데이터를 기입하거나, 메모리 카드(3200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(3110)는 커맨드(CMD), 호스트(3100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK), 및 데이터(DATA)를 호스트 접속부(3120)를 통해 메모리 카드(3200)로 전송할 수 있다.
메모리 카드(3200)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 유저 데이터 및 패리티 코드를 포함하는 코드 워드를 수신하고, 상기 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로에 있어서,
    상기 코드 워드를 저장하고, 상기 코드 워드를 분할한 복수의 서브 그룹 데이터들을 순차적으로 출력하는 제1 버퍼;
    상기 제1 버퍼로부터 수신한 상기 복수의 서브 그룹 데이터들 각각에 대한 복수의 무결성 데이터들을 생성하고, 상기 패리티 코드를 이용하여 상기 유저 데이터에 대한 에러 정정을 수행하는 디코더;
    상기 복수의 서브 그룹 데이터들 각각에 대한 상기 복수의 무결성 데이터들을 순차적으로 저장하는 제2 버퍼;및
    상기 제2 버퍼에 상기 복수의 무결성 데이터들 중 적어도 하나가 저장되면, 상기 제2 버퍼에 저장된 상기 복수의 무결성 데이터들을 기초로 상기 코드 워드의 에러를 판단하는 코드 워드 에러 판단부;를 포함하는 에러 정정 회로.
  2. 제1항에 있어서,
    상기 코드 워드 에러 판단부는 상기 코드 워드의 에러가 없는 경우, 상기 디코더에 정정 중단 신호를 출력하고,
    상기 디코더는 상기 정정 중단 신호에 대응하여 상기 코드 워드에 대한 에러 판단을 수행하지 않고, 상기 코드 워드를 출력하는 것을 특징으로 하는 에러 정정 회로.
  3. 제1항에 있어서,
    상기 에러 정정 회로는,
    상기 제1 버퍼로부터 상기 복수의 서브 그룹 데이터들을 수신하고, 상기 복수의 서브 그룹 데이터들에 대한 복수의 무결성 데이터를 생성하고, 상기 복수의 무결성 데이터를 순차적으로 상기 제2 버퍼에 저장하는 무결성 데이터 생성부;를 더 포함하는 것을 특징으로 하는 에러 정정 회로.
  4. 제3항에 있어서,
    상기 무결성 데이터 생성부는 상기 복수의 서브 그룹 데이터들 각각이 미리 결정된 조건식을 만족시키는지 여부를 판단하고, 판단 결과 생성된 복수의 신드롬 데이터들을 상기 제2 버퍼에 순차적으로 저장하는 것을 특징으로 하는 에러 정정 회로.
  5. 제4항에 있어서,
    상기 코드 워드 에러 판단부는 상기 제2 버퍼에 저장된 상기 복수의 신드롬 데이터들에 기초하여 상기 복수의 서브 그룹 데이터들에 대한 에러가 없는 경우 상기 디코더에 정정 중단 신호를 출력하는 것을 특징으로 하는 에러 정정 회로.
  6. 제3항에 있어서,
    상기 무결성 데이터 생성부는 상기 복수의 서브 그룹 데이터들 각각에 대한 순환 중복 검사(Cyclic Redundancy Check; CRC) 연산을 수행하고, 생성된 복수의 서브 CRC 데이터들을 상기 제2 버퍼에 순차적으로 저장하는 것을 특징으로 하는 에러 정정 회로.
  7. 제5항에 있어서,
    상기 유저 데이터는 제1 CRC(Cyclic Redundancy Check) 데이터를 포함하고,
    상기 코드 워드 에러 판단부는 상기 복수의 서브 CRC 데이터들 및 상기 제1 CRC 데이터를 수신하고, 상기 복수의 서브 CRC 데이터들을 기초로 생성한 제2 CRC 데이터와 상기 제1 CRC 데이터를 기초로 상기 디코더에 정정 중단 신호를 출력하는 것을 특징으로 하는 에러 정정 회로.
  8. 유저 데이터와 패리티 코드를 포함하는 코드 워드에 대한 에러를 정정하는 에러 정정 방법에 있어서,
    상기 코드 워드를 수신하고, 제1 버퍼에 저장하는 단계;
    상기 코드 워드를 분할한 복수의 서브 그룹 데이터들 각각에 대한 복수의 무결성 데이터들을 생성하는 단계;
    상기 복수의 무결성 데이터들을 순차적으로 제2 버퍼에 저장하는 단계;및
    상기 제2 버퍼에 상기 복수의 무결성 데이터들 중 적어도 하나가 저장되면, 상기 제2 버퍼에 저장된 상기 복수의 무결성 데이터들을 기초로 상기 코드 워드의 에러를 판단하는 단계;를 포함하는 에러 정정 방법.
  9. 제8항에 있어서,
    상기 복수의 무결성 데이터들을 기초로 상기 코드 워드의 에러를 판단하는 단계에서 상기 코드 워드의 에러가 없는 것으로 판단한 경우, 상기 코드 워드에 대한 에러 정정을 수행하지 않고, 상기 코드 워드를 출력하는 단계;를 더 포함하는 에러 정정 방법.
  10. 제8항에 있어서,
    상기 복수의 무결성 데이터들을 생성하는 단계는,
    상기 복수의 서브 그룹 데이터들 각각에 대한 순환 중복 검사(Cyclic Redundancy Check; CRC) 연산을 수행하는 단계;및
    상기 CRC 연산을 수행하는 단계의 결과 생성된 복수의 서브 CRC 데이터들을 상기 복수의 무결성 데이터들로서 생성하는 단계;를 포함하고,
    상기 유저 데이터는 제1 CRC(Cyclic Redundancy Check) 데이터를 포함하고,
    상기 복수의 무결성 데이터들을 기초로 상기 코드 워드의 에러를 판단하는 단계는,
    상기 복수의 서브 CRC 데이터들 및 상기 제1 CRC 데이터를 수신하는 단계;
    상기 복수의 서브 CRC 데이터들을 기초로 제2 CRC 데이터를 생성하는 단계;및
    상기 제2 CRC 데이터와 상기 제1 CRC 데이터를 기초로 상기 코드 워드의 에러를 판단하는 단계;를 포함하는 것을 특징으로 하는 에러 정정 방법.
KR1020180090908A 2018-08-03 2018-08-03 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법 KR20200015283A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180090908A KR20200015283A (ko) 2018-08-03 2018-08-03 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법
US16/444,056 US10942805B2 (en) 2018-08-03 2019-06-18 Error correcting circuit performing error correction on user data and error correcting method using the error correcting circuit
CN201910583884.0A CN110795271A (zh) 2018-08-03 2019-07-01 对用户数据执行纠错的纠错电路和使用其的纠错方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180090908A KR20200015283A (ko) 2018-08-03 2018-08-03 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법

Publications (1)

Publication Number Publication Date
KR20200015283A true KR20200015283A (ko) 2020-02-12

Family

ID=69227474

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180090908A KR20200015283A (ko) 2018-08-03 2018-08-03 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법

Country Status (3)

Country Link
US (1) US10942805B2 (ko)
KR (1) KR20200015283A (ko)
CN (1) CN110795271A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10992323B2 (en) * 2019-02-01 2021-04-27 Micron Technology, Inc. Early decoding termination for a memory sub-system
KR20210143581A (ko) * 2020-05-20 2021-11-29 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5103451A (en) 1990-01-29 1992-04-07 Motorola, Inc. Parallel cyclic redundancy check circuit
US6518892B2 (en) 2000-11-06 2003-02-11 Broadcom Corporation Stopping criteria for iterative decoding
US7320101B1 (en) 2003-08-19 2008-01-15 Altera Corporation Fast parallel calculation of cyclic redundancy checks
US7181671B2 (en) 2003-09-23 2007-02-20 Macronix International Co., Ltd. Parallelized CRC calculation method and system
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
JP5007676B2 (ja) * 2008-01-31 2012-08-22 富士通株式会社 符号化装置、復号化装置、符号化・復号化装置及び記録再生装置
US8869008B2 (en) 2013-01-17 2014-10-21 Apple Inc. Adaptation of analog memory cell read thresholds using partial ECC syndromes
KR102108386B1 (ko) * 2013-12-23 2020-05-08 삼성전자주식회사 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
US9602141B2 (en) * 2014-04-21 2017-03-21 Sandisk Technologies Llc High-speed multi-block-row layered decoder for low density parity check (LDPC) codes
US9748973B2 (en) * 2014-04-22 2017-08-29 Sandisk Technologies Llc Interleaved layered decoder for low-density parity check codes
US9720769B2 (en) * 2014-12-03 2017-08-01 Sandisk Technologies Llc Storage parameters for a data storage device
US9692450B2 (en) 2015-05-11 2017-06-27 Maxio Technology (Hangzhou) Ltd. Systems and methods for early exit of layered LDPC decoder
US9823960B2 (en) 2015-09-10 2017-11-21 Cavium, Inc. Apparatus and method for parallel CRC units for variably-sized data frames

Also Published As

Publication number Publication date
US20200042385A1 (en) 2020-02-06
CN110795271A (zh) 2020-02-14
US10942805B2 (en) 2021-03-09

Similar Documents

Publication Publication Date Title
US10860416B2 (en) Tiered error correction code (ECC) operations in memory
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
US20160164543A1 (en) Turbo product codes for nand flash
US8812942B2 (en) Interleaving apparatuses and memory controllers having the same
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
KR20150073717A (ko) 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
JP2016504848A (ja) 階層化反復誤り訂正のための停止基準
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
US9281839B2 (en) Hard-decision decoding method and low-density parity-check decoder using same
US10116335B2 (en) Data processing method, memory storage device and memory control circuit unit
CN109491828B (zh) 解码方法、存储器存储装置及存储器控制电路单元
TWI536749B (zh) 解碼方法、記憶體儲存裝置與記憶體控制電路單元
TW201916047A (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
KR20200015283A (ko) 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법
JP6491482B2 (ja) 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置
TWI732642B (zh) 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US11177012B1 (en) Fast copy through controller
US10484014B2 (en) Controller, semiconductor memory system and operating method thereof
CN107305510B (zh) 数据处理方法、存储器存储装置及存储器控制电路单元
KR20210001927A (ko) 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법
CN109697134B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US10855316B2 (en) Error correction code (ECC) operations in memory
CN108170554B (zh) 一种nand的数据编码方法和装置
CN107590018B (zh) 译码方法、存储器控制电路单元及存储器存储装置
US11336296B2 (en) Controller and memory system having the controller

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right