KR20220151934A - Ecc 디코더 - Google Patents

Ecc 디코더 Download PDF

Info

Publication number
KR20220151934A
KR20220151934A KR1020210059249A KR20210059249A KR20220151934A KR 20220151934 A KR20220151934 A KR 20220151934A KR 1020210059249 A KR1020210059249 A KR 1020210059249A KR 20210059249 A KR20210059249 A KR 20210059249A KR 20220151934 A KR20220151934 A KR 20220151934A
Authority
KR
South Korea
Prior art keywords
hard
decoding operation
memory
reliability value
memory area
Prior art date
Application number
KR1020210059249A
Other languages
English (en)
Inventor
김대성
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020210059249A priority Critical patent/KR20220151934A/ko
Priority to US17/500,803 priority patent/US11881276B2/en
Priority to CN202210016700.4A priority patent/CN115309583A/zh
Publication of KR20220151934A publication Critical patent/KR20220151934A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/1201Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details comprising I/O circuitry
    • 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/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • 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
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • 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/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • 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
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

ECC 디코더는 ECC 디코더는 메모리 영역을 포함하는 메모리; 채널로부터 전송된 하드 비트를 상기 메모리 영역의 제1 구역에 저장되도록 상기 메모리로 전송하도록 구성된 제1 변환부; 하드 디코딩 동작의 이터레이션이 반복될 때마다, 상기 제1 구역으로부터 리드된 상기 하드 비트를 수신하고 상기 하드 비트에 대응하는 신뢰도 값을 출력하도록 구성된 제2 변환부; 및 상기 신뢰도 값을 사용하여 상기 하드 디코딩 동작을 수행하도록 구성된 변수 노드를 포함한다.

Description

ECC 디코더{ECC DECODER}
본 발명은 ECC 디코더에 관한 것으로, 더욱 상세하게는 메모리 시스템에 포함되는 ECC 디코더에 관한 것이다.
메모리 시스템은 호스트 장치의 라이트 요청에 응답하여, 호스트 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 메모리 시스템은 호스트 장치의 리드 요청에 응답하여, 저장된 데이터를 호스트 장치로 제공하도록 구성될 수 있다. 호스트 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 메모리 시스템은 호스트 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 호스트 장치에 연결됨으로써 동작할 수 있다.
메모리 시스템은 데이터의 신뢰성을 향상시키기 위해서 ECC 디코더를 포함할 수 있다. ECC 디코더는 소정의 ECC 알고리즘에 따라 디코딩 동작을 수행함으로써 데이터에 발생된 에러를 정정할 수 있다.
본 발명의 실시 예는 메모리의 사용을 최소화하여 소비 전력을 절감할 수 있는 ECC 디코더를 제공하는 데 있다.
본 발명의 실시 예는 메모리의 남는 구역에 후속 데이터를 프리-로드하여 후속 디코딩 동작을 신속하게 개시할 수 있는 ECC 디코더를 제공하는 데 있다.
본 발명의 실시 예에 따른 ECC 디코더는 메모리 영역을 포함하는 메모리; 채널로부터 전송된 하드 비트를 상기 메모리 영역의 제1 구역에 저장되도록 상기 메모리로 전송하도록 구성된 제1 변환부; 하드 디코딩 동작의 이터레이션이 반복될 때마다, 상기 제1 구역으로부터 리드된 상기 하드 비트를 수신하고 상기 하드 비트에 대응하는 신뢰도 값을 출력하도록 구성된 제2 변환부; 및 상기 신뢰도 값을 사용하여 상기 하드 디코딩 동작을 수행하도록 구성된 변수 노드를 포함할 수 있다.
본 발명의 실시 예에 따른 ECC 디코더는 변수 노드; 상기 변수 노드로 전송될 신뢰도 값에 대응하는 크기를 가지도록 구성된 메모리 영역을 포함하는 메모리; 상기 변수 노드의 하드 디코딩 동작을 위해 채널로부터 전송된 하드 비트를 상기 메모리 영역의 제1 구역에 저장되도록 상기 메모리로 전송하고, 상기 채널로부터 이어서 전송된 후속 하드 비트를 상기 메모리 영역의 제2 구역에 저장되도록 상기 메모리로 전송하도록 구성된 제1 변환부; 및 상기 하드 디코딩 동작을 위해 상기 메모리 영역으로부터 리드된 데이터에 근거하여 상기 신뢰도 값을 결정하고, 상기 신뢰도 값을 상기 변수 노드로 전송하도록 구성된 제2 변환부를 포함할 수 있다.
본 발명의 실시 예에 따른 ECC 디코더는 메모리 영역을 포함하는 메모리; 하드 디코딩 동작에서 채널로부터 전송된 하드 비트를 상기 메모리 영역에 저장되도록 상기 메모리로 전송하고, 소프트 디코딩 동작에서 상기 채널로부터 전송된 소프트 비트 세트 대신 상기 소프트 비트 세트에 대응하는 소프트 신뢰도 값을 상기 메모리 영역에 저장되도록 상기 메모리로 전송하도록 구성된 제1 변환부; 상기 하드 디코딩 동작에서 상기 메모리 영역으로부터 전송된 상기 하드 비트에 대응하는 하드 신뢰도 값을 출력하고, 상기 소프트 디코딩 동작에서 상기 메모리 영역으로부터 전송된 상기 소프트 신뢰도 값을 출력하도록 구성된 제2 변환부; 상기 제2 변환부로부터 출력된 상기 하드 신뢰도 값을 사용하여 상기 하드 디코딩 동작을 수행하고, 상기 하드 디코딩 동작이 실패한 뒤 상기 제2 변환부로부터 출력된 상기 소프트 신뢰도 값을 사용하여 상기 소프트 디코딩 동작을 수행하도록 구성된 변수 노드를 포함할 수 있다.
본 발명의 실시 예에 따른 ECC 디코더는 메모리 사용을 최소화하여 소비 전력을 절감할 수 있다.
본 발명의 실시 예에 따른 ECC 디코더는 메모리의 남는 구역에 후속 데이터를 프리-로드하여 후속 디코딩 동작을 신속하게 개시할 수 있다.
도1은 본 발명의 실시 예에 따른 ECC(Error Correcting Code) 디코더를 도시한 블록도,
도2는 본 발명의 실시 예에 따라 도1의 ECC 디코더가 하드 디코딩 동작을 수행하는 방법을 설명하기 위한 도면,
도3은 본 발명의 실시 예에 따라 도1의 ECC 디코더가 하드 디코딩 동작을 수행하면서 후속 하드 비트를 프리-로드하는 방법을 설명하기 위한 도면,
도4는 본 발명의 실시 예에 따라 도1의 ECC 디코더가 소프트 디코딩 동작을 수행하는 방법을 설명하기 위한 도면,
도5는 본 발명의 실시 예에 따라 도1의 ECC 디코더가 소프트 디코딩 동작을 수행하면서 후속 하드 비트를 프리-로드하는 방법을 설명하기 위한 도면,
도6은 도1의 제2 변환부의 구성을 예시적으로 도시한 도면,
도7은 하드 디코딩 동작이 수행될 때 도6의 제2 변환부의 동작을 구체적으로 설명하기 위한 도면,
도8은 소프트 디코딩 동작이 수행될 때 도6의 제2 변환부의 동작을 구체적으로 설명하기 위한 도면,
도9는 도1의 ECC 디코더의 동작 방법을 도시하는 순서도,
도10은 본 발명의 실시 예에 따른 ECC 디코더를 포함하는 메모리 시스템을 도시한 블록도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서에서 '및/또는'이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, '연결되는/결합되는'이란 표현은 다른 구성 요소와 직접적으로 연결되거나 다른 구성 요소를 통해서 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 '포함한다' 또는 '포함하는'으로 언급된 구성 요소, 단계, 동작 및 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 ECC(Error Correcting Code) 디코더(10)를 도시한 블록도이다.
ECC 디코더(10)는 채널(CH)로부터 전송된 데이터, 즉, 입력 값들(IV1~IVn)에 대해 ECC에 근거한 디코딩 동작을 수행하고, 에러 정정된 데이터(CV1~CVn)를 출력할 수 있다. 디코딩 동작은 하드 디코딩 동작과 하드 디코딩 동작이 실패한 경우 수행되는 소프트 디코딩 동작을 포함할 수 있다. 디코딩 동작은, 예를 들어, LDPC(Low-Density Parity-Check) 부호에 근거한 최소-합(min-sum) 알고리즘에 따라 수행될 수 있지만, 본 발명의 실시 예는 이에 제한되지 않는다. 하드 디코딩 동작 및 소프트 디코딩 동작 각각은 디코딩 동작이 성공할 때까지 최대 이터레이션 횟수 내로 이터레이션을 반복함으로써 수행될 수 있다.
채널(CH)은, 예를 들어, 메모리 장치(미도시됨)와 연결될 수 있고, 이 경우 입력 값들(IV1~IVn)은 메모리 장치에 포함된 메모리 셀들로부터 리드된 데이터일 수 있다.
하드 디코딩 동작이 수행될 때, 입력 값들(IV1~IVn)은 계산부(15)의 변수 노드들(V1~Vn)에 각각 대응하는 하드 비트들(H1~Hn)일 수 있다. 채널(CH)이 메모리 장치와 연결될 때, 하드 비트들(H1~Hn) 각각은 대응하는 메모리 셀에 대한 한번의 리드 동작을 통해, 대응하는 메모리 셀로부터 리드된 데이터일 수 있다. 한번의 리드 동작은 한번의 리드 전압이 메모리 셀로 인가되어 하나의 값(즉, 하드 비트)을 리드하는 것을 의미할 수 있다.
소프트 디코딩 동작이 수행될 때, 입력 값들(IV1~IVn)은 변수 노드들(V1~Vn)에 각각 대응하는 소프트 비트 세트들(S1~Sn)일 수 있다. 소프트 비트 세트들(S1~Sn) 각각은 복수의 소프트 비트들로 구성되고, 복수의 소프트 비트들 중 어느 하나는 하드 비트와 동일할 수 있다. 예를 들어, 제1 소프트 비트 세트(S1)는 제1 하드 비트(H1)를 포함하는 복수의 소프트 비트들로 구성될 수 있다. 채널(CH)이 메모리 장치와 연결될 때, 소프트 비트 세트들(S1~Sn) 각각은 대응하는 메모리 셀에 대한 복수의 리드 동작들을 통해, 대응하는 메모리 셀로부터 리드된 데이터일 수 있다. 복수의 리드 동작들은 복수의 리드 전압들이 메모리 셀로 인가되어 복수의 값들(즉, 소프트 비트들)을 리드하는 것을 의미할 수 있다.
ECC 디코더(10)는 디코더 제어부(11), 메모리(12), 제1 변환부(13), 제2 변환부(14), 및 계산부(15)를 포함할 수 있다.
디코더 제어부(11)는 ECC 디코더(10)의 제반 동작을 제어할 수 있다. 디코더 제어부(11)는 하드 디코딩 동작 및 소프트 디코딩 동작 중 어느 하나가 수행 중임을 나타내는 디코딩 모드 신호(MD)를 생성할 수 있다. 실시 예에 따라, 디코딩 모드 신호(MD)는 소프트 디코딩 동작에서 각 신뢰도 값을 몇비트로 생성할 것인지를 더 나타낼 수 있다. 디코더 제어부(11)는 최대 이터레이션 횟수에 근거하여, 하드 디코딩 동작 및 소프트 디코딩 동작의 이터레이션을 반복할지 여부를 결정할 수 있다. 디코더 제어부(11)는 메모리(12)의 라이트 동작 및 리드 동작에 관한 제어 신호를 생성하고, 제어 신호를 메모리(12)로 전송할 수 있다.
메모리(12)는 복수의 변수 노드들(V1~Vn)에 각각 대응하는 복수의 메모리 영역들(M1~Mn)을 포함할 수 있다. 메모리 영역들(M1~Mn) 각각은 대응하는 변수 노드에 관련된 데이터를 저장하기 위해 사용되고, 다른 변수 노드에 관련된 데이터는 저장하지 않을 수 있다. 후술될 바와 같이, 대응하는 변수 노드에 관련된 데이터란, 채널(CH)로부터 직접 전달된 정보로서, 해당 변수 노드에 대응하는 하드 비트 및 해당 변수 노드로 입력될 신뢰도 값일 수 있다. 메모리(12)는 디코더 제어부(11)로부터 전송된 제어 신호에 응답하여, 메모리 영역들(M1~Mn)에 대해 라이트 동작 및 리드 동작을 수행할 수 있다.
메모리 영역들(M1~Mn) 각각은 2 이상의 비트들을 저장가능한 크기를 가질 수 있다. 메모리 영역들(M1~Mn) 각각은 변수 노드들(V1~Vn) 각각으로 입력될 신뢰도 값에 대응하는 크기를 가질 수 있다. 실시 예에 따라, 메모리 영역들(M1~Mn) 각각은 메모리 영역으로 프리-로드될 후속 하드 비트를 추가적으로 저장가능한 크기를 가질 수 있다.
메모리(12)는 DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory) 등을 포함할 수 있다.
제1 변환부(13) 및 제2 변환부(14)는 디코딩 모드 신호(MD)에 응답하여 동작할 수 있다.
하드 디코딩 동작이 수행될 때, 즉, 디코딩 모드 신호(MD)가 하드 디코딩 동작이 수행 중임을 나타낼 때, 제1 변환부(13)는 채널(CH)로부터 전송된 하드 비트들(H1~Hn)을 메모리 영역들(M1~Mn)에 각각 저장되도록 메모리(12)로 전송할 수 있다. 따라서, 하드 디코딩 동작이 수행될 때, 메모리 영역들(M1~Mn) 각각에서는 1비트의 구역만 사용되고, 나머지 구역들은 사용되지 않을 수 있다.
하드 디코딩 동작이 수행될 때, 제2 변환부(14)는 이터레이션이 반복될 때마다, 메모리 영역들(M1~Mn)에 저장된 하드 비트들(H1~Hn)을 수신하고, 하드 비트들(H1~Hn)에 각각 대응하는 신뢰도 값들(R1~Rn)(하드 신뢰도 값들로 언급될 수도 있음)을 결정하고, 신뢰도 값들(R1~Rn)을 변수 노드들(V1~Vn)로 전송할 수 있다. 예를 들어, 제2 변환부(14)는 제1 메모리 영역(M1)에 저장된 1비트의 제1 하드 비트(H1)에 대응하는 제1 신뢰도 값(R1)을 결정하고, 제1 신뢰도 값(R1)을 제1 변수 노드(V1)로 전송할 수 있다. 신뢰도 값들(R1~Rn) 각각은 2 이상의 비트들로 구성될 수 있다. 신뢰도 값들(R1~Rn) 각각은, 예를 들어, LLR(Log Likelihood Ratio)일 수 있다. 제2 변환부(14)는 각 하드 비트에 따라 신뢰도 값의 사인을 결정하고 하드 비트에 무관한 고정 값을 신뢰도 값의 크기로 결정함으로써, 각 하드 비트에 대응하는 신뢰도 값을 결정할 수 있다. 예를 들어, 제2 변환부(14)는 하드 비트들(H1~Hn) 각각에 대해, 하드 비트가 0일 때 +3을 대응하는 신뢰도 값으로 결정하고, 하드 비트가 1일 때 -3을 대응하는 신뢰도 값으로 결정할 수 있지만, 본 발명의 실시 예는 이에 제한되지 않는다.
정리하면, ECC 디코더(10)는 하드 디코딩 동작을 수행할 때 메모리 영역들(M1~Mn) 각각에 1비트의 하드 비트만 저장해 놓고, 이터레이션이 반복될 때마다 제2 변환부(14)를 통해 하드 비트에 대응하는 신뢰도 값을 생성하여 사용할 수 있다. 즉, 하드 디코딩 동작에서 하드 비트들(H1~Hn)의 신뢰도 값들(R1~Rn)은 동일한 크기를 가지면서 각 하드 비트가 0인지 또는 1인지에 따라 플러스 부호 또는 마이너스 부호(또는 그 반대)를 가질 것이기 때문에, ECC 디코더(10)는 계산부(15)에서 실제로 사용되는 신뢰도 값들(R1~Rn)을 메모리(12)에 저장하지 않고 대신 하드 비트들(H1~Hn)을 저장함으로써 메모리(12)의 사용을 최소화시킬 수 있다.
실시 예에 따라, 하드 디코딩 동작이 수행될 때, 메모리 영역들(M1~Mn)에서 하드 비트들(H1~Hn)이 저장되어 있는 구역들을 제외하고 남은 구역들은 채널(CH)로부터 이어서 전송된 후속 하드 비트들을 저장하기 위해 사용될 수 있다. 후속 하드 비트들은 현재의 하드 비트들(H1~Hn)에 대한 현재의 하드 디코딩 동작이 성공한 뒤에 후속 하드 디코딩 동작이 수행될 데이터일 수 있다. 예를 들어, 현재의 하드 비트들(H1~Hn)이 메모리 장치의 제1 페이지로부터 리드된 데이터일 때, 후속 하드 비트들은 메모리 장치의 제2 페이지로부터 리드된 데이터일 수 있다.
소프트 디코딩 동작이 수행될 때, 즉, 디코딩 모드 신호(MD)가 소프트 디코딩 동작이 수행 중임을 나타낼 때, 제1 변환부(13)는 채널(CH)로부터 전송된 소프트 비트 세트들(S1~Sn)에 각각 대응하는 신뢰도 값들(R1~Rn)(소프트 신뢰도 값들로 언급될 수도 있음)을 생성하고, 신뢰도 값들(R1~Rn)이 메모리 영역들(M1~Mn)에 각각 저장되도록 메모리(12)로 전송할 수 있다. 예를 들어, 제1 변환부(13)는 제1 소프트 비트 세트(S1)에 대응하는 제1 신뢰도 값(R1)을 생성하고, 제1 신뢰도 값(R1)이 제1 메모리 영역(M1)에 저장되도록 메모리(12)로 전송할 수 있다. 즉, 소프트 비트 세트들(S1~Sn) 각각은 복수의 소프트 비트들로 구성되므로, 소프트 비트 세트들(S1~Sn)을 메모리(12)에 저장한 뒤 이터레이션이 반복될 때마다 신뢰도 값들(R1~Rn)로 변경하여 사용하는 방식은 메모리(12)의 사용을 최소화하는 데 실익이 없을 것이다. 따라서, 메모리(12)는 소프트 비트 세트들(S1~Sn)을 저장하기 보단 신뢰도 값들(R1~Rn)을 저장하도록 구현될 수 있다.
소프트 디코딩 동작이 수행될 때, 제2 변환부(14)는 이터레이션이 반복될 때마다, 메모리 영역들(M1~Mn)에 저장된 신뢰도 값들(R1~Rn)을 수신하고, 신뢰도 값들(R1~Rn)을 변수 노드들(V1~Vn)로 각각 전송할 수 있다. 즉, 소프트 디코딩 동작이 수행될 때, 신뢰도 값들(R1~Rn)은 제1 변환부(13)에 의해 이미 생성되었으므로 제2 변환부(14)는 이터레이션이 반복될 때마다, 신뢰도 값들(R1~Rn)을 메모리 영역들(M1~Mn)로부터 변수 노드들(V1~Vn)로 그대로 전달할 수 있다.
실시 예에 따라, 소프트 디코딩 동작이 수행될 때, 메모리 영역들(M1~Mn)에서 신뢰도 값들(R1~Rn)이 저장되어 있는 구역들을 제외하고 남은 구역들이 있다면, 해당 남은 구역들은 채널(CH)로부터 이어서 전송된 후속 하드 비트들을 저장하기 위해 사용될 수 있다. 후속 하드 비트들은 소프트 비트 세트들(S1~Sn)에 대한 소프트 디코딩 동작이 성공한 뒤에 후속 하드 디코딩 동작이 수행될 데이터일 수 있다. 예를 들어, 현재의 소프트 비트 세트들(S1~Sn)이 메모리 장치의 제1 페이지로부터 리드된 데이터일 때, 후속 하드 비트들은 메모리 장치의 제2 페이지로부터 리드된 데이터일 수 있다.
계산부(15)는 변수 노드들(V1~Vn)을 포함할 수 있다. 변수 노드들(V1~Vn)은 제2 변환부(14)로부터 전송된 신뢰도 값들(R1~Rn)을 각각 수신하고, 신뢰도 값들(R1~Rn)을 사용하여 정해진 ECC 알고리즘에 따라 디코딩 동작을 수행할 수 있다.
정리하면, 본 발명에 따르면, 하드 디코딩 동작이 수행될 때 메모리(12)의 사용이 최소화되어 소비 전력이 감소될 수 있다.
또한 본 발명의 실시 예에 따르면, 메모리 영역들(M1~Mn)에서 사용되지 않고 남은 구역들은 후속 하드 비트들을 프리-로드하는데 사용되어 후속 하드 디코딩 동작이 더욱 신속하게 개시될 수 있다.
도2는 본 발명의 실시 예에 따라 도1의 ECC 디코더(10)가 하드 디코딩 동작을 수행하는 방법을 설명하기 위한 도면이다. 이하에서는 예시적으로 제1 하드 비트(H1)를 처리하는 방법이 도시된다. 다른 하드 비트들(H2~Hn)을 처리하는 방법은 제1 하드 비트(H1)에 대한 방법과 동일할 수 있다. 또한, 이하에서 메모리 영역들(M1~Mn) 각각은 예시적으로 3비트들을 저장하도록 구성되고, 따라서, 제1 메모리 영역(M1)은 3비트들을 각각 저장하는 제1 내지 제3 구역들(L1~L3)을 포함하지만, 본 발명의 실시 예는 이에 제한되지 않는다.
도2를 참조하면, 하드 디코딩 동작이 수행될 때, 제1 변환부(13)는 채널(CH)로부터 제1 하드 비트(H1)를 수신할 수 있다. 제1 변환부(13)는 제1 하드 비트(H1)가 제1 메모리 영역(M1)의 제1 구역(L1)에 저장되도록 메모리(12)로 전송할 수 있다. 메모리(12)는 디코더 제어부(11)의 제어에 따라 제1 메모리 영역(M1)의 제1 구역(L1)에 제1 하드 비트(H1)를 저장할 수 있다. 제1 메모리 영역(M1)에서 제2 및 제3 구역들(L2, L3)은 사용되지 않을 수 있다.
제2 변환부(14)는 하드 디코딩 동작의 이터레이션이 반복될 때마다, 제1 구역(L1)으로부터 리드된 제1 하드 비트(H1)에 대응하는 제1 신뢰도 값(R1)을 결정하고, 제1 신뢰도 값(R1)을 제1 변수 노드(V1)로 전송할 수 있다. 예를 들어, 제2 변환부(14)는 제1 하드 비트(H1)가 0일 때 +3을 제1 신뢰도 값(R1)으로 결정하고, 제1 하드 비트(H1)가 1일 때 -3을 제1 신뢰도 값(R1)으로 결정할 수 있다.
계산부(15)는 제1 변수 노드(V1)로 전송된 제1 신뢰도 값(R1) 및 하드 비트들(H2~Hn)에 대해 변수 노드들(V2~Vn)로 전송된 신뢰도 값들(R2~Rn)을 사용하여, 하드 디코딩 동작을 수행할 수 있다.
도3은 본 발명의 실시 예에 따라 도1의 ECC 디코더(10)가 하드 디코딩 동작을 수행하면서 후속 하드 비트(H11)를 프리-로드하는 방법을 설명하기 위한 도면이다.
도3을 참조하면, 도2를 참조하여 설명한 바와 같이 제1 하드 비트(H1)가 제1 메모리 영역(M1)의 제1 구역(L1)에 저장된 뒤, 제1 변환부(13)는 채널(CH)로부터 제1 하드 비트(H1)에 후속하는 후속 하드 비트(H11)를 수신할 수 있다. 제1 변환부(13)는 후속 하드 비트(H11)를 제1 메모리 영역(M1)에서, 예를 들어, 제2 구역(L2)에 저장되도록 메모리(12)로 전송할 수 있다. 즉, 계산부(15)가 제1 하드 비트(H1)에 대한 하드 디코딩 동작을 수행하고 있을 때 후속 하드 비트(H11)는 제2 구역(L2)에 프리-로드될 수 있다. 제1 하드 비트(H1)에 대한 하드 디코딩 동작이 성공한 뒤, 후속 하드 비트(H11)에 대한 후속 하드 디코딩 동작이 이어서 수행될 수 있다. 즉, 제2 변환부(14)가 제2 구역(L2)으로부터 전송된 후속 하드 비트(H11)에 대응하는 제1 신뢰도 값(R1)을 제1 변수 노드(V1)로 전송함으로써 후속 하드 비트(H11)에 대한 후속 하드 디코딩 동작이 수행될 수 있다. 한편, 제1 메모리 영역(M1)에서 제3 구역(L3)은 사용되지 않을 수 있다.
실시 예에 따라, 제1 메모리 영역(M1)의 제3 구역(L3)도 후속 하드 비트(H11)에 후속하는 하드 비트(미도시됨)를 저장하기 위해 사용될 수도 있다. 이 경우, 후속 하드 비트(H11)에 대한 하드 디코딩 동작이 성공한 뒤, 제3 구역(L3)에 저장된 하드 비트에 대한 하드 디코딩 동작이 이어서 수행될 수 있다.
다른 메모리 영역들(M2~Mn)에서 하드 비트들(H2~Hn)이 저장된 뒤 남는 구역들도 후속 하드 비트들을 프리-로드하기 위해 유사하게 사용될 수 있다.
한편, 만일 제1 하드 비트(H1)에 대한 하드 디코딩 동작이 실패할 경우에는 제1 소프트 비트 세트(S1)에 대한 소프트 디코딩 동작을 이어서 수행하기 위해서, 제1 메모리 영역(M1)에 프리 로드된 후속 하드 비트(H11)를 무시하고, 도4에서 후술될 바와 같이 제1 소프트 비트 세트(S1)에 대응하는 제1 신뢰도 값(R1)이 제1 메모리 영역(M1)에 저장될 수 있다.
도4는 본 발명의 실시 예에 따라 도1의 ECC 디코더(10)가 소프트 디코딩 동작을 수행하는 방법을 설명하기 위한 도면이다. 이하에서는 예시적으로 제1 소프트 비트 세트(S1)를 처리하는 방법이 도시된다. 다른 소프트 비트 세트들(S2~Sn)을 처리하는 방법은 제1 소프트 비트 세트(S1)에 대한 방법과 동일할 수 있다.
도4를 참조하면, 소프트 디코딩 동작이 수행될 때, 제1 변환부(13)는 채널(CH)로부터 제1 소프트 비트 세트(S1)를 수신할 수 있다. 제1 변환부(13)는 제1 소프트 비트 세트(S1)에 대응하는 제1 신뢰도 값(R1)을 결정하고, 제1 신뢰도 값(R1)이 제1 메모리 영역(M1)에 저장되도록 메모리(12)로 전송할 수 있다. 제1 신뢰도 값(R1)은, 예를 들어, 제1 내지 제3 신뢰도 비트들(r1~r3)로 구성될 수 있다. 예를 들어, 제1 신뢰도 비트(r1)는 사인을 나타내고, 제2 및 제3 신뢰도 비트들(r2, r3)은 크기를 나타낼 수 있다. 메모리(12)는 디코더 제어부(11)의 제어에 따라 제1 내지 제3 신뢰도 비트들(r1~r3)을 제1 메모리 영역(M1)의 제1 내지 제3 구역들(L1~L3)에 각각 저장할 수 있다.
제2 변환부(14)는 소프트 디코딩 동작의 이터레이션이 반복될 때마다, 제1 메모리 영역(M1)으로부터 리드된 제1 신뢰도 값(R1)을 제1 변수 노드(V1)로 전송할 수 있다.
계산부(15)는 제1 변수 노드(V1)로 전송된 제1 신뢰도 값(R1) 및 소프트 비트 세트들(S2~Sn)에 대해 변수 노드들(V2~Vn)로 전송된 신뢰도 값들(R2~Rn)을 사용하여, 소프트 디코딩 동작을 수행할 수 있다.
실시 예에 따라, 제1 메모리 영역(M1)에 후속 하드 비트(H11)가 프리-로드되어 있는 상태에서 제1 신뢰도 값(R1)이 도시된 바와 달리 제1 및 제2 신뢰도 비트들(r1, r2)만으로 구성될 때, 제1 메모리 영역(M1)에 프리-로드된 후속 하드 비트(H11)는 그대로 유지되고, 제1 메모리 영역(M1)에서 남는 구역에 제1 및 제2 신뢰도 비트들(r1, r2)이 저장될 수도 있다.
도5는 본 발명의 실시 예에 따라 도1의 ECC 디코더(10)가 소프트 디코딩 동작을 수행하면서 후속 하드 비트(H11)를 프리-로드하는 방법을 설명하기 위한 도면이다.
도5를 참조하면, 도4의 예시와 달리 소프트 디코딩 동작의 제1 신뢰도 값(R1)은 제1 및 제2 신뢰도 비트들(r1, r2)만으로 구성될 수도 있다. 이 경우, 제1 신뢰도 값(R1)은 제1 메모리 영역(M1)의 제1 및 제2 구역들(L1, L2)에 저장될 수 있다. 따라서, 제1 신뢰도 값(R1)이 제1 메모리 영역(M1)의 제1 및 제2 구역들(L1, L2)에 저장된 뒤, 제1 변환부(13)는 채널(CH)로부터 제1 소프트 비트 세트(S1)에 후속하는 후속 하드 비트(H11)를 수신하고 후속 하드 비트(H11)가 제1 메모리 영역(M1)에서 제3 구역(L3)에 저장되도록 메모리(12)로 전송할 수 있다. 즉, 계산부(15)가 제1 소프트 비트 세트(S1)에 대한 소프트 디코딩 동작을 수행하고 있을 때 후속 하드 비트(H11)는 제3 구역(L3)에 프리-로드될 수 있다. 제1 소프트 비트 세트(S1)에 대한 소프트 디코딩 동작이 성공한 뒤, 후속 하드 비트(H11)에 대한 후속 하드 디코딩 동작이 이어서 수행될 수 있다. 즉, 제2 변환부(14)가 제3 구역(L3)으로부터 전송된 후속 하드 비트(H11)에 대응하는 제1 신뢰도 값(R1)을 제1 변수 노드(V1)로 전송함으로써 후속 하드 비트(H11)에 대한 후속 하드 디코딩 동작이 수행될 수 있다.
도6은 도1의 제2 변환부(14)의 구성을 예시적으로 도시한 도면이다. 도6은 예를 들어 제1 메모리 영역(M1) 및 제1 변수 노드(V1)에 대한 제2 변환부(14)의 일부분이 도시되지만, 다른 메모리 영역들(M2~Mn) 및 다른 변수 노드들(V1~Vn)에 대한 부분도 유사하게 구성될 수 있다.
도6을 참조하면, 제2 변환부(14)는 제1 메모리 영역(M1)의 제1 내지 제3 구역들(L1~L3)과 각각 연결된 제1 내지 제3 입력 라인들(I1~I3), 제1 변수 노드(V1)와 연결된 제1 내지 제3 출력 라인들(O1~O3), 및 제1 내지 제3 고정된 신뢰도 비트들(d1~d3)을 출력하는 제1 내지 제3 고정 값 라인들(D1~D3)에 연결될 수 있다. 제2 변환부(14)는 제1 내지 제3 입력 라인들(I1~I3)을 통해 제1 메모리 영역(M1)의 제1 내지 제3 구역들(L1~L3)로부터 전송된 값들을 각각 수신할 수 있다. 제2 변환부(14)는 제1 내지 제3 출력 라인들(O1~O3)을 통해 제1 변수 노드(V1)로 제1 신뢰도 값(R1)을 출력할 수 있다.
제1 출력 라인(O1)은 제1 스위치(W1)에 연결되고, 제1 스위치(W1)는 디코딩 모드 신호(MD)에 응답하여 제1 입력 라인(I1)과 제1 고정 값 라인(D1) 중 어느 하나에 연결될 수 있다. 제2 출력 라인(O2)은 제2 스위치(W2)에 연결되고, 제2 스위치(W2)는 디코딩 모드 신호(MD)에 응답하여 제2 입력 라인(I2)과 제2 고정 값 라인(D2) 중 어느 하나에 연결될 수 있다. 제3 출력 라인(O3)은 제3 스위치(W3)에 연결되고, 제3 스위치(W3)는 디코딩 모드 신호(MD)에 응답하여 제3 입력 라인(I3)과 제3 고정 값 라인(D3) 중 어느 하나에 연결될 수 있다. 제1 고정 값 라인(D1)은 제1 고정된 신뢰도 비트(d1)를 출력하고, 제2 고정 값 라인(D2)은 제2 고정된 신뢰도 비트(d2)를 출력하고, 제3 고정 값 라인(D3)은 제3 고정된 신뢰도 비트(d3)를 출력할 수 있다. 제1 내지 제3 고정된 신뢰도 비트들(d1~d3)은 예를 들어 모두 1일 수 있다.
제1 내지 제3 스위치들(W1~W3) 각각은 하드 디코딩 동작을 나타내는 디코딩 모드 신호(MD)에 응답하여 선택적으로 대응하는 입력 라인 또는 대응하는 고정 값 라인에 연결될 수 있다. 구체적으로, 제1 내지 제3 스위치들(W1~W3) 중 제1 메모리 영역(M1)에서 제1 하드 비트(H1)가 저장된 구역에 대응하는 스위치는 대응하는 입력 라인에 연결되고, 나머지 스위치들은 대응하는 고정 값 라인들에 각각 연결될 수 있다.
제1 내지 제3 스위치들(W1~W3)은 소프트 디코딩 동작을 나타내는 디코딩 모드 신호(MD)에 응답하여 제1 내지 제3 입력 라인들(I1~I3)에 각각 연결될 수 있다.
실시 예에 따라, 입력 라인들의 개수 및 출력 라인들의 개수는 제1 메모리 영역(M1)에 포함된 구역들의 개수와 동일할 수 있다.
도7은 하드 디코딩 동작이 수행될 때 도6의 제2 변환부(14)의 동작을 구체적으로 설명하기 위한 도면이다.
하드 디코딩 동작이 수행될 때, 예를 들어 제1 메모리 영역(M1)에서 제1 구역(L1)은 제1 하드 비트(H1)를 저장하고, 제2 및 제3 구역은 사용되지 않을 수 있다.
하드 디코딩 동작이 수행될 때, 제1 스위치(W1)는 제1 입력 라인(I1)에 연결될 수 있다. 제2 변환부(14)는 제1 입력 라인(I1)을 통해 제1 구역(L1)으로부터 제1 하드 비트(H1)를 수신하고, 제1 하드 비트(H1)를 제1 신뢰도 값(R1)의 사인으로서 제1 출력 라인(O1)을 통해 계산부(15)로 전송할 수 있다. 예를 들어, 1인 제1 하드 비트(H1)는 마이너스 사인으로서 계산부(15)로 전송되고, 0인 제1 하드 비트(H1)는 플러스 사인으로서 계산부(15)로 전송될 수 있다.
그리고 제2 스위치(W2) 및 제3 스위치(W3)는 제2 고정 값 라인(D2) 및 제3 고정 값 라인(D3)에 각각 연결될 수 있다. 제2 변환부(14)는 제2 고정 값 라인(D2)으로부터 전송된 제2 고정된 신뢰도 비트(d2)를 제2 출력 라인(O2)을 통해 계산부(15)로 전송하고, 제3 고정 값 라인(D3)으로부터 전송된 제3 고정된 신뢰도 비트(d3)를 제3 출력 라인(O3)을 통해 계산부(15)로 전송할 수 있다. 예를 들어, 하드 디코딩 동작에서 제1 신뢰도 값(R1)이 +3 또는 -3으로 결정될 때 제2 고정된 신뢰도 비트(d2) 및 제3 고정된 신뢰도 비트(d3)는 모두 1일 수 있다.
도8은 소프트 디코딩 동작이 수행될 때 도6의 제2 변환부(14)의 동작을 구체적으로 설명하기 위한 도면이다.
소프트 디코딩 동작이 수행될 때, 상술한 바와 같이 제1 메모리 영역(M1)에서 제1 내지 제3 구역들(L1~L3)은 제1 내지 제3 신뢰도 비트들(r1~r3)로 구성된 제1 신뢰도 값(R1)을 저장할 수 있다.
소프트 디코딩 동작이 수행될 때, 제1 스위치(W1) 내지 제3 스위치(W3)는 제1 입력 라인(I1) 내지 제3 입력 라인(I3)에 각각 연결될 수 있다. 제2 변환부(14)는 제1 내지 제3 입력 라인들(I1~I3)을 통해 제1 내지 제3 구역들(L1~L3)로부터 전송된 제1 내지 제3 신뢰도 비트들(r1~r3)을 수신하고, 제1 내지 제3 신뢰도 비트들(r1~r3)을 제1 신뢰도 값(R1)으로서 제1 내지 제3 출력 라인들(O1~O3)을 통해 제1 변수 노드(V1)로 전송할 수 있다.
도9는 도1의 ECC 디코더(10)의 동작 방법을 도시하는 순서도이다.
도9를 참조하면, 단계(S110)에서, 제1 변환부(13)는 채널(CH)로부터 전송된 하드 비트들(H1~Hn)이 메모리 영역들(M1~Mn)에 각각 저장되도록 메모리(12)로 전송할 수 있다. 실시 예에 따라, 제1 변환부(13)는 메모리 영역들(M1~Mn)에서 하드 비트들(H1~Hn)을 저장하고 남은 구역들에 채널(CH)로부터 프리-로드된 후속 하드 비트들이 추가적으로 저장되도록 메모리(12)로 전송할 수 있다.
단계(S120)에서, 제2 변환부(14)는 메모리 영역들(M1~Mn)로부터 리드된 하드 비트들(H1~Hn)에 대응하는 신뢰도 값들(R1~Rn)을 계산부(15)의 변수 노드들(V1~Vn)로 전송할 수 있다.
단계(S130)에서, 계산부(15)는 신뢰도 값들(R1~Rn)을 사용하여 ECC 알고리즘에 근거한 하드 디코딩 동작을 수행할 수 있다.
단계(S140)에서, 계산부(15)는 하드 디코딩 동작이 성공했는지 결정할 수 있다. 하드 디코딩 동작이 성공했을 때, 절차는 종료될 수 있다. 하드 디코딩 동작이 실패했을 때, 절차는 단계(S150)로 진행될 수 있다.
단계(S150)에서, 디코더 제어부(11)는 하드 디코딩 동작의 이터레이션을 반복할 것인지를 결정할 수 있다. 예를 들어, 현재 이터레이션 횟수가 최대 이터레이션 횟수 미만일 때, 디코더 제어부(11)는 이터레이션을 반복할 것으로 결정할 수 있다. 현재 이터레이션 횟수가 최대 이터레이션 횟수에 도달했을 때, 디코더 제어부(11)는 이터레이션을 반복하지 않을 것으로 결정할 수 있다. 이터레이션을 반복할 것으로 결정될 때, 절차는 단계(S120)로 진행될 수 있다. 이터레이션을 반복하지 않을 것으로 결정될 때, 절차는 단계(S160)로 진행될 수 있다.
단계(S160)에서, 제1 변환부(13)는 채널(CH)로부터 전송된 소프트 비트 세트들(S1~Sn)에 대응하는 신뢰도 값들(R1~Rn)이 메모리 영역들(M1~Mn)에 각각 저장되도록 메모리(12)로 전송할 수 있다. 실시 예에 따라, 제1 변환부(13)는 메모리 영역들(M1~Mn)에서 신뢰도 값들(R1~Rn)을 저장하고 남은 구역들에 채널(CH)로부터 프리-로드된 후속 하드 비트들이 추가적으로 저장되도록 메모리(12)로 전송할 수 있다.
단계(S170)에서, 제2 변환부(14)는 메모리 영역들(M1~Mn)로부터 리드된 신뢰도 값들(R1~Rn)을 계산부(15)의 변수 노드들(V1~Vn)로 전송할 수 있다.
단계(S180)에서, 계산부(15)는 신뢰도 값들(R1~Rn)을 사용하여 ECC 알고리즘에 근거한 소프트 디코딩 동작을 수행할 수 있다.
단계(S190)에서, 계산부(15)는 소프트 디코딩 동작이 성공했는지 결정할 수 있다. 소프트 디코딩 동작이 성공했을 때, 절차는 종료될 수 있다. 소프트 디코딩 동작이 실패했을 때, 절차는 단계(S200)로 진행될 수 있다.
단계(S200)에서, 디코더 제어부(11)는 소프트 디코딩 동작의 이터레이션을 반복할 것인지를 결정할 수 있다. 예를 들어, 현재 이터레이션 횟수가 최대 이터레이션 횟수 미만일 때, 디코더 제어부(11)는 이터레이션을 반복할 것으로 결정할 수 있다. 현재 이터레이션 횟수가 최대 이터레이션 횟수에 도달했을 때, 디코더 제어부(11)는 이터레이션을 반복하지 않을 것으로 결정할 수 있다. 이터레이션을 반복할 것으로 결정될 때, 절차는 단계(S170)로 진행될 수 있다. 이터레이션을 반복하지 않을 것으로 결정될 때, 디코딩 동작은 실패인 것으로 결정되고 절차는 종료될 수 있다.
도10은 본 발명의 실시 예에 따른 ECC 디코더(112)를 포함하는 메모리 시스템(100)을 도시한 블록도이다.
도10을 참조하면, 메모리 시스템(100)은 외부의 호스트 장치의 라이트 요청에 응답하여, 호스트 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 메모리 시스템(100)은 호스트 장치의 리드 요청에 응답하여, 저장된 데이터를 호스트 장치로 제공하도록 구성될 수 있다.
메모리 시스템(100)은 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive)를 포함할 수 있다.
메모리 시스템(100)은 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있다.
컨트롤러(110)는 메모리 시스템(100)의 제반 동작을 제어할 수 있다. 컨트롤러(110)는 호스트 장치의 지시에 따라 포그라운드 동작을 수행하기 위해 메모리 장치(120)를 제어할 수 있다. 포그라운드 동작은 호스트 장치의 지시, 즉, 라이트 요청 및 리드 요청에 따라 메모리 장치(120)에 데이터를 라이트하고 메모리 장치(120)로부터 데이터를 리드하는 동작을 포함할 수 있다.
또한, 컨트롤러(110)는 호스트 장치와 독립적으로 내부적으로 필요한 백그라운드 동작을 수행하기 위해서 메모리 장치(120)를 제어할 수 있다. 백그라운드 동작은 메모리 장치(120)에 대한 웨어 레벨링 동작, 가비지 컬렉션 동작, 소거 동작, 리드 리클레임 동작, 및 리프레시 동작 중 적어도 하나를 포함할 수 있다. 백그라운드 동작은 포그라운드 동작처럼 메모리 장치(120)에 데이터를 라이트하고 메모리 장치(120)로부터 데이터를 리드하는 동작을 포함할 수 있다.
컨트롤러(110)는 컨트롤 유닛(111)과 ECC 디코더(112)를 포함할 수 있다.
컨트롤 유닛(111)은 메모리 장치(120)의 라이트 동작 및 리드 동작을 제어하고, ECC 디코더(112)의 디코딩 동작을 제어할 수 있다. 컨트롤 유닛(111)은 메모리 장치(120)가 리드 동작을 수행하여 데이터를 출력하고, ECC 디코더(112)가 메모리 장치(120)로부터 출력된 데이터에 대해 디코딩 동작을 수행하도록 제어할 수 있다. 실시 예에 따라, 컨트롤 유닛(111)은 ECC 디코더(112)가 디코딩 동작을 수행하고 있는 데이터의 후속 데이터가 ECC 디코더(112)로 프리-로드되도록 제어할 수 있다. 컨트롤 유닛(111)은 현재 디코딩 동작이 성공할 때 ECC 디코더(112)에 프리-로드된 데이터에 대해 ECC 디코더(112)가 후속 디코딩 동작을 이어서 수행하도록 제어할 수 있다.
ECC 디코더(112)는 도1의 ECC 디코더(10)와 실질적으로 동일하게 구성되고 동작할 수 있다.
메모리 장치(120)는 컨트롤러(110)의 제어에 따라, 컨트롤러(110)로부터 전송된 데이터를 저장하고, 저장된 데이터를 리드하여 컨트롤러(110)로 전송할 수 있다.
메모리 장치(120)는 비휘발성일 수 있다. 메모리 장치(120)는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: ECC 디코더
11: 디코더 제어부
12: 메모리
13: 제1 변환부
14: 제2 변환부
15: 계산부

Claims (20)

  1. 메모리 영역을 포함하는 메모리;
    채널로부터 전송된 하드 비트를 상기 메모리 영역의 제1 구역에 저장되도록 상기 메모리로 전송하도록 구성된 제1 변환부;
    하드 디코딩 동작의 이터레이션이 반복될 때마다, 상기 제1 구역으로부터 리드된 상기 하드 비트를 수신하고 상기 하드 비트에 대응하는 신뢰도 값을 출력하도록 구성된 제2 변환부; 및
    상기 신뢰도 값을 사용하여 상기 하드 디코딩 동작을 수행하도록 구성된 변수 노드를 포함하는 ECC 디코더.
  2. 제1항에 있어서,
    상기 메모리 영역은 상기 신뢰도 값에 대응하는 크기를 가지고,
    상기 메모리 영역에서 상기 제1 구역을 제외한 남은 구역들은 상기 하드 디코딩 동작이 수행될 때 사용되지 않는 ECC 디코더.
  3. 제1항에 있어서,
    상기 제1 변환부는 상기 하드 비트가 상기 제1 구역에 저장된 뒤, 상기 채널로부터 전송된 후속 하드 비트가 상기 메모리 영역의 제2 구역에 저장되도록 상기 메모리로 전송하고,
    상기 후속 하드 비트는 상기 하드 디코딩 동작이 성공한 뒤 후속 하드 디코딩 동작이 이어서 수행될 데이터인 ECC 디코더.
  4. 제1항에 있어서,
    상기 제1 변환부는 상기 채널로부터 전송된 소프트 비트 세트를 수신하고, 상기 소프트 비트 세트에 대응하는 신뢰도 값을 상기 메모리 영역에 저장되도록 상기 메모리로 전송하고,
    상기 제2 변환부는 소프트 디코딩 동작의 이터레이션이 반복될 때마다, 상기 메모리 영역으로부터 리드된 상기 신뢰도 값을 상기 변수 노드로 전송하고,
    상기 변수 노드는 상기 신뢰도 값을 사용하여 상기 소프트 디코딩 동작을 수행하는 ECC 디코더.
  5. 제4항에 있어서,
    상기 제1 변환부는 상기 소프트 비트 세트에 대응하는 상기 신뢰도 값이 상기 메모리 영역에 저장된 뒤, 상기 채널로부터 전송된 후속 하드 비트를 상기 메모리 영역의 남은 구역에 저장되도록 상기 메모리로 전송하고,
    상기 후속 하드 비트는 상기 소프트 디코딩 동작이 성공한 뒤 후속 하드 디코딩 동작이 이어서 수행될 데이터인 ECC 디코더.
  6. 제1항에 있어서,
    상기 제2 변환부는 상기 하드 비트에 따라 상기 신뢰도 값의 사인을 결정하고 상기 하드 비트에 무관한 고정 값을 상기 신뢰도 값의 크기로 결정함으로써, 상기 신뢰도 값을 출력하는 ECC 디코더.
  7. 제1항에 있어서,
    상기 제2 변환부는 상기 메모리 영역의 구역들로부터 리드된 값들을 각각 수신하기 위한 입력 라인들, 상기 제1 변수 노드로 상기 신뢰도 값을 출력하기 위한 출력 라인들, 및 고정된 신뢰도 비트들을 출력하는 고정 값 라인들에 연결되고,
    상기 출력 라인들은 스위치들에 각각 연결되고,
    상기 스위치들 각각은 상기 입력 라인들 중 대응하는 입력 라인과 상기 고정 값 라인들 중 대응하는 고정 값 라인을 스위칭하는 ECC 디코더.
  8. 제7항에 있어서,
    상기 하드 디코딩 동작이 수행될 때 상기 스위치들 중 제1 스위치는 제1 입력 라인과 연결되고 나머지 스위치들 각각은 상기 대응하는 고정 값 라인에 연결되고, 상기 제1 입력 라인은 상기 제1 구역으로부터 리드된 상기 하드 비트를 수신하고,
    소프트 디코딩 동작이 수행될 때 상기 스위치들 각각은 상기 대응하는 입력 라인에 연결되는 ECC 디코더.
  9. 제8항에 있어서,
    상기 제2 변환부는 상기 제1 입력 라인으로 수신한 상기 하드 비트를 상기 신뢰도 값의 사인으로서 상기 제1 스위치에 연결된 제1 출력 라인을 통해 상기 제1 변수 노드로 출력하는 ECC 디코더.
  10. 변수 노드;
    상기 변수 노드로 전송될 신뢰도 값에 대응하는 크기를 가지도록 구성된 메모리 영역을 포함하는 메모리;
    상기 변수 노드의 하드 디코딩 동작을 위해 채널로부터 전송된 하드 비트를 상기 메모리 영역의 제1 구역에 저장되도록 상기 메모리로 전송하고, 상기 채널로부터 이어서 전송된 후속 하드 비트를 상기 메모리 영역의 제2 구역에 저장되도록 상기 메모리로 전송하도록 구성된 제1 변환부; 및
    상기 하드 디코딩 동작을 위해 상기 메모리 영역으로부터 리드된 데이터에 근거하여 상기 신뢰도 값을 결정하고, 상기 신뢰도 값을 상기 변수 노드로 전송하도록 구성된 제2 변환부를 포함하는 ECC 디코더.
  11. 제10항에 있어서,
    상기 제2 변환부는 상기 하드 비트에 대한 하드 디코딩 동작의 이터레이션이 반복될 때마다, 상기 메모리 영역어로부터 리드된 상기 데이터를 수신하고 상기 신뢰도 값을 결정하는 ECC 디코더.
  12. 제10항에 있어서,
    상기 제1 변환부는 상기 변수 노드의 소프트 디코딩 동작을 위해 상기 채널로부터 전송된 소프트 비트 세트를 수신하고, 상기 소프트 비트 세트에 대응하는 신뢰도 값을 상기 메모리 영역에 저장되도록 상기 메모리로 전송하고,
    상기 제2 변환부는 상기 소프트 디코딩 동작을 위해 상기 메모리 영역으로부터 리드된 상기 신뢰도 값을 상기 변수 노드로 전송하는 ECC 디코더.
  13. 제12항에 있어서,
    상기 제1 변환부는 상기 소프트 비트 세트에 대응하는 상기 신뢰도 값이 상기 메모리 영역에 저장된 뒤, 상기 채널로부터 이어서 전송된 후속 하드 비트를 상기 메모리 영역의 남은 구역에 저장되도록 상기 메모리로 전송하고,
    상기 후속 하드 비트는 상기 소프트 디코딩 동작이 성공한 뒤 후속 하드 디코딩 동작이 이어서 수행될 데이터인 ECC 디코더.
  14. 제10항에 있어서,
    상기 제2 변환부는 상기 하드 비트에 따라 상기 신뢰도 값의 사인을 결정하고 상기 하드 비트에 무관한 고정 값을 상기 신뢰도 값의 크기로 결정함으로써, 상기 신뢰도 값을 결정하는 ECC 디코더.
  15. 제10항에 있어서,
    상기 제2 변환부는 상기 메모리 영역으로부터 리드된 상기 데이터를 수신하기 위한 입력 라인들, 상기 제1 변수 노드로 상기 신뢰도 값을 출력하기 위한 출력 라인들, 및 고정된 신뢰도 비트들을 출력하는 고정 값 라인들에 연결되고,
    상기 출력 라인들은 스위치들에 각각 연결되고,
    상기 스위치들 각각은 상기 입력 라인들 중 대응하는 입력 라인과 상기 고정 값 라인들 중 대응하는 고정 값 라인을 스위칭하는 ECC 디코더.
  16. 메모리 영역을 포함하는 메모리;
    하드 디코딩 동작에서 채널로부터 전송된 하드 비트를 상기 메모리 영역에 저장되도록 상기 메모리로 전송하고, 소프트 디코딩 동작에서 상기 채널로부터 전송된 소프트 비트 세트 대신 상기 소프트 비트 세트에 대응하는 소프트 신뢰도 값을 상기 메모리 영역에 저장되도록 상기 메모리로 전송하도록 구성된 제1 변환부;
    상기 하드 디코딩 동작에서 상기 메모리 영역으로부터 전송된 상기 하드 비트에 대응하는 하드 신뢰도 값을 출력하고, 상기 소프트 디코딩 동작에서 상기 메모리 영역으로부터 전송된 상기 소프트 신뢰도 값을 출력하도록 구성된 제2 변환부;
    상기 제2 변환부로부터 출력된 상기 하드 신뢰도 값을 사용하여 상기 하드 디코딩 동작을 수행하고, 상기 하드 디코딩 동작이 실패한 뒤 상기 제2 변환부로부터 출력된 상기 소프트 신뢰도 값을 사용하여 상기 소프트 디코딩 동작을 수행하도록 구성된 변수 노드를 포함하는 ECC 디코더.
  17. 제16항에 있어서,
    상기 메모리 영역은 상기 소프트 신뢰도 값에 대응하는 크기를 가지고,
    상기 메모리 영역에서 상기 하드 비트가 저장된 제1 구역을 제외한 남은 구역들은 상기 하드 디코딩 동작이 수행될 때 사용되지 않는 ECC 디코더.
  18. 제16항에 있어서,
    상기 제1 변환부는 상기 하드 비트가 상기 메모리 영역의 제1 구역에 저장된 뒤, 상기 채널로부터 전송된 후속 하드 비트를 상기 메모리 영역의 제2 구역에 저장되도록 상기 메모리로 전송하고,
    상기 후속 하드 비트는 상기 하드 디코딩 동작이 성공한 뒤 후속 하드 디코딩 동작이 이어서 수행될 데이터인 ECC 디코더.
  19. 제16항에 있어서,
    상기 제1 변환부는 상기 소프트 신뢰도 값이 상기 메모리 영역에 저장된 뒤, 상기 채널로부터 전송된 후속 하드 비트를 상기 메모리 영역의 남은 구역에 저장되도록 상기 메모리로 전송하고,
    상기 후속 하드 비트는 상기 소프트 디코딩 동작이 성공한 뒤 후속 하드 디코딩 동작이 이어서 수행될 데이터인 ECC 디코더.
  20. 제16항에 있어서,
    상기 제2 변환부는 상기 하드 비트에 따라 상기 하드 신뢰도 값의 사인을 결정하고 상기 하드 비트에 무관한 고정 값을 상기 하드 신뢰도 값의 크기로 결정함으로써, 상기 하드 신뢰도 값을 출력하는 ECC 디코더.
KR1020210059249A 2021-05-07 2021-05-07 Ecc 디코더 KR20220151934A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210059249A KR20220151934A (ko) 2021-05-07 2021-05-07 Ecc 디코더
US17/500,803 US11881276B2 (en) 2021-05-07 2021-10-13 Error correcting code decoder
CN202210016700.4A CN115309583A (zh) 2021-05-07 2022-01-07 错误校正码解码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210059249A KR20220151934A (ko) 2021-05-07 2021-05-07 Ecc 디코더

Publications (1)

Publication Number Publication Date
KR20220151934A true KR20220151934A (ko) 2022-11-15

Family

ID=83855744

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210059249A KR20220151934A (ko) 2021-05-07 2021-05-07 Ecc 디코더

Country Status (3)

Country Link
US (1) US11881276B2 (ko)
KR (1) KR20220151934A (ko)
CN (1) CN115309583A (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189322B2 (en) * 2012-08-31 2015-11-17 Kabushiki Kaisha Toshiba Memory system
KR102257050B1 (ko) * 2017-05-26 2021-05-27 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
JP2019160195A (ja) * 2018-03-16 2019-09-19 東芝メモリ株式会社 メモリシステム
KR20200020535A (ko) 2018-08-17 2020-02-26 에스케이하이닉스 주식회사 에러 정정 장치, 그것의 동작 방법 및 그것을 포함하는 전자 장치
KR20210128704A (ko) * 2020-04-17 2021-10-27 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법

Also Published As

Publication number Publication date
US11881276B2 (en) 2024-01-23
CN115309583A (zh) 2022-11-08
US20220359032A1 (en) 2022-11-10

Similar Documents

Publication Publication Date Title
US11386952B2 (en) Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
US9898363B2 (en) Data storage device and operating method thereof
US8289771B2 (en) Data reading method and control circuit and memory controller using the same
KR102571747B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US10866856B2 (en) Memory system and operating method thereof
US12013754B2 (en) Nonvolatile memory device and memory system including nonvolatile memory device
EP3579237A1 (en) Solid state drive with improved llr tables
KR20220008058A (ko) 컨트롤러 및 컨트롤러의 동작방법
US11373709B2 (en) Memory system for performing a read operation and an operating method thereof
KR20160110774A (ko) 메모리 장치 및 이를 포함하는 시스템
US11190217B2 (en) Data writing method, memory controlling circuit unit and memory storage device
US10554228B1 (en) Error correction device and electronic device including the same
KR20220151934A (ko) Ecc 디코더
CN112799874B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
KR20200101884A (ko) 데이터 저장 시스템 및 그것의 동작 방법
US11954347B2 (en) Memory system and operating method thereof
US11869584B2 (en) Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
US11430538B1 (en) Memory control method, memory storage device, and memory control circuit unit
US11379362B2 (en) Memory system and operating method thereof