KR20130077962A - 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템 - Google Patents

저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템 Download PDF

Info

Publication number
KR20130077962A
KR20130077962A KR1020110146645A KR20110146645A KR20130077962A KR 20130077962 A KR20130077962 A KR 20130077962A KR 1020110146645 A KR1020110146645 A KR 1020110146645A KR 20110146645 A KR20110146645 A KR 20110146645A KR 20130077962 A KR20130077962 A KR 20130077962A
Authority
KR
South Korea
Prior art keywords
data
reliability
read
decoding
bit
Prior art date
Application number
KR1020110146645A
Other languages
English (en)
Other versions
KR101968746B1 (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 삼성전자주식회사
Priority to KR1020110146645A priority Critical patent/KR101968746B1/ko
Priority to US13/601,057 priority patent/US9059738B2/en
Priority to JP2012274415A priority patent/JP6096496B2/ja
Priority to CN2012105927039A priority patent/CN103186352A/zh
Publication of KR20130077962A publication Critical patent/KR20130077962A/ko
Application granted granted Critical
Publication of KR101968746B1 publication Critical patent/KR101968746B1/ko

Links

Images

Classifications

    • 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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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
    • 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
    • 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
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

Landscapes

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

Abstract

본 발명은 저장 장치로부터 데이터를 읽는 읽기 방법에 관한 것이다. 본 발명에 따른 읽기 방법은, 정상 읽기 전압들을 이용하여 저장 장치에 저장된 데이터를 읽는 단계, 읽어진 데이터에 기반하여 제 1 저밀도 패리티 검사(LDPC, Low Density Parity Check) 디코딩을 수행하고 디코딩 결과에 따라 신뢰성 비트들을 생성하는 단계, 그리고 읽어진 데이터 및 신뢰성 비트들에 기반하여 제 2 저밀도 패리티 검사 디코딩을 수행하여, 읽어진 데이터의 에러를 정정하는 단계로 구성된다.

Description

저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템{READING METHOD OF READING DATA FROM STORAGE DEVICE, ERROR CORRECTING DEVICE AND STORAGE SYSTEM INCLUDING ERROR CORRECTING CODE DECODER}
본 발명은 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 장치를 포함하는 저장 시스템에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비소 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 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) 등이 있다. 플래시 메모리 장치는 크게 노어 타입과 낸드 타입으로 구분된다.
메모리 장치에 프로그램된 데이터가 읽어질 때, 오류가 발생한다. 읽기 시에 오류가 발생하면, 읽어진 데이터에 오류가 포함될 수 있다. 읽어진 데이터의 오류를 정정하기 위하여, BCH (Bose-Chaudhuri-Hocquenghem) 코드, RS (Reed-Solomon) 코드, LDPC (Low Density Parity Check) 코드, 터보(Tutbo) 코드 등과 같은 에러 정정 코드들이 연구되고 있다.
본 발명의 목적은 향상된 신뢰성을 갖고 더 적은 자원을 소모하는 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템을 제공하는 데에 있다.
본 발명의 실시 예에 따른 저장 장치로부터 데이터를 읽는 읽기 방법은, 정상 읽기 전압들을 이용하여 상기 저장 장치에 저장된 데이터를 읽는 단계; 상기 읽어진 데이터에 기반하여 제 1 저밀도 패리티 검사(LDPC, Low Density Parity Check) 디코딩을 수행하고, 상기 디코딩 결과에 따라 상기 읽어진 데이터의 비트들(이하에서, 읽기 비트들) 각각의 신뢰성 비트들을 생성하는 단계; 그리고 상기 읽어진 데이터 및 상기 신뢰성 비트들에 기반하여 제 2 저밀도 패리티 검사 디코딩을 수행하여, 상기 읽어진 데이터의 에러를 정정하는 단계를 포함한다.
실시 예로서, 상기 신뢰성 비트들을 생성하는 단계는, 상기 제 1 저밀도 패리티 검사 디코딩의 결과로서 디코딩된 비트들을 생성하는 단계; 상기 읽기 비트들 중 제 1 비트, 그리고 상기 디코딩된 비트들 중 상기 제 1 비트와 동일한 위치의 제 2 비트를 비교하는 단계; 그리고 상기 비교 결과에 따라, 상기 제 1 비트에 대응하는 신뢰성 비트를 생성하는 단계를 포함한다.
실시 예로서, 상기 제 1 비트와 제 2 비트가 동일할 때, 상기 제 1 비트의 신뢰성이 높음을 가리키는 신뢰성 비트가 생성된다.
실시 예로서, 상기 제 1 비트와 제 2 비트가 서로 다를 때, 상기 제 1 비트의 신뢰성이 낮음을 가리키는 신뢰성 비트가 생성된다.
실시 예로서, 상기 제 1 저밀도 패리티 검사 디코딩이 수행될 때, 상기 읽기 비트들에 크기는 갖고 부호가 반대인 우도값들이 매핑된다.
실시 예로서, 상기 제 2 저밀도 패리티 검사 디코딩이 수행될 때, 상기 읽기 비트들 및 신뢰성 비트들에 따라 상기 읽기 비트들에 둘 이상의 서로 다른 우도값들이 매핑된다.
실시 예로서, 상기 에러를 정정하는 단계에서 에러 정정이 완료되지 않으면, 부분 읽기 전압들을 이용하여 상기 저장 장치에 저장된 상기 데이터를 다시 읽고, 상기 읽어진 데이터 및 상기 다시 읽어진 데이터에 기반하여 제 3 저밀도 패리티 검사 디코딩을 수행하여 에러를 정정하는 단계를 더 포함한다.
실시 예로서, 상기 읽는 단계의 읽기 전압들의 레벨들과 상기 다시 읽는 단계의 읽기 전압들의 레벨들은 서로 다르다.
실시 예로서, 상기 제 1 저밀도 패리티 검사 디코딩의 디코딩 루프가 기준 횟수 수행된 후에, 상기 제 1 저밀도 패리티 검사 디코딩의 디코딩 루프가 반복될 때마다 상기 신뢰성 비트들이 생성된다.
실시 예로서, 상기 생성된 신뢰성 비트들의 수가 최대값에 도달하면, 상기 신뢰성 비트들은 FIFO (First-In First-Out)으로 관리된다.
실시 예로서, 상기 생성된 신뢰성 비트들의 수가 최대값에 도달한 후 상기 제 1 저밀도 패리티 검사의 디코딩 루프가 기준 횟수 수행된 후에, 상기 제 2 저밀도 패리티 검사 디코딩이 수행된다.
실시 예로서, 상기 제 2 저밀도 패리티 검사 디코딩이 수행될 때, 상기 제 1 저밀도 패리티 검사 디코딩에서 연산된 검사 노드들 및 변수 노드들의 값들이 승계된다.
본 발명의 실시 예에 따른 에러 정정 장치는, 외부로부터 수신되는 데이터를 저장하고, 상기 데이터의 신뢰성을 가리키는 신뢰성 데이터를 저장하도록 구성되는 메모리; 상기 메모리로부터 출력되는 상기 데이터에 제 1 우도값들을 사상하여 제 1 사상 데이터를 출력하고, 상기 메모리로부터 출력되는 상기 데이터 및 신뢰성 데이터에 제 2 우도값들을 사상하여 제 2 사상 데이터를 출력하도록 구성되는 우도값 사상기; 상기 제 1 사상 데이터 또는 제 2 사상 데이터에 기반하여 저밀도 패리티 검사(LDPC, Low Density Parity Check) 디코딩을 수행하도록 구성되는 판정부; 그리고 상기 판정부로부터 상기 제 1 사상 데이터에 기반한 디코딩 결과를 수신하고, 상기 디코딩 결과를 상기 메모리에 저장된 상기 데이터와 비교하고, 비교 결과에 따라 상기 데이터의 각 비트의 신뢰성을 가리키는 신뢰성 데이터를 생성하여 상기 메모리에 저장하도록 구성되는 우도값 신뢰성 갱신기를 포함한다.
실시 예로서, 상기 메모리는 상기 신뢰성 데이터의 양이 특정 값 미만일 때 상기 데이터를 출력하고, 상기 신뢰성 데이터의 양이 상기 특정 값에 도달할 때 상기 데이터 및 신뢰성 데이터를 함께 출력한다.
실시 예로서, 상기 특정값은 상기 데이터의 한 비트에 대응하는 신뢰성 데이터를 저장하는 상기 메모리의 비트 수이다.
실시 예로서, 상기 우도값 신뢰성 갱신기는 상기 디코딩 결과 중 제 1 비트, 그리고 상기 데이터 중 상기 제 1 비트와 동일한 위치의 제 2 비트가 서로 다른 값을 가질 때, 신뢰성이 낮음을 가리키는 신뢰성 데이터를 생성한다.
실시 예로서, 상기 우도값 신뢰성 갱신기는 상기 디코딩 결과 중 제 1 비트, 그리고 상기 데이터 중 상기 제 1 비트와 동일한 위치의 제 2 비트가 동일한 값을 가질 때, 신뢰성이 높음을 가리키는 신뢰성 데이터를 생성한다.
실시 예로서, 상기 제 1 디코딩이 수행될 때, 상기 우도값 사상기는 상기 데이터에 크기가 같고 부호가 서로 다른 두 개의 우도값들을 사상한다.
실시 예로서, 상기 제 2 디코딩이 수행될 때, 상기 우도값 사상기는 상기 데이터 및 신뢰성 데이터에 서로 다른 셋 이상의 우도값들을 사상한다.
실시 예로서, 상기 판정부에서 에러의 정정 실패가 감지되면, 상기 메모리는 추가 데이터를 수신하여 저장하고, 상기 우도값 사상기는 상기 데이터 및 추가 데이터에 우도값들을 사상하여 제 3 사상 데이터를 출력하고, 상기 판정부는 상기 제 3 사상 데이터에 기반하여 디코딩을 수행한다.
실시 예로서, 상기 데이터에 대응하는 각 신뢰성 데이터의 비트 수가 특정 값에 도달할 때, 상기 메모리는 상기 신뢰성 데이터를 FIFO (First-In First-Out) 방식으로 관리한다.
실시 예로서, 상기 데이터에 대응하는 각 신뢰성 데이터의 비트 수가 특정 값에 도달하고, 상기 제 1 사상 데이터에 기반한 디코딩이 기준 횟수 수행된 후에, 상기 메모리는 상기 데이터 및 신뢰성 데이터를 상기 우도값 사상기로 함께 출력한다.
실시 예로서, 상기 제 1 사상 데이터에 기반한 디코딩이 기준 횟수 수행된 후에, 상기 우도값 신뢰성 갱신기는 상기 신뢰성 데이터를 생성한다.
본 발명의 실시 예에 따른 저장 시스템은, 저장 장치; 그리고 상기 저장 장치로부터 읽어진 데이터를 수신하고, 상기 수신된 데이터의 에러를 정정하는 에러 정정 코드 디코더를 구비한 컨트롤러를 포함하고, 상기 에러 정정 코드 디코더는, 상기 저장 장치로부터 읽어진 데이터를 저장하고, 상기 읽어진 데이터의 신뢰성을 가리키는 신뢰성 데이터를 저장하도록 구성되는 메모리; 상기 메모리로부터 출력되는 상기 데이터에 제 1 우도값들을 사상하여 제 1 사상 데이터를 출력하고, 상기 메모리로부터 출력되는 상기 데이터 및 신뢰성 데이터에 제 2 우도값들을 사상하여 제 2 사상 데이터를 출력하도록 구성되는 우도값 사상기; 상기 제 1 사상 데이터 또는 제 2 사상 데이터에 기반하여 저밀도 패리티 검사(LDPC, Low Density Parity Check) 디코딩을 수행하도록 구성되는 판정부; 그리고 상기 판정부로부터 상기 제 1 사상 데이터에 기반한 제 1 디코딩 결과를 수신하고, 상기 제 1 디코딩 결과를 상기 메모리에 저장된 상기 데이터와 비교하고, 비교 결과에 따라 상기 데이터의 각 비트의 신뢰성을 가리키는 신뢰성 데이터를 생성하여 상기 메모리에 저장하도록 구성되는 우도값 신뢰성 갱신기를 포함하고, 상기 우도값 사상기는 상기 제 2 사상 데이터에 따른 제 2 디코딩 결과에 기반하여 상기 읽어진 데이터의 에러를 정정한다.
실시 예로서, 상기 저장 장치는 플래시 메모리를 포함한다.
실시 예로서, 상기 저장 장치 및 상기 컨트롤러는 메모리 카드를 형성한다.
실시 예로서, 상기 저장 장치 및 상기 컨트롤러는 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 형성한다.
실시 예로서, 상기 에러의 정정이 실패할 때, 상기 메모리는 상기 저장 장치로부터 추가로 읽어진 데이터를 수신하여 저장하고, 상기 우도값 사상기는 상기 데이터 및 추가로 읽어진 데이터에 우도값들을 사상하여 제 3 사상 데이터를 출력하고, 상기 판정부는 상기 제 3 사상 데이터에 기반하여 디코딩을 수행한다.
실시 예로서, 상기 에러 정정 코드 디코더는 상기 저장 장치에 저장된 사용자 데이터의 에러를 정정하고, 상기 컨트롤러는 상기 저장 장치에 저장된 메타 데이터의 에러를 정정하는 메타 데이터용 에러 정정 코드 디코더를 더 포함한다.
실시 예로서, 상기 메타 데이터용 에러 정정 코드 디코더는 BCH (Bose-Chaudhuri-Hocquenghem) 코드를 이용하여 에러를 정정한다.
실시 예로서, 상기 컨트롤러 및 저장 장치는 복수의(k 개, k는 양의 정수) 채널들을 통해 서로 통신하고, 상기 에러 정정 코드 디코더는 상기 복수의 채널들 중 하나의 채널을 통해 통신되는 데이터의 에러들을 정정하고, 상기 컨트롤러는 상기 복수의 채널들 중 나머지 채널들을 통해 통신되는 데이터의 에러들을 각각 정정하는 복수의(k-1 개) 에러 정정 코드 디코더들을 더 포함한다.
본 발명에 따르면, 읽기 데이터 및 신뢰성 데이터에 기반하여 경판정이 수행된다. 경판정의 신뢰성이 향상되어 연판정이 발생하는 빈도가 감소하므로, 향상된 신뢰성을 갖고 더 적은 자원을 소모하는 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템이 제공된다.
도 1은 본 발명의 실시 예에 따른 저장 시스템을 보여주는 블록도이다.
도 2a는 읽기 시에 수행되는 본 발명의 실시 예에 따른 에러 정정 디코딩 방법을 보여주는 흐름도이다.
도 2b는 정상 읽기 전압들과 부분 읽기 전압들의 예를 보여준다.
도 3은 본 발명의 실시 예에 따른 에러 정정 코드 디코더를 보여주는 블록도이다.
도 4는 도 3의 에러 정정 코드 디코더에서 사용되는 패리티 검사 행렬의 예를 보여준다.
도 5는 도 4의 패리티 검사 행렬로부터 도출되는 팩터 그래프들을 보여준다.
도 6은 읽기 시에 에러 정정 코드 디코더의 에러 정정 방법을 보여주는 순서도이다.
도 7은 디코딩을 수행하는 방법을 더 상세하게 보여주는 순서도이다.
도 8은 도 7의 초기화 단계를 설명하기 위한 팩터 그래프들을 보여준다.
도 9은 초기화 시의 연산 공간을 보여준다.
도 10은 검사 노드들이 갱신되는 과정을 보여준다.
도 11 및 도 12는 검사 노드들의 갱신 방법에 따른 연산 공간을 보여준다.
도 13은 변수 노드들이 갱신되는 과정을 보여준다.
도 14 및 도 15는 변수 노드들의 갱신 방법에 따른 연산 공간을 보여준다.
도 16은 읽기 및 신뢰성 정보 메모리의 예를 보여주는 도면이다.
도 17은 신뢰성 비트들을 생성하는 방법을 더 상세하게 보여주는 순서도이다.
도 18 및 도 19는 신뢰성 비트들이 생성되는 과정을 보여준다.
도 20은 경판정 우도값 레지스터에 저장된 사상 정보의 예를 보여준다.
도 21은 검사 노드들이 갱신되는 방법을 보여준다.
도 22는 변수 노드들이 갱신되는 방법을 보여준다.
도 23은 디코딩을 수행하는 방법의 다른 예를 보여주는 순서도이다.
도 24는 도 1의 저장 시스템의 다른 예를 보여주는 블록도이다.
도 25는 도 1의 저장 시스템의 응용 예를 보여주는 블록도이다.
도 26은 본 발명의 실시 예에 따른 메모리 카드를 보여준다.
도 27은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브를 보여준다.
도 28은 도 25를 참조하여 설명된 저장 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 저장 시스템(1000)을 보여주는 블록도이다. 도 1을 참조하면, 저장 시스템(1000)은 저장 장치(100) 및 컨트롤러(200)를 포함한다. 저장 장치(100)는 플래시 메모리를 포함한다. 즉, 저장 장치(100)는 메모리 셀들의 문턱 전압을 조절함으로써 데이터를 저장한다.
컨트롤러(200)는 호스트(Host) 및 저장 장치(100)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 컨트롤러(200)는 저장 장치(100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(200)는 저장 장치(100)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(200)는 저장 장치(100) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(200)는 저장 장치(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(200)는 저장 장치(100)에 제어 신호 및 어드레스를 제공하도록 구성된다. 그리고, 컨트롤러(200)는 저장 장치(100)와 데이터를 교환하도록 구성된다.
컨트롤러(200)는 에러 정정 코드 디코더(300)를 포함한다. 에러 정정 코드 디코더(300)는 저장 장치(100)로부터 읽어지는 데이터에 대해 에러 정정 코드(ECC, Error Correcting Code)를 이용한 디코딩을 수행한다. 에러 정정 코드 디코더(300)는 디코딩을 수행하여, 읽어진 데이터의 에러를 정정한다. 에러 정정 코드 디코더(300)는 LDPC (Low Density Parity Check) 코드를 이용하여 디코딩을 수행한다.
컨트롤러(200)는 특정한 통신 규격에 따라 호스트(Host)와 통신한다. 예를 들어, 컨트롤러(200)는 USB (Universal Serial Bus), MMC (multimedia card), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 그리고 파이어와이어(Firewire) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 호스트(Host)와 통신한다.
컨트롤러(200) 및 저장 장치(100)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(200) 및 저장 장치(100)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성한다. 컨트롤러(200) 및 저장 장치(100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성한다. 예를 들면, 컨트롤러(200) 및 저장 장치(100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성한다.
다른 예로서, 저장 시스템(1000)은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB (Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신하는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성한다.
예시적으로, 저장 장치(100) 또는 저장 시스템(1000)은 다양한 형태의 패키지로 실장될 수 있다. 예를 들면, 저장 장치(100) 또는 저장 시스템(1000)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic 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) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
도 2a는 읽기 시에 수행되는 본 발명의 실시 예에 따른 에러 정정 디코딩 방법을 보여주는 흐름도이다. 도 1 및 도 2a를 참조하면, S110 단계에서, 정상 읽기 전압들을 이용하여 데이터가 저장 장치(100)로부터 읽어진다. 컨트롤러(200)는 읽기 커맨드 및 주소를 발생하고, 발생된 읽기 커맨드 및 주소를 저장 장치(100)에 전송한다. 저장 장치(100)는 읽기 커맨드 및 주소에 응답하여, 정상 읽기 전압들을 이용하여 데이터를 읽을 수 있다. 읽어진 데이터는 컨트롤러(200)로 전송될 수 있다.
S120 단계에서, 경판정(Hard Decision)이 수행된다. 컨트롤러(200)의 에러 정정 코드 디코더(300)는 저장 장치(100)에서 정상 읽기 전압들을 이용하여 읽어진 데이터(이하에서, 제 1 읽기 데이터), 즉 정상 읽기 전압을 이용하여 읽어진 데이터를 에러 정정 코드를 이용하여 디코딩한다.
S130 단계에서, 경판정된 데이터가 올바른 데이터, 즉 에러가 모두 정정된 데이터인지 판별된다. 예를 들어, 컨트롤러(200)는 경판정된 데이터 및 패리티 검사 행렬(Parity Check Matrix)을 이용하여, 경판정된 데이터가 올바른 데이터인지 판별한다. 예를 들어, 경판정된 데이터와 패리티 검사 행렬의 연산 결과가 '0'일 때, 경판정된 데이터는 올바른 데이터인 것으로 판별될 수 있다. 경판정된 데이터와 패리티 검사 행렬의 연산 결과가 '0'이 아닐 때, 경판정된 데이터는 올바른 데이터가 아닌 것으로 판별될 수 있다.
경판정된 데이터가 올바른 데이터일 때, 에러 정정 디코딩은 종료될 수 있다. 경판정된 데이터는 에러 정정된 데이터로서 컨트롤러(200) 외부로 출력되거나 컨트롤러(200) 내부에서 사용될 수 있다.
경판정된 데이터가 올바른 데이터가 아닐 때, S140 단계가 수행된다. S140 단계에서, 부분(fractional) 읽기 전압들을 이용하여 데이터가 읽어진다. 예를 들어, 정상 읽기 전압들을 이용하여 읽어진 메모리 셀들에서, 부분 읽기 전압들을 이용하여 추가적인 읽기가 수행될 수 있다. 부분 읽기 전압들은 정상 읽기 전압들과 다른 레벨들을 가질 수 있다.
S150 단계에서, 연판정(Soft Decision)이 수행된다. 연판정은 제 1 읽기 데이터에 부분 읽기 전압들을 이용하여 읽어진 데이터가 추가된 데이터(이하에서, 제 2 읽기 데이터)에 기반하여 수행될 수 있다. 정상 읽기 전압들과 부분 읽기 전압들은 서로 다른 레벨들을 가질 수 있다. 정상 읽기 전압들과 부분 읽기 전압들의 예가 도 2b에 도시되어 있다.
도 2b에서, 가로 축은 메모리 셀들의 문턱 전압을 가리키고, 세로 축은 메모리 셀들의 수를 가리킨다. 즉, 도 2b는 메모리 셀들의 문턱 전압 산포들을 가리킨다. 예시적으로, 메모리 셀들은 소거 상태(E) 및 제 1 내지 제 3 프로그램 상태들(P1~P3)을 가질 수 있다.
정상 읽기 전압들(VRN) 각각은 인접한 두 개의 논리 상태들 사이의 레벨을 가질 수 있다. 부분 읽기 전압들(VRN1, VRN2) 각각은 인접한 두 개의 논리 상태들 사이의 레벨을 갖되, 정상 읽기 전압들(VRN)과 다른 레벨을 가질 수 있다.
메모리 셀들이 정상 읽기 전압들(VRN)로 읽어질 때의 결과와 부분 읽기 전압들(VRN1, VRN2)로 읽어질 때의 결과는 서로 다를 수 있다. 예를 들어, 메모리 셀들 중 정상적인 논리 상태의 전압 분포보다 낮거나 높은 문턱 전압을 갖는 테일(tail) 셀들이 존재한다. 테일 셀들의 읽기 결과는 정상 읽기 전압들(VRN)로 읽어질 때와 부분 읽기 전압들(VRN1, VRN2)로 읽어질 때 서로 다를 수 있다. 즉, 부분 읽기 전압들을 이용하여 추가적인 읽기가 수행되면, 메모리 셀들의 문턱 전압들에 대한 추가적인 정보(예를 들어, 테일 셀들에 대한 정보)가 획득될 수 있다.
메모리 셀들의 문턱 전압들에 대한 추가적인 정보가 획득되면, 메모리 셀들이 저장하는 데이터가 제 1 상태(예를 들어, '1') 또는 제 2 상태(예를 들어, '0')일 확률(또는 우도(likelihood ratio))의 정확성이 증가한다. 즉, 판정의 신뢰성이 증가한다. 컨트롤러(200)는 제 2 읽기 데이터, 즉 저장 장치(100)에서 복수 회의 읽기를 통해 읽어진 데이터와 정상 읽기 전압으로 얻은 경판정 데이터를 이용하여 연판정을 수행한다.
S160 단계에서, 연판정된 데이터가 올바른 데이터, 즉 에러가 모두 정정된 데이터인지 판별된다. 예를 들어, 컨트롤러(200)는 연판정된 데이터 및 패리티 검사 행렬(Parity Check Matrix)을 이용하여, 연판정된 데이터가 올바른 데이터인지 판별한다. 연판정된 데이터와 패리티 검사 행렬의 연산 결과가 '0'일 때, 연판정된 데이터는 올바른 데이터인 것으로 판별될 수 있다. 연판정된 데이터와 패리티 검사 행렬의 연산 결과가 '0'이 아닐 때, 연판정된 데이터는 올바른 데이터가 아닌 것으로 판별될 수 있다. 연판정된 데이터와 패리티 검사 행렬의 연산, 그리고 상술된 경판정된 데이터와 패리티 검사 행렬의 연산은 동일한 방법으로 수행될 수 있다.
연판정된 데이터가 올바른 데이터일 때, 에러 정정 디코딩은 종료될 수 있다. 연판정된 데이터는 에러 정정된 데이터로서 컨트롤러(200) 외부로 출력되거나 컨트롤러(200) 내부에서 사용될 수 있다.
연판정된 데이터가 올바른 데이터가 아닐 때, 컨트롤러(200)는 읽기 에러로 처리한다. 컨트롤러(200)는 읽기 에러를 내부에서 처리하거나 호스트(Host)에 보고한다. 컨트롤러(200)는 미리 정해진 일정에 따라, 읽기 에러를 처리한다.
상술된 바와 같이, 저장 장치(100)에서 읽기가 수행되면, 경판정이 수행된다. 경판정이 실패하면, 저장 장치(100)에서 적어도 한 번의 읽기가 더 수행되고 연판정이 수행된다. 연판정은 경판정과 비교하여 추가적인 읽기를 필요로한다. 연판정을 통해 에러가 정정될 때 소모되는 자원(시간, 저장 장치(100)의 스트레스 등)은 경판정을 통해 에러가 정정될 때 소모되는 자원(시간, 저장 장치(100)의 스트레스 등)보다 크다. 따라서, 경판정의 정확성이 증가하여 연판정이 수행되는 횟수가 감소하면, 읽기 시에 저장 장치(100)에서 소모되는 자원(시간, 저장 장치(100)의 스트레스 등)이 감소될 수 있다. 본 발명은 향상된 정확성을 갖는 경판정 방법 및 장치를 제공하여, 읽기 시에 더 적은 자원(시간, 저장 장치(100)의 스트레스 등)을 소모하는 읽기 방법 및 저장 시스템을 제공한다.
도 3은 본 발명의 실시 예에 따른 에러 정정 코드 디코더(300)를 보여주는 블록도이다. 도 3을 참조하면, 에러 정정 코드 디코더(300)는 읽기 및 신뢰성 정보 메모리(310), 초기 우도값 사상기(320), 판정부(330), 그리고 우도값 신뢰성 갱신기(360)를 포함한다.
읽기 및 신뢰성 정보 메모리(310)는 저장 장치(100)로부터 읽어진 읽기 데이터를 저장한다. 경판정(HD)이 수행될 때, 읽기 및 신뢰성 정보 메모리(310)는 정상 읽기를 통해 읽어진 데이터를 저장 장치(100)로부터 수신하고 제 1 읽기 데이터(Y1)로 저장한다. 정상 읽기란 도 2b의 정상 읽기 전압을 이용하여 읽는 동작을 의미한다. 또한, 경판정(HD)이 수행될 때, 읽기 및 신뢰성 정보 메모리(310)는 우도값 신뢰성 갱신기(360)로부터 우도값들의 신뢰성을 가리키는 데이터를 수신하고 신뢰성 데이터(RD)로 저장한다. 제 1 읽기 데이터(Y1) 및 신뢰성 데이터(RD)는 함께 저장되어 제 3 읽기 데이터(Y3)를 형성한다.
또한, 연판정(SD)이 수행될 때, 읽기 및 신뢰성 정보 메모리(310)는 추가적인 읽기를 통해 읽어진 데이터를 저장 장치(100)로부터 수신하고 저장한다. 즉, 연판정(SD)이 수행될 때, 읽기 및 신뢰성 정보 메모리(310)는 경판정(HD)이 수행될 때 저장된 제 1 읽기 데이터(Y1) 및 추가적으로 저장된 데이터를 제 2 읽기 데이터(Y2)로 저장한다.
초기 우도값 사상기(320)는 읽기 및 신뢰성 정보 메모리(310)에 저장된 읽기 데이터에 초기 우도(Initial Log-Likelihood Ratio)를 사상(mapping)하도록 구성된다. 초기 우도값 사상기(320)는 경판정(HD) 시에 사상될 우도값들을 저장하는 경판정 우도값 레지스터(321), 그리고 연판정(SD) 시에 사상될 우도값들을 저장하는 연판정 우도값 레지스터(323)를 포함한다.
일 예로서, 경판정 시에, 초기 우도값 사상기(320)는 읽기 및 신뢰성 정보 메모리(310)로부터 제 1 읽기 데이터(Y1)를 수신한다. 초기 우도값 사상기(320)는 경판정 우도값 레지스터(321)에 저장된 우도값들, 그리고 제 1 읽기 데이터(Y1)의 각 비트의 값에 기반하여, 우도값들을 사상한다. 예를 들어, 초기 우도값 사상기(320)는 제 1 읽기 데이터(Y1) 중 특정 메모리 셀로부터 읽어진 비트의 값에 따라 해당 비트의 우도값을 사상한다. 사상 결과는 제 1 사상 데이터(Fn1)로 출력된다.
다른 예로서, 경판정 시에, 초기 우도값 사상기(320)는 읽기 및 신뢰성 정보 메모리(310)로부터 제 3 읽기 데이터(Y3)를 수신한다. 제 3 읽기 데이터(Y3)가 수신될 때, 초기 우도값 사상기(321)는 경판정 레지스터(321)를 참조하여 우도값들을 사상한다. 사상 결과는 제 3 사상 데이터(Fn3)이다.
연판정 시에, 초기 우도값 사상기(320)는 읽기 및 신뢰성 정보 메모리(310)로부터 제 2 읽기 데이터(Y2)를 수신한다. 초기 우도값 사상기(320)는 연판정 우도값 레지스터(323)에 저장된 우도값들, 그리고 제 2 읽기 데이터(Y2)의 각 원소의 비트들에 기반하여, 우도값들을 사상한다.
예시적으로, 제 1 읽기 데이터(Y1)의 하나의 비트는 저장 장치(100)의 하나의 메모리 셀에서 수행된 한 번의 읽기 결과이다. 제 2 읽기 데이터(Y2)의 각 원소의 비트들은, 하나의 메모리 셀에서 수행된 한번의 읽기 결과와 추가적인 읽기의 결과를 포함한다. 초기 우도값 사상기(320)는 제 2 읽기 데이터(Y2)의 각 원소의 비트들에 기반하여, 우도값들을 사상한다. 사상 결과는 제 2 사상 데이터(Fn2)로 출력된다.
판정부(330)는 경판정 시에 초기 우도값 사상기(320)로부터 제 1 사상 데이터(Fn1) 또는 제 3 사상 데이터(Fn3)를 수신하고, 연판정 시에 초기 우도값 사상기(320)로부터 제 2 사상 데이터(Fn2)를 수신한다. 판정부(330)는 수신된 제 1, 제 2 또는 제 3 사상 데이터(Fn1, Fn2, 또는 Fn3)를 디코딩한다. 제 1 사상 데이터(Fn1)의 디코딩, 제 2 사상 데이터(Fn2)의 디코딩, 그리고 제 3 사상 데이터(Fn3)의 디코딩은 동일한 방법 및 장치를 이용하여 수행된다.
예시적으로, 경판정 우도값 레지스터(321)는 제 1 읽기 데이터(Y1)에 대응하는 우도값들과 제 3 읽기 데이터(Y3)에 대응하는 우도값들을 별도로 저장한다. 다른 예로서, 경판정 우도값 레지스터(321)는 제 1 읽기 데이터(Y1)에 대응하는 우도값들을 저장하고, 연판정 우도값 레지스터(323)는 제 2 읽기 데이터(Y2)와 제 3 읽기 데이터(Y3)에 공통으로 대응하는 우도값들을 저장한다. 즉, 제 2 읽기 데이터(Y2)와 제 3 읽기 데이터(Y3)는 동일한 우도값들로 매핑될 수 있다.
판정부(330)는 갱신기(340) 및 잠정 디코더(350)를 포함한다. 갱신기(340)는 검사 노드들(check nodes) 및 변수 노드들(variable nodes)의 갱신을 수행한다. 갱신 결과는 잠정 디코더(350)로 전송된다.
잠정 디코더(350)는 갱신기(340)의 갱신 결과(예를 들어, 사후 확률(posteriori probability))에 따라, 잠정 디코딩을 수행한다. 잠정 디코더(350)는 디코딩된 데이터와 패리티 검사 행렬을 연산하고, 연산 결과에 따라 올바른 디코딩이 수행되었는지 판별한다. 올바른 디코딩이 수행되었으면, 즉 저장 장치(100)에서 읽어진 데이터의 에러가 정정되었으면, 잠정 디코더(350)는 디코딩된 데이터를 최종 데이터(X)로 출력한다. 올바른 디코딩이 수행되지 않았으면, 즉 저장 장치(100)에서 읽어진 데이터의 에러가 모두 정정되지 않았으면, 잠정 디코더(350)는 갱신기(340)를 호출한다. 잠정 디코더(350)의 호출에 응답하여, 갱신기(340)는 검사 노드들 및 변수 노드들의 갱신을 다시 수행한다.
갱신기(340)의 갱신과 잠정 디코더(350)의 디코딩은 반복적으로(interatively) 수행된다. 갱신기(340)에서 수행되는 검사 노드들의 갱신과 변수 노드들의 갱신, 그리고 잠정 디코더(350)에서 수행되는 디코딩은 하나의 디코딩 루프를 구성한다.
판정부(330)에서 제 1 사상 데이터(Fn1)에 기반하여 경판정(HD)이 수행되고, 패리티 검사가 실패할 때, 잠정 디코더(350)는 디코딩 결과를 우도값 신뢰성 갱신기(360)로 전송한다.
우도값 신뢰성 갱신기(360)는 디코딩 결과를 읽기 및 신뢰성 정보 메모리(310)에 저장된 제 1 읽기 데이터(Y1)와 비교한다. 제 1 읽기 데이터(Y1)의 특정 비트, 그리고 특정 비트와 동일한 위치의 디코딩 결과의 비트가 동일한 값을 가질 때, 우도값 갱신기(360)는 특정 비트의 신뢰성이 높음을 가리키는 신뢰성 비트를 읽기 및 신뢰성 정보 메모리(310)에 저장한다. 제 1 읽기 데이터(Y1)의 특정 비트, 그리고 특정 비트와 동일한 위치의 디코딩 결과의 비트가 서로 다른 값을 가질 때, 우도값 갱신기(360)는 특정 비트의 신뢰성이 낮음을 가리키는 신뢰성 비트를 신뢰성 데이터(RD)로 읽기 및 신뢰성 정보 메모리(310)에 저장한다.
즉, 우도값 신뢰성 갱신기(360)는 디코딩 루프가 한 번 수행될 때, 제 1 읽기 데이터(Y1)의 각 비트에 대해 하나의 신뢰성 비트를 생성한다. 디코딩 루프가 k 번 수행될 때, 제 1 읽기 데이터(Y1)의 각 비트에 대응하는 k 개의 신뢰성 비트들이 생성된다. 우도값 신뢰성 갱신기(360)는 미리 정해진 수의 디코딩 루프 동안 신뢰성 비트들을 생성하고, 이후에 신뢰성 비트의 생성을 중지한다.
경판정이 수행될 때, 제 1 읽기 데이터(Y1)가 읽기 및 신뢰성 정보 메모리(310)에 저장된다. 제 1 읽기 데이터(Y1)에 기반하여, 초기 우도값 사상기(320)는 우도값들을 사상한다. 예시적으로, 제 1 읽기 데이터(Y1)는 수학식 1이다.
Figure pat00001
초기 우도값 사상기(320)는 제 1 읽기 데이터(Y1)의 각 비트의 값에 따라, 크기는 갖고 부호가 다른 우도값들을 사상한다. 예를 들어, 초기 우도값 사상기(320)는 제 1 읽기 데이터(Y1)의 비트가 '1'일 때, 해당 비트에 '+M'의 우도값을 사상한다. 제 1 읽기 데이터(Y1)의 비트가 '0'일 때, 초기 우도값 사상기(320)는 해당 비트에 '-M'의 우도값을 사상한다. 즉, 제 1 읽기 데이터(Y1)에 우도값들(+M, -M)이 사상된 제 1 사상 데이터(Fn1)는 수학식 2이다.
Figure pat00002
제 1 사상 데이터(Fn1)는 판정부(330)에 전송된다. 판정부(330)는 제 1 사상 데이터(Fn1)에 따라 경판정을 수행한다.
연판정이 수행될 때, 제 2 읽기 데이터(Y2)가 읽기 및 신뢰성 정보 메모리(310)에 저장된다. 제 2 읽기 데이터(Y2)에 기반하여, 초기 우도값 사상기(320)는 우도값들을 사상한다. 제 2 읽기 데이터(Y2)는 제 1 읽기 데이터(Y1)의 비트들 및 그에 대응하는 추가 비트들을 포함한다. 예시적으로, 제 2 읽기 데이터(Y2)는 수학식 3이다.
Figure pat00003
제 2 읽기 데이터(Y2)의 각 원소들은 3 비트들을 포함한다. 각 원소의 첫 번째 비트는 제 1 읽기 데이터(Y1)의 각 비트이다. 각 원소의 나머지 비트들은 추가적인 읽기의 결과들이다. 제 2 읽기 데이터(Y2)의 각 원소가 3 비트들로 구성되면, 각 원소는 '000' 내지 '111' 의 8 개의 패턴들 중 하나를 가진다. 초기 우도값 사상기(320)는 제 2 읽기 데이터(Y2)의 각 원소의 값에 따라, 8 개의 우도 값들 중 하나를 사상한다. 제 2 읽기 데이터(Y2)의 각 원소의 비트들의 수는 한정되지 않는다.
연판정(SD)을 수행하기 위해, 추가적인 읽기를 통해 메모리 셀들의 문턱 전압들에 대한 정보가 추가적으로 획득된다. 추가 정보에 기반하여, 다양한 우도값들이 사상된다. 예를 들어, 하나의 메모리 셀이 첫 번째 읽기에서 '1'로 읽어졌지만, 추가적인 읽기를 통해 '0'에 가까운 문턱 전압을 갖는 '1'인 것으로 읽어진다. 이러한 메모리 셀은 낮은 우도값을 갖도록 사상된다. 하나의 메모리 셀이 첫 번째 읽기에서 '1'로 읽어지고, 추가적인 읽기를 통해서 '0'과 큰 차이가 있는 문턱 전압을 갖는 것으로 읽어진다. 이러한 메모리 셀은 높은 우도값을 갖도록 사상된다. 메모리 셀들의 문턱 전압들에 대한 추가 정보를 이용하므로, 연판정(SD)의 디코딩 정확도는 경판정(SD)의 디코딩 정확도보다 높다.
본 발명의 실시 예에 따르면, 제 1 읽기 데이터(Y1)와 신뢰성 비트들이 형성하는 제 3 읽기 데이터(Y3)를 이용하여 디코딩이 수행된다. 제 3 읽기 데이터(Y3)를 이용한 디코딩은, 제 1 읽기 데이터(Y1)를 이용할 때와 같은 오버헤드로, 제 2 읽기 데이터(Y2)를 이용할 때에 근접한 정확도를 갖는다.
도 4는 도 3의 에러 정정 코드 디코더(300)에서 사용되는 패리티 검사 행렬(H)의 예를 보여준다. 예시적으로, 패리티 검사 행렬(H)의 제 1 행에 "1011100"이 순차적으로 배치되고, 제 2 행에 "1101010"이 순차적으로 배치되고, 제 3 행에 "0111001"이 순차적으로 배치된다.
패리티 검사 행렬(H)의 원소들 중 제 1 행의 원소들, 제 2 행의 원소들, 그리고 제 3 행의 원소들은 각각 제 1 내지 제 3 검사 노드들을 형성한다. 패리티 검사 행렬(H)의 인자들(Factors) 중 제 1 내지 제 7 열의 원소들은 각각 제 1 내지 제 7 변수 노드들을 형성한다.
설명의 편의를 위하여, 제 1 내지 제 3 검사 노드들의 원소들은 패리티 검사 행렬(H)의 열의 위치에 따라 참조 기호 a 내지 g 로 표시된다. 또한, 제 1 내지 제 7 검사 노드들의 원소들은 패리티 검사 행렬(H)의 행의 위치에 따라 참조 기호 a 내지 c 로 표시된다.
도 4에 도시된 바와 같이, 패리티 검사 행렬(H)의 각 원소들은 검사 노드이며 또한 변수 노드이다.
에러 정정 코드 디코더(300)에서 사용되는 패리티 검사 행렬(H)은 도 4에 도시된 행렬로 한정되지 않는다. 예를 들어, 도 4의 패리티 검사 행렬(H)보다 더 낮은 밀도의 "1"을 갖는 패리티 검사 행렬이 에러 정정 코드 디코더(300)에서 사용된다. 에러 정정 코드 디코더(300)에서 사용되는 패리티 검사 행렬의 사이즈는 도 4에 도시된 바와 같이 3X7 인 것으로 한정되지 않는다.
도 5는 도 4의 패리티 검사 행렬(H)로부터 도출되는 팩터 그래프들(FG1~FG3)을 보여준다. 도 4 및 도 5를 참조하면, 제 1 팩터 그래프(FG1)는 제 1 내지 제 3 검사 노드들(C1a, C2a, C3a), 그리고 제 1 내지 제 7 변수 노드들(V1a, V2a, V3a, V4a, V5a, V6a, V7a) 사이의 팩터 그래프를 보여준다.
검사 노드들(C1a~C3a) 중 '1'을 갖는 검사 노드들(C1a, C2a)은 변수 노드들(V1a~V7a) 중 '1'을 갖는 변수 노드들(V1a, V3a~V5a)과 연결 관계를 가질 수 있고, 서로간에 메시지를 전송한다. 예를 들어, '1'을 갖는 변수 노드(V1a)는 '1'을 갖는 모든 검사 노드들(C1a, C2a)과 연결 관계를 가진다. '1'을 갖는 검사 노드(C1a)는 '1'을 갖는 모든 변수 노드들(V1a, V3a, V4a, V5a)과 연결 관계를 가진다.
검사 노드들(C1a~C3a) 중 '0'을 갖는 검사 노드(C3a)는 변수 노드들(V1a~V7a) 중 '0'을 갖는 변수 노드들(V2a, V6a, V7a)과 연결 관계를 가질 수 있지만, 서로 간에 메시지를 전송할 수 없다.
제 2 팩터 그래프(FG2)는 제 1 내지 3 검사 노드들(C1b~C3b)과 제 1 내지 7 변수 노드들(V1b~V7b) 사이의 팩터 그래프를 보여준다. 검사 노드들(C1b~C3b) 중 '1'을 갖는 검사 노드들(C2b, C3b)과 변수 노드들(V1b~V7b) 중 '1'을 갖는 변수 노드들(V1b, V2b, V4b, V6b)은 연결 관계를 가질 수 있고, 서로 간에 메시지를 전송한다. '0'을 갖는 검사 노드(C1b)와 '0'을 갖는 변수 노드들(V3b, V5b, V7b)은 연결 관계를 갖지만, 서로 간에 메시지를 전송할 수 없다.
제 3 팩터 그래프(FG3)는 제 1 내지 3 검사 노드들(C1c~C3c)과 제 1 내지 7 변수 노드들(V1c~V7c) 사이의 팩터 그래프를 보여준다. 검사 노드들(C1c~C3c) 중 '1'을 갖는 검사 노드들(C1c, C3c)은 변수 노드들(V1c~V7c) 중 '1'을 갖는 변수 노드들(V2c~V4c, V7c)과 연결 관계를 갖고, 서로 메시지를 전송한다. 검사 노드들(C1c~C3c) 중 '0'을 갖는 검사 노드(C2c)는 변수 노드들(V1c~V7c) 중 '0'을 갖는 변수 노드들(V1c, V5c, V6c)과 연결 관계를 갖되, 서로 메시지를 전송할 수 없다.
제 1 팩터 그래프(FG1)에서, 패리티 검사 행렬(H)의 제 a 열의 검사 노드들(C1a~C3a)과 제 a 행의 변수 노드들(V1a~V7a) 사이의 관계가 도시된다. 마찬가지로, 제 a 행의 변수 노드들(V1a~V7a)은 제 b 내지 제 g 열의 검사 노드들과 각각 팩터 그래프를 형성한다.
제 2 팩터 그래프(FG2)에서, 패리티 검사 행렬(H)의 제 b 열의 검사 노드들(C1b~C3b)과 제 b 행의 변수 노드들(V1b~V7b) 사이의 관계가 도시된다. 마찬가지로, 제 b 행의 변수 노드들(V1b~V7b)은 제 a, 제 c 내지 제 g 열의 검사 노드들과 각각 팩터 그래프를 형성한다.
제 3 팩터 그래프(FG3)에서, 패리티 검사 행렬(H)의 제 c 열의 검사 노드들(C1c~C3c)과 제 c 행의 변수 노드들(V1c~V1c) 사이의 관계가 도시된다. 마찬가지로, 제 c 행의 변수 노드들(V1c~V7c)은 제 a 및 b, 그리고 제 d 내지 제 g 열의 검사 노드들과 각각 팩터 그래프를 형성한다.
도 4 및 도 5에서, 패리티 검사 행렬(H)과 그에 기반한 검사 노드들, 변수 노드들, 그리고 팩터 그래프들이 설명되었다. 에러 정정 코드 디코더(300)는 검사 노드들과 변수 노드들 사이의 메시지 전송에 기반하여 디코딩을 수행한다.
도 6는 읽기 시에 에러 정정 코드 디코더(300)의 에러 정정 방법을 보여주는 순서도이다. 예시적으로, 도 2a의 S120 단계에 해당하는 경판정(HD) 방법이 도 6에 도시되어 있다. 도 3 및 도 6을 참조하면, S210 단계에서, 제 1 읽기 데이터(Y1)의 읽기 비트들을 이용하여 제 1 디코딩이 수행되어, 제 1 읽기 데이터(Y1)의 읽기 비트들에 각각 대응하는 신뢰성 비트들이 생성된다. 제 1 읽기 데이터(Y1)의 하나의 읽기 비트에 대해 둘 이상의 신뢰성 비트들이 생성된다. 제 1 디코딩은 저밀도 패리티 검사(LDPC) 디코딩이다. 제 1 디코딩은 정상 읽기 전압을 이용한 읽기 결과에 기반하여 수행되는 경판정(HD)의 디코딩이다. 신뢰성 비트들은 신뢰성 데이터(RD)를 형성한다. 제 1 읽기 데이터(Y1) 및 신뢰성 데이터(RD)는 제 3 읽기 데이터(Y3)를 형성한다.
S220 단계에서, 제 1 읽기 데이터(Y1)의 읽기 비트들 및 신뢰성 데이터(RD)의 신뢰성 비트들, 즉 제 3 읽기 데이터(Y3)를 이용하여 제 2 디코딩이 수행된다. 제 2 디코딩은 저밀도 패리티 검사(LDPC) 디코딩이다. 제 2 디코딩은 정상 읽기 전압을 이용한 읽기 결과와 이에 기반한 신뢰성 비트들에 기반하여 수행되는 경판정(HD)의 디코딩이다.
도 7은 디코딩을 수행하는 방법을 더 상세하게 보여주는 순서도이다. 도 3 및 도 7을 참조하면, S310 단계에서 초기화가 수행된다. 예를 들어, 변수 노드들로부터 검사 노드들로 전송되는 초기 V-C 메시지가 설정된다. 그리고, 제 1 읽기 데이터(Y1)에 초기 우도값이 매핑되어 제 1 사상 데이터(Fn1)가 생성될 수 있다.
S320 단계에서, 우도값의 재매핑 조건이 충족되는지 판별된다. 예를 들어, 우도값의 재매핑 조건은 제 1 읽기 데이터(Y1)의 하나의 비트에 해당하는 신뢰성 비트들의 수가 미리 설정된 값에 도달하였는지의 여부를 포함할 수 있다. 즉, 신뢰성 비트들의 수가 미리 설정된 값에 도달하면, S330 단계에서 제 1 읽기 데이터(Y1) 및 신뢰성 데이터(RD)에 우도값이 재매핑되어 제 3 사상 데이터(Fn3)가 생성될 수 있다.
우도값의 재매핑 조건은 신뢰성 비트들의 수가 미리 설정된 값에 도달한 후 디코딩이 수행된 횟수가 미리 설정된 값에 도달하였는지의 여부를 포함할 수 있다. 신뢰성 비트들의 수가 미리 설정된 값에 도달하고, 이후에 수행된 디코딩의 횟수가 미리 설정된 값에 도달하면,S330 단계에서 제 1 읽기 데이터(Y1) 및 신뢰성 데이터(RD)에 우도값이 재매핑되어 제 3 사상 데이터(Fn3)가 생성될 수 있다.
S340 단계에서, V-C 메시지에 기반하여 검사 노드들이 갱신된다. 갱신 결과는 검사 노드들로부터 변수 노드들로 전송될 C-V 메시지이다.
S350 단계에서, C-V 메시지에 기반하여, 변수 노드들이 갱신된다. 갱신 결과는 변수 노드들로부터 검사 노드들로 전송될 V-C 메시지이다.
S360 단계에서, 잠정 디코딩 및 패리티 검사가 수행된다. 예를 들어, S350 단계의 변수 노드들의 갱신 결과에 따라 잠정 디코딩이 수행된다. 디코딩된 데이터 및 패리티 검사 행렬(H)을 이용하여, 패리티 검사가 수행된다.
S370 단계에서, 패리티 검사가 성공하는지 판별된다. 패리티 검사가 성공하면, S380 단계에서 경판정(HD)이 성공한 것으로 판정되고, 에러 정정 디코딩은 종료된다.
패리티 검사가 실패하면, S391 단계에서, 디코딩 루프 횟수가 최대값에 도달하였는지 판별된다. 디코딩 루프 횟수가 최대값에 도달하면, S393 단계에서 경판정(HD)이 실패한 것으로 판정될 수 있다. 디코딩 루프 횟수가 최대값에 도달하지 않으면, S397 단계에서 신뢰성 비트들이 생성된다. 예를 들어, 제 1 읽기 데이터(Y1)의 하나의 비트에 대해 하나의 신뢰성 비트가 생성된다. 이후에, S320 단계가 다시 수행된다.
예시적으로, 신뢰성 비트들의 수의 최대값은 1 또는 그보다 큰 수이다. 신뢰성 비트들의 생성이 완료되면, 제 1 읽기 데이터(Y1)의 각 비트에 대해 최대값에 대응하는 수의 신뢰성 비트들이 생성된다.
신뢰성 비트들의 수가 최대값이고, S397 단계에서 새로운 신뢰성 비트가 생성될 때, 기존에 저장된 신뢰성 비트들 중 가장 오래된 값이 삭제될 수 있다. 즉, 신뢰성 비트들의 수가 최대값에 도달하면, 신뢰성 비트들은 FIFO (First-In First-Out)의 형태로 관리될 수 있다.
S310 단계의 초기화는 수학식 4에 기반하여 수행된다.
Figure pat00004
여기에서, Zmn 은 제 n 변수 노드들 중 m 번째 변수 노드로부터 전송되는 메시지를 가리킨다. 예를 들어, Z21 은 제 1 변수 노드들(V1a, V1b, V1c) 중 두 번째 변수 노드(V1b)로부터 전송되는 메시지를 가리킨다.
제 n 변수 노드가 전송하는 메시지는 제 1 사상 데이터(Fn1)의 n 번째 원소의 우도값이다. 초기화가 수행되면, 변수 노드들로부터 검사 노드들로 전송되는 초기 V-C 메시지가 생성된다. 예시적으로, 연판정(SD)이 수행될 때, 초기 V-C 메시지는 제 2 사상 데이터(Fn2)이다.
도 8은 도 7의 초기화 단계(S310)를 설명하기 위한 팩터 그래프들을 보여준다. 도 8을 참조하면, 제 1 팩터 그래프(FG1)의 제 1 변수 노드(V1a)는 제 1 및 제 2 검사 노드들(C1a, C2a)에 메시지를 전송한다. 수학식 4에 따라, 제 1 변수 노드(V1a)는 제 1 사상 데이터(Fn1)의 첫 번째 원소인 우도값 '-M'을 초기 메시지로 전송한다.
제 2 변수 노드(V2a)는 검사 노드들(C1a~C3a)에 메시지를 전송하지 않는다.
제 3 변수 노드(V3a)는 제 1 및 제 2 검사 노드들(C1a, C2a)에 메시지를 전송한다. 수학식 4에 따라, 제 3 변수 노드(V3a)는 제 1 사상 데이터(Fn1)의 3 번째 원소인 우도값 'M'을 초기 메시지로 전송한다.
마찬가지로, 제 4 변수 노드(V4a)는 제 1 및 제 2 검사 노드들(C1a, C2a)에 제 1 사상 데이터(Fn1)의 네 번째 원소인 우도값 'M'을 초기 메시지로 전송하고, 제 5 변수 노드(V5a)는 제 1 및 제 2 검사 노드들(C1a, C2a)에 제 1 사상 데이터(Fn1)의 다섯 번째 원소인 우도값 'M'을 초기 메시지로 전송한다. 제 5 및 제 6 변수 노드들(V6a, V7a)은 메시지를 전송하지 않는다.
제 2 팩터 그래프(FG2)에서, 제 1 변수 노드(V1b)는 제 2 및 제 3 검사 노드들(C2b, C3b)에 메시지를 전송한다. 수학식 4에 따라, 제 1 변수 노드(V1b)는 제 1 사상 데이터(Fn1)의 첫 번째 원소인 우도값 '-M'을 초기 메시지로 전송한다. 마찬가지로, 제 2 변수 노드(V2b)는 제 2 및 제 3 검사 노드들(C2b, C3b)에 제 1 사상 데이터(Fn1)의 두 번째 원소인 우도값 'M'을 초기 메시지로 전송한다. 제 4 변수 노드(V4b)는 제 2 및 제 3 검사 노드들(C2b, C3b)에 제 1 사상 데이터(Fn1)의 네 번째 원소인 우도값 '-M'을 초기 메시지로 전송한다. 제 6 변수 노드(V6b)는 제 2 및 제 3 검사 노드들(C2b, C3b)에 제 1 사상 데이터(Fn1)의 여섯 번째 원소인 우도값 'M'을 초기 메시지로 전송한다.
제 3 팩터 그래프(FG3)에서, 제 2 변수 노드(V2c)는 제 1 및 제 3 검사 노드들(C1c, C3c)에 제 1 사상 데이터(Fn1)의 두 번째 원소인 우도값 'M'을 초기 메시지로 전송한다. 제 3 변수 노드(V3c)는 제 1 및 제 3 검사 노드들(C1c, C3c)에 제 1 사상 데이터(Fn1)의 세 번째 원소인 우도값 'M'을 초기 메시지로 전송한다. 제 4 변수 노드(V4c)는 제 1 및 제 3 검사 노드들(C1c, C3c)에 제 1 사상 데이터(Fn1)의 네 번째 원소인 우도값 '-M'을 초기 메시지로 전송한다. 제 7 변수 노드(V7c)는 제 1 및 제 3 검사 노드들(C1c, C3c)에 제 1 사상 데이터(Fn1)의 일곱 번째 원소인 우도값 'M'을 초기 메시지로 전송한다.
변수 노드들은 제 1 사상 데이터(Fn1)의 우도값들을 초기 메시지로 검사 노드들에 전송한다. 변수 노드들 각각은 자신의 값을 메시지로 전송한다. 즉, 초기화 시에, 변수 노드들은 제 1 사상 데이터(Fn1)의 우도값들로 갱신되는 것으로 이해된다.
예시적으로, 도 9에 도시된 바와 같이, 패리티 검사 행렬(H)의 제 1 행의 변수 노드들(V1a~V7a) 중 '1'의 값을 갖는 노드들은 제 1 사상 데이터(Fn1)의 동일한 위치의 우도값들로 갱신된다. 제 2 행의 변수 노드들(V1b~V7b) 중 '1'의 값을 갖는 노드들은 제 1 사상 데이터(Fn1)의 동일한 위치의 우도값들로 갱신된다. 제 3 행의 변수 노드들(V1c~V7c) 중 '1'의 값을 갖는 노드들은 제 1 사상 데이터(Fn1)의 동일한 위치의 우도값들로 갱신된다.
초기화(도 7의 S310 단계)가 수행된 후에, 검사 노드들의 갱신(S330 단계)이 수행된다. 검사 노드들이 갱신되는 과정이 도 10에 도시되어 있다. 예시적으로, 우도값 재매핑 조건이 충족되지 않은 때의 검사 노드들의 갱신이 도 10에 도시된다.
도 10을 참조하면, 검사 노드들은 변수 노드들로부터 V-C 메시지를 수신하고, 수신된 메시지에 따라 갱신된다. 검사 노드들의 갱신된 값들은 검사 노드들로부터 전송되는 C-V 메시지들이다. 즉, 검사 노드들의 갱신은 검사 노드들의 값들의 갱신 및 C-V 메시지들의 생성을 포함한다. 검사 노드들의 갱신은 수학식 5에 따라 수행된다.
Figure pat00005
Figure pat00006
제 m 검사 노드들 중 n 번째 검사 노드로부터 전송되는 C-V 메시지(Lmn)는 매개 변수(Tmn)에 기반한 수식으로 정의된다. 매개 변수(Tmn)는 V-C 메시지(Zmn)에 기반한 수식으로 정의된다.
검사 노드들 각각은 자신의 값을 C-V 메시지로서 전송한다. 즉, 검사 노드들의 값들은 C-V 메시지들로 갱신된다. 갱신된 검사 노드는 자신의 값을 C-V 메시지로서 변수 노드들로 전송한다.
함수 N(m)은 m이 선택될 때, 즉 갱신될 검사 노드(C1, C2, 또는 C3)가 선택될 때, 선택된 검사 노드(C1, C2, 또는 C3) 내의 노드들, 즉 변수 노드들을 가리킨다.
계산식 'N(m)\n' 은 선택된 검사 노드(C1, C2 또는 C3)에 대응하는 변수 노드들 중 n 번째 노드를 제외한 노드들을 가리킨다. 예를 들어, 제 2 검사 노드들(C2a~C2g) 중 두 번째 검사 노드(C2b)의 메시지가 계산될 때, 'n'의 값은 2이다. 이때, 계산식 'N(m)\n'은 선택된 검사 노드(C2)에 대응하는 변수 노드들(V1b~V1b)(제 b 행의 변수 노드들) 중 변수 노드(C2b)(두 번째 변수 노드)를 제외한 나머지 변수 노드들을 가리킨다. 검사 노드(Cmn)의 메시지(Tmn)는 제 m 검사 노드(Cm)에 대응하는 변수 노드들 중 n 번째 변수 노드를 제외한 변수 노드들의 값들에 따라 계산된다.
갱신될 검사 노드가 선택되면, 즉 변수 m이 선택되면, 선택된 검사 노드에 대응하는 변수 노드들(예를 들어, 선택된 검사 노드를 포함하는 행의 변수 노드들) 중 갱신될 검사 노드와 동일한 위치의 변수 노드를 제외한 나머지 변수 노드들의 값에 따라, 검사 노드의 메시지(또는 값)가 갱신된다.
수학식 5의 수식은 복잡한 지수(exponential) 연산들을 포함한다. 따라서, 수학식 5에 따른 연산을 수행하는 하드웨어 또는 소프트웨어는 연산 시간 및 전력 소모와 같은 오버헤드를 가진다.
복잡한 지수 연산들을 제거하기 위하여, 수학식 6의 근사식이 사용된다.
Figure pat00007
수학식 6을 이용하여, 수학식 5의 복잡한 지수(exponential) 연산들을 제거한 수학식 7이 검사 노드들의 업데이트를 위해 사용된다.
Figure pat00008
Figure pat00009
여기에서, α는 정상화 인자(normalized factor)이다. 정상화 인자(α)는 수학식 6의 근사식을 이용함에 따른 오차를 줄이기 위해 사용된다.
제 m 검사 노드들(Cma~Cmg) 중 n 번째 검사 노드(Cmn)의 메시지(Lmn)의 크기(magnitude)는 검사 노드(Cmn)와 동일 행의 변수 노드들(Vm1~Vm7) 중 검사 노드(Cmn)와 동일한 위치의 변수 노드(Vmn)를 제외한 나머지 검사 노드들의 최소값에 정상화 인자(α)가 곱해진 값이다.
제 m 검사 노드들(Cma~Cmg) 중 n 번째 검사 노드(Cmn)의 메시지(Lmn)의 부호는 제 1 및 제 2 매개 변수들(σmn, σn)에 의해 결정된다. 검사 노드에 수신된 V-C 메시지(Zmn)가 양의 값을 가질 때, 제 1 매개 변수(σmn)는 1의 값을 갖는다. 검사 노드에 수신된 V-C 메시지(Zmn)가 양의 값을 갖지 않을 때, 제 1 매개 변수(σmn)는 0의 값을 갖는다.
제 2 매개 변수(σn)는 제 1 매개 변수(σmn)에 따라 결정되는 값을 갖는다. 제 2 매개 변수(σn)의 값은 검사 노드에 수신된 V-C 메시지들에 따라 연산되는 제 1 매개 변수들(σmn)의 총 합에 모듈로(modulo)-2 연산을 수행한 결과이다. 즉, 제 2 매개 변수(σn)의 값은 검사 노드에 수신되는 V-C 메시지들 중 양의 값을 갖는 메시지들의 수에 모듈로-2 연산을 수행한 결과이다.
검사 노드에 수신된 V-C 메시지들 중 양의 값을 갖는 메시지들의 수가 홀수일 때, 제 2 매개 변수(σn)는 1의 값을 갖는다. 검사 노드에 수신된 V-C 메시지들 중 양의 값을 갖는 메시지들의 수가 짝수일 때, 제 2 매개 변수(σn)는 0의 값을 갖는다. 즉, 수신된 V-C 메시지들 중 양의 값을 갖는 메시지들의 수가 홀 수일 때, 제 m 검사 노드들(Cma~Cmg) 중 n 번째 검사 노드(Cmn)의 메시지(Lmn)의 부호는 음으로 설정된다. 수신된 V-C 메시지들 중 양의 값을 갖는 메시지들의 수가 짝 수일 때, 제 m 검사 노드들(Cma~Cmg) 중 n 번째 검사 노드(Cmn)의 메시지(Lmn)의 부호는 양으로 설정된다.
수학식 5 및 7을 비교하면, 수학식 7의 연산이 수학식 5의 연산보다 간단하다. 즉, 검사 노드들의 갱신 시의 오버헤드는 수학식 7에 따른 연산 방법이 더 적다.
설명의 편의를 위하여, 패리티 검사 행렬(H)과 같은 행렬의 형태를 취하고, 제 1 사상 데이터(Fn1)에 의해 초기화되고, 그리고 이후 검사 노드들의 갱신과 변수 노드들의 갱신을 직관적으로 보여주는 공간을 연산 공간(OS)이라 부르기로 한다. 이하에서, 연산 공간(OS)을 참조하여 검사 노드들의 갱신 및 변수 노드들의 갱신이 설명된다.
도 11 및 도 12는 검사 노드들의 갱신 방법에 따른 연산 공간(OS)을 보여준다.
도 11은 첫 번째 열의 검사 노드들(C1a, C2a, C3a)의 갱신 방법을 보여준다. 수학식 5 또는 7에 기재된 바와 같이, 갱신될 검사 노드가 선택되면, 즉 변수 m이 선택되면, 선택된 검사 노드 내의 변수 노드들 중 갱신될 검사 노드와 동일한 위치의 변수 노드를 제외한 나머지 변수 노드들의 값에 따라, 검사 노드의 메시지(또는 값)가 갱신된다.
제 1 검사 노드(C1)에 대응하는 변수 노드들(V1a~V7a) 중 0의 값을 갖는 변수 노드들은 메시지를 전송할 수 없다. 따라서, 검사 노드(C1a)의 갱신은 메시지를 전송하는 변수 노드들(V3a, V4a, V5a)로부터의 메시지에 따라 수행된다. 검사 노드(C1a)의 갱신은 수학식 5 또는 수학식 7에 따라 수행된다. 수학식 5 또는 수학식 7의 연산 결과가 검사 노드(C1a)의 새로운 값(또는 메시지)으로 갱신된다.
마찬가지로, 검사 노드(C2a)는 변수 노드들(V2b, V4b, V6b)로부터 전송되는 메시지들에 따라 갱신된다.
검사 노드(C3a)는 0의 값을 가지므로 메시지를 수신할 수 없다. 따라서, 검사 노드(C3a)는 갱신되지 않는다.
도 12는 두 번째 열의 검사 노드들(C1b, C2b, C3b)의 갱신 방법을 보여준다. 수학식 5 또는 7에 기재된 바와 같이, 갱신될 검사 노드가 선택되면, 즉 변수 m이 선택되면, 선택된 검사 노드 내의 변수 노드들(Vm1~Vm7) 중 갱신될 검사 노드와 동일한 위치의 변수 노드를 제외한 나머지 변수 노드들의 값에 따라, 검사 노드의 메시지(또는 값)가 갱신된다.
제 2 검사 노드(C2)의 변수 노드들(V1b~V7b) 중 0의 값을 갖는 변수 노드들은 메시지를 전송할 수 없다. 따라서, 검사 노드(C2b)의 갱신은 메시지를 전송하는 변수 노드들(V1b, V4b, V6b)로부터의 메시지에 따라 수행된다. 검사 노드(C2b)의 갱신은 수학식 5 또는 수학식 7에 따라 수행된다. 수학식 5 또는 수학식 7의 연산 결과가 검사 노드(C2b)의 새로운 값(또는 메시지)으로 갱신된다.
마찬가지로, 검사 노드(C3b)는 변수 노드들(V3c, V4c, V7c)로부터 전송되는 메시지들에 따라 갱신된다.
검사 노드(C1b)는 0의 값을 가지므로 메시지를 수신할 수 없다. 따라서, 검사 노드(C1b)는 갱신되지 않는다.
동일한 방법으로, 제 3 열 내지 제 7 열의 검사 노드들의 갱신이 수행된다.
도 11 및 도 12를 참조하여 설명된 바와 같이, 특정한 검사 노드가 갱신될 때, 특정한 검사 노드와 동일한 행의 변수 노드들 중 특정한 검사 노드와 동일한 위치의 변수 노드를 제외한 나머지 변수 노드들의 메시지들에 따라, 수학식 5 또는 수학식 7의 연산이 수행된다. 연산의 결과는 특정한 검사 노드의 값(또는 메시지)으로 갱신된다.
검사 노드들의 갱신(도 7의 S340 단계)가 수행된 후에, 변수 노드들의 갱신(S350 단계)이 수행된다. 변수 노드들이 갱신되는 과정이 도 13에 도시되어 있다. 예시적으로, 우도값 재매핑 조건이 충족되지 않은 때의 변수 노드들의 갱신이 도 13에 도시된다.
도 13을 참조하면, 변수 노드들은 검사 노드들로부터 C-V 메시지를 수신하고, 수신된 메시지에 따라 갱신된다. 변수 노드들의 갱신된 값들은 변수 노드들로부터 전송되는 V-C 메시지들이다. 즉, 변수 노드들의 갱신은 변수 노드들의 값들의 갱신 및 V-C 메시지들의 생성을 포함한다. 변수 노드들의 갱신은 수학식 8에 따라 수행된다.
Figure pat00010
매개 변수 Zn은 사후 확률(Posteriori Probability)을 가리킨다. 사후 확률(Zn)은 해당 위치의 읽기 데이터(예를 들어, 제 1 읽기 데이터(Y1))가 1일 확률 또는 0일 확률을 가리킨다. 사후 확률(Zn)은 특정 변수 노드에 수신된 모든 C-V 메시지들과 특정 변수 노드에 대응하는 제 1 사상 데이터(Fn1)의 합이다.
특정 변수 노드로부터 전송되는 V-C 메시지(Zmn)는 사후 확률(Zn), 그리고 특정 변수 노드와 동일 위치의 검사 노드로부터 전송된 C-V 메시지(Lmn)의 차이이다.
도 14 및 도 15는 변수 노드들의 갱신 방법에 따른 연산 공간(OS)을 보여준다. 수학식 8에 기재된 바와 같이, 갱신될 검사 노드가 선택되면, 즉 변수 n이 선택되면, 선택된 변수 노드 내의 검사 노드들(C1n~C3n) 중 갱신될 변수 노드와 동일한 위치의 검사 노드를 제외한 나머지 검사 노드들의 메시지(또는 값), 그리고 제 1 사상 데이터(Fn1) 중 대응하는 위치의 값에 따라, 변수 노드의 메시지(또는 값)가 갱신된다.
도 14에서, 첫 번째 행의 변수 노드들(V1a~V7a)의 갱신 방법이 도시된다. 제 1 변수 노드(V1a)에 대응하는 검사 노드들(C1a~C3a) 중 0의 값을 갖는 검사 노드들은 메시지를 전송할 수 없다. 따라서, 변수 노드(V1a)의 갱신은 메시지를 전송하는 검사 노드(C2a) 및 제 1 사상 데이터(Fn1)의 값(-M)에 따라 수행된다. 변수 노드(V1a)의 갱신은 수학식 8에 따라 수행된다. 수학식 8의 연산 결과가 변수 노드(V1a)의 새로운 값(또는 메시지)으로 갱신된다.
마찬가지로, 변수 노드(V3a)는 검사 노드(C3c)로부터 전송되는 메시지와 제 1 사상 데이터(Fn1)의 값(M)에 따라 갱신된다. 변수 노드(Ca4)는 검사 노드들(C2d, C3d)로부터 전송되는 메시지들과 제 1 사상 데이터(Fn1)의 값(-M)에 따라 갱신된다. 변수 노드(V5a)는 제 1 사상 데이터(Fn1)의 값(M)에 따라 갱신된다.
변수 노드들(V2a, V6a, V7a)은 0의 값을 가지므로 메시지를 수신할 수 없다. 따라서, 변수 노드들(V2a, V6a, V7a)은 갱신되지 않는다.
도 15에서, 두 번째 행의 변수 노드들(V1b~V7b)의 갱신 방법이 도시된다. 제 1 변수 노드(V1b)에 대응하는 검사 노드들(C1a~C3a) 중 0의 값을 갖는 검사 노드들은 메시지를 전송할 수 없다. 따라서, 변수 노드(V1a)의 갱신은 메시지를 전송하는 검사 노드(C2a) 및 제 1 사상 데이터(Fn1)의 값(-M)에 따라 수행된다. 변수 노드(V1a)의 갱신은 수학식 8에 따라 수행된다. 수학식 8의 연산 결과가 변수 노드(V1a)의 새로운 값(또는 메시지)으로 갱신된다.
마찬가지로, 변수 노드(V2b)는 검사 노드(C3b)로부터 전송되는 메시지와 제 1 사상 데이터(Fn1)의 값(M)에 따라 갱신된다. 변수 노드(Ca4)는 검사 노드들(C1d, C3d)로부터 전송되는 메시지들과 제 1 사상 데이터(Fn1)의 값(-M)에 따라 갱신된다. 변수 노드(V6b)는 제 1 사상 데이터(Fn1)의 값(M)에 따라 갱신된다.
동일한 방법으로, 제 3 행의 변수 노드들의 갱신이 수행된다.
도 14 및 도 15를 참조하여 설명된 바와 같이, 특정한 변수 노드가 갱신될 때, 특정한 변수 노드와 동일한 열의 검사 노드들 중 특정한 변수 노드와 동일한 위치의 검사 노드를 제외한 나머지 변수 노드들의 메시지들 및 제 1 사상 데이터(Fn1)의 값의 합이 특정한 변수 노드의 값(또는 메시지)으로 갱신된다.
도 7에 도시된 바와 같이, 변수 노드들의 갱신(S350 단계)이 수행된 후에 잠정 디코딩 및 패리티 검사(S360 단계)가 수행된다. 잠정 디코딩은 사후 확률(Zn)에 기반하여 수학식 9에 따라 수행된다. 잠정 디코딩의 결과는 디코딩된 데이터(
Figure pat00011
)이다.
Figure pat00012
특정 위치의 사후 확률(Zn)이 양의 값일 때, 해당 위치의 디코딩된 데이터(
Figure pat00013
)는 '1'로 판별된다. 특정 위치의 사후 확률(Zn)이 음의 값일 때, 해당 위치의 디코딩된 데이터(
Figure pat00014
)는 '0'으로 판별된다.
이후에, 잠정 디코딩의 결과에 따라 패리티 검사가 수행된다. 패리티 검사는 디코딩된 데이터(
Figure pat00015
) 및 패리티 검사 행렬에 기반하여 수학식 10에 따라 수행된다.
Figure pat00016
디코딩된 데이터(
Figure pat00017
) 및 패리티 검사 행렬이 수학식 10을 만족할 때, 디코딩된 데이터(
Figure pat00018
)는 올바르게 디코딩되고, 패리티 검사는 성공한 것으로 판별된다. 즉, 경판정(HD)이 성공한 것으로 판별(S260 단계)된다.
디코딩된 데이터(
Figure pat00019
) 및 패리티 검사 행렬이 수학식 10을 만족하지 않을 때, 디코딩된 데이터(
Figure pat00020
)는 올바르게 디코딩되지 않고, 패리티 검사는 실패한 것으로 판별된다. 이후에, 경판정(HD)의 다음 루프가 수행되거나, 연판정(SD)이 수행된다.
도 16은 읽기 및 신뢰성 정보 메모리(310)의 예를 보여주는 도면이다. 도 3 및 도 16을 참조하면, 읽기 및 신뢰성 정보 메모리(310)는 제 1 읽기 데이터(Y1)를 저장하는 제 1 저장 영역(M1), 신뢰성 데이터(RD)를 저장하는 제 2 저장 영역(M2)과 제 3 저장 영역(M3)을 포함한다.
신뢰성 데이터(RD)의 각 비트들은 동일한 위치의 제 1 읽기 데이터(Y1)의 비트의 신뢰성을 가리킨다.
읽기 및 신뢰성 정보 메모리(310)는 신뢰성 데이터(RD)를 FIFO (First-In First-Out)의 방법에 따라 관리한다. 예를 들어, 읽기 및 신뢰성 정보 메모리(310)가 최대값에 해당하는 신뢰성 데이터(RD)를 저장하고, 새로운 신뢰성 데이터(RD)가 생성될 때, 읽기 및 신뢰성 정보 메모리(310)는 가장 오래된 신뢰성 데이터(RD)를 삭제하고, 새로운 신뢰성 데이터(RD)를 저장할 수 있다.
예시적으로, 제 2 및 제 3 저장 영역들(M2, M3)은 연판정(SD)이 수행될 때 추가로 읽어진 데이터를 저장하는 저장 영역들과 동일할 수 있다. 연판정(SD) 시에 추가 데이터를 저장하는 저장 영역들이 신뢰성 데이터(RD)을 저장하기 위해 사용되면, 신뢰성 데이터(RD)를 저장하기 위한 별도의 저장 영역이 요구되지 않는다.
도 17은 신뢰성 비트들을 생성하는 방법(도 7의 S397 단계)을 더 상세하게 보여주는 순서도이다. 도 17을 참조하면, S410 단계에서 제 1 읽기 데이터(Y1)의 읽기 비트들과 디코딩된 데이터(
Figure pat00021
)의 디코딩된 비트들이 비교된다. 동일한 위치의 읽기 비트와 디코딩된 비트가 비교된다.
S420 단계에서, 대응하는 위치에서, 디코딩된 비트들과 다른 값들을 갖는 읽기 비트들이 검출된다. 예를 들어, 제 1 읽기 데이터(Y1)의 k 번째 비트의 값이 '1'이고, 디코딩된 데이터(
Figure pat00022
)의 k 번째 비트의 값이 '0'이면, k 번째 비트가 검출된다.
S430 단계에서, 검출된 읽기 비트들에 따라 약한(weak) 신뢰성 비트들이 생성된다. 예를 들어, '0'이 읽기 비트의 신뢰성이 낮음을 가리키는 약한(weak) 신뢰성 비트일 때, S520 단계에서 검출된 읽기 비트들에 대응하는 신뢰성 비트들은 '0'이다.
S440 단계에서, 나머지 읽기 비트들에 따라 강한(strong) 신뢰성 비트들이 생성된다. 예를 들어, '1'이 읽기 비트의 신뢰성이 높음을 가리키는 강한(strong) 신뢰성 비트일 때, S520 단계에서 검출되지 않은 읽기 비트들에 대응하는 신뢰성 비트들은 '1'이다. S430 단계와 S440 단계는 동시에 수행될 수 있다.
도 18 및 도 19는 신뢰성 비트들이 생성되는 과정을 보여준다. 도 18에서, 첫 번째 디코딩 루프가 수행된 경우가 도시된다. 제 1 읽기 데이터(Y1)와 디코딩된 데이터(
Figure pat00023
)의 비교를 통해 첫 번째 신뢰성 비트들(RD_1)이 생성된다. 신뢰성 비트들은 제 2 저장 영역(M2)에 저장된다.
제 1 읽기 데이터(Y1)의 첫 번째, 다섯 번째, 그리고 여섯 번째 비트들은 디코딩된 데이터(
Figure pat00024
)의 첫 번째, 다섯 번째, 그리고 여섯 번째 비트들과 각각 다른 값을 갖는다. 따라서, 첫 번째 신뢰성 비트들(RD_1)의 첫 번째, 다섯 번째, 그리고 여섯 번째 비트들은 약한(weak) 신뢰성 비트들(예를 들어, '0')로 생성된다.
제 1 읽기 데이터(Y1)의 두 번째 내지 네 번째 비트들, 그리고 일곱 번째 비트는 디코딩된 데이터(
Figure pat00025
)의 두 번째 내지 네 번째 비트들, 그리고 일곱 번째 비트와 각각 같은 값을 갖는다. 따라서, 첫 번째 신뢰성 비트들(RD_1)의 두 번째 내지 네 번째 신뢰성 비트들, 그리고 일곱 번째 신뢰성 비트는 강한(Strong) 신뢰성 비트들(예를 들어, '1')로 생성된다.
도 19에서, 두 번째 디코딩 루프가 수행된 경우가 도시된다. 첫 번째 디코딩 루프에서 생성된 신뢰성 비트들은 제 2 저장 영역(M2)으로부터 제 3 저장 영역(M3)으로 이동된다. 두 번째 디코딩 루프에서 생성되는 신뢰성 비트들은 제 2 저장 영역(M2)에 저장된다.
제 1 읽기 데이터(Y1)의 세 번째, 여섯 번째, 그리고 일곱 번째 비트들은 디코딩된 데이터(
Figure pat00026
)의 세 번째, 여섯 번째, 그리고 일곱 번째 비트들과 각각 다른 값들을 가진다. 따라서, 두 번째 신뢰성 비트들(RD_2)의 세 번째, 여섯 번째, 그리고 일곱 번째 신뢰성 비트들은 약한(weak) 신뢰성 비트들로 생성된다.
제 1 읽기 데이터(Y1)의 첫 번째, 두 번째, 네 번째, 그리고 다섯 번째 비트들은 디코딩된 데이터(
Figure pat00027
)의 첫 번째, 두 번째, 네 번째, 그리고 다섯 번째 비트들과 각각 같은 값을 가진다. 따라서, 두 번째 신뢰성 비트들(RD_2)의 첫 번째, 두 번째, 네 번째, 그리고 다섯 번째 신뢰성 비트들은 강한(strong) 신뢰성 비트들로 생성된다.
강한(strong) 신뢰성 비트가 '1'이고, 약한(weak) 신뢰성 비트가 '0'일 때, 제 3 읽기 데이터(Y3)는 수학식 11의 형태로 정리된다.
Figure pat00028
제 3 읽기 데이터(Y3)의 각 원소의 첫 번째 비트는 제 1 읽기 데이터(Y1)의 각 비트이다. 제 3 읽기 데이터(Y3)의 각 원소의 두 번째 비트는 가장 최근에 수행된 디코딩 루프에서 생성된 신뢰성 비트이다. 제 3 읽기 데이터(Y3)의 각 원소의 세 번째 비트는 가장 최근의 디코딩 루프 바로 이전에 수행된 디코딩 루프에서 생성된 신뢰성 비트들이다.
연판정(SD) 시에 사용되는 제 2 읽기 데이터(Y2)와 유사하게, 제 3 읽기 데이터(Y3)는 제 1 읽기 데이터(Y1)의 각 비트의 신뢰성을 가리키는 추가 정보를 포함한다. 제 3 읽기 데이터(Y3)는 2^3=8 개의 패턴을 가지므로, 보다 많은 우도값들로 사상될 수 있고, 따라서 경판정(HD) 디코딩의 정확성이 향상된다.
도 20은 경판정 우도값 레지스터(321)에 저장된 사상 정보의 예를 보여준다. 제 1 읽기 데이터(Y1)가 수신될 때, 경판정 우도값 레지스터(321)는 상술된 바와 같이 두 개의 우도값들(+M, -M)을 사상 정보로 출력한다. 제 3 읽기 데이터(Y3)가 수신될 때, 경판정 우도값 레지스터(321)는 도 20에 도시된 바와 같은 사상 정보를 출력한다.
예시적으로, 신뢰성이 낮은 원소, 즉 약한(weak) 신뢰성 비트들을 포함하는 원소들은 더 낮은 우도값을 갖도록 사상된다. 신뢰성이 높은 원소, 즉 강한(strong) 신뢰성 비트들을 포함하는 원소들은 더 높은 우도값을 갖도록 사상된다.
예시적으로, 가장 최근에 생성된 신뢰성 데이터(RD)의 영향이 증대되도록, 우도값들(M1~M8)이 설정된다.
수학식 11의 제 3 읽기 데이터(Y3)에 도 20의 사상 정보가 사상되면, 제 3 사상 데이터(Fn3)는 수학식 12이다.
Figure pat00029
각 우도값은 양의 값 또는 음의 값을 가진다.
도 21은 검사 노드들이 갱신(S340 단계)되는 방법을 보여준다. 예시적으로, 우도값 재매핑 조건이 충족된 때의 검사 노드들의 갱신 방법이 도 21에 도시된다. 도 21을 참조하면, 검사 노드들은 동일 행의 변수 노드들 중 자신과 동일한 위치가 아닌 변수 노드들로부터 메시지들을 수신하고, 수신된 메시지들에 따라 갱신된다. 우도값이 재매핑된 제 3 사상 데이터(Fn3)가 사용되지 않으므로, 검사 노드들의 갱신은 도 10 내지 도 12를 참조하여 설명된 방법과 동일한 방법으로 수행된다.
도 22는 변수 노드들이 갱신(S350 단계)되는 방법을 보여준다. 변수 노드들은 동일 열의 검사 노드들 중 자신과 동일한 위치가 아닌 변수 노드들, 그리고 자신과 동일한 위치의 제 3 사상 데이터(Fn3)의 원소로부터 메시지들을 수신하고, 수신된 메시지들에 따라 갱신된다. 다양한 우도값들(M1~M8)이 재매핑된 제 3 사상 데이터(Fn3)가 사용되는 것을 제외하면, 검사 노드들의 갱신은 도 13 내지 도 15를 참조하여 설명된 방법과 동일한 방법으로 수행된다.
상술된 바와 같이, 본 발명의 실시 예에 따른 에러 정정 디코더(300)는 저장 장치(100)에서 한 번 읽어진 제 1 읽기 데이터(Y1)를 디코딩하여 신뢰성 데이터(RD)을 생성한다. 그리고, 제 1 읽기 결과(Y1) 및 신뢰성 데이터(RD)가 조합된 제 3 읽기 데이터(Y3)에 기반하여 우도값들이 재매핑된다. 이때, 낮은 신뢰성을 갖는 원소들은 낮은 우도값을 갖게 사상되고, 높은 신뢰성을 갖는 원소들은 높은 우도값을 갖게 사상된다. 저밀도 패리티 검사(LDPC) 디코딩이 수행될 때, 낮은 우도값을 갖는 원소는 다른 원소들에 미치는 영향이 적다. 높은 우도값을 갖는 원소는 다른 원소들에 미치는 영향이 크다.
즉, 본 발명에 따르면, 신뢰성이 적은 원소의 영향은 감소하고, 신뢰성이 높은 원소의 영향은 증가한다. 따라서, 저밀도 패리티 검사(LDPC) 디코딩, 더 상세하게는 경판정(HD) 디코딩의 정확성이 향상된다.
상술된 실시 예들에서, 제 1 읽기 데이터(Y1)의 하나의 비트에 2 비트의 신뢰성 비트가 제공되는 것으로 설명되었다. 그러나, 제 1 읽기 데이터(Y1)의 하나의 비트에 제공되는 신뢰성 비트의 수는 한정되지 않는다.
상술된 실시 예들에서, 에러 정정 코드 디코더(300)는 저장 시스템(1000)의 구성 요소인 것으로 설명되었다. 그러나, 에러 정정 코드 디코더(300)는 저장 시스템(1000)에서 사용되는 것으로 한정되지 않는다. 에러 정정 코드 디코더(300)는 데이터에서 에러가 발생하는 환경에서 다양하게 사용된다.
예시적으로, 연판정(SD)은 도 7에 도시된 방법과 유사하게 수행된다. 예시적으로, 우도값 재매핑(S320 단계 및 S330 단계)와 신뢰성 비트의 생성 단계(S397 단계)가 제거되고, S380 단계가 연판정 성공으로 치환되고, S393 단계가 연판정 실패로 치환되고, 그리고 연판정 실패 처리 후에 읽기 에러(도 2a의 S170 단계) 처리가 수행되는 것을 제외하면, 연판정(SD)은 도 7에 도시된 방법과 동일한 방법에 따라 수행된다.
예시적으로, 연판정(SD) 시에 사용되는 우도값이 제 1 읽기 데이터(Y1) 및 신뢰성 데이터(RD)에 매핑된다. 즉, S330 단계에서 재매핑되는 우도값과 연판정(SD) 시에 매핑되는 우도값은 동일할 수 있.
예시적으로, 디코딩이 반복적으로 수행될 때, 이전 디코딩 루프에서 계산된 노드들의 값이 다음 디코딩 루프에 사용된다.
도 23은 디코딩을 수행하는 방법의 다른 예를 보여주는 순서도이다. 도 7의 디코딩 방법과 비교하면, 최대 루프 판별 단계(S591)와 신뢰성 비트 생성 단계(S597) 사이에, 신뢰성 비트 생성 조건이 충족되는지 판별하는 단계(S595 단계)가 추가된다.
예를 들어, 신뢰성 비트 생성 조건은 디코딩이 수행된 횟수를 포함한다. 최초 n 회의 디코딩 루프가 수행될 때 신뢰성 비트들은 생성되지 않고, n회의 디코딩 루프가 수행된 다음부터 신뢰성 비트들이 생성된다. 따라서, 상대적으로 신뢰성이 낮은 초기 디코딩 결과는 무시되고, 상대적으로 신뢰성이 높은 중반 이후의 디코딩 결과에 따라 신뢰성 비트들이 생성된다.
도 24는 도 1의 저장 시스템(1000)의 다른 예를 보여주는 블록도이다. 도 24를 참조하면, 에러 정정 코드 디코더(300a)는 제 1 디코더와 제 2 디코더를 포함한다. 제 1 디코더는 제 2 디코더와 다른 디코딩 방법을 사용한다. 예를 들어, 제 1 디코더는 BCH (Bose-Chaudhuri-Hocquenghem) 코드를 이용하여 에러를 정정한다. 제 2 디코더는 LDPC (Low Density Parity Check) 코드를 이용하여 에러를 정정한다. 제 1 디코더는 상대적으로 적은 용량을 갖는 메타 데이터의 에러를 정정한다. 제 2 디코더는 상대적으로 많은 용량을 갖는 사용자 데이터의 에러를 정정한다.
도 25는 도 1의 저장 시스템(1000)의 응용 예를 보여주는 블록도이다. 도 25를 참조하면, 저장 시스템(2000)은 불휘발성 메모리 장치(2100) 및 컨트롤러(2200)를 포함한다. 불휘발성 메모리 장치(2100)는 복수의 불휘발성 메모리 칩들을 포함한다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 불휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성된다. 예시적으로, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(2200)와 통신하는 것으로 도시되어 있다.
컨트롤러(2200)는 도 3을 참조하여 설명된 에러 정정 코드 디코더들(300b_1~300b_k)을 포함한다. 에러 정정 코드 디코더들(300b_1~300b_k)은 불휘발성 메모리 장치(2100)로부터 읽어지는 데이터의 에러를 정정한다.
에러 정정 코드 디코더들(300b_1~300b_k)은 채덜들(CH1~CHk)의 수에 해당하는 만큼 제공된다. 하나의 에러 정정 코드 디코더는 하나의 채널에 연결된 불휘발성 메모리 칩들의 에러를 정정한다.
하나의 에러 정정 코드 디코더는 제 1 디코더와 제 2 디코더를 포함한다. 제 1 디코더는 제 2 디코더와 다른 디코딩 방법을 사용한다. 예를 들어, 제 1 디코더는 BCH (Bose-Chaudhuri-Hocquenghem) 코드를 이용하여 에러를 정정한다. 제 2 디코더는 LDPC (Low Density Parity Check) 코드를 이용하여 에러를 정정한다. 제 1 디코더는 상대적으로 적은 용량을 갖는 메타 데이터의 에러를 정정한다. 제 2 디코더는 상대적으로 많은 용량을 갖는 사용자 데이터의 에러를 정정한다.
도 25에서, 하나의 채널에 복수의 불휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 불휘발성 메모리 칩이 연결되도록 저장 시스템(2000)이 변형될 수 있다.
도 26은 본 발명의 실시 예에 따른 메모리 카드(3000)를 보여준다. 도 26을 참조하면, 메모리 카드(3000)는 불휘발성 메모리 장치(3100), 컨트롤러(3200), 그리고 커넥터(3300)를 포함한다.
컨트롤러(3200)는 도 3을 참조하여 설명된 에러 정정 코드 디코더(300c)를 포함한다. 에러 정정 코드 디코더(300c)는 불휘발성 메모리 장치(3100)로부터 읽어지는 데이터의 에러를 정정한다.
에러 정정 코드 디코더(300c)는 제 1 디코더와 제 2 디코더를 포함한다. 제 1 디코더는 제 2 디코더와 다른 디코딩 방법을 사용한다. 예를 들어, 제 1 디코더는 BCH (Bose-Chaudhuri-Hocquenghem) 코드를 이용하여 에러를 정정한다. 제 2 디코더는 LDPC (Low Density Parity Check) 코드를 이용하여 에러를 정정한다. 제 1 디코더는 상대적으로 적은 용량을 갖는 메타 데이터의 에러를 정정한다. 제 2 디코더는 상대적으로 많은 용량을 갖는 사용자 데이터의 에러를 정정한다.
커넥터(3300)는 메모리 카드(3000)와 호스트를 전기적으로 연결한다.
메모리 카드(3000)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드들을 구성한다.
도 27은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(4000, SSD, Solid State Drive)를 보여준다. 도 27을 참조하면, 솔리드 스테이트 드라이브(4000)는 복수의 불휘발성 메모리 장치들(4100), 컨트롤러(4200), 그리고 커넥터(4300)를 포함한다.
컨트롤러(3200)는 도 3을 참조하여 설명된 에러 정정 코드 디코더들(300d_1~300d_3)을 포함한다. 에러 정정 코드 디코더들(300d_1~300d_3)은 불휘발성 메모리 장치(3100)로부터 읽어지는 데이터의 에러를 정정한다.
에러 정정 코드 디코더들(300d_1~300d_3)은 채덜들의 수에 해당하는 만큼 제공된다. 하나의 에러 정정 코드 디코더는 하나의 채널에 연결된 불휘발성 메모리 장치들의 에러를 정정한다.
하나의 에러 정정 코드 디코더는 제 1 디코더와 제 2 디코더를 포함한다. 제 1 디코더는 제 2 디코더와 다른 디코딩 방법을 사용한다. 예를 들어, 제 1 디코더는 BCH (Bose-Chaudhuri-Hocquenghem) 코드를 이용하여 에러를 정정한다. 제 2 디코더는 LDPC (Low Density Parity Check) 코드를 이용하여 에러를 정정한다. 제 1 디코더는 상대적으로 적은 용량을 갖는 메타 데이터의 에러를 정정한다. 제 2 디코더는 상대적으로 많은 용량을 갖는 사용자 데이터의 에러를 정정한다.
커넥터(4300)는 솔리드 스테이트 드라이브(4000)와 호스트를 전기적으로 연결한다.
도 28은 도 25를 참조하여 설명된 저장 시스템(2000)을 포함하는 컴퓨팅 시스템(5000)을 보여주는 블록도이다. 도 28을 참조하면, 컴퓨팅 시스템(5000)은 중앙 처리 장치(5100), 램(5200, RAM, Random Access Memory), 사용자 인터페이스(5300), 전원(5400), 그리고 저장 시스템(2000)을 포함한다.
저장 시스템(2000)은 시스템 버스(5500)를 통해, 중앙처리장치(5100), 램(5200), 사용자 인터페이스(5300), 그리고 전원(5400)에 전기적으로 연결된다. 사용자 인터페이스(5300)를 통해 제공되거나, 중앙 처리 장치(5100)에 의해서 처리된 데이터는 저장 시스템(2000)에 저장된다.
도 28에서, 불휘발성 메모리 장치(2100)는 컨트롤러(2200)를 통해 시스템 버스(3500)에 연결되는 것으로 도시되어 있다. 그러나, 불휘발성 메모리 장치(2100)는 시스템 버스(3500)에 직접 연결되도록 구성된다.
도 28에서, 도 25를 참조하여 설명된 저장 시스템(2000)이 제공되는 것으로 도시되어 있다. 그러나, 저장 시스템(2000)은 도 1, 도 24, 또는 도 25를 참조하여 설명된 저장 시스템(1000)을 포함할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000, 2000; 저장 시스템 3000; 메모리 카드
4000; 솔리드 스테이트 드라이브 5000; 컴퓨팅 시스템
100; 저장 장치 200; 컨트롤러
300; 에러 정정 디코더 310; 읽기 및 신뢰성 정보 메모리
320; 초기 우도값 사상기
321; 경판정 우도값 레지스터
323; 연판정 우도값 레지스터
330; 판정부 340; 갱신기
350; 잠정 디코더 360; 우도값 신뢰성 갱신기

Claims (31)

  1. 저장 장치로부터 데이터를 읽는 읽기 방법에 있어서:
    정상 읽기 전압들을 이용하여 상기 저장 장치에 저장된 데이터를 읽는 단계;
    상기 읽어진 데이터에 기반하여 제 1 저밀도 패리티 검사(LDPC, Low Density Parity Check) 디코딩을 수행하고, 상기 디코딩 결과에 따라 상기 읽어진 데이터의 비트들(이하에서, 읽기 비트들) 각각의 신뢰성 비트들을 생성하는 단계; 그리고
    상기 읽어진 데이터 및 상기 신뢰성 비트들에 기반하여 제 2 저밀도 패리티 검사 디코딩을 수행하여, 상기 읽어진 데이터의 에러를 정정하는 단계를 포함하는 읽기 방법.
  2. 제 1 항에 있어서,
    상기 신뢰성 비트들을 생성하는 단계는,
    상기 제 1 저밀도 패리티 검사 디코딩의 결과로서 디코딩된 비트들을 생성하는 단계;
    상기 읽기 비트들의 각 비트(제 1 비트)를 상기 디코딩된 비트들 중 상기 제 1 비트와 대응하는 제 2 비트를 비교하는 단계; 그리고
    상기 비교 결과에 따라, 상기 제 1 비트에 대응하는 신뢰성 비트를 생성하는 단계를 포함하는 읽기 방법.
  3. 제 2 항에 있어서,
    상기 제 1 비트와 제 2 비트가 동일할 때, 상기 제 1 비트의 신뢰성이 높음을 가리키는 신뢰성 비트가 생성되는 읽기 방법.
  4. 제 2 항에 있어서,
    상기 제 1 비트와 제 2 비트가 서로 다를 때, 상기 제 1 비트의 신뢰성이 낮음을 가리키는 신뢰성 비트가 생성되는 읽기 방법.
  5. 제 1 항에 있어서,
    상기 제 1 저밀도 패리티 검사 디코딩이 수행될 때, 상기 읽기 비트들에 크기는 갖고 부호가 반대인 우도값들이 매핑되는 읽기 방법.
  6. 제 1 항에 있어서,
    상기 제 2 저밀도 패리티 검사 디코딩이 수행될 때, 상기 읽기 비트들 및 신뢰성 비트들에 따라 둘 이상의 서로 다른 우도값들이 재매핑되는 읽기 방법.
  7. 제 1 항에 있어서,
    상기 에러를 정정하는 단계에서 에러 정정이 완료되지 않으면, 부분 읽기 전압들을 이용하여 상기 저장 장치에 저장된 상기 데이터를 다시 읽고, 상기 읽어진 데이터 및 상기 다시 읽어진 데이터에 기반하여 제 3 저밀도 패리티 검사 디코딩을 수행하여 에러를 정정하는 단계를 더 포함하는 읽기 방법.
  8. 제 7 항에 있어서,
    상기 읽는 단계의 읽기 전압들의 레벨들과 상기 다시 읽는 단계의 읽기 전압들의 레벨들은 서로 다른 읽기 방법.
  9. 제 1 항에 있어서,
    상기 제 1 저밀도 패리티 검사 디코딩의 디코딩 루프가 기준 횟수 수행된 후에, 상기 제 1 저밀도 패리티 검사 디코딩의 디코딩 루프가 반복될 때마다 상기 신뢰성 비트들이 생성되는 읽기 방법.
  10. 제 1 항에 있어서,
    상기 생성된 신뢰성 비트들의 수가 최대값에 도달하면, 상기 신뢰성 비트들은 FIFO (First-In First-Out)으로 관리되는 읽기 방법.
  11. 제 1 항에 있어서,
    상기 생성된 신뢰성 비트들의 수가 최대값에 도달한 후 상기 제 1 저밀도 패리티 검사의 디코딩 루프가 기준 횟수 수행된 후에, 상기 제 2 저밀도 패리티 검사 디코딩이 수행되는 읽기 방법.
  12. 제 1 항에 있어서,
    상기 제 2 저밀도 패리티 검사 디코딩이 수행될 때, 상기 제 1 저밀도 패리티 검사 디코딩에서 연산된 검사 노드들 및 변수 노드들의 값들이 승계되는 읽기 방법.
  13. 외부로부터 수신되는 데이터를 저장하고, 상기 데이터의 신뢰성을 가리키는 신뢰성 데이터를 저장하도록 구성되는 메모리;
    상기 메모리로부터 출력되는 상기 데이터에 제 1 우도값들을 사상하여 제 1 사상 데이터를 출력하고, 상기 메모리로부터 출력되는 상기 데이터 및 신뢰성 데이터에 제 2 우도값들을 사상하여 제 2 사상 데이터를 출력하도록 구성되는 우도값 사상기;
    상기 제 1 사상 데이터 또는 제 2 사상 데이터에 기반하여 저밀도 패리티 검사(LDPC, Low Density Parity Check) 디코딩을 수행하도록 구성되는 판정부; 그리고
    상기 판정부로부터 상기 제 1 사상 데이터에 기반한 디코딩 결과를 수신하고, 상기 디코딩 결과를 상기 메모리에 저장된 상기 데이터와 비교하고, 비교 결과에 따라 상기 데이터의 각 비트의 신뢰성을 가리키는 상기 신뢰성 데이터를 생성하여 상기 메모리에 저장하도록 구성되는 우도값 신뢰성 갱신기를 포함하는 에러 정정 장치.
  14. 제 13 항에 있어서,
    상기 메모리는 상기 데이터에 대응하는 각 신뢰성 데이터의 비트 수가 특정 값 미만일 때 상기 데이터를 상기 우도값 사상기로 출력하고, 상기 데이터에 대응하는 각 신뢰성 데이터의 비트 수가 상기 특정 값에 도달할 때 상기 데이터 및 신뢰성 데이터를 상기 우도값 사상기로 함께 출력하는 에러 정정 장치.
  15. 제 14 항에 있어서,
    상기 특정값은 상기 데이터의 한 비트에 대응하는 신뢰성 데이터를 저장하는 상기 메모리의 비트 수인 에러 정정 장치.
  16. 제 13 항에 있어서,
    상기 우도값 신뢰성 갱신기는 상기 디코딩 결과 중 제 1 비트, 그리고 상기 데이터 중 상기 제 1 비트와 대응하는 위치의 제 2 비트가 서로 다른 값을 가질 때, 신뢰성이 낮음을 가리키는 신뢰성 데이터를 생성하는 에러 정정 장치.
  17. 제 13 항에 있어서,
    상기 우도값 신뢰성 갱신기는 상기 디코딩 결과 중 제 1 비트, 그리고 상기 데이터 중 상기 제 1 비트와 대응하는 위치의 제 2 비트가 동일한 값을 가질 때, 신뢰성이 높음을 가리키는 신뢰성 데이터를 생성하는 에러 정정 장치.
  18. 제 13 항에 있어서,
    상기 제 1 디코딩이 수행될 때,
    상기 우도값 사상기는 상기 데이터에 크기가 같고 부호가 서로 다른 두 개의 우도값들을 사상하는 에러 정정 장치.
  19. 제 13 항에 있어서,
    상기 제 2 디코딩이 수행될 때,
    상기 우도값 사상기는 상기 데이터 및 신뢰성 데이터에 서로 다른 셋 이상의 우도값들을 사상하는 에러 정정 장치.
  20. 제 13 항에 있어서,
    상기 판정부에서 에러의 정정 실패가 감지되면, 상기 메모리는 외부로부터 추가 데이터를 수신하여 저장하고, 상기 우도값 사상기는 상기 데이터 및 추가 데이터에 우도값들을 사상하여 제 3 사상 데이터를 출력하고, 상기 판정부는 상기 제 3 사상 데이터에 기반하여 디코딩을 수행하는 에러 정정 장치.
  21. 제 13 항에 있어서,
    상기 데이터에 대응하는 각 신뢰성 데이터의 비트 수가 특정 값에 도달할 때, 상기 메모리는 상기 신뢰성 데이터를 FIFO (First-In First-Out) 방식으로 관리하는 에러 정정 장치.
  22. 제 13 항에 있어서,
    상기 데이터에 대응하는 각 신뢰성 데이터의 비트 수가 특정 값에 도달하고, 상기 제 1 사상 데이터에 기반한 디코딩이 기준 횟수 수행된 후에, 상기 메모리는 상기 데이터 및 신뢰성 데이터를 상기 우도값 사상기로 함께 출력하는 에러 정정 장치.
  23. 제 13 항에 있어서,
    상기 제 1 사상 데이터에 기반한 디코딩이 기준 횟수 수행된 후에, 상기 우도값 신뢰성 갱신기는 상기 신뢰성 데이터를 생성하는 에러 정정 장치.
  24. 저장 장치; 그리고
    상기 저장 장치로부터 읽어진 데이터를 수신하고, 상기 수신된 데이터의 에러를 정정하는 에러 정정 코드 디코더를 구비한 컨트롤러를 포함하고,
    상기 에러 정정 코드 디코더는,
    상기 저장 장치로부터 읽어진 데이터를 저장하고, 상기 읽어진 데이터의 신뢰성을 가리키는 신뢰성 데이터를 저장하도록 구성되는 메모리;
    상기 메모리로부터 출력되는 상기 데이터에 제 1 우도값들을 사상하여 제 1 사상 데이터를 출력하고, 상기 메모리로부터 출력되는 상기 데이터 및 신뢰성 데이터에 제 2 우도값들을 사상하여 제 2 사상 데이터를 출력하도록 구성되는 우도값 사상기;
    상기 제 1 사상 데이터 또는 제 2 사상 데이터에 기반하여 저밀도 패리티 검사(LDPC, Low Density Parity Check) 디코딩을 수행하도록 구성되는 판정부; 그리고
    상기 판정부로부터 상기 제 1 사상 데이터에 기반한 제 1 디코딩 결과를 수신하고, 상기 제 1 디코딩 결과를 상기 메모리에 저장된 상기 데이터와 비교하고, 비교 결과에 따라 상기 데이터의 각 비트의 신뢰성을 가리키는 신뢰성 데이터를 생성하여 상기 메모리에 저장하도록 구성되는 우도값 신뢰성 갱신기를 포함하고,
    상기 우도값 사상기는 상기 제 2 사상 데이터에 따른 제 2 디코딩 결과에 기반하여 상기 읽어진 데이터의 에러를 정정하는 저장 시스템.
  25. 제 24 항에 있어서,
    상기 저장 장치는 플래시 메모리를 포함하는 저장 시스템.
  26. 제 24 항에 있어서,
    상기 저장 장치 및 상기 컨트롤러는 메모리 카드를 형성하는 저장 시스템.
  27. 제 24 항에 있어서,
    상기 저장 장치 및 상기 컨트롤러는 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 형성하는 저장 시스템.
  28. 제 24 항에 있어서,
    상기 에러의 정정이 실패할 때, 상기 메모리는 상기 저장 장치로부터 추가로 읽어진 데이터를 수신하여 저장하고, 상기 우도값 사상기는 상기 데이터 및 추가로 읽어진 데이터에 우도값들을 사상하여 제 3 사상 데이터를 출력하고, 상기 판정부는 상기 제 3 사상 데이터에 기반하여 디코딩을 수행하는 저장 시스템.
  29. 제 24 항에 있어서,
    상기 에러 정정 코드 디코더는 상기 저장 장치에 저장된 사용자 데이터의 에러를 정정하고,
    상기 컨트롤러는 상기 저장 장치에 저장된 메타 데이터의 에러를 정정하는 메타 데이터용 에러 정정 코드 디코더를 더 포함하는 저장 시스템.
  30. 제 29 항에 있어서,
    상기 메타 데이터용 에러 정정 코드 디코더는 BCH (Bose-Chaudhuri-Hocquenghem) 코드를 이용하여 에러를 정정하는 저장 시스템.
  31. 제 24 항에 있어서,
    상기 컨트롤러 및 저장 장치는 복수의(k 개, k는 양의 정수) 채널들을 통해 서로 통신하고,
    상기 에러 정정 코드 디코더는 상기 복수의 채널들 중 하나의 채널을 통해 통신되는 데이터의 에러들을 정정하고,
    상기 컨트롤러는 상기 복수의 채널들 중 나머지 채널들을 통해 통신되는 데이터의 에러들을 각각 정정하는 복수의(k-1 개) 에러 정정 코드 디코더들을 더 포함하는 저장 시스템.
KR1020110146645A 2011-12-30 2011-12-30 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템 KR101968746B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020110146645A KR101968746B1 (ko) 2011-12-30 2011-12-30 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
US13/601,057 US9059738B2 (en) 2011-12-30 2012-08-31 Method of reading data from storage device, error correction device and storage system including error correction code decoder
JP2012274415A JP6096496B2 (ja) 2011-12-30 2012-12-17 格納装置からのデータ読出し方法、エラー訂正装置、及びエラー訂正コードデコーダーを含む格納システム
CN2012105927039A CN103186352A (zh) 2011-12-30 2012-12-31 从存储设备读取数据的方法、纠错设备和存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110146645A KR101968746B1 (ko) 2011-12-30 2011-12-30 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템

Publications (2)

Publication Number Publication Date
KR20130077962A true KR20130077962A (ko) 2013-07-10
KR101968746B1 KR101968746B1 (ko) 2019-04-15

Family

ID=48677532

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110146645A KR101968746B1 (ko) 2011-12-30 2011-12-30 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템

Country Status (4)

Country Link
US (1) US9059738B2 (ko)
JP (1) JP6096496B2 (ko)
KR (1) KR101968746B1 (ko)
CN (1) CN103186352A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160113001A (ko) * 2015-03-20 2016-09-28 에스케이하이닉스 주식회사 Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR20190010745A (ko) * 2016-06-29 2019-01-30 마이크론 테크놀로지, 인크 오류 정정 코드 이벤트 검출
KR20190071485A (ko) * 2017-12-14 2019-06-24 삼성전자주식회사 에러 정정 장치, 에러 정정 장치의 동작 방법, 그리고 에러 정정 장치를 포함하는 제어기
US11037646B2 (en) 2018-08-07 2021-06-15 Samsung Electronics Co., Ltd. Memory controller, operating method of memory controller and memory system

Families Citing this family (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9136011B2 (en) * 2012-04-26 2015-09-15 Hgst Technologies Santa Ana, Inc. Soft information module
JP2014140111A (ja) * 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
KR20150128750A (ko) * 2013-03-07 2015-11-18 마벨 월드 트레이드 리미티드 늦은 신뢰도 정보를 사용하여 디코딩하기 위한 시스템 및 방법
WO2014149738A1 (en) * 2013-03-21 2014-09-25 Marvell World Trade Ltd. Systems and methods for multi-stage soft input decoding
US9450619B2 (en) * 2013-03-22 2016-09-20 Seagate Technology Llc Dynamic log likelihood ratio quantization for solid state drive controllers
CN104572334B (zh) * 2013-10-14 2017-11-21 群联电子股份有限公司 解码方法、存储器存储装置与存储器控制电路单元
TWI527382B (zh) * 2013-10-22 2016-03-21 群聯電子股份有限公司 解碼方法、解碼電路、記憶體儲存裝置與控制電路單元
CN104601178B (zh) * 2013-10-30 2018-02-02 群联电子股份有限公司 解码方法、解码电路、存储器存储装置与控制电路单元
US9189327B2 (en) * 2013-11-19 2015-11-17 International Business Machines Corporation Error-correcting code distribution for memory systems
GB2520708A (en) 2013-11-28 2015-06-03 Ibm Multi-stage codeword detector
US10276247B2 (en) 2013-12-20 2019-04-30 Seagate Technology Llc Read retry operations with estimation of written data based on syndrome weights
US9563502B1 (en) 2013-12-20 2017-02-07 Seagate Technology Llc Read retry operations with read reference voltages ranked for different page populations of a memory
US9633740B1 (en) * 2016-02-11 2017-04-25 Seagate Technology Llc Read retry operations where likelihood value assignments change sign at different read voltages for each read retry
KR102108386B1 (ko) 2013-12-23 2020-05-08 삼성전자주식회사 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
TWI523018B (zh) * 2013-12-31 2016-02-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置、記憶體控制電路單元
US9665757B2 (en) 2014-03-07 2017-05-30 Hand Held Products, Inc. Indicia reader for size-limited applications
US9424134B2 (en) * 2014-03-28 2016-08-23 Intel Corporation Boot management in a non-volatile memory system
US9224027B2 (en) 2014-04-01 2015-12-29 Hand Held Products, Inc. Hand-mounted indicia-reading device with finger motion triggering
US9412242B2 (en) 2014-04-04 2016-08-09 Hand Held Products, Inc. Multifunction point of sale system
TWI540586B (zh) * 2014-04-15 2016-07-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置、記憶體控制電路單元
CN105023613B (zh) * 2014-04-22 2019-06-14 群联电子股份有限公司 解码方法、存储器存储装置及存储器控制电路单元
CN105022674B (zh) * 2014-04-25 2019-02-01 群联电子股份有限公司 解码方法、存储器存储装置、存储器控制电路单元
US9224022B2 (en) 2014-04-29 2015-12-29 Hand Held Products, Inc. Autofocus lens system for indicia readers
US9329935B2 (en) 2014-05-19 2016-05-03 Seagate Technology Llc Method to dynamically update LLRs in an SSD drive and/or controller
US11546428B2 (en) 2014-08-19 2023-01-03 Hand Held Products, Inc. Mobile computing device with data cognition software
US20160062473A1 (en) 2014-08-29 2016-03-03 Hand Held Products, Inc. Gesture-controlled computer system
CN105468471A (zh) * 2014-09-12 2016-04-06 光宝科技股份有限公司 固态存储装置及其错误更正方法
EP3001368A1 (en) 2014-09-26 2016-03-30 Honeywell International Inc. System and method for workflow management
US9594615B2 (en) * 2014-09-30 2017-03-14 Apple Inc. Estimating flash quality using selective error emphasis
US10775165B2 (en) 2014-10-10 2020-09-15 Hand Held Products, Inc. Methods for improving the accuracy of dimensioning-system measurements
US9779276B2 (en) 2014-10-10 2017-10-03 Hand Held Products, Inc. Depth sensor based auto-focus system for an indicia scanner
EP3009968A1 (en) 2014-10-15 2016-04-20 Vocollect, Inc. Systems and methods for worker resource management
US9484089B2 (en) * 2014-10-20 2016-11-01 Sandisk Technologies Llc Dual polarity read operation
US9897434B2 (en) 2014-10-21 2018-02-20 Hand Held Products, Inc. Handheld dimensioning system with measurement-conformance feedback
US9762793B2 (en) 2014-10-21 2017-09-12 Hand Held Products, Inc. System and method for dimensioning
EP3016023B1 (en) 2014-10-31 2020-12-16 Honeywell International Inc. Scanner with illumination system
US10810529B2 (en) 2014-11-03 2020-10-20 Hand Held Products, Inc. Directing an inspector through an inspection
US20160125217A1 (en) 2014-11-05 2016-05-05 Hand Held Products, Inc. Barcode scanning system using wearable device with embedded camera
US9984685B2 (en) 2014-11-07 2018-05-29 Hand Held Products, Inc. Concatenated expected responses for speech recognition using expected response boundaries to determine corresponding hypothesis boundaries
US20160180713A1 (en) 2014-12-18 2016-06-23 Hand Held Products, Inc. Collision-avoidance system and method
US9743731B2 (en) 2014-12-18 2017-08-29 Hand Held Products, Inc. Wearable sled system for a mobile computer device
US10296259B2 (en) 2014-12-22 2019-05-21 Hand Held Products, Inc. Delayed trim of managed NAND flash memory in computing devices
US9564035B2 (en) 2014-12-22 2017-02-07 Hand Held Products, Inc. Safety system and method
US20160180594A1 (en) 2014-12-22 2016-06-23 Hand Held Products, Inc. Augmented display and user input device
US10635876B2 (en) 2014-12-23 2020-04-28 Hand Held Products, Inc. Method of barcode templating for enhanced decoding performance
US10049246B2 (en) 2014-12-23 2018-08-14 Hand Held Products, Inc. Mini-barcode reading module with flash memory management
US10191514B2 (en) 2014-12-23 2019-01-29 Hand Held Products, Inc. Tablet computer with interface channels
US10552786B2 (en) 2014-12-26 2020-02-04 Hand Held Products, Inc. Product and location management via voice recognition
US9652653B2 (en) 2014-12-27 2017-05-16 Hand Held Products, Inc. Acceleration-based motion tolerance and predictive coding
US20160189447A1 (en) 2014-12-28 2016-06-30 Hand Held Products, Inc. Remote monitoring of vehicle diagnostic information
US10621538B2 (en) 2014-12-28 2020-04-14 Hand Held Products, Inc Dynamic check digit utilization via electronic tag
US11443363B2 (en) 2014-12-29 2022-09-13 Hand Held Products, Inc. Confirming product location using a subset of a product identifier
US9830488B2 (en) 2014-12-30 2017-11-28 Hand Held Products, Inc. Real-time adjustable window feature for barcode scanning and process of scanning barcode with adjustable window feature
US9898635B2 (en) 2014-12-30 2018-02-20 Hand Held Products, Inc. Point-of-sale (POS) code sensing apparatus
US9230140B1 (en) 2014-12-30 2016-01-05 Hand Held Products, Inc. System and method for detecting barcode printing errors
US10152622B2 (en) 2014-12-30 2018-12-11 Hand Held Products, Inc. Visual feedback for code readers
US10108832B2 (en) 2014-12-30 2018-10-23 Hand Held Products, Inc. Augmented reality vision barcode scanning system and method
EP3043235B1 (en) 2014-12-31 2018-06-20 Hand Held Products, Inc. Reconfigurable sled for a mobile device
US20160203429A1 (en) 2015-01-09 2016-07-14 Honeywell International Inc. Restocking workflow prioritization
US9564921B1 (en) 2015-02-04 2017-02-07 Microsemi Storage Solutions (U.S.), Inc. Method and system for forward error correction decoding based on a revised error channel estimate
US10121466B2 (en) 2015-02-11 2018-11-06 Hand Held Products, Inc. Methods for training a speech recognition system
KR102265220B1 (ko) * 2015-03-09 2021-06-16 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US9564239B2 (en) * 2015-03-16 2017-02-07 Sk Hynix Memory Solutions Inc. Memory controller and operating method thereof
US9250712B1 (en) 2015-03-20 2016-02-02 Hand Held Products, Inc. Method and application for scanning a barcode with a smart device while continuously running and displaying an application on the smart device display
US20160292477A1 (en) 2015-03-31 2016-10-06 Hand Held Products, Inc. Aimer for barcode scanning
US9521331B2 (en) 2015-04-21 2016-12-13 Hand Held Products, Inc. Capturing a graphic information presentation
US9693038B2 (en) 2015-04-21 2017-06-27 Hand Held Products, Inc. Systems and methods for imaging
US9786101B2 (en) 2015-05-19 2017-10-10 Hand Held Products, Inc. Evaluating image values
EP3118576B1 (en) 2015-07-15 2018-09-12 Hand Held Products, Inc. Mobile dimensioning device with dynamic accuracy compatible with nist standard
US10094650B2 (en) 2015-07-16 2018-10-09 Hand Held Products, Inc. Dimensioning and imaging items
US9853575B2 (en) 2015-08-12 2017-12-26 Hand Held Products, Inc. Angular motor shaft with rotational attenuation
US9798413B2 (en) 2015-08-27 2017-10-24 Hand Held Products, Inc. Interactive display
US10134112B2 (en) 2015-09-25 2018-11-20 Hand Held Products, Inc. System and process for displaying information from a mobile computer in a vehicle
US20170094238A1 (en) 2015-09-30 2017-03-30 Hand Held Products, Inc. Self-calibrating projection apparatus and process
US9727083B2 (en) 2015-10-19 2017-08-08 Hand Held Products, Inc. Quick release dock system and method
US10395116B2 (en) 2015-10-29 2019-08-27 Hand Held Products, Inc. Dynamically created and updated indoor positioning map
KR20170060234A (ko) * 2015-11-23 2017-06-01 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9864891B2 (en) 2015-11-24 2018-01-09 Intermec Technologies Corporation Automatic print speed control for indicia printer
KR20170075065A (ko) * 2015-12-22 2017-07-03 에스케이하이닉스 주식회사 메모리 시스템 동작 방법
US9945777B2 (en) 2016-01-14 2018-04-17 Hand Held Products, Inc. Multi-spectral imaging using longitudinal chromatic aberrations
CN106970852A (zh) * 2016-01-14 2017-07-21 钰创科技股份有限公司 闪存错误控制电路及其方法
TWI595498B (zh) * 2016-01-20 2017-08-11 大心電子(英屬維京群島)股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US10235547B2 (en) 2016-01-26 2019-03-19 Hand Held Products, Inc. Enhanced matrix symbol error correction method
US10043582B2 (en) 2016-02-11 2018-08-07 Seagate Technology Llc Establishing parameters of subsequent read retry operations based on syndrome weights of prior failed decodings
US20170299851A1 (en) 2016-04-14 2017-10-19 Hand Held Products, Inc. Customizable aimer system for indicia reading terminal
EP3232367B1 (en) 2016-04-15 2021-11-03 Hand Held Products, Inc. Imaging barcode reader with color separated aimer and illuminator
US10185906B2 (en) 2016-04-26 2019-01-22 Hand Held Products, Inc. Indicia reading device and methods for decoding decodable indicia employing stereoscopic imaging
US9727841B1 (en) 2016-05-20 2017-08-08 Vocollect, Inc. Systems and methods for reducing picking operation errors
US10339352B2 (en) 2016-06-03 2019-07-02 Hand Held Products, Inc. Wearable metrological apparatus
US9940721B2 (en) 2016-06-10 2018-04-10 Hand Held Products, Inc. Scene change detection in a dimensioner
KR102626162B1 (ko) 2016-06-14 2024-01-18 삼성전자주식회사 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법
US10163216B2 (en) 2016-06-15 2018-12-25 Hand Held Products, Inc. Automatic mode switching in a volume dimensioner
US10290358B2 (en) 2016-07-08 2019-05-14 Seagate Technology Llc Independent read threshold voltage tracking for multiple dependent read threshold voltages using syndrome weights
EP3220369A1 (en) 2016-09-29 2017-09-20 Hand Held Products, Inc. Monitoring user biometric parameters with nanotechnology in personal locator beacon
CN106601305A (zh) * 2016-11-18 2017-04-26 华中科技大学 一种使用检错码和纠错码相结合的固态盘纠错方法
WO2018119900A1 (zh) * 2016-12-29 2018-07-05 华为技术有限公司 数据读取方法及闪存设备
US11206042B2 (en) 2017-03-09 2021-12-21 Lg Electronics Inc. Layered decoding method for LDPC code and device therefor
CN106992026B (zh) * 2017-03-20 2020-12-01 中山大学 一种针对NAND-Flash存储介质的LDPC码快速信息恢复的译码方法
DE102017117899A1 (de) * 2017-08-07 2019-02-07 Infineon Technologies Ag Durchführen einer kryptografischen Operation
CN107657984B (zh) * 2017-08-16 2020-09-22 深圳市江波龙电子股份有限公司 闪存的纠错方法、装置、设备以及计算机可读存储介质
US10574274B2 (en) * 2017-09-29 2020-02-25 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10970363B2 (en) * 2017-10-17 2021-04-06 Microsoft Technology Licensing, Llc Machine-learning optimization of data reading and writing
US10491244B2 (en) * 2017-11-14 2019-11-26 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10511326B2 (en) * 2017-11-14 2019-12-17 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10546160B2 (en) 2018-01-05 2020-01-28 Datamax-O'neil Corporation Methods, apparatuses, and systems for providing print quality feedback and controlling print quality of machine-readable indicia
US10839916B2 (en) * 2018-04-09 2020-11-17 Intel Corporation One-sided soft reads
CN108683423B (zh) * 2018-05-16 2022-04-19 广东工业大学 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置
US10715182B2 (en) * 2018-07-27 2020-07-14 Innogrit Technologies Co., Ltd. Systems and methods for decoding error correcting codes with self-generated LLR
KR20200020535A (ko) * 2018-08-17 2020-02-26 에스케이하이닉스 주식회사 에러 정정 장치, 그것의 동작 방법 및 그것을 포함하는 전자 장치
US11283468B1 (en) * 2021-06-24 2022-03-22 Beijing Tenafe Electronic Technology Co., Ltd. Log-likelihood ratio mapping tables in flash storage systems
CN113571113B (zh) * 2021-07-14 2023-05-09 深圳宏芯宇电子股份有限公司 目标数据的解码方法、装置、电子设备和存储装置
JP2023030722A (ja) * 2021-08-24 2023-03-08 富士通株式会社 信号処理装置及び伝送装置
US11860733B2 (en) 2021-12-08 2024-01-02 Western Digital Technologies, Inc. Memory matched low density parity check coding schemes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008065969A (ja) * 2006-08-09 2008-03-21 Fujitsu Ltd 符号化装置、復号化装置、符号化方法、復号化方法および記憶装置
JP2011081858A (ja) * 2009-10-05 2011-04-21 Toshiba Corp メモリシステム
WO2011113034A2 (en) * 2010-03-12 2011-09-15 Sandforce, Inc. Ldpc erasure decoding for flash memories

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7398453B2 (en) 2005-10-03 2008-07-08 Motorola, Inc. Method and apparatus for a low-density parity-check decoder
WO2007046350A1 (ja) * 2005-10-18 2007-04-26 Nec Corporation Mramの動作方法
KR100738983B1 (ko) 2006-06-07 2007-07-12 주식회사 대우일렉트로닉스 저밀도 패리티 체크 부호의 복호화 방법 및 장치, 이를이용한 광정보 재생장치
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US8245104B2 (en) * 2008-05-02 2012-08-14 Lsi Corporation Systems and methods for queue based data detection and decoding
JP2010109468A (ja) * 2008-10-28 2010-05-13 Toshiba Corp 復号器、メモリコントローラおよび半導体メモリ装置
JP2012050008A (ja) * 2010-08-30 2012-03-08 Toshiba Corp 誤り検出訂正方法および半導体メモリ装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008065969A (ja) * 2006-08-09 2008-03-21 Fujitsu Ltd 符号化装置、復号化装置、符号化方法、復号化方法および記憶装置
JP2011081858A (ja) * 2009-10-05 2011-04-21 Toshiba Corp メモリシステム
WO2011113034A2 (en) * 2010-03-12 2011-09-15 Sandforce, Inc. Ldpc erasure decoding for flash memories
JP2013522735A (ja) * 2010-03-12 2013-06-13 エルエスアイ コーポレーション フラッシュメモリ用のldpc消失復号化

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160113001A (ko) * 2015-03-20 2016-09-28 에스케이하이닉스 주식회사 Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR20190010745A (ko) * 2016-06-29 2019-01-30 마이크론 테크놀로지, 인크 오류 정정 코드 이벤트 검출
US10496475B2 (en) 2016-06-29 2019-12-03 Micron Technology, Inc. Error correction code event detection
US10949300B2 (en) 2016-06-29 2021-03-16 Micron Technology, Inc. Error correction code event detection
KR20190071485A (ko) * 2017-12-14 2019-06-24 삼성전자주식회사 에러 정정 장치, 에러 정정 장치의 동작 방법, 그리고 에러 정정 장치를 포함하는 제어기
US11037646B2 (en) 2018-08-07 2021-06-15 Samsung Electronics Co., Ltd. Memory controller, operating method of memory controller and memory system

Also Published As

Publication number Publication date
JP2013141219A (ja) 2013-07-18
US9059738B2 (en) 2015-06-16
JP6096496B2 (ja) 2017-03-15
KR101968746B1 (ko) 2019-04-15
US20130173985A1 (en) 2013-07-04
CN103186352A (zh) 2013-07-03

Similar Documents

Publication Publication Date Title
KR101968746B1 (ko) 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
US9977713B2 (en) LDPC decoder, semiconductor memory system and operating method thereof
US9529666B2 (en) Decoding method, memory storage device and memory controlling circuit unit
US8397116B2 (en) Decoding method and memory system device using the same
US9973213B2 (en) Decoding method, and memory storage apparatus and memory control circuit unit using the same
US10103749B2 (en) LDPC decoder, semiconductor memory system and operating method thereof
US10484008B2 (en) Memory system with on-the-fly error detection and termination and operating method thereof
US9906244B2 (en) Decoding method, memory storage device and memory control circuit unit
US9342404B2 (en) Decoding method, memory storage device, and memory controlling circuit unit
US10067824B2 (en) Error processing method, memory storage device and memory controlling circuit unit
US10103748B2 (en) Decoding method, memory control circuit unit and memory storage device
US8751895B2 (en) Semiconductor memory device and decoding method
US9311992B2 (en) Decoding system and method for electronic non-volatile computer storage apparatus
US10623019B2 (en) Method of decoding low density parity check (LDPC) code, decoder and system performing the same
US10205469B2 (en) Low latency soft decoder architecture for generalized product codes
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
US11139832B1 (en) LDPC decoder and operating method thereof
TW201939902A (zh) 用於多個字元線失敗的軟晶片消除恢復
TWI550628B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
CN107608818A (zh) 解码方法、存储器存储装置及存储器控制电路单元
US10997021B2 (en) LDPC decoder, semiconductor memory system and operating method thereof
KR101631128B1 (ko) 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더
US10628259B2 (en) Bit determining method, memory control circuit unit and memory storage device
US20230094363A1 (en) Method and Apparatus for Decoding with Trapped-Block Management
CN113626249B (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