KR101753498B1 - 신뢰도 데이터 업데이트 - Google Patents

신뢰도 데이터 업데이트 Download PDF

Info

Publication number
KR101753498B1
KR101753498B1 KR1020157012064A KR20157012064A KR101753498B1 KR 101753498 B1 KR101753498 B1 KR 101753498B1 KR 1020157012064 A KR1020157012064 A KR 1020157012064A KR 20157012064 A KR20157012064 A KR 20157012064A KR 101753498 B1 KR101753498 B1 KR 101753498B1
Authority
KR
South Korea
Prior art keywords
data
reliability
check
hard
reliability data
Prior art date
Application number
KR1020157012064A
Other languages
English (en)
Other versions
KR20150067338A (ko
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 마이크론 테크놀로지, 인크
Publication of KR20150067338A publication Critical patent/KR20150067338A/ko
Application granted granted Critical
Publication of KR101753498B1 publication Critical patent/KR101753498B1/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
    • 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 신뢰도 데이터를 업데이트하는 것에 관한 장치들 및 방법들을 포함한다. 다수의 방법들은 가변 노드에서, 제 1 하드 데이터 값을 갖는 제 1 신뢰도 데이터 값 또는 제 2 하드 데이터 값을 갖는 제 2 신뢰도 데이터 값 중 어느 하나를 수신하는 단계, 제 1 하드 데이터 값 또는 제 2 하드 데이터 값을 패리티 체크 코드에 따라 가변 노드에 결합되는 각각의 체크 노드에 송신하는 단계, 및 모두보다 적은 체크 노드들로부터의 입력에 기초하여 신뢰도 데이터를 업데이트하는 단계를 포함할 수 있다.

Description

신뢰도 데이터 업데이트{Updating Reliability Data}
본 발명은 일반적으로 반도체 메모리 및 방법들에 관한 것이며, 보다 구체적으로, 신뢰도 데이터 업데이트에 관한 장치들 및 방법들에 관한 것이다.
일반적으로 메모리 디바이스들은 컴퓨터들 또는 그 외 다른 전자 디바이스들 내 내부, 반도체, 집적 회로들로 제공된다. 휘발성 및 비-휘발성 메모리를 포함하는 메모리의 많은 여러 유형들이 존재한다. 휘발성 메모리는 그것의 데이터(예컨대, 호스트 데이터, 에러 정보 등)를 유지하기 위한 전력을 필요로 하고 랜덤-액세스 메모리(RAM; random-access memory), 동적 랜덤 액세스 메모리(DRAM; dynamic random access memory), 및 동기식 동적 랜덤 액세스 메모리(SDRAM; synchronous dynamic random access memory) 등을 포함할 수 있다. 비-휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 영속 데이터를 제공할 수 있고 NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM; read only memory), 전기 소거 가능 프로그램 가능 ROM(EEPROM; Electrically Erasable Programmable ROM), 소거 가능 프로그램 가능 ROM(EPROM; Erasable Programmable ROM), 및 상 변화 랜덤 액세스 메모리(PCRAM; phase change random access memory), 저항성 랜덤 액세스 메모리(RRAM; resistive random access memory), 및 자기저항 랜덤 액세스 메모리(MRAM; magnetoresistive random access memory)와 같은 저항 가변 메모리 등을 포함할 수 있다.
메모리 디바이스들은 함께 조합되어 고체 상태 드라이브(SSD; solid state drive)와 같은 메모리 시스템의 저장 볼륨을 형성할 수 있다. 고체 상태 드라이브는 비-휘발성 및 휘발성 메모리의 그 외 다른 다양한 유형들 중에서 비-휘발성 메모리(예컨대, NAND 플래시 메모리 및 NOR 플래시 메모리) 및/또는 휘발성 메모리(예컨대, DRAM 및 SRAM)를 포함할 수 있다.
고체 상태 드라이브는 하드 드라이브들에 비해 성능, 크기, 중량, 강건성, 동작 온도 범위, 및 전력 소비의 측면에서 이점을 가질 수 있기 때문에, SSD는 컴퓨터를 위한 메인 저장 볼륨으로서 하드 디스크 드라이브들을 대체하도록 사용될 수 있다. 예를 들어, SSD들은 탐색 시간, 대기시간(latency), 및 자기 디스크 드라이브들과 연관된 그 외 다른 전기-기계적 지연들을 피할 수 있도록 하는, 그것들의 이동 부분들의 결여로 인해 자기 디스크 드라이브들에 비교할 때 우수한 성능을 가질 수 있다.
메모리는 광범위한 전자 애플리케이션들을 위한 휘발성 및 비-휘발성 데이터 저장 장치로 사용된다. 비-휘발성 메모리는 랩탑 컴퓨터들, 휴대용 메모리 스틱들, 디지털 카메라들, 셀룰러 전화들, MP3 플레이어들과 같은 휴대용 음악 플레이어들, 영화 플레이어들 및 그 외 다른 전자 디바이스들과 같은, 휴대용 전자 디바이스들에서 사용될 수 있다. 메모리 셀들은 어레이들로 배열될 수 있으며, 어레이들은 메모리 디바이스들에서 사용된다.
데이터가 하나의 위치로부터 다른 위치로 송신(예컨대, 통신, 이동, 전달, 전송 등)될 때, 에러가 발생할 수 있는 가능성이 존재한다. 에러들은 또한 데이터가 메모리에 저장되는 동안의 시간의 경과에 따라 발생할 수도 있다. 에러가 검출되고/되거나 정정될 수 있도록 데이터를 인코딩하는데 사용될 수 있는 다수의 기술들이 존재한다. 데이터가 규칙적으로 메모리에 및 메모리로부터 송신되고, 그 안에 저장되기 때문에, 메모리는 메모리와 연관된 데이터를 정정하도록 시도하는 에러 정정 기술들을 채용할 수 있다.
에러 정정의 하나의 유형은 저-밀도 패리티-체크(LDPC; low-density parity-check) 코드들에 의존한다. 인코딩되지 않은(예컨대, "원시(raw)") 데이터는 전송 및/또는 저장을 위해 부호 워드들로 인코딩될 수 있다. 부호 워드들은 그 후 데이터를 복구하기 위해 디코딩될 수 있다.
강력한 에러 정정이 요구되나 휴대용 전자 디바이스들에 의해 부여되는 것들과 같은 대기시간, 처리량, 및/또는 전력 제약들과 견주어질 수 있다.
도 1은 본 발명의 다수의 실시예들에 따라 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 2a 내지 2i는 본 발명의 다수의 실시예들에 따라 신뢰도 데이터를 업데이트하기 위한 흐름도들을 예시한다.
도 3은 본 발명의 다수의 실시예들에 따라 에러 정정 회로를 포함하는 장치의 블록도를 예시한다.
도 4는 본 발명의 다수의 실시예들에 따라 적어도 하나를 포함하는 다양한 방식들에 따라 블록 에러율 대 원시 비트 에러율(RBER; raw bit error rate)을 예시하는 플롯이다.
본 발명은 신뢰도 데이터 업데이트에 관한 장치들 및 방법들을 포함한다. 다수의 방법들은 가변 노드에서, 제 1 하드 데이터(hard data) 값을 갖는 제 1 신뢰도 데이터 값(예컨대, 최대 신뢰도 데이터 값) 또는 제 2 하드 데이터 값을 갖는 제 2 신뢰도 데이터 값(예컨대, 최소 신뢰도 데이터 값) 중 어느 하나를 수신하는 단계, 제 1 하드 데이터 값 또는 제 2 하드 데이터 값을 패리티 체크 코드에 따라 가변 노드에 결합되는 각각의 체크 노드에 송신하는 단계, 및 모두보다 적은 체크 노드들로부터의 입력에 기초하여 신뢰도 데이터를 업데이트하는 단계를 포함할 수 있다. 예를 들어, 신뢰도 회로는 (예컨대, 하드 데이터 모드에서) 제 1 하드 데이터 값에 대응하는 최대 신뢰도 데이터 값 또는 제 2 하드 데이터 값에 대응하는 최소 신뢰도 데이터 값과 같은, 특정한 하드 데이터 값들에 대한 구체적인 신뢰도 데이터 값들을 제공하도록 구성될 수 있다. 그러나, 소프트 또는 세미-소프트 모드들에서, 신뢰도 회로는 다른 초기 신뢰도 데이터 값들(예컨대, 최대 및 최소 값 사이의)을 제공하도록 구성될 수 있다.
본 발명의 이하의 상세한 설명에서, 본 명세서의 일부분을 형성하며, 예시로서 본 발명의 하나 이상의 실시예들이 실시될 수 있는 방식을 도시하는 첨부 도면들에 대한 참조가 이루어진다. 이들 실시예들이 해당 분야의 통상의 기술자들이 본 발명의 실시예들을 실시할 수 있게 하도록 충분히 상세히 설명되고, 그 외 다른 실시예들이 사용될 수 있고, 처리, 전기 및/또는 구조적 변화들이 본 발명의 범위 내에서 이뤄질 수 있음이 이해되어야 한다. 본 명세서에서 사용될 때, 특히 도면부호들과 관한 지시어 "C", "N", "M", "P" 및 "V"는 그렇게 지정된 다수의 특정한 특징부가 포함될 수 있음을 나타낸다. 본 명세서에서 사용될 때, "다수의(a number of)" 특정한 것은 하나 이상의 그러한 것들을 지칭할 수 있다(예컨대, 다수의 메모리 디바이스들은 하나 이상의 메모리 디바이스들을 지칭할 수 있다).
본 명세서의 도면들은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자들이 도면의 요소 또는 구성요소를 식별하는 넘버링 규칙을 따른다. 서로 다른 도면들 간 유사한 요소들 또는 구성요소들이 유사한 숫자들을 사용하여 식별될 수 있다. 예를 들어, 114는 도 1에서 참조 요소 "14" 일 수 있고, 유사한 요소는 도 3에서 314로 참조될 수 있다. 인식될 바와 같이, 본 명세서의 다양한 실시예들에서 도시된 요소들은 추가, 교환 및/또는 제거되어, 본 발명의 다수의 추가 실시예들을 제공할 수 있다. 또한, 인식될 바와 같이, 도면들에서 제공되는 요소들의 비율 및 상대 축척이 본 발명의 특정 실시예들을 예시하도록 의도되며, 한정의 의미로 취해지지 않아야 한다.
도 1은 본 발명의 다수의 실시예들에 따라 적어도 하나의 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100) 형태의 장치의 블록도이다. 본 명세서에 사용된 바와 같이, 메모리 시스템(104), 제어기(108), 또는 메모리 디바이스(110)는 각각 "장치"로 간주될 수도 있다. 메모리 시스템(104)은 예를 들어, 고체 상태 드라이브(SSD)일 수 있고, 호스트 인터페이스(106), 제어기(108)(예컨대, 프로세서 및/또는 그 외 다른 제어 회로), 및 메모리 시스템(104)을 위해 저장 볼륨을 제공하는 다수의 메모리 디바이스들(110-1,..., 110-M)(예컨대, NAND 플래시 소자와 같은 고체 상태 메모리 디바이스들)을 포함할 수 있다. 다른 실시예에서, 메모리 시스템(104)은 단일 메모리 디바이스일 수 있다.
도 1에 예시된 바와 같이, 제어기(108)는 복수의 채널들을 통해 호스트 인터페이스(106) 및 메모리 디바이스들(110-1,..., 110-M)에 연결될 수 있고 메모리 시스템(104) 및 호스트(102) 간 데이터를 송신하는데 사용될 수 있다. 인터페이스(106)는 표준화된 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(104)이 컴퓨팅 시스템(100)에서의 데이터 저장을 위해 사용될 때, 인터페이스(106)는 직렬 개선 기술 결합(SATA; serial advanced technology attachment), 주변 구성요소 상호연결 익스프레스(PCIe; peripheral component interconnect express), 또는 유니버셜 직렬 버스(USB; universal serial bus), 및 그 외 다른 연결기들 및 인터페이스들일 수 있다. 그러나, 일반적으로 인터페이스(106)는 메모리 시스템(104) 및 인터페이스(106)에 대한 호환 가능한 수용기들을 갖는 호스트(102) 사이에 제어, 주소, 데이터, 및 그 외 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
호스트(102)는 개인 랩탑 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 모바일 전화, 또는 메모리 카드 판독기, 그 외 호스트들의 다른 다양한 유형들과 같은 호스트 시스템일 수 있다. 호스트(102)는 시스템 마더보드 및/또는 백플레인(backplane)을 포함할 수 있고 다수의 메모리 액세스 디바이스들(예컨대, 다수의 프로세서들)을 포함할 수 있다. 호스트(102)는 또한 이를테면 메모리 시스템(104)이 메모리 디바이스(예컨대, 온-다이(on-die) 제어기를 갖는)인 메모리 제어기일 수 있다.
제어기(108)는 판독, 기록, 및 소거 동작들, 그 외 다른 동작들을 제어하기 위해 다수의 메모리 디바이스들(110-1,..., 110-M)(몇몇 실시예들에서 단일 다이 상의 다수의 메모리 어레이들일 수 있는)과 통신할 수 있다. 몇몇 실시예들에서, 제어기(108)는 모든 다수의 메모리 디바이스들(110) 중 어느 하나 또는 모두와 동일한 다이 또는 상이한 다이 상에 있을 수 있다.
구체적으로 예시되지 않더라도, 몇몇 실시예들에서, 제어기(108)는 제어기(108)를 메모리 디바이스들(110-1,..., 110-M)에 결합하는 각각의 채널에 대한 별개의 메모리 채널 제어기를 포함할 수 있다. 제어기(108)는 예를 들어, 다수의 메모리 디바이스들(110-1,..., 110-M)로의 액세스를 제어하고/하거나 호스트(102) 및 메모리 디바이스들(110-1,..., 110-M) 사이의 데이터 전송을 용이하게 하기 위한 하드웨어 및/또는 펌웨어(예컨대, 하나 이상의 집적 회로들) 및/또는 소프트웨어의 형태로 된 다수의 구성요소들을 포함할 수 있다.
도 1에 예시된 바와 같이, 제어기(108)는 신뢰도 회로(112) 및 에러 정정 회로(114)를 포함할 수 있다. 예를 들어, 신뢰도 회로(112)는 로스 가능성 비(LLR; log likelihood ratio) 회로일 수 있고/있거나 에러 정정 회로(114)는 저 밀도 패리티 체크(LDPC) 회로일 수 있다. 각각의 신뢰도 회로(112) 및 에러 정정 회로(114)는 애플리케이션 특정 집적 회로(ASIC; application specific integrated circuit)와 같은 별개의 구성요소들일 수 있고 또는 구성요소들은 제어기(108)의 다른 부분들로부터 독립한 별개의 물리적 형태를 반드시 가지지 않아도 되는 제어기(108) 내 회로에 의해 기능적으로 공급되는 것으로 인식될 수 있다. 도 1에서 제어기(108) 내 구성요소들로서 예시되더라도, 각각의 신뢰도 회로(112) 및 에러 정정 회로(114)는 제어기(108) 외부에 있거나 제어기(108) 내에 위치되는 다수의 구성요소들 및 제어기(108) 외부에 위치되는 다수의 구성요소들을 가질 수 있다.
에러 정정 회로(114)는 처리 노드들의 두 개의 유형들: 가변 노드들 및 체크 노드들을 포함할 수 있다. 처리 노드들은 코드의 패리티 체크 코드에 따라 결합될 수 있다. 본 발명의 다수의 실시예들에서, 가변 노드들은 순환 메모리들로서 구현될 수 있고 체크 노드들은 패리티 데이터(예컨대, 신드롬 체크(syndrome check)를 수행하는) 및/또는 증분 및/또는 차감 신뢰도 데이터, 그 외 다른 기능들을 산출(예컨대, 계산)하는 회로들로서 구현될 수 있다. 이와 같이, 체크 노드들은 XOR 회로들 및/또는 업/다운 카운터들, 그 외 다른 회로를 포함할 수 있다. 다수의 실시예들에서, 가변 노드들은 업/다운 카운터들(예컨대, 업/다운 카운터들을 포화시키는)로서 구현될 수 있고 체크 노드들은 조합 논리(예컨대, 배타적 또는 (XOR) 회로들)로서 구현될 수 있다. 에러 정정회로(114)로의 입력은 신뢰도 회로(112)로부터 수신되는(예컨대, 신뢰도 회로(112)로부터의 신뢰도 데이터와 함께 포함되는) 바와 같은 메모리(110)로부터의 하드 데이터일 수 있다. LLR 값은 각 가변 노드에 대해 저장될 수 있고 LLR 값은 본 명세서에 설명되는 바와 같이 디코딩의 각 계층 동안(또는 몇몇 다수의 계층들, 또는 예를 들어, 반복마다 한 번씩) 업데이트될 수 있다.
다수의 실시예들에서, 에러 정정 회로(114)로의 입력은 세미-소프트 데이터(semi-soft data)또는 풀-소프트 데이터(full-soft data)를 포함할 수 있다(예컨대, 하드 데이터 및/또는 세미-소프트 데이터 상의 신드롬 체크의 실패에 대응하여). 하드 데이터(hard data)는 메모리 셀의 데이터 상태에만 대응하는 데이터이다. 예를 들어, 2-비트 메모리 셀이 4개의 데이터 상태들 중 하나로 프로그램될 수 있고, 이때 각각의 데이터 상태는 데이터 00, 01, 10, 또는 11 중 하나에 대응한다. 예를 들어, 데이터 상태들 00 및 01 중 하드 데이터(최상위 비트(MSB; most significant bit))는 0인 한편 데이터 상태들 10 및 11 중 하드 데이터는 1이다(MSB의). 이와 달리, 메모리 셀과 연관된 소프트 데이터는 메모리 셀이 프로그램된 타깃 상태를 나타내는 상태들의 분포(예컨대, Vt 분포) 내 메모리 셀 상에 저장된 상태(예컨대, 임계 전압(Vt))의 위치를 표시할 수 있다. 또한, 메모리 셀과 연관된 소프트 데이터는 메모리 셀의 상태가 메모리 셀이 프로그램된 타깃 상태에 대응하는 확률을 표시할 수 있다. 메모리 디바이스는 그로부터 판독되는 하드 데이터에 대한 특정한 수의 소프트 데이터 비트들을 결정하도록 구성될 수 있다. 상기 설명된 2-비트 메모리 셀에 대해, 소프트 데이터의 예는 4 비트들을 사용하는 보다 큰 해상도를 포함할 수 있고, 이는 16개 까지의 상이한 상태들을 나타낼 수 있다. 세미-소프트 데이터는 모두보다 적은 소프트 데이터가 하드 데이터와 함께 송신된다는 것을 나타낸다. 풀-소프트 데이터는 모든 소프트 데이터가 하드 데이터와 함께 송신된다는 것을 나타낸다. 제어기(108)와 연관된 추가 기능은 본 명세서에 보다 상세히 설명된다.
다수의 메모리 디바이스들(110-1,..., 110-M)은 메모리 셀들(예컨대, 비-휘발성 메모리 셀들)의 다수의 어레이들을 포함할 수 있다. 어레이들은 예를 들어, NAND 아키텍처를 갖는 플래시 어레이들일 수 있다. 그러나, 실시예들은 메모리 어레이 또는 어레이 아키텍처의 특정 유형에 제한되지 않는다. 메모리 셀들은, 예를 들어, 다수의 물리 페이지들을 포함하는 다수의 블록들로 그룹화될 수 있다. 다수의 블록들은 메모리 셀들의 평면(plane)에 포함될 수 있고 어레이는 다수의 평면들을 포함할 수 있다. 일 예로서, 메모리 디바이스는 페이지당 8KB(킬로바이트)의 사용자 데이터, 블록당 128 페이지의 사용자 데이터, 평면당 2048 블록들, 디바이스당 16 평면들을 저장하도록 구성될 수 있다.
동작 시, 데이터는 예를 들어, 데이터의 페이지로서 메모리(예컨대, 시스템(104)의 메모리 디바이스들(110-1,..., 110-M))에 기록되고/되거나 메모리로부터 판독될 수 있다. 이와 같이, 데이터의 페이지가 메모리 시스템의 데이터 전송 크기로 지칭될 수 있다. 데이터는 섹터들(예컨대, 호스트 섹터들)로 지칭되는 데이터 세그먼트로 호스트(예컨대, 호스트(102))로/로부터 송신될 수 있다. 이와 같이, 데이터의 섹터는 호스트의 데이터 전송 크기로 지칭될 수 있다.
도 2a 내지 2i는 본 발명의 다수의 실시예들에 따라 신뢰도 데이터를 업데이트하기 위한 흐름도들을 예시한다. 도 2a 내지 도 2i에 구체적으로 예시되지 않더라도, LDPC 기법을 구현하는 에러 정정 회로는 패리티 체크 코드에 따라 결합되는 다수의 가변 노드들 및 체크 노드들을 포함할 수 있다. LDPC 코드들은 부호 워드들의 세트가 희소 패리티 체크 매트릭스 H의 빈 공간에 걸쳐 이어지는 이진 선형 블록 코드들의 클래스이다. LDPC 코드들은 팩터 그래프(factor graph)로 불리는 양분 그래프에 의해 표현될 수 있고, 이는 가변 노드들, 체크 노드들, 및 그 사이 연결들을 예시한다. LDPC 디코딩 프로세스는 또한 팩터 그래프의 에지들(노드들 간 연결들) 위의 반복 메시지 전달 프로세스로 언급될 수 있다.
도 2a는 하드 데이터를 포함하는 신뢰도 데이터가 신뢰도 회로(212)(예컨대, LLR 회로)로부터 다수의 가변 노드들(216-1, 216-2,…, 216-V)에 수신되는 초기 단계를 예시한다. 각각의 가변 노드들(216-1, 216-2,…, 216-V)에 의해 수신되는 하드 데이터를 포함하는 신뢰도 데이터는 하드 데이터 값들이 메모리 디바이스로부터 판독되는 부호 워드로부터 유도될 수 있기 때문에 반드시 동일할 필요는 없다(예컨대, 가변 노드(216-1)는 하드 데이터 "HD1"를 수신할 수 있고, 가변 노드(216-2)는 하드 데이터 "HD2"를 수신할 수 있으며, 가변 노드(216-V)는 하드 데이터 "HD3"를 수신할 수 있다). 하드 데이터(예컨대, 부호 워드)는 메모리 디바이스(예컨대, 도 1에 예시된 메모리 디바이스(110))로부터 판독되고 신뢰도 데이터의 결정(예컨대, 할당, 생성 등)을 위한 신뢰도 회로(212)에 의해 수신될 수 있으며, 이는 하드 데이터를 포함하기 위한 것이다. 구체적으로 예시되지 않더라도, 신뢰도 회로(212)는 세미-소프트 데이터 및/또는 풀-소프트 데이터를 가변 노드들(216-1, 216-2,…, 216-V)에 제공할 수 있다(예컨대, 하드 데이터 및/또는 세미-소프트 데이터에 대해 실패된 신드롬 체크에 대응하여).
신뢰도 데이터는 신뢰도 회로(212)에 의해 생성될 수 있다. 가변 노드(216-1, 216-2,…, 216-V)는 (예컨대, 하드 데이터 모드에서) 제 1 하드 데이터 값을 갖는 제 1 신뢰도 데이터 값(예컨대, 최소 신뢰도 데이터 값) 또는 제 2 하드 데이터 값을 갖는 제 2 신뢰도 데이터 값(예컨대, 최소 신뢰도 데이터 값) 중 어느 하나를 수신할 수 있다. 신뢰도 회로(212)는 (예컨대, 하드 데이터 모드에서) 제 1 하드 데이터 값에 대응하는 최대 신뢰도 데이터 값 또는 제 2 하드 데이터 값에 대응하는 최소 신뢰도 데이터 값과 같은, 특정한 하드 데이터 값들에 대한 구체적인 신뢰도 데이터 값들을 제공하도록 구성될 수 있다. 그러나, 소프트 또는 세미-소프트 모드들에서, 신뢰도 회로(212)는 다른 초기 신뢰도 데이터 값들(예컨대, 최대 및 최소 값 사이의)을 제공하도록 구성될 수 있다.
가변 노드들(216-1, 216-2,…, 216-V)은 수신된 신뢰도 데이터 예를 들어, 제 1 하드 데이터 값(예컨대, 제 1 이진 값)을 갖는 하드 데이터 입력에 대응하는 제 1 신뢰도 데이터 값 또는 제 2 하드 데이터 값(예컨대, 제 2 이진 값)을 갖는 하드 데이터 입력에 대응하는 제 2 신뢰도 데이터 값을 저장할 수 있다. 다수의 실시예들에서, 신뢰도 데이터는 LLR 값의 2의 보수 표현일 수 있다. 예를 들어, 2의 보수 값은 "0" 하드 데이터 값들에 대해 ≥ 0(예컨대, 최대 LLR 값)일 수 있고 2의 보수 값은 메모리로부터 수신되는 "1" 하드 데이터 값들에 대해 < 0(예컨대, 최소 LLR 값)일 수 있다.
신뢰도 회로(212)는 에러 정정 회로(예컨대, 도 1에 예시된 에러 정정 회로(114))로의 초기 입력들로서 각각의 하드 데이터 값들에 대한 최대 또는 최소 LLR 값을 제공하도록 구성될 수 있다. 3-비트 구현(예컨대, 하드 데이터의 1 비트 및 총괄적으로 신뢰도 데이터를 표현하는 2-비트 카운트를 포함하는)에서, "0" 하드 데이터 값은 +3의 2의 보수 LLR 값에 대응할 수 있고 "1" 하드 데이터 값은 -4의 2의 보수 LLR 값에 대응할 수 있다. 이하 표는 하드 데이터의 1 비트, 신뢰도 데이터의 2 비트들, 및 신뢰도 데이터를 나타내는 2의 보수 값을 포함하는 3-비트 값 사이의 대응을 예시한다:
3-비트 값 하드 데이터 2의 보수 LLR
000 0 0
001 0 1
010 0 2
011 0 3
100 1 -4
101 1 -3
110 1 -2
111 1 -1
표 1에 예시된 바와 같이, 3-비트 값의 최상위 비트(MSB)는 하드 데이터 값을 포함할 수 있다. 표 1에 예시되지 않더라도, 2의 보수 LLR은 하드 데이터에 기초하여 자동으로 특정 값(최대 또는 최소 값과 같은)으로 설정될 수 있다. 따라서, 0, 1, 및 2의 2의 보수 LLR 값들은 초기에 3으로 설정될 수 있고 -3, -2, 및 -1의 2의 보수 LLR 값들은 초기에 -4로 설정될 수 있다. 실시예들은 3-비트 구현으로 제한되지 않고, LLR 값들에 대한 하드 데이터 값들의 각각의 대응은 본 발명의 이해를 용이하게 하기 위한 예시적인 구현을 예시하는데 사용되는 최대 및 최소 LLR 값들을 사용하거나, 또는 2의 보수 표현(예컨대, 사용될 수 있는 부호-크기와 같은 다른 표현들로서)을 사용한다.
도 2b는 패리티 체크 코드에 따라 특정한 가변 노드(216-1) 및 특정한 가변 노드(216-1)에 결합되는 복수의 체크 노드들(218-1, 218-2, 218-3,…, 218-C)을 예시한다. 제 1 반복 동안, 각각의 가변 노드들(예컨대, 도 2a에 예시되는 가변 노드들(216-1, 216-2,…, 216-V))은 그에 결합되는 복수의 체크 노드들의 각각에 하드 데이터를 송신할 수 있다(예컨대, 가변 노드(216-1)는 하드 데이터 "HD1"를 체크 노드들(218-1, 218-2, 218-3,…, 218-C)에 송신할 수 있다). 가변 노드(216-1)는 동일한 하드 데이터를 각 체크 노드(218-1, 218-2, 218-3,…, 218-C)로 송신할 수 있다.
도 2b에 구체적으로 예시되지 않더라도, 특정한 가변 노드(216-1)는 하드 데이터를 포함하는 저장된 신뢰도 데이터를 그에 결합되는 체크 노드들(218-1, 218-2, 218-3,…, 218-C)로 송신할 수 있다. 다수의 실시예들에서, 특정한 가변 노드(216-1)는 업/다운 카운터를 포함할 수 있고, 이 경우 특정한 가변 노드(216-1)는 특정한 가변 노드(216-1)가 신뢰도 데이터를 업데이트할 수 있기 때문에 신뢰도 데이터를 갖지 않는 하드 데이터를 송신할 수 있다. 몇몇 실시예들에서, 특정한 가변 노드(216-1)는 카운터를 갖지 않는 메모리일 수 있고, 이 경우 특정한 가변 노드는 체크 노드들(218-1, 218-2, 218-3,…, 218-C)이 신뢰도 데이터를 업데이트할 수 있도록 하드 데이터를 포함하는 신뢰도 데이터를 송신할 수 있다.
도 2c는 특정한 체크 노드(218-1)에 결합되는 다수의 가변 노드들(216-1, 216-2,…, 216-V)의 각각으로부터 제 1 반복 동안, 각각의 하드 데이터 값을 수신하는 특정한 체크 노드(218-1)를 예시한다. 본 명세서에 설명된 바와 같이, 각각의 가변 노드들(216-1, 216-2,…, 216-V)로부터 수신되는 각각의 하드 데이터 값들은 다른 하드 데이터 값들과 무관할 수 있고, 따라서 도 2c는 가변 노드(216-1)로부터 "HD1", 가변 노드(216-2)로부터 "HD2", 및 가변 노드(216-V)로부터 "HD3"로서 하드 데이터를 도시한다. 하드 데이터에 대한 상이한 지정자들의 사용은 각각의 하드 데이터 값들이 상이하다는 것을 나타내지 않는다(예컨대, 모든 값들이 "1"들과 같이, 동일한 것이 가능하다). 다수의 실시예들에서, 특정한 체크 노드(218-1)는 그에 결합되는 다수의 가변 노드들(216-1, 216-2,…, 216-V)의 각각으로부터 하드 데이터 값을 갖는 각각의 신뢰도 데이터 값을 수신할 수 있다.
체크 노드(218-1)는 수신된 각각의 하드 데이터 값들(예컨대, 신드롬 체크를 수행하는)에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이들에 기초하여) 패리티 데이터를 산출할 수 있다. 예를 들어, 체크 노드(218-1)는 각각의 가변 노드들(216-1, 216-2,…, 216-V)로부터 하드 데이터 값들 상에 XOR 연산을 수행함으로써 제 1 패리티 데이터를 산출할 수 있다. 체크 노드(218-1)는 제 1 패리티 및 각각의 가변 노드(예컨대, 가변 노드(216-1))로부터 수신되는 각각의 하드 데이터 상에 XOR 연산을 수행함으로써 제 2 패리티 데이터를 산출할 수 있다. 제 2 패리티 데이터는 아래 더 상세히 설명되는 바와 같이 각각의 가변 노드로 송신될 수 있다. 다수의 실시예들에서, 각각의 체크 노드(예컨대, 체크 노드들(218-1, 218-2, 218-3,…, 218-C))는 클록 사이클당 한 번씩 패리티 데이터를 산출할 수 있다.
도 2d는 각각의 패리티 데이터를 각각의 가변 노드들(216-1, 216-2,…, 216-V)로 송신하는 특정한 체크 노드(218-1)를 예시한다. 패리티 데이터는 상기 설명된 제 2 패리티 데이터(예컨대, 체크 노드(218-1)에 의해 수신되는 모든 하드 데이터의 XOR의 결과와 함께 각각의 가변 노드로부터 하드 데이터의 XOR에 적어도 부분적으로 기초하여(몇몇 실시예들에서, 단지 이에 기초하여) 산출됨)일 수 있다. 따라서, 도 2d는 패리티 데이터 "XOR1"를 가변 노드(216-1)로 송신하는, 패리티 데이터 "XOR2"를 가변 노드(216-2)로 송신하는, 및 패리티 데이터 "XOR3"를 가변 노드(216-V)로 송신하는 체크 노드(218-1)를 예시한다. 도 2d에 예시된 바와 같이, 체크 노드(218-1)로부터 송신되는 패리티 데이터는 제 1 반복의 제 1 계층의 부분일 수 있다. 메시지 전달에 대한 계층별 방식은 아래에서 보다 상세히 설명된다. 패리티 데이터는 가변 노드들(216-1, 216-2,…, 216-V)로부터 송신되는 하드 데이터를 업데이트된 하드 데이터로서 효과적으로 대체할 수 있다. 다수의 실시예들에서, 특정한 체크 노드(218-1)는 각각의 패리티 데이터와 함께 각각의 신뢰도 데이터를 각각의 가변 노드들(216-1, 216-2,…, 216-V)로 송신할 수 있다. 각각의 신뢰도 데이터는 각각의 가변 노드들(216-1, 216-2,…, 216-V)에 의해 송신되는 동일한 신뢰도 데이터일 수 있고, 또는 신뢰도 데이터는 전송 전 체크 노드(218-1)에 의해 업데이트될 수 있다.
각각의 가변 노드들(216-1, 216-2,…, 216-V)은 체크 노드(218-1)로부터의 그것들의 각각 수신된 패리티 데이터 및/또는 체크 노드(218-1)로부터 수신되는 업데이트된 신뢰도 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그것들의 각각 저장된 신뢰도 데이터를 업데이트할 수 있다. 다수의 실시예들에서, 가변 노드들(216-1, 216-2,…, 216-V)은 특정한 체크 노드(218-1)로부터 수신되는 패리티 데이터(예를 들어, 메시지 전달 알고리즘의 상기 반복, 또는 상이한 반복의 과거, 현재, 또는 미래 단계 동안 임의의 다른 체크 노드들로부터 수신되는 패리티 체크를 고려하지 않고)에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 신뢰도 데이터 값을 증분 또는 차감함으로써 그것들의 각각의 신뢰도 데이터를 업데이트 할 수 있다. 가변 노드들(216-1, 216-2,…, 216-V)은 클록 사이클당 한 번씩 저장된 신뢰도 데이터를 증분 또는 차감할 수 있다. 가변 노드들(216-1, 216-2,…, 216-V)에 저장된 최대 및/또는 최소 신뢰도 데이터 값들을 포함하는 그러한 실시예들에 관해, 신뢰도 데이터 값은 예를 들어, 신뢰도 데이터 값이 이미 최대이고, 수신된 패리티 데이터 값이 증분될 신뢰도 데이터 값을 요청하면, 그것은 증분되지 않도록, 최대 및 최소 값들에 의해 정의되는 범위 내에서 증분 및/또는 차감될 수 있다. 다수의 실시예들에서, 가변 노드들(216-1, 216-2,…, 216-V)은 특정한 체크 노드(218-1)로부터 수신되는 업데이트된 신뢰도 데이터를 저장함으로써 그것들의 각각의 신뢰도 데이터를 업데이트할 수 있다.
도 2e 내지 도 2h는 특정한 가변 노드(216-1)에 결합되는 그러한 체크 노드들(218-1, 218-2, 218-3,…, 218-C)로부터의 메시지 전달의 반복의 네 개의 계층들을 예시한다. 다수의 실시예들에서, 하나의 계층은 특정한 가변 노드(216-1)에 결합되는 체크 노드들(218-1, 218-2, 218-3,…, 218-C) 중 하나로부터의 패리터 데이터에 적어도 부분적으로 기초하여(또는, 몇몇 실시예들에서, 단지 이에 기초하여) 가변 노드(216-1)에 저장된 신뢰도 데이터 값을 증분 또는 차감하는 것을 포함할 수 있다. 다수의 실시예들에서, 하나의 계층은 특정한 가변 노드(216-1)에 결합되는 체크 노드들(218-1, 218-2, 218-3,…, 218-C) 중 하나로부터의 업데이트된 신뢰도 데이터에 적어도 부분적으로 기초하여(또는, 몇몇 실시예들에서, 단지 이에 기초하여) 가변 노드(216-1)에 저장된 신뢰도 데이터 값을 업데이트하는 것을 포함할 수 있다.
도 2e는 패리티 데이터(예컨대, "XOR-A")를 제 1 반복의 제 1 계층에서의 가변 노드(216-1)로 송신하는 가변 노드(216-1)에 결합되는 체크 노드들(218-1, 218-2, 218-3,…, 218-C)의 제 1 체크 노드(218-1)를 예시한다. 제 1 체크 노드(218-1)에 의해 송신되는 패리티 데이터는 가변 노드(216-1) 및 다른 가변 노드들(미도시)에 의해 송신되는 하드 데이터에 적어도 부분적으로 기초할(예컨대, 몇몇 실시예들에서, 단지 이에 기초할) 수 있다. 제 1 계층에서, 가변 노드(216-1)는 제 1 체크 노드(218-1)로부터 수신되는 패리티 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그와 함께 저장되는 신뢰도 데이터를 업데이트할 수 있다. 패리티 데이터에 대응하여 신뢰도 데이터를 업데이트하는 것은 패리티 데이터의 수신으로 인해 패리티 데이터를 업데이트하는 것(예컨대, 패리티 데이터를 수신하는 것은 업데이트될 신뢰도 데이터를 야기한다)을 포함할수 있다. 패리티 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 신뢰도 데이터를 업데이트하는 것은 수신된 패리티 데이터의 값에 따라 신뢰도 데이터 값을 증분 또는 차감하는 것을 포함할 수 있다. 예를 들어, 패리티 데이터 XOR-A가 제 1 값(예컨대, 이진 "1")이면, 가변 노드(216-1)는 신뢰도 데이터를 증분할 수 있고, 패리티 데이터 XOR-A가 제 2 값(예컨대, 이진 "0")이면, 가변 노드(216-1)는 신뢰도 데이터를 차감할 수 있다. 신뢰도 데이터를 증분 및/또는 차감하는 것은 저장된 신뢰도 데이터의 증분 또는 차감이 신뢰도 데이터 값에 대한 미리 결정된 범위를 초과하지 않는 한 미리 결정된 양만큼 신뢰도 데이터를 증분 및/또는 차감하는 것을 포함할 수 있다. 도 2e에 구체적으로 예시되지 않더라도, 체크 노드(218-1)는 패리티 데이터와 함께 업데이트된 신뢰도 데이터를 특정한 가변 노드(216-1)로 송신할 수 있다. 제 1 계층에서, 가변 노드(216-1)는 제 1 체크 노드(218-1)로부터 수신되는 업데이트된 신뢰도 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그와 함께 저장되는 신뢰도 데이터를 업데이트할 수 있다.
도 2f는 패리티 데이터(예컨대, "XOR-B")를 제 1 반복의 제 2 계층에서의 가변 노드(216-1)로 송신하는 가변 노드(216-1)에 결합되는 체크 노드들(218-1, 218-2, 218-3,…, 218-C)의 제 2 체크 노드(218-2)를 예시한다. 제 2 계층에서, 가변 노드(216-1)는 제 2 체크 노드(218-2)로부터 수신되는 패리티 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그와 함께 저장되는 신뢰도 데이터를 업데이트할 수 있다. 도 2f에 구체적으로 예시되지 않더라도, 체크 노드(218-2)는 패리티 데이터와 함께 업데이트된 신뢰도 데이터를 특정한 가변 노드(216-1)로 송신할 수 있다. 제 2 계층에서, 가변 노드(216-1)는 제 1 체크 노드(218-2)로부터 수신되는 업데이트된 신뢰도 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그와 함께 저장되는 신뢰도 데이터를 업데이트할 수 있다.
도 2g는 패리티 데이터(예컨대, "XOR-C")를 제 1 반복의 제 3 계층에서의 가변 노드(216-1)로 송신하는 가변 노드(216-1)에 결합되는 체크 노드들(218-1, 218-2, 218-3,…, 218-C)의 제 3 체크 노드(218-3)를 예시한다. 제 3 계층에서, 가변 노드(216-1)는 제 3 체크 노드(218-3)로부터 수신되는 패리티 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그와 함께 저장되는 신뢰도 데이터를 업데이트할 수 있다. 도 2g에 구체적으로 예시되지 않더라도, 체크 노드(218-3)는 패리티 데이터와 함께 업데이트된 신뢰도 데이터를 특정한 가변 노드(216-1)로 송신할 수 있다. 제 3 계층에서, 가변 노드(216-1)는 제 1 체크 노드(218-3)로부터 수신되는 업데이트된 신뢰도 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그와 함께 저장되는 신뢰도 데이터를 업데이트할 수 있다.
도 2h는 패리티 데이터(예컨대, "XOR-D")를 제 1 반복의 제 4 계층에서의 가변 노드(216-1)로 송신하는 가변 노드(216-1)에 결합되는 체크 노드들(218-1, 218-2, 218-3,…, 218-C)의 제 4 체크 노드(218-C)를 예시한다. 제 4 계층에서, 가변 노드(216-1)는 제 4 체크 노드(218-C)로부터 수신되는 패리티 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그와 함께 저장되는 신뢰도 데이터를 업데이트할 수 있다. 도 2h에 구체적으로 예시되지 않더라도, 체크 노드(218-C)는 패리티 데이터와 함께 업데이트된 신뢰도 데이터를 특정한 가변 노드(216-1)로 송신할 수 있다. 제 4 계층에서, 가변 노드(216-1)는 제 1 체크 노드(218-C)로부터 수신되는 업데이트된 신뢰도 데이터에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 그와 함께 저장되는 신뢰도 데이터를 업데이트할 수 있다.
각각의 계층은 모든 체크 노드들(218-1, 218-2, 218-3,…, 218-C)보다 적은 체크 노드(체크 노드들(218-C) 중 각각의 체크 노드)로부터 입력을 수신하는 것 및 체크노드들(218-1, 218-2, 218-3,…, 218-C) 중 각각의 체크 노드로부터의 입력(예컨대, 패리티 데이터 및/또는 업데이트된 신뢰도 데이터)에 적어도 부분적으로 기초하여(예컨대, 몇몇 실시예들에서, 단지 이에 기초하여) 신뢰도 데이터를 업데이트하는 것을 포함할 수 있다. 구체적으로 예시되지 않더라도, 몇몇 실시예들은 복수의 체크 노드들 중 각각의 체크 노드들로부터의 입력에 기초하여 신뢰도 데이터를 업데이트하는 것을 포함하는 다수의 계층들의 L-수 마다 신뢰도 데이터를 업데이트하는 것(예컨대, 여기서 L은 1 계층으로부터 모든 계층들까지의 변수이고, 여기서 신뢰도 데이터는 계층마다, 다른 계층마다, 제 3 계층마다 등 반복마다 한 번 씩까지 업데이트될 수 있다)을 포함할 수 있다. 다수의 실시예들에서, 계층별 업데이트는 가변 노드(216-1)가 복수의 체크 노드들(218-1, 218-2, 218-3,…, 218-C)의 각각으로부터의 입력을 수신할 때까지 진행할 수 있다. 그에 결합되는 다수의 체크 노드들(218-1, 218-2, 218-3,…, 218-C) 모두에 대한 가변 노드(216-1)에 저장된 신뢰도 데이터 값의 계층별 증분 또는 차감은 후속(업데이트된) 하드 데이터를 가변 노드(216-1)로부터 각각의 체크 노드들(218-1, 218-2, 218-3,…, 218-C)로 송신하기 전 하나의 반복 동안 완료될 수 있다.
도 2i는 업데이트된 신뢰도 데이터에 대응하는 업데이트된 하드 데이터를 각각의 체크 노드들(218-1, 218-2, 218-3,…, 218-C)로 송신하는 가변 노드(216-1)를 예시한다. 예를 들어, 가변 노드(216-1)는 업데이트된 하드 데이터 "HD4"를 체크 노드들(218-1, 218-2, 218-3,…, 218-C)로 송신할 수 있다. 업데이트된 하드 데이터 "HD4"는 가변 노드(216-1)와 연관되어 저장되는 업데이트된 신뢰도 데이터에 대응하는 하드 데이터를 나타내기 때문에, 동일한 하드 데이터 값 "HD4"은 계층별 업데이팅 후 가변 노드(216-1)에 결합되는 각각의 체크 노드들(218-1, 218-2, 218-3,…, 218-C)로 송신될 수 있다. 예를 들어, 업데이트된 하드 데이터는 업데이트된 신뢰도 데이터의 MSB일 수 있다(예컨대, 여기서 업데이트된 신뢰도 데이터는 LLR이다). 다수의 실시예들에서, 가변 노드(216-1)는 업데이트된 하드 데이터를 포함하는 업데이트된 신뢰도 데이터를 송신할 수 있다. 업데이트된 하드 데이터를 가변 노드(216-1)로부터 체크 노드들(218-1, 218-2, 218-3,…, 218-C)로 송신하는 것은 제 2 반복의 시작을 나타낼 수 있다. 계층별 업데이트 및 업데이트된 하드 데이터의 송신은 특정한 수의 반복들이 수행될 때까지 및/또는 체크 노드들(218-1, 218-2, 218-3,…, 218-C)에 의해 수행되는 신드롬 체크가 정확할 때까지 반복적으로 반복할 수 있다.
도 3은 본 발명의 다수의 실시예들에 따라 에러 정정 회로(314)를 포함하는 장치의 블록도를 예시한다. 데이터 입력(320)은 신뢰도 회로(예컨대, 도 1에 예시된 신뢰도 회로(112))를 통해 메모리 디바이스(예컨대, 도 1에 예시된 메모리 디바이스(110-1))로부터 제공될 수 있다. 데이터는 입력 제어/버퍼/정렬기(aligner)(322)로의 입력일 수 있다. 구체적으로 예시되지 않더라도, 입력 제어/버퍼/정렬기(322)는 입력(320) 및 에러 정정 회로(314) 간 타이밍 및 시그널링을 배열하기 위해 제어 회로로부터 제어 및 상황 정보를 수신할 수 있다. 입력 제어/버퍼/정렬기(322)는 하드 데이터(예컨대, 다수의 부호 워드들)를 포함하는 신뢰도 데이터를 수신하고 이를(예컨대, 하드 데이터의 1 비트 및 신뢰도 데이터의 2 비트들을 갖는 LLR마다 3 비트들로 확장되는 순환 정렬된 하드 데이터 입력) 복수의 순환 메모리들(328-1,…, 328-N)에 제공할 수 있다. 다수의 실시예들에서, 입력 제어/버퍼/정렬기(322)는 세미-소프트 또는 풀-소프트 데이터(예컨대, 실패된 신드롬 체크에 대응하여)를 수신할 수 있다.
순환 메모리들(328-1,…, 328-N)의 수(N)는 H 매트릭스(패리티 체크 코드를 나타내는) 로우에서의 순환들의 전체 수와 동일할 수 있다. 순환 메모리(328-1)는 순환 매트릭스의 컬럼들 중 하나에 나타날 수 있는 하나의 벡터에 의해 구체화되는 순환 매트릭스를 저장할 수 있고, 여기서 나머지 컬럼들은 컬럼 인덱스와 동일한 오프셋을 갖는 벡터의 주기적인 순환들이다. 예를 들어, H 매트릭스는 패리티 체크 코드를 나타내는 20,480 컬럼들 및 2,048 로우들을 포함할 수 있다. 각각의 가변 노드는 H 매트릭스에서 그 자체의 컬럼을 가질 수 있다. 각각의 로우는 패리티 체크 제약을 나타낼 수 있고 각각의 컬럼은 수신된 부호 워드 중 하나의 비트를 나타낼 수 있다. H 매트릭스는 순환들로 불리는 보다 작은 매트릭스들로 분해될 수 있다(예컨대, 512 x 512 매트릭스들). 디코딩의 각 계층은 순환들의 단일 로우로 이루어지고 순환의 각 엔트리는 패리티 체크일 수 있으며, 여기서 각 계층은 모두보다 적은(예컨대, 단지 하나) 체크 노드들로부터의 입력들을 처리한다. 순환 메모리들(328-1,…, 328-N)은 그들 사이에서 및/또는 제어 회로와 제어 및/또는 상황 정보를 교환할 수 있다.
순환 메모리들(328-1,…, 328-N)은 패리티 체크 코드에 따라 다수의 체크 노드 프로세서들(330-0,…, 330-1)에 결합될 수 있다. 순환 메모리들(328-1,…, 328-N)은 하드 데이터 및 신뢰도 데이터를 체크 노드 프로세서들(330-0,…, 330-1)로 송신할 수 있다. 체크 노드 프로세서들은 하드 데이터를 포함하는 신뢰도 데이터를 수신하고, 패리티 데이터(업데이트된 하드 데이터)를 산출하고, 패리티 데이터에 적어도 부분적으로 기초하는(예컨대, 몇몇 실시예들에서, 단지 이에 기초하는) 신뢰도 데이터를 업데이트하며, 순환 메모리들(328-1,…, 328-N)에 업데이트된 하드 데이터를 포함하는 업데이트된 신뢰도 데이터를 출력할 수 있다. 단지 두 개의 체크 노드 프로세서들(330-0,…, 330-1)이 도 3에 예시되더라도, 실시예들은 더 많거나 더 적은 체크 노드 프로세서들이 에러 정정 회로(314)와 함께 포함될 수 있는 바와 같이 제한되지 않는다. 체크 노드 프로세서들(330-0,…, 330-1)은 그들 사이에 및/또는 제어 회로와 제어 및/또는 상황 정보를 교환할 수 있다.
순환 메모리들(328-1,…, 328-N)은 업데이트된 하드 데이터를 출력 제어/버퍼/정렬기(324)로 출력할 수 있다. 다수의 실시예들에서, 순환 메모리들(328-1,…, 328-N)은 신뢰도 데이터를 출력 제어/버퍼/정렬기(324)로 출력하지 않는다. 구체적으로 예시되지 않더라도, 출력 제어/버퍼/정렬기(324)는 제어 회로와 및/또는 순환 메모리들(328-1,…, 328-N)과 제어 및/또는 상황 정보를 교환할 수 있다. 출력 제어/버퍼/정렬기(324)는 하드 데이터를 출력(326)(예컨대, 호스트로의 출력)으로 출력할 수 있다.
도 4는 본 발명의 다수의 실시예들에 따라 적어도 하나를 포함하는 다양한 방식들에 따라 블록 에러율 대 원시 비트 에러율(RBER)을 예시하는 플롯이다. 플롯은 에러 정정을 위한 4 비트 최소-합 알고리즘(몇몇 이전 방식들에 따르는 예컨대, 제 1 곡선(432))을 사용하는 블록 실패율 대 하드 데이터 입력을 이용하여 본 발명의 다수의 실시예들에 따른 3-비트 알고리즘(예컨대, 제 2 곡선(434))을 사용하는 블록 실패율을 비교한다. 제 1 곡선(432)은 최소-합 에러 정정 알고리즘으로의 입력으로서 하드 데이터 중 하나의 비트를 포함하는 신뢰도 데이터의 4 비트들을 갖는 블록 실패율이다. 제 2 곡선(434)은 본 발명의 다수의 실시예들에 따른 에러 정정 알고리즘으로의 입력으로서 하드 데이터 중 하나의 비트를 포함하는 신뢰도 데이터의 3 비트들을 갖는 블록 실패율이다. 최소-합 방식은 9.0 x 10-6, 의 블록 에러율을 가질 수 있는 반면 본 발명의 다수의 실시예들에 따르는 에러 정정 알고리즘은 동일한 RBER에 대해 2.0 x 10-7의 블록 에러율을 가질 수 있다. 도 4에 구체적으로 예시되지 않더라도, 에러 정정 성능은 세미-소프트 또는 풀-소프트 데이터의 사용으로 더 개선될 수 있다.
4-비트 최소-합 방식에 비해 본 발명의 다수의 실시예들의 몇몇 이점들은 저 복잡도 에러 정정 회로를 포함한다. 예를 들어 가변 노드들은 연관된 메모리를 갖는 업/다운 카운터들로서(또는, 단순하게 체크 노드가 업/다운 카운팅 기능을 제공할 때 메모리로서) 구현될 수 있고, 체크 노드들은 조합 논리(예컨대, XOR 게이트들 및/또는 업/다운 카운터들)로서 구현될 수 있다. 또한, 에러 정정은 비트-직렬 디코딩 방식으로 구현될 수 있다. 3비트들의 데이터(하드 데이터 및 신뢰도 데이터)를 사용하는 것은 4비트들의 데이터를 사용하는 것보다 25% 적은 메모리 사용을 제공한다. 본 발명에 따른 에러 정정 회로는 예를 들어 가변 노드들 및/또는 체크 노드들의 출력 비트들을 저장하기 위해, 가변 노드들 및 체크 노드들 사이에 메모리 자원들 없이 구현될 수 있다.
결론
본 발명은 신뢰도 데이터 업데이트에 관한 장치들 및 방법들을 포함한다. 다수의 방법들은 가변 노드에서, 제 1 하드 데이터 값을 갖는 제 1 신뢰도 데이터 값 또는 제 2 하드 데이터 값을 갖는 제 2 신뢰도 데이터 값 중 어느 하나를 수신하는 단계, 제 1 하드 데이터 값 또는 제 2 하드 데이터 값을 패리티 체크 코드에 따라 가변 노드에 결합되는 각각의 체크 노드에 송신하는 단계, 및 모두보다 적은 체크 노드들로부터의 입력에 기초하여 신뢰도 데이터를 업데이트하는 단계를 포함할 수 있다.
구체적인 실시예들이 본 명세서에 예시되고 설명되었지만, 해당 분야의 통상의 기술자들은 동일한 결과들을 얻기 위해 계산되는 배열이 제시된 특정 실시예들을 대체할 수 있다는 것을 인식할 것이다. 본 개시 내용은 본 발명의 하나 이상의 실시예들의 각색들 또는 변형들을 커버하도록 의도된다. 상기 설명은 예시적인 방식으로 이뤄졌으며 한정이 아님이 이해되어야 한다. 상기 실시예들 및 본 명세서에 구체적으로 설명되지 않은 그 외 다른 실시예들의 조합은 상기 설명을 읽은 해당 분야의 통상의 기술자들에게 자명할 것이다. 본 발명의 하나 이상의 실시예의 범위는 상기 구조들 및 방법들이 사용되는 그 외 다른 적용들을 포함한다. 따라서, 본 발명의 하나 이상의 실시예들의 범위는 첨부된 특허청구범위 및 그러한 특허청구범위가 적용되는 균등물들의 전체 범위와 함께 참조하여 결정되어야 한다.
지금까지의 상세한 설명에서, 몇몇 특징부들이 본 개시 내용을 간소화하기 위한 목적으로 단일 실시예로 함께 그룹지어졌다. 본 발명의 방법이 본 발명의 개시된 실시예들이 각각의 청구항에서 명시적으로 언급된 것보다 많은 특징부를 사용해야 한다는 의도를 반영한 것으로 해석되어서는 안 된다. 오히려, 이하의 청구범위가 반영할 때, 본 발명의 청구 대상은 단일 개시된 실시예의 모든 특징부들보다 적은 특징부들을 포함한다. 따라서 다음의 청구범위가 상세한 설명 내에 포함되고, 각각의 청구항은 개별 실시예로서 그 자체로 나타난다.

Claims (35)

  1. 가변 노드에서, 제 1 하드 데이터 값을 갖는 제 1 신뢰도 데이터 값 또는 제 2 하드 데이터 값을 갖는 제 2 신뢰도 데이터 값 중 어느 하나인 신뢰도 데이터를 수신하는 단계;
    상기 가변 노드에 수신된 상기 제 1 하드 데이터 값 또는 상기 제 2 하드 데이터 값을 패리티 체크 코드에 따라 상기 가변 노드에 결합되는 복수의 체크 노드들의 각각으로 송신하는 단계; 및
    상기 가변 노드에서, 상기 복수의 체크 노드들 중 일부로부터 수신된 입력에 기초하여 상기 제1 신뢰도 데이터 값 또는 상기 제2 신뢰도 데이터 값을 업데이트하는 단계를 포함하며,
    상기 제1 신뢰도 데이터 값 또는 상기 제2 신뢰도 데이터 값을 업데이트하는 단계는 제1 신뢰도 데이터 값 또는 제2 신뢰도 데이터 값의 증분 또는 차감이 상기 제1 신뢰도 데이터 값 또는 제2 신뢰도 데이터 값에 대해 미리 결정된 범위를 초과하지 않는 한 미리 결정된 양만큼 상기 제1 신뢰도 데이터 값 또는 제2 신뢰도 데이터 값을 증분 또는 차감하는 단계를 포함하는,, 신뢰도 데이터 업데이트 방법.
  2. 삭제
  3. 삭제
  4. 청구항 1에 있어서,
    상기 신뢰도 데이터를 업데이트하는 단계는, 상기 가변 노드에 의해 상기 신뢰도 데이터의 계층별로 업데이트하는 단계를 포함하고, 계층별로 업데이트하는 단계는
    상기 복수의 체크 노드들의 각각으로부터 입력을 수신하는 단계; 및
    상기 복수의 체크 노드들의 각각으로부터 상기 입력에 기초하여 상기 신뢰도 데이터를 업데이트하는 단계를 포함하고;
    계층별로 업데이트하는 단계는, 상기 가변 노드가 상기 복수의 체크 노드들의 각각으로부터 입력을 수신할 때까지 진행하는, 신뢰도 데이터 업데이트 방법.
  5. 청구항 4에 있어서,
    상기 신뢰도 데이터 업데이트 방법은, 상기 계층별로 업데이트하는 단계 후 업데이트된 상기 신뢰도 데이터에 대응하는 업데이트된 하드 데이터를 상기 복수의 체크 노드들의 각각으로 송신하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  6. 청구항 5에 있어서,
    상기 신뢰도 데이터 업데이트 방법은, 특정한 수의 반복들이 수행될 때까지 상기 계층별로 업데이트하는 단계 및 업데이트된 하드 데이터를 송신하는 단계를 반복하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  7. 청구항 5에 있어서,
    상기 신뢰도 데이터 업데이트 방법은, 상기 복수의 체크 노드들에 의해 수행되는 신드롬 체크(syndrome check)가 정확할 때까지 상기 계층별로 업데이트하는 단계 및 업데이트된 하드 데이터를 송신하는 단계를 반복하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  8. 청구항 1 또는 청구항 4 내지 청구항 7 중 어느 한 항에 있어서,
    상기 신뢰도 데이터 업데이트 방법은, 상기 제 1 하드 데이터 값 또는 상기 제 2 하드 데이터 값을 갖는 상기 제 1 신뢰도 데이터 값 또는 상기 제 2 신뢰도 데이터 값 중 어느 하나를 상기 복수의 체크 노드들의 각각으로 송신하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  9. 특정한 가변 노드에 하드 데이터 값에 대응하는 신뢰도 데이터 값을 저장하는 단계;
    상기 하드 데이터 값을 상기 특정한 가변 노드로부터 패리티 체크 코드에 따라 상기 특정한 가변 노드에 결합되는 다수의 체크 노드들의 각각으로 송신하는 단계;
    특정한 체크 노드가 상기 특정한 체크 노드에 결합되는 다수의 가변 노드들의 각각으로부터 하드 데이터 값을 수신하는 단계;
    상기 특정한 체크 노드에서 수신된 상기 각각의 하드 데이터 값들에 기초하여 패리티 데이터를 산출하는 단계; 및
    상기 특정한 가변 노드에서, 상기 특정한 체크 노드에 의해 산출되는 상기 패리티 데이터에 적어도 부분적으로 기초하여 상기 신뢰도 데이터 값을 상기 신뢰도 데이터 값의 증분 또는 차감이 상기 신뢰도 데이터 값에 대해 미리 결정된 범위를 초과하지 않는 한 미리 결정된 양만큼 증분 또는 차감하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  10. 청구항 9에 있어서,
    증분 또는 차감하는 단계는, 상기 특정한 체크 노드에 의해 산출되는 상기 패리티 데이터에만 기초하여 상기 신뢰도 데이터 값을 증분 또는 차감하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  11. 청구항 9 및 청구항 10 중 어느 한 항에 있어서,
    상기 신뢰도 데이터 업데이트 방법은, 상기 신뢰도 데이터 값을 상기 특정한 가변 노드로부터 상기 특정한 가변 노드에 결합되는 상기 다수의 체크 노드들의 각각으로 송신하는 단계; 및
    특정한 체크 노드가 상기 특정한 체크 노드에 결합되는 상기 다수의 가변 노드들의 각각으로부터 신뢰도 데이터 값을 수신하는 단계;
    상기 저장된 신뢰도 데이터 값을 증분 또는 차감하는 단계는 상기 특정한 체크 노드에서 상기 신뢰도 데이터 값을 증분 또는 차감하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  12. 청구항 11에 있어서,
    상기 신뢰도 데이터 업데이트 방법은, 증분 또는 차감된 상기 신뢰도 데이터 값을 상기 특정한 체크 노드로부터 상기 특정한 가변 노드로 송신하는 단계; 및
    상기 저장된 신뢰도 데이터 값을 상기 특정한 가변 노드에서 증분 또는 차감된 상기 신뢰도 데이터 값으로 대체하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  13. 청구항 9 및 청구항 10 중 어느 한 항에 있어서,
    상기 신뢰도 데이터 업데이트 방법은, 상기 특정한 가변 노드에 결합되는 상기 다수의 체크 노드들의 각각에 대해 상기 저장된 신뢰도 데이터 값을 계층별로 증분 또는 차감하는 단계를 포함하고;
    각각의 계층은 상기 특정한 가변 노드에 결합되는 상기 다수의 체크 노드들 중 각각의 체크 노드에 의해 산출되는 상기 패리티 데이터에만 기초하여 상기 저장된 신뢰도 데이터 값을 증분 또는 차감하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  14. 청구항 13에 있어서,
    상기 신뢰도 데이터 업데이트 방법은, 업데이트된 상기 신뢰도 데이터 값에 대응하는 업데이트된 하드 데이터 값을 상기 특정한 가변 노드로부터 상기 특정한 가변 노드에 결합되는 상기 다수의 체크 노드들의 각각으로 송신하는 단계 전에 상기 특정한 가변 노드에 결합되는 모든 상기 다수의 체크 노드들에 대해 상기 저장된 신뢰도 데이터 값을 계층별로 증분 또는 차감하는 단계를 포함하는, 신뢰도 데이터 업데이트 방법.
  15. 삭제
  16. 청구항 9 및 청구항 10 중 어느 한 항에 있어서,
    상기 패리티 데이터를 산출하는 단계는:
    상기 특정한 체크 노드가 수신된 상기 각각의 하드 데이터 값들에 기초하여 제 1 패리티 데이터를 산출하는 단계; 및
    상기 특정한 체크 노드에서 상기 제 1 패리티 데이터 및 상기 특정 가변 노드로부터 수신되는 상기 하드 데이터 값에 기초하여 제 2 패리티 데이터를 산출하는 단계를 포함하고,
    상기 신뢰도 데이터 업데이트 방법은, 상기 제 2 패리티 데이터를 상기 특정한 체크 노드로부터 상기 특정한 가변 노드로 송신하는 단계를 포함하나, 상기 제 2 패리티 데이터를 다른 가변 노드들로 송신하는 단계는 포함하지 않는, 신뢰도 데이터 업데이트 방법.
  17. 복수의 체크 노드들; 및
    패리티 체크 코드에 따라 상기 복수의 체크 노드들에 결합되는 신뢰도 데이터를 저장하는 메모리를 포함하는, 복수의 가변 노드들을 포함하고;
    상기 복수의 체크 노드들은:
    각각의 하드 데이터 입력들을 상기 복수의 체크 노드들에 결합되는 상기 복수의 가변 노드들로부터 수신하고;
    상기 각각의 하드 데이터 입력들에 기초하여 상기 복수의 체크 노드들에 결합되는 상기 복수의 가변 노드들에 대해:
    상기 각각의 하드 데이터 입력들에 기초하여 제 1 패리티 데이터를 산출하는 것;
    특정한 가변 노드로부터의 각각의 하드 데이터 입력 및 상기 제 1 패리티에 기초하여 제 2 패리티 데이터를 산출하는 것;
    에 의해 각각의 패리티 데이터를 산출하도록 구성되고;
    상기 복수의 체크 노드들은, 상기 각각의 제 2 패리티 데이터에 적어도 부분적으로 기초하여 상기 특정한 가변 노드에 대해 각각의 신뢰도 데이터를 업데이트하도록 구성되고;
    상기 각각의 패리티 데이터에 적어도 부분적으로 기초하여 각각의 신뢰도 데이터를 업데이트하도록 구성되는, 신뢰도 데이터 업데이트 장치.
  18. 청구항 17에 있어서,
    상기 신뢰도 데이터 업데이트 장치는, 상기 각각의 패리티 데이터에 적어도 부분적으로 기초하여 상기 체크 노드들에 결합되는 상기 가변 노드들에 대해 상기 복수의 체크 노드들에서 각각의 신뢰도 데이터를 업데이트하도록 구성되는, 신뢰도 데이터 업데이트 장치.
  19. 삭제
  20. 청구항 17 및 청구항 18 중 어느 한 항에 있어서,
    상기 복수의 가변 노드들은, 별개의 클록 사이클에서 상기 복수의 가변 노드들에 결합되는 상기 체크 노드들의 각각으로부터 수신되는 정보에 기초하여 상기 복수의 가변 노드들에 저장된 상기 신뢰도 데이터를 업데이트하도록 구성되는, 신뢰도 데이터 업데이트 장치.
  21. 청구항 17 및 청구항 18 중 어느 한 항에 있어서,
    상기 각각의 신뢰도 데이터는, 로그-가능성 비(LLR)를 포함하고, 상기 복수의 체크 노드들은 상기 각각의 패리티 데이터에 기초하여 고정된 양만큼 상기 LLR을 증분 또는 차감하도록 구성되는, 신뢰도 데이터 업데이트 장치.
  22. 메모리 디바이스;
    상기 메모리 디바이스에 결합되고 상기 메모리 디바이스로부터 하드 데이터를 수신하고 하드 데이터에 부여되는 신뢰도 데이터를 결정하도록 구성되는 신뢰도 회로로서, 상기 신뢰도 데이터는 제 1 값을 포함하는 상기 하드 데이터에 대응하여 제 1 신뢰도 데이터 값을 포함하거나 제 2 값을 포함하는 상기 하드 데이터에 대응하여 제 2 신뢰도 데이터 값을 포함하는, 상기 신뢰도 회로;
    상기 신뢰도 회로에 결합되고 상기 신뢰도 회로로부터 상기 하드 데이터 및 상기 신뢰도 데이터를 수신하도록 구성되는 에러 정정 회로로서, 상기 에러 정정회로는:
    상기 하드 데이터에 대한 패리티 데이터를 반복적으로 산출하고;
    임의의 수의 계층들마다 한 번씩 산출된 상기 패리티 데이터에 적어도 부분적으로 기초하여 상기 신뢰도 데이터를 미리 결정된 양만큼 증분 또는 차감하도록 더 구성되며, 상기 신뢰도 데이터의 증분 또는 차감이 상기 신뢰도 데이터에 대해 미리 결정된 범위를 초과하지 않는 한 각각의 반복은 복수의 계층들을 포함하는, 상기 에러 정정회로를 포함하는, 신뢰도 데이터 업데이트 장치.
  23. 청구항 22에 있어서,
    상기 에러 정정 회로는:
    상기 하드 데이터에 대해 상기 패리티 데이터를 반복적으로 산출하도록 구성되는 복수의 체크 노드들; 및
    상기 신뢰도 데이터를 업데이트하도록 구성되는 복수의 가변 노드들을 포함하는, 신뢰도 데이터 업데이트 장치.
  24. 청구항 22에 있어서,
    상기 에러 정정 회로는, 호스트에 결합되고 수행되는 특정한 수의 반복들 중 어느 하나에 대응하여 또는 정확한 상기 하드 데이터 상의 신드롬 체크에 대응하여 상기 호스트에 상기 하드 데이터를 제공하도록 구성되는, 신뢰도 데이터 업데이트 장치.
  25. 복수의 순환 메모리들;
    상기 복수의 순환 메모리들에 결합되는 입력으로서, 상기 입력은 하드 데이터 및 신뢰도 데이터를 상기 복수의 순환 메모리들에 제공하도록 구성되는, 상기 입력;
    상기 복수의 순환 메모리들에 결합되고 상기 복수의 순환 메모리들로부터 하드 데이터를 수신하도록 구성되는 출력을 포함하고;
    패리티 체크 코드에 따라 상기 복수의 순환 메모리들에 결합되는 복수의 체크 노드들을 포함하고;
    상기 복수의 순환 메모리들은 상기 복수의 순환 메모리들에 결합되는 상기 복수의 체크 노드들에 각각의 하드 데이터 및 각각의 신뢰도 데이터를 제공하도록 각각 구성되고;
    상기 복수의 체크 노드들은 수신된 하드 데이터에 대해 패리티 데이터를 산출하고, 상기 패리티 데이터에 적어도 부분적으로 기초하여 수신된 신뢰도 데이터를 업데이트하며, 상기 패리티 데이터 및 업데이트된 신뢰도 데이터를 상기 복수의 체크 노드들에 결합되는 상기 순환 메모리들에 송신하도록 각각 구성되고;
    상기 복수의 체크 노드들은 상기 복수의 순환 메모리들로부터 수신되는 상기 하드 데이터에 기초하여 신드롬 체크를 수행하도록 구성되고;
    상기 입력은 상기 하드 데이터에 대해 실패한 상기 신드롬 체크에 대응하여 세미-소프트 데이터를 상기 순환 메모리들에 제공하도록 구성되는, 신뢰도 데이터 업데이트 장치.
  26. 삭제
  27. 삭제
  28. 청구항 25에 있어서,
    상기 입력은 상기 세미-소프트 데이터에 대해 실패한 상기 신드롬 체크에 대응하여 풀-소프트 데이터(full-soft data)를 제공하도록 구성되는, 신뢰도 데이터 업데이트 장치.
  29. 복수의 체크 노드들; 및
    패리티 체크 코드에 따라 상기 복수의 체크 노드들에 결합되는 복수의 가변 노드들을 포함하고;
    상기 복수의 체크 노드들은:
    각각의 하드 데이터 입력들을 상기 복수의 체크 노드들에 결합되는 상기 복수의 가변 노드들로부터 수신하고;
    상기 각각의 하드 데이터 입력들에 기초하여 상기 복수의 체크 노드들에 결합되는 상기 복수의 가변 노드들에 대한 각각의 패리티 데이터를 산출하며;
    상기 복수의 가변 노드들은 상기 각각의 패리티 데이터에 적어도 부분적으로 기초하여 각각의 신뢰도 데이터를 업데이트하도록 구성되고,
    상기 복수의 가변 노드들은 업/다운 카운터들을 포함하는, 신뢰도 데이터 업데이트 장치.
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
KR1020157012064A 2012-10-11 2013-10-08 신뢰도 데이터 업데이트 KR101753498B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/649,822 2012-10-11
US13/649,822 US9612903B2 (en) 2012-10-11 2012-10-11 Updating reliability data with a variable node and check nodes
PCT/US2013/063843 WO2014058855A1 (en) 2012-10-11 2013-10-08 Updating reliability data

Publications (2)

Publication Number Publication Date
KR20150067338A KR20150067338A (ko) 2015-06-17
KR101753498B1 true KR101753498B1 (ko) 2017-07-03

Family

ID=50476582

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157012064A KR101753498B1 (ko) 2012-10-11 2013-10-08 신뢰도 데이터 업데이트

Country Status (7)

Country Link
US (3) US9612903B2 (ko)
EP (1) EP2907033B1 (ko)
JP (1) JP5992628B2 (ko)
KR (1) KR101753498B1 (ko)
CN (1) CN104769556B (ko)
TW (1) TWI517173B (ko)
WO (1) WO2014058855A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104995844B (zh) * 2013-02-14 2018-11-30 马维尔国际贸易有限公司 具有对于ldpc码可靠性输入的比特翻转解码
JP6446730B2 (ja) 2013-03-07 2019-01-09 マーベル ワールド トレード リミテッド データをデコードするための方法およびデコーダ
US9379738B2 (en) * 2013-03-13 2016-06-28 Marvell World Trade Ltd. Systems and methods for decoding using partial reliability information
US9407290B2 (en) * 2013-03-15 2016-08-02 Sandisk Technologies Llc Error-correction decoding with conditional limiting of check-node messages
JP6451955B2 (ja) 2013-03-21 2019-01-16 マーベル ワールド トレード リミテッド 多段ソフト入力デコードのためのシステムおよび方法
US9329935B2 (en) 2014-05-19 2016-05-03 Seagate Technology Llc Method to dynamically update LLRs in an SSD drive and/or controller
CN104537455A (zh) * 2014-12-02 2015-04-22 成都万象天龙科技有限公司 一种基于进销存系统的带加密功能的控制系统与控制方法
CN104504496A (zh) * 2014-12-02 2015-04-08 成都万象天龙科技有限公司 一种基于进销存系统的控制系统与控制方法
CN104537456A (zh) * 2014-12-02 2015-04-22 成都万象天龙科技有限公司 一种基于进销存系统的带加密管控功能的控制系统与控制方法
US10164656B2 (en) * 2016-03-30 2018-12-25 Silicon Motion Inc. Bit flipping algorithm for providing soft information during hard decision hard decoding
US9904594B2 (en) * 2016-04-15 2018-02-27 Micron Technology, Inc. Monitoring error correction operations performed in memory
EP3293885B1 (en) * 2016-09-09 2024-01-03 Université de Bretagne Sud Check node processing for syndrome computation in the decoding of non-binary codes, in particular non-binary ldpc codes
US10879928B2 (en) 2016-10-24 2020-12-29 Marvell Asia Pte, Ltd. Scaling of log-likelihood ratios (LLR) based on long training field (LTF)
EP3316486B1 (en) * 2016-10-25 2023-06-14 Université de Bretagne Sud Elementary check node-based syndrome decoding with input pre-sorting
US10289348B2 (en) * 2016-12-30 2019-05-14 Western Digital Technologies, Inc. Tapered variable node memory
JP6821825B2 (ja) * 2017-03-09 2021-01-27 エルジー エレクトロニクス インコーポレイティド Ldpc符号の階層的復号の方法及びそのための装置
KR102289883B1 (ko) * 2017-05-10 2021-08-17 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
CN109428752B (zh) * 2017-08-29 2021-11-02 中兴通讯股份有限公司 校验方法及装置
US10269422B2 (en) * 2017-09-08 2019-04-23 Cnex Labs, Inc. Storage system with data reliability mechanism and method of operation thereof
US11750223B2 (en) * 2018-03-28 2023-09-05 Maxlinear, Inc. Low-power block code forward error correction decoder
TWI682636B (zh) * 2018-06-13 2020-01-11 財團法人資訊工業策進會 通訊系統之低密度奇偶檢查碼的解碼方法及應用其之通訊裝置
US11309915B1 (en) * 2019-07-11 2022-04-19 Arrowhead Center, Inc. Efficient implementation of a threshold modified min-sum algorithm for low-density parity-check decoders
US10778248B1 (en) * 2020-01-30 2020-09-15 TenaFe, Inc. Low-density parity-check decoding with de-saturation
US11567828B2 (en) 2020-07-09 2023-01-31 SK Hynix Inc. Asymmetric LLR generation using assist-read

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938196B2 (en) 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US7178080B2 (en) * 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
US7120856B2 (en) 2002-09-25 2006-10-10 Leanics Corporation LDPC code and encoder/decoder regarding same
JP4296949B2 (ja) * 2004-02-03 2009-07-15 ソニー株式会社 復号装置及び方法、並びに情報処理装置及び方法
US7730377B2 (en) 2004-07-22 2010-06-01 Texas Instruments Incorporated Layered decoding of low density parity check (LDPC) codes
KR20060032464A (ko) * 2004-10-12 2006-04-17 삼성전자주식회사 효율적인 저밀도 패리티 검사 코드 복호 방법 및 장치
KR100703271B1 (ko) 2004-11-23 2007-04-03 삼성전자주식회사 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치
US8438459B2 (en) 2004-12-22 2013-05-07 Lg Electronics Inc. Apparatus and method for decoding using channel code
US7441178B2 (en) 2005-02-24 2008-10-21 Keyeye Communications Low complexity decoding of low density parity check codes
US20070089016A1 (en) 2005-10-18 2007-04-19 Nokia Corporation Block serial pipelined layered decoding architecture for structured low-density parity-check (LDPC) codes
US20110036759A1 (en) 2005-12-06 2011-02-17 Rotex, Inc. Screening machine and associated screen panel
JP4807063B2 (ja) 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
KR100899738B1 (ko) 2006-02-02 2009-05-27 삼성전자주식회사 노드 메모리 기반의 ldpc 복호기 및 복호방법
US8095860B2 (en) * 2007-05-23 2012-01-10 The Royal Institution For The Advancement Of Learning/Mcgill University Method for implementing stochastic equality nodes
US8261170B2 (en) 2007-06-19 2012-09-04 Mitsubishi Electric Research Laboratories, Inc. Multi-stage decoder for error-correcting codes
CN101350625B (zh) * 2007-07-18 2011-08-31 北京泰美世纪科技有限公司 一种高效通用的qc-ldpc码译码器及其译码方法
KR100939334B1 (ko) 2007-12-12 2010-01-29 한국전자통신연구원 기본 행렬을 이용한 저밀도 패리티 검사 부호의 복호화장치 및 그 방법
KR101065480B1 (ko) * 2007-12-19 2011-09-19 한국전자통신연구원 저밀도 패리티 검사 부호의 고속 검사노드 갱신 장치 및 그방법
KR101405962B1 (ko) 2008-02-28 2014-06-12 엘지전자 주식회사 Ldpc 코드를 이용한 복호화 방법
US20100037121A1 (en) 2008-08-05 2010-02-11 The Hong Kong University Of Science And Technology Low power layered decoding for low density parity check decoders
US20100074381A1 (en) 2008-09-25 2010-03-25 The Royal Institution For The Advancement Of Learning/ Mcgill University Methods and systems for improving iterative signal processing
US8219873B1 (en) 2008-10-20 2012-07-10 Link—A—Media Devices Corporation LDPC selective decoding scheduling using a cost function
US9356623B2 (en) * 2008-11-26 2016-05-31 Avago Technologies General Ip (Singapore) Pte. Ltd. LDPC decoder variable node units having fewer adder stages
US8560917B2 (en) 2009-01-27 2013-10-15 International Business Machines Corporation Systems and methods for efficient low density parity check (LDPC) decoding
US8458556B2 (en) * 2009-10-09 2013-06-04 Stmicroelectronics, Sa Low complexity finite precision decoders and apparatus for LDPC codes
KR101286858B1 (ko) 2009-12-21 2013-07-17 한국전자통신연구원 저밀도 패리티 검사 부호를 위한 고속 복호 방법
US8589755B2 (en) 2010-06-16 2013-11-19 Nec Laboratories America, Inc. Reduced-complexity LDPC decoding
JP5790029B2 (ja) 2011-03-01 2015-10-07 ソニー株式会社 復号装置、復号方法、およびプログラム
US9214962B2 (en) * 2011-07-27 2015-12-15 Panasonic Intellectual Property Corporation Of America Encoding method, decoding method

Also Published As

Publication number Publication date
KR20150067338A (ko) 2015-06-17
EP2907033A4 (en) 2016-07-06
WO2014058855A1 (en) 2014-04-17
TWI517173B (zh) 2016-01-11
CN104769556A (zh) 2015-07-08
US9612903B2 (en) 2017-04-04
EP2907033B1 (en) 2019-09-11
CN104769556B (zh) 2018-02-02
US20140108883A1 (en) 2014-04-17
JP2015536595A (ja) 2015-12-21
US10191804B2 (en) 2019-01-29
US20190146866A1 (en) 2019-05-16
TW201428756A (zh) 2014-07-16
JP5992628B2 (ja) 2016-09-14
EP2907033A1 (en) 2015-08-19
US20160259686A1 (en) 2016-09-08
US10628256B2 (en) 2020-04-21

Similar Documents

Publication Publication Date Title
KR101753498B1 (ko) 신뢰도 데이터 업데이트
US10998923B2 (en) Stopping criteria for layered iterative error correction
US9985651B2 (en) Read threshold calibration for LDPC
US9170877B2 (en) Resolving trapping sets
US10326479B2 (en) Apparatuses and methods for layer-by-layer error correction
KR101674339B1 (ko) 분류 코드를 사용한 소프트 데이터의 결정
US11243838B2 (en) Methods and apparatuses for error correction
CN110971240A (zh) 解码器设计方法与存储控制器

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
GRNT Written decision to grant