KR20210019676A - 메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법 - Google Patents

메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법 Download PDF

Info

Publication number
KR20210019676A
KR20210019676A KR1020190098568A KR20190098568A KR20210019676A KR 20210019676 A KR20210019676 A KR 20210019676A KR 1020190098568 A KR1020190098568 A KR 1020190098568A KR 20190098568 A KR20190098568 A KR 20190098568A KR 20210019676 A KR20210019676 A KR 20210019676A
Authority
KR
South Korea
Prior art keywords
read data
information
syndrome
conversion information
read
Prior art date
Application number
KR1020190098568A
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 KR1020190098568A priority Critical patent/KR20210019676A/ko
Priority to US16/823,913 priority patent/US11206046B2/en
Priority to EP20170384.0A priority patent/EP3780397B1/en
Priority to SG10202004465VA priority patent/SG10202004465VA/en
Priority to CN202010790981.XA priority patent/CN112395128A/zh
Publication of KR20210019676A publication Critical patent/KR20210019676A/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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1525Determination and particular use of error location polynomials
    • H03M13/153Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2942Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
    • 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
    • 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
    • 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/63Joint error correction and other techniques
    • H03M13/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • 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
    • 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
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • 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/3784Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 for soft-output decoding of block codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

적은 리소스를 사용하면서도 높은 에러정정능력을 갖는 메모리 컨트롤러의 구동 방법, 스토리지 장치 및 그 구동 방법이 제공된다. 상기 메모리 컨트롤러의 구동 방법은, 제1 리드 데이터와 제2 변환 정보를 제공받고, 상기 제2 변환 정보는 리니어 연산을 통해서 제2 리드 데이터가 변환된 데이터이고, 상기 제1 리드 데이터와 상기 제2 리드 데이터는 동일한 메모리 셀들로부터 리드된 데이터이고, 상기 리니어 연산을 이용하여, 상기 제1 리드 데이터를 변환하여 제1 변환 정보를 생성하고, 상기 제1 변환 정보와 상기 제2 변환 정보를 논리 연산하여, 연산 정보를 생성하고, 상기 리니어 연산의 인버스 연산을 이용하여, 상기 연산 정보를 변환하여 신뢰성 정보를 생성하고, 상기 제1 리드 데이터와 상기 신뢰성 정보를 기초로, 상기 제1 리드 데이터의 에러를 수정하는 것을 포함한다.

Description

메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법{Operating method of memory controller, storage device and the operating method thereof}
본 발명은 메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다.
미국등록특허 US9,454,414 (2016.09.27. 공고)
한편, 비휘발성 메모리 장치(예를 들어, 낸드 플래시 메모리 장치)의 경우 프로그램과 이레이즈를 반복하면, 메모리 셀의 특성 열화로 인해서 문턱전압 산포가 이동하거나, 인접한 문턱전압 산포가 서로 오버랩될 수 있다. 이로 인해서 리드 데이터에서 몇몇 에러 비트들이 포함될 수 있다.
에러 비트들을 정정하기 위해서, 낸드 플래시 메모리 장치는 하드 디시젼 디코딩(hard decision decoding)과 소프트 디시젼 디코딩(soft decision decoding)을 이용한다. 하드 디시젼 디코딩은 적은 리소스를 사용하기 때문에 효율적이지만, 에러정정능력이 상대적으로 떨어질 수 있다. 반면, 소프트 디시젼 디코딩은 하드 디시젼 디코딩에 비해서 에러정정능력을 높지만, 많은 리소스를 사용한다.
낸드 플래시 메모리 장치는 리드 횟수가 많기 때문에, 하드 디시젼 디코딩을 기본으로 하고, 하드 디시젼 디코딩이 실패한 경우에 소프트 디시젼 디코딩을 사용한다. 그런데 이러한 방식은 디코딩 레이턴시(decoding latency)가 증가되는 단점이 있다.
본 발명이 해결하고자 하는 기술적 과제는, 적은 리소스를 사용하면서도 높은 에러정정능력을 갖는, 메모리 컨트롤러의 구동 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 적은 리소스를 사용하면서도 높은 에러정정능력을 갖는, 스토리지 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 적은 리소스를 사용하면서도 높은 에러정정능력을 갖는, 스토리지 장치의 구동 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 면(aspect)에 따른 메모리 컨트롤러의 구동 방법은, 제1 리드 데이터와 제2 변환 정보를 제공받고, 상기 제2 변환 정보는 리니어 연산을 통해서 제2 리드 데이터가 변환된 데이터이고, 상기 제1 리드 데이터와 상기 제2 리드 데이터는 동일한 메모리 셀들로부터 리드된 데이터이고, 상기 리니어 연산을 이용하여, 상기 제1 리드 데이터를 변환하여 제1 변환 정보를 생성하고, 상기 제1 변환 정보와 상기 제2 변환 정보를 논리 연산하여, 연산 정보를 생성하고, 상기 리니어 연산의 인버스 연산을 이용하여, 상기 연산 정보를 변환하여 신뢰성 정보를 생성하고, 상기 제1 리드 데이터와 상기 신뢰성 정보를 기초로, 상기 제1 리드 데이터의 에러를 수정하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 면에 따른 메모리 컨트롤러의 구동 방법은, 제1 리드 데이터와 제2 신드롬을 제공받고, 상기 제2 신드롬은 제2 리드 데이터가 제1 신드롬 포머에 의해 변환된 데이터이고, 상기 제1 리드 데이터와 상기 제2 리드 데이터는 동일한 메모리 셀들로부터 리드된 하드 디시젼 리드 데이터이고, 제2 신드롬 포머를 이용하여, 상기 제1 리드 데이터를 변환하여 제1 신드롬을 생성하고, 상기 제1 신드롬과 상기 제2 신드롬을 XOR 또는 XNOR 연산하여, 뉴 신드롬을 생성하고, 상기 BM(Berlekamp Massey) 알고리즘과 치엔(Chien Search) 서치를 수행을 하여, 상기 뉴 신드롬을 변환하여 신뢰성 정보를 생성하고, 상기 제1 리드 데이터와 상기 신뢰성 정보를 기초로, 상기 제1 리드 데이터의 에러를 수정하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 면에 따른 스토리지 장치는, 동일한 메모리 셀들로부터 제1 리드 데이터와 제2 리드 데이터를 리드하여, 리니어 연산을 이용하여 상기 제2 리드 데이터를 변환하여 제2 변환 정보를 생성하고, 상기 제1 리드 데이터와 상기 제2 변환 정보를 출력하는 메모리 장치; 및 상기 제1 리드 데이터와 상기 제2 변환 정보를 제공받고, 상기 리니어 연산을 이용하여 상기 제1 리드 데이터를 변환하여 제1 변환 정보를 생성하고, 상기 제1 변환 정보와 상기 제2 변환 정보를 논리 연산하여 연산 정보를 생성하고, 상기 리니어 연산의 인버스 연산을 이용하여 상기 연산 정보를 변환하여 신뢰성 정보를 생성하는 메모리 컨트롤러를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 면에 따른 스토리지 장치의 구동 방법은, 메모리 장치와 메모리 컨트롤러를 포함하는 스토리지 장치의 구동 방법으로서, 상기 메모리 장치가 다수의 메모리 셀을 리드하여 제1 리드 데이터를 생성하고, 상기 다수의 메모리 셀을 리드하여 제2 리드 데이터를 생성하고, 상기 제2 리드 데이터를, 다수의 제2 서브 리드 데이터로 분할하고, 리니어 연산을 이용하여, 상기 다수의 제2 서브 리드 데이터 각각을 변환하여 다수의 제2 서브 변환 정보를 생성하고, 상기 제1 리드 데이터와 상기 다수의 제2 서브 변환 정보를 출력하는 것을 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 몇몇 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 2는 도 1의 메모리 장치를 설명하기 위한 예시적 블록도이다.
도 3은 도 2의 메모리 셀 어레이를 설명하기 위한 예시적 회로도이다.
도 4는 열화된 메모리 셀의 문턱전압 분포와, 하드 디시젼 리드 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 스토리지 장치에서, 메모리 장치의 동작을 설명하기 위한 블록도이다.
도 6은 본 발명의 일 실시예에 따른 스토리지 장치에서, 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 7은 본 발명의 다른 실시예에 따른 스토리지 장치에서, 메모리 장치의 동작을 설명하기 위한 다른 블록도이다.
도 8은 신드롬 포머의 예를 설명하기 위한 도면이다.
도 9는 본 발명의 다른 실시예에 따른 스토리지 장치에서, 메모리 컨트롤러의 동작을 설명하기 위한 다른 블록도이다.
도 10은 뉴 신드롬과 신뢰성 정보의 관계를 설명하기 위한 도면이다.
도 11은 본 발명의 또 다른 실시예에 따른 스토리지 장치에서, 메모리 장치의 동작을 설명하기 위한 다른 블록도이다.
도 12는 본 발명의 또 다른 실시예에 따른 스토리지 장치에서, 메모리 컨트롤러의 동작을 설명하기 위한 다른 블록도이다.
도 13은 본 발명의 몇몇 실시예에 따른 스토리지 장치에 사용되는 메모리 장치를 설명하기 위한 사시도이다.
이하, 첨부된 도면을 참조하여 본 발명의 다양한 실시예들을 설명하도록 한다.
도 1은 본 발명의 몇몇 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 1은 본 발명의 몇몇 실시예에 따른 스토리지 장치는 메모리 장치(100)와 메모리 컨트롤러(200)을 포함한다.
스토리지 장치는 스마트 카드, SD(secure digital) 카드, 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC (eMMC)), 임베디드 멀티-칩 패키지 (embedded multi-chip package(eMCP)), PPN(perfect page NAND), 유니버셜 플래시 스토리지(universal flash storage(UFS)), USB 플래시 드라이브, 솔리드 스테이트 드라이브(solid state drive(SSD)), 또는 임베디드 SSD(embedded SSD(eSSD))로 구현될 수 있으나, 이에 한정되는 것은 아니다.
메모리 장치(100)는 예를 들어, 비휘발성 메모리(예를 들어, 플래시 메모리)를 기반으로 한 장치일 수 있으나, 이에 한정되지 않는다.
메모리 컨트롤러(200)는 메모리 장치(100)의 동작을 전반적으로 제어한다. 메모리 컨트롤러(200)는 호스트(미도시)로부터 제공되는 명령어를 해석하고, 해석결과에 따라 메모리 장치(100)의 동작, 예를 들어, 프로그램, 리드, 이레이즈 동작 등을 제어할 수 있다.
메모리 컨트롤러(200)는 내부에 ECC회로(210)를 포함한다. ECC 회로(210)는 호스트로부터 제공된 데이터에 대해서 인코딩 동작을 수행하여 패러티 비트(parity bit)를 생성한다. 데이터(패러티 비트 포함)는 메모리 장치(100)에 제공되고, 메모리 장치(100) 내에 프로그램된다.
반대로, ECC회로(210)는 메모리 장치(100)로부터 리드된 데이터(패러티 비트 포함)와 추가정보를 제공받아, 디코딩 동작을 수행하고 에러 정정 동작을 수행한다. 여기서, 추가정보(도 5의 CHDR2, 도 7의 SYD2 등 참조)는 도 5 내지 도 12를 이용하여 구체적으로 후술한다.
도 2는 도 1의 메모리 장치를 설명하기 위한 예시적 블록도이다. 도 3은 도 2의 메모리 셀 어레이를 설명하기 위한 예시적 회로도이다. 도 2 및 도 3은 낸드 플래시 메모리 장치를 기초로 설명하나, 이에 한정되지 않는다.
도 2를 참조하면, 메모리 장치(100)는 메모리 셀 어레이(110)와 억세스 회로(112)를 포함한다.
메모리 셀 어레이(110)는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이일 수 있다. 여기서, 도 3을 이용하여 3차원 메모리 셀 어레이를 예시적으로 설명한다.
3차원 메모리 셀 어레이는, 메모리 셀들의 어레이가 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로도 포함할 수 있다. 모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착되는(directly deposited) 것을 의미한다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
도 3을 참조하면, 제1 비트 라인(BL<1>) 및 공통 소스 라인(CSL) 사이에 셀 스트링들(NS11~NS41)이 제공된다. 제2 비트 라인(BL<2>) 및 공통 소스 라인(CSL) 사이에 셀 스트링들(NS12~NS42)이 제공된다. 제4 비트 라인(BL<4>) 및 공통 소스 라인(CSL) 사이에, 셀 스트링들(NS14~NS44)이 제공된다.
각 셀 스트링(NS)의 스트링 선택 트랜지스터(SST)는 대응하는 비트 라인(BL)과 연결된다. 각 셀 스트링(NS)의 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)과 연결된다. 각 셀 스트링(NS)의 스트링 선택 트랜지스터(SST) 및 접지 선택 트랜지스터(GST) 사이에 메모리 셀들(MC1~MC7)이 제공된다.
다음과 같이, 셀 스트링들(NS)의 행, 열이 정의된다.
하나의 비트 라인에 공통으로 연결된 셀 스트링들(NS)은 하나의 열을 형성한다. 예를 들면, 제1 비트 라인(BL<1>)에 연결된 셀 스트링들(NS11~NS41)은 제1 열에 대응할 것이다. 제2 비트 라인(BL<2>)에 연결된 셀 스트링들(NS12~NS42)은 제2 열에 대응할 것이다. 제4 비트 라인(BL<4>)에 연결된 셀 스트링들(NS14~NS44)은 제4 열에 대응할 것이다.
하나의 스트링 선택 라인(SSL)에 연결되는 셀 스트링들(NS)은 하나의 행을 형성한다. 예를 들면, 제1 스트링 선택 라인(SSL<1>)에 연결된 셀 스트링들(NS11~NS14)은 제1 행을 형성한다. 제2 스트링 선택 라인(SSL<2>)에 연결된 셀 스트링들(NS21~NS24)은 제2 행을 형성한다. 제4 스트링 선택 라인(SSL<4>)에 연결된 셀 스트링들(NS41~NS44)은 제4 행을 형성한다.
셀 스트링들(NS) 각각은 접지 선택 트랜지스터(GST)를 포함한다. 접지 선택 트랜지스터들(GST)은 하나의 접지 선택 라인(GSL)에 의해서 제어될 수 있다. 혹은 도시되지는 않았지만, 각 행들에 대응하는 셀 스트링들은 서로 다른 접지 선택 라인들에 의해서 제어될 수 있다. 예를 들면, 제1 행에 대응하는 셀 스트링들(NS11, NS12, NS14) 각각의 접지 선택 트랜지스터들은 제1 접지 선택 라인(GSL1)에 연결될 수 있다. 그리고 제2 행에 대응하는 셀 스트링들(NS21, NS22, NS24) 각각의 접지 선택 트랜지스터들은 제2 접지 선택 라인(GSL2)에 연결될 수 있다. 제4 행에 대응하는 셀 스트링들(NS41, NS42, NS44) 각각의 접지 선택 트랜지스터들은 제4 접지 선택 라인(GSL4)에 연결될 수 있다.
동일한 반도체 층에 대응하는 메모리 셀들은 워드 라인(WL<0>~WL<6>)을 공유한다.
동일한 행의 셀 스트링들(NS)은 스트링 선택 라인(SSL)을 공유한다. 상이한 행의 셀 스트링들(NS)은 상이한 스트링 선택 라인들(SSL<1>, SSL<2>, SSL<4>)에 각각 연결된다. 이하에서, 제1 스트링 선택 트랜지스터들(SST1)은 제1 스트링 선택 라인(SSL<1>)에 연결된 스트링 선택 트랜지스터들(SST)로 정의된다. 제2 스트링 선택 트랜지스터들(SST2)은 제2 스트링 선택 라인(SSL<2>)에 연결된 스트링 선택 트랜지스터들(SST)로 정의된다. 제4 스트링 선택 트랜지스터들(SST4)은 제4 스트링 선택 라인(SSL<4>)에 연결된 스트링 선택 트랜지스터들(SST)로 정의된다.
공통 소스 라인(CSL)은 셀 스트링들(NS)에 공통으로 연결된다.
제1 메모리 셀 어레이(110)는 다수의 메모리 셀 블록(BLKi)을 포함할 수 있다. 하나의 메모리 블록(BLKi)은 하나의 스트링 선택 라인(SSL)을 공유하는 다수의 스트링 단위로 구분될 수 있다. 즉, 메모리 블록(BLKi)은 하나의 스트링을 공유하는 복수의 셀 스트링으로 구성된 서브-블록들(SB)로 구분될 수 있다.
이러한 3차원 메모리 셀 어레이는 웨이퍼 적층(wafer stack), 칩 적층(chip stack) 또는 셀 적층(cell stack)을 통하여 구현될 수 있다.
다시 도 2를 참조하면, 억세스 회로(112)는 전압 발생기(140), 로우 디코더(150), 컨트롤 로직(160), 컬럼 디코더(170), 페이지 버퍼 및 감지 증폭기 블록(120), Y 게이팅 회로(130), 입출력 블록(180) 등을 포함할 수 있다.
컨트롤 로직(160)은 메모리 컨트롤러(200)로부터 제공된 명령어(CMD)에 따라 억세스 회로(112)의 전반적인 동작을 제어한다. 예컨대, 컨트롤 로직(160)은 메모리 리드 동작 동안 메모리 리드 상태 정보를 센싱하고, 리드되는 데이터를 메모리 컨트롤러(200)로 제공하도록 제어할 수 있다.
전압 발생기(140)는 컨트롤 로직(160)에 의해 생성된 제어 코드에 따라 억세스 동작에 필요한 전압을 생성할 수 있다. 전압 발생기(140)는 프로그램 동작을 수행하기 위해 필요한 프로그램 전압과 프로그램 검증 전압을 생성하고, 리드 동작을 수행하기 위하여 필요한 리드 전압들을 생성하고, 이레이즈 동작을 수행하기 위하여 필요한 이레이즈 전압과 이레이즈 검증 전압 등을 생성한다. 또한, 각 동작을 수행하기 위하여 필요한 전압을 로우 디코더(150)로 제공한다.
컬럼 디코더(170)는 컨트롤 로직(160)의 제어 하에 컬럼 어드레스(YADD)를 디코딩하여 다수의 선택신호들을 Y 게이팅 회로(130)로 제공한다.
페이지 버퍼 및 감지 증폭기 블록(120)은 다수의 페이지 버퍼(Page Buffer)들을 포함한다. 다수의 페이지 버퍼들(PB) 각각은 다수의 비트라인들 각각에 접속된다.
다수의 페이지 버퍼들(PB) 각각은 컨트롤 로직(160)의 제어에 따라 데이터 리드 동작 동안에는 메모리 셀 어레이(110)에서 리드(read)된 데이터를 임시로 저장하기 위한 드라이버로써 동작할 수 있다. 또한 다수의 페이지 버퍼들(PB) 각각은 컨트롤 로직(160)의 제어에 따라 리드 동작 동안에 다수의 비트라인들 각각의 전압 레벨을 감지 증폭할 수 있는 감지 증폭할 수 있는 감지 증폭기로써 동작할 수 있다.
Y 게이팅 회로(130)는 컬럼 디코더(170)로부터 제공된 다수의 선택신호들에 응답하여 페이지 버퍼 및 감지 증폭기 블록(120)과 입출력 블록(180) 사이에서 데이터(DATA)의 전송을 제어할 수 있다.
입출력 블록(180)은 외부로부터 입력된 데이터(DATA)를 Y 게이팅 회로(130)로 전송하거나 또는 Y 게이팅 회로(130)로부터 출력된 데이터(DATA)를 다수의 입출력 핀(또는 데이터 버스)을 통하여 메모리 컨트롤러(200)로 전송할 수 있다.
도 4는 열화된 메모리 셀의 문턱전압 분포와, 하드 디시젼 리드 동작을 설명하기 위한 도면이다.
우선, 하드 디시젼 리드 동작(hard decision read operation)은 정상 데이터 리드 동작(normal data read operation)을 말한다. 구체적으로, 리드 전압이 메모리 셀의 워드 라인으로 공급될 때, 대응하는 메모리 셀의 온/오프 상태에 따라, 메모리 셀에 저장된 데이터를 1 또는 0으로 리드한다. 반면, 소프트 디시젼 리드 동작은, 하드 디시젼 리드를 위한 리드 전압(즉, 하드 디시젼 리드 전압)을 기준으로 일정한 전압 차를 갖는 복수의 리드 전압(즉, 소프트 디시젼 리드 전압)을 메모리 셀에 인가하여 하드 디시젼 리드 데이터에 신뢰도를 부가하는 정보를 형성하는 것을 의미한다. 하드 디시젼 리드 동작은 하드 디시젼 디코딩으로, 소프트 디시젼 리드 동작은 소프트 디시젼 디코딩으로 불리기도 한다.
도 4를 참조하면, 2개의 문턱전압 산포(LD, RD)가 도시되어 있다. 1개의 메모리 셀에 1개의 비트가 저장되는 경우를 예로 하여, 2개의 문턱전압 산포(LD, RD)만을 도시하였으나, 이에 한정되지 않는다. 즉, 1개의 메모리 셀에 q(단, q는 2이상의 자연수)개의 비트가 저장되는 경우에는, 2q 개의 문턱전압 산포가 형성될 수 있다. 즉, 2개 이상의 비트가 저장되는 MLC(Multi Level Cell), TLC(Triple Level Cell), QLC(Quadruple Level Cell)의 경우에는, 각각 4개, 8개, 16개의 문턱전압 산포가 형성될 수 있다.
정상적으로 프로그램된 경우에는, 하드 디시젼 리드 전압(예를 들어, VR1)에 의해서 명확하게 구분될 수 있도록, 인접한 2개의 문턱전압 산포(LD, RD)가 서로 충분히 이격된다.
하지만, 시간이 지남에 따라 터널 산화물(tunnel oxide)(또는 플로팅 게이트(floating gate))에 포획(trap)된 전자들이 방출되는 차지 로스(charge loss)가 발생할 수 있다. 또한, 프로그램과 이레이즈가 반복되면서 터널 산화물이 열화되어 차지 로스가 더욱 증가할 수 있다. 차지 로스는 문턱 전압을 감소시킬 수 있어, 예컨대 문턱전압 산포는 일측으로(도면에서, 왼쪽으로) 이동될 수 있다. 또한, 프로그램 디스터번스(program disturbance), 이레이즈 디스터번스(erase disturbance), 백 패턴 디펜던시(back pattern dependency) 등은 문턱전압 산포를 증가시킬 수 있다. 전술한 이유들로 인해서, 비휘발성 메모리 셀의 특성이 열화될 수 있다. 이에 따라, 도 4에 도시된 바와 같이, 서로 인접한 문턱전압 산포(LD, RD)가 서로 중첩된다.
이와 같이 문턱전압 산포(LD, RD)가 서로 중첩되면, 특정한 하드 디시젼 리드 전압(예를 들어, VR1)을 이용하여 리드할 때, 리드 데이터에 에러가 포함될 수 있다.
문턱전압 산포(LD)에 해당하는 메모리 셀은 1로 리드되고, 문턱전압 산포(RD)에 해당하는 메모리 셀은 0으로 리드되어야 한다. 하지만, 특정한 하드 디시젼 리드 전압(예를 들어, VR1)을 이용하여 리드하면, 영역(A)에 해당하는 메모리 셀은 1이 아닌 0으로 리드되고, 영역(B)에 해당하는 메모리 셀은 0이 아닌 1로 리드될 수 있다. 즉, 에러들이 발생하게 된다.
이하에서는 도 5 내지 도 12를 이용하여, 이러한 에러들의 정정 방법을 구체적으로 설명한다.
도 5는 본 발명의 일 실시예에 따른 스토리지 장치에서, 메모리 장치의 동작을 설명하기 위한 블록도이다.
도 5를 참조하면, 메모리 장치(100)는 동일한 메모리 셀들을 2회 리드하여, 리드 데이터(HDR1, HDR2)를 생성한다. 메모리 장치(100)는 제1 리드 전압(도 4의 VR1 참조)을 이용하여 다수의 메모리 셀을 리드하여 제1 리드 데이터(HDR1)를 생성한다. 또한, 메모리 장치(100)는 제2 리드 전압(도 4의 VR2 참조)을 이용하여 상기 다수의 메모리 셀을 리드하여 제2 리드 데이터(HDR2)를 생성한다. 여기서, 제1 리드 전압(VR1)과 제2 리드 전압(VR2)은 동일할 수도 있고, 그렇지 않을 수도 있다. 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)는 하드 디시젼 리드 동작에 의해서 얻어진, 하드 디시젼 리드 데이터일 수 있다. 도 5에서는, 2회 리드하는 것만 예를 들었으나, 이에 한정되지 않는다.
즉, 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)는 동일한 리드 전압(문턱전압)으로 리드한 데이터일 수 있다. 또는, 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)는 기설정된 서로 다른 문턱전압으로 리드한 데이터일 수 있다. 또는, 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)는 낸드 플래시 메모리 장치의 상태(예를 들어, 프로그램-소거 사이클, 시간, 온도 등)에 따라 어댑티브하게(adaptively) 설정된, 서로 다른 문턱전압으로 리드한 데이터일 수 있다.
이어서, 제2 리드 데이터(HDR2)은 제1 리니어 연산기(linear operator)(190)를 통해서, 제2 변환 정보(CHDR2)로 변환된다.
제1 리니어 연산기(190)는 제2 리드 데이터(HDR2)의 사이즈를 줄일 수 있는 압축 동작을 수행하되, 리니어 연산을 기반으로 한 압축 동작을 수행해야 한다. 제1 리니어 연산기(190)는 예를 들어, XOR만으로 구성되거나 XNOR로만 구성될 수 있다.
여기서, 제1 리니어 연산기(190)를 함수 F로 표현한다면, CHDR2 = F(HDR2)이다.
제1 리드 데이터(HDR1)의 사이즈는 N비트(단, N은 2이상의 자연수)이고, 제2 리드 데이터(HDR2)의 사이즈도 N비트이다. 즉, N비트의 각 리드 데이터(HDR1, HDR2)는 n비트(단, n은 자연수)의 데이터와, 상기 데이터에 대응되는 w비트(단, w는 n보다 작은 자연수)의 패러티 비트를 포함한다. 반면, 제1 리니어 연산기(190)에 의해 변환된 제2 변환 정보(CHDR2)의 사이즈는 M비트(단, M은 N보다 작은 자연수)이다. 예를 들어, 제2 변환 정보(CHDR2)의 사이즈는 제2 리드 데이터(HDR2)의 사이즈의 10% 이하일 수 있다. 더 구체적으로, 제2 리드 데이터(HDR2)가 256비트라면, 제2 변환 정보(CHDR2)는 25비트일 수 있다.
메모리 장치(100)는 제1 리드 데이터(HDR1)과 제2 변환 정보(CHDR2)를 메모리 컨트롤러(200)로 출력한다.
도 5에서의 메모리 장치(100)의 동작은, HDR1+CHDR2 (=HDR1+F(HDR2))를 생성/출력한 것으로 정리된다.
도 6은 본 발명의 일 실시예에 따른 스토리지 장치에서, 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 6을 참조하면, 메모리 컨트롤러(200)는 메모리 장치(100)로부터 제1 리드 데이터(HDR1)와 제2 변환 정보(CHDR2)를 제공받는다.
이어서, 제2 리니어 연산기(290)를 이용하여, 제1 리드 데이터(HDR1)를 제1 변환 정보(CHDR1)으로 변환한다. 여기서, 제2 변환 정보(CHDR2)를 생성하기 위한 제1 리니어 연산기(도 5의 190 참조)와 제1 변환 정보(CHDR1)를 생성하기 위한 제2 리니어 연산기(290)는 동일한 종류이다. 제2 리니어 연산기(290)는 제1 리드 데이터(HDR1)의 사이즈를 줄일 수 있는 압축 동작을 수행하되, 리니어 연산을 기반으로 한 압축 동작을 수행한다. 제2 리니어 연산기(290)는 예를 들어, XOR만으로 구성되거나 XNOR로만 구성될 수 있다. 제2 리니어 연산기(290)를 함수 F로 표현한다면, CHDR1 = F(HDR1)이다.
따라서, 제1 리드 데이터(HDR1)의 사이즈는 N비트(단, N은 2이상의 자연수)이고, 제2 리니어 연산기(290)에 의해 변환된 제1 변환 정보(CHDR1)의 사이즈는 M비트(단, M은 N보다 작은 자연수)이다. 예를 들어, 제1 변환 정보(CHDR1)의 사이즈는 제1 리드 데이터(HDR1)의 사이즈의 10% 이하일 수 있다. 제1 리드 데이터(HDR1)가 256비트라면, 제1 변환 정보(CHDR1)는 25비트일 수 있다.
연산기(292)는 제1 변환 정보(CHDR1)와 제2 변환 정보(CHDR2)를 논리 연산하여, 연산 정보(CXDR1)을 생성한다. 논리 연산은, XOR 연산 또는 XNOR 연산을 포함할 수 있다. 예를 들어, 연산기(292)의 동작은, CXDR1 = CHDR1 + CHDR2 = F(HDR1) + F(HDR2) 로 정리할 수 있다(단, +는 mod2 덧셈, 즉, 논리연산 XOR 을 의미함). 전술한 것과 같이, 제1 리니어 연산기(190), 제2 리니어 연산기(290)는 서로 동일한 종류이고, 리니어 연산을 수행한다. 따라서, F(HDR1) + F(HDR2) = F(HDR1+HDR2) 가 된다. 왜냐하면, 리니어 연산함수 F에 대해서, F(A) +F(B) = F(A+B)가 성립되기 때문이다.
이어서, 인버스 리니어 연산기(294)를 이용하여, 연산 정보(CXDR1)을 신뢰성 정보(WRB)로 변환시킨다. 신뢰성 정보(WRB)는 제1 리드 데이터(HDR1) 내에서 에러의 위치를 나타내는 정보이다. 인버스 리니어 연산기(294)는 전술한 리니어 연산기(190, 290)의 인버스 연산을 수행한다. 즉, 인버스 리니어 연산기(294)의 동작은, WRB = F-1(CXDR1) = F-1(CHDR1+CHDR2) = F-1(F(HDR1+HDR2)) = HDR1+HDR2로 정리할 수 있다. 결과적으로, 신뢰성 정보(WRB)는 HDR1+HDR2가 된다. 신뢰성 정보(WRB)는 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)와 동일한 사이즈인 N비트이다.
디코더(298)은 제1 리드 데이터(HDR1)와, 신뢰성 정보(WRB)를 기초로, 제1 리드 데이터(HDR1)의 에러를 수정하는 동작을 수행한다.
예를 들어 다시 설명하면, 제1 리드 데이터(HDR1)가 1111111이고, 제2 리드 데이터(HDR2)가 1111110 이라고 가정한다. 동일한 메모리 셀들을 리드하였음에도 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)가 동일하지 않기 때문에, 제1 리드 데이터(HDR1) 또는 제2 리드 데이터(HDR2)에 에러가 있음을 알 수 있다. 연산된 신뢰성 정보(WRB)는 제1 리드 데이터(HDR1)와 제2 리드 데이터의 XOR 연산이므로 000001이 된다. 신뢰성 정보(WRB)에서 마지막 비트가 1이므로, 디코더(298)는 제1 리드 데이터(HDR1)의 마지막 비트와 제2 리드 데이터의 마지막 비트가 서로 다름을 알 수 있다.
한편, 메모리 컨트롤러(200)는 연산 정보(CXDR1)를 기초로 제1 리드 데이터(HDR1)의 에러 수정이 가능한지 여부를 확인할 수 있다. 연산 정보(CXDR1)가 기설정된 특정값으로 산출될 경우에는, 에러 수정이 불가능하다고 판단할 수 있다.
만약, 메모리 컨트롤러(200)가 에러 수정이 불가능하다고 판단된 경우, 생성된 신뢰성 정보(WRB)를 무시하고 기설정된 방식에 따라 제1 리드 데이터(HDR1)를 처리할 수 있다. 기설정된 방식은 예를 들어, 제1 리드 데이터(HDR1)에 에러가 없다고 가정하고(즉, no error case), 제1 리드 데이터(HDR1)를 정정하지 않는 것이다. 또는, 제1 리드 데이터(HDR1)의 모든 비트에 에러가 발생했다고 가정하고(즉, all error case), 제1 리드 데이터(HDR1)를 정정하는 것이다. 또는, 메모리 컨트롤러(200)가 에러 수정이 불가능하다고 판단되는 경우의 횟수가 기설정된 기준을 초과하면, 제1 변환 정보(CHDR1) 및 제2 변환 정보(CHDR2)의 비트수를 증가시킬 수 있다. 제1 변환 정보(CHDR1) 및 제2 변환 정보(CHDR2)의 비트수를 증가되면, 수정할 수 있는 에러비트의 개수가 증가되기 때문이다.
도 5 및 도 6을 참조하면, 메모리 장치(100)는 제1 리드 데이터(HDR1)와 제2 변환 정보(CHDR2)(즉, 제2 리드 데이터(HDR2)의 압축 데이터)를 출력한다. 만약, 메모리 장치(100)가 제2 리드 데이터(HDR2)를 압축하지 않고 그대로 출력한다면, 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)를 모두 출력해야 하기 때문에, 제1 리드 데이터(HDR1)만 출력하는 것에 비해 2배의 시간이 소요된다. 하지만, 본 발명의 몇몇 실시예에 따른 스토리지 장치에서, 제2 변환 정보(CHDR2)는 제2 리드 데이터(HDR2)에 비해서 약 1/10로 압축되었다. 따라서, 제1 리드 데이터(HDR1)과 제2 변환 정보(CHDR2)를 출력하는 것은, 제1 리드 데이터(HDR1)만 출력하는 것에 비해 약 1.1배의 시간이 소요된다.
또한, 만약 메모리 장치(100)가 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)의 XOR 연산 정보(즉, HDR1+HDR2)를 생성하여 출력한다면, 메모리 장치(100) 내에 XOR 연산기가 형성되어 있어야 하기 때문에, 메모리 장치(100)의 소형화/집적화를 저해한다. 뿐만 아니라, 제1/제2 리드 데이터(HDR1, HDR2)가 N비트라면, XOR 연산 정보도 N비트가 된다. 따라서, 제1 리드 데이터(HDR1)과 XOR 연산 정보를 모두 출력하려면, 제1 리드 데이터(HDR1)만 출력하는 것에 비해 2배의 시간이 소요된다.
본 발명의 몇몇 실시예에 따른 스토리지 장치에서는, 메모리 장치(100)는 제1 리드 데이터(HDR1)와 제2 변환 정보(CHDR2)만을 출력하고, 이를 위해서는 메모리 장치(100) 내에 제1 리니어 연산기(190)(예를 들어, 압축기)만을 형성하면 된다. 예를 들어, 제1 리니어 연산기(190)는 페이지 버퍼 및 감지 증폭기 블록(도 2의 120 참조) 내에 설치할 수 있으나, 이에 한정되지 않는다. 따라서, 메모리 장치(100)의 소형화/집적화가 저해되지 않는다. 또한, 압축된 데이터(즉, 제2 변환 정보(CHDR2))를 출력하기 때문에, 데이터 전송 시간이 크게 늘어나지도 않는다.
또한, 신뢰성 정보(WRB)를 생성하는 것은, 메모리 장치(100)가 아닌 메모리 컨트롤러(200)가 담당한다. 즉, 메모리 컨트롤러(200)는 연산기(292)(예를 들어, XOR 연산), 인버스 리니어 연산기(294)를 포함하여, 신뢰성 정보(WRB)를 생성한다. 메모리 컨트롤러(200)는 메모리 장치(100)에 비해서 공간 여유가 있기 때문에, 이러한 추가적인 모듈들을 설치할 수 있다.
한편, 메모리 컨트롤러(200)에서 신뢰성 정보(WRB)를 생성할 수 있으려면, 리니어 연산기(190, 290)는 리니어 연산을 해야 한다. 그래야, 메모리 장치(100)에서 생성한 CHDR2(=F(HDR2))와, 메모리 컨트롤러(200)에서 생성한 CHDR1(=F(HDR1))를 XOR 연산한 값인 F(HDR1)+F(HDR2)이 F(HDR1+HDR2)와 같아지기 때문이다. 리니어 연산함수 F에 대해서만, F(A)+F(B) = F(A+B)가 성립되기 때문이다. 만약, F가 리니어 연산함수가 아니라면, F-1(CHDR1+CHDR2)는 F-1(F(HDR1)+F(HDR2))가 될 뿐이다. F가 리니어 연산함수이기 때문에, F-1(CHDR1+CHDR2) = F-1(F(HDR1)+F(HDR2)) = F-1(F(HDR1+HDR2)) = HDR1+HDR2 를 얻을 수 있다.
본 발명의 몇몇 실시예에 따른 스토리지 장치의 효과는 다음의 [표 1]과 같이 정리된다. 하드 디시젼 디코딩의 경우, 리드 횟수는 1회이고, 데이터 출력 시간은 짧지만 에러정정능력은 좋지 않다. 반면, 소프트 디시젼 디코딩의 경우, 에러정정능력은 좋지만, 리드 횟수는 최소 3회이고, 데이터 출력 시간은 하드 디시젼 디코딩에 비해 적어도 2배이다. 본 발명의 몇몇 실시예에 따른 스토리지 장치는, 전술한 것과 같이, 에러정정능력이 좋고, 리드 횟수 및 데이터 출력 시간은 소프트 디시젼 디코딩에 비해 짧다.
하드 디시젼 디코딩 소프트 디시젼 디코딩 본 발명
리드 횟수 1회 최소 3회 2회
데이터 출력 시간 1배(기준) 하드 디시젼 디코딩에 비해 적어도 2배 하드 디시젼 디코딩에 비해 최대 1.1배
에러정정능력 bad good good
이하에서, 도 7 내지 도 10을 참조하여, BCH 디코딩과 관련된 실시예를 설명한다. 즉, 제1 및 제2 리니어 연산기(190, 290)의 예로서 신드롬 포머(syndrome former)가 사용된다. 도 7은 본 발명의 다른 실시예에 따른 스토리지 장치에서, 메모리 장치의 동작을 설명하기 위한 다른 블록도이다. 도 8은 신드롬 포머의 예를 설명하기 위한 도면이다. 도 9는 본 발명의 다른 실시예에 따른 스토리지 장치에서, 메모리 컨트롤러의 동작을 설명하기 위한 다른 블록도이다. 도 10은 뉴 신드롬과 신뢰성 정보의 관계를 설명하기 위한 도면이다. 설명의 편의상, 도 5 및 도 6을 이용하여 설명한 것과 다른 점을 위주로 설명한다.
도 7 내지 도 10에서 사용되는, BCH 디코딩은 패러티 비트 수에 따라 특정 개수 이하의 에러를 100% 정정할 수 있다고 알려져 있다. 구체적으로, 데이터의 사이즈(즉, 필드 사이즈)가 2m-1 비트일 때, 패러티 비트 수가 m×t (단, m, t은 자연수)이상이면, 100% 정정할 수 있는 최대 에러 개수는 t 이다. 즉, BCH 디코딩의 에러정정가능여부를 결정하는 것은 파라미터 m, t의 값이다. BCH 익스텐디드 디코딩은 BCH 디코딩을 확대한 것으로, 데이터의 사이즈가 2m일 때, 패러티 비트 수가 m×t+1 이상이면, 100% 정정할 수 있는 최대 에러 개수는 t 이다. BCH 익스텐디드 디코딩의 경우, 256(=28) 비트의 데이터에서, 패러티 비트가 25(=8×3+1)비트라면, 3개의 에러는 완벽하게 정정할 수 있다. 이하에서 BCH 디코딩은, BCH 익스텐디드 디코딩도 포함한다.
BCH 디코딩은 신드롬 계산, BM(Berlekamp Massey) 알고리즘 수행 및 치엔(Chien Search) 서치 수행의 3단계로 이루어진다.
도 7을 참조하면, 메모리 장치(100)는 동일한 메모리 셀들을 2회 리드하여, 리드 데이터(HDR1, HDR2)를 생성한다. 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)는 하드 디시젼 리드 동작에 의해서 얻어진, 하드 디시젼 리드 데이터일 수 있다.
제2 리드 데이터(HDR2)은 제1 신드롬 포머(190a)를 통해서, 제2 신드롬(SYD2)로 변환된다. 이어서, 메모리 장치(100)는 제1 리드 데이터(HDR1)과 제2 신드롬(SYD2)을 메모리 컨트롤러(200)로 출력한다. 제1 신드롬 포머(190a)를 함수 S로 표현한다면, SYD2 = S(HDR2)가 되고, 메모리 장치(100)는 HDR1+SYD2 (=HDR1+ S(HDR2))를 생성/출력한 것이다.
제1 신드롬 포머(190a)는 제2 리드 데이터(HDR2)에 패러티 체크 매트릭스(parity check matrix)를 곱하여, 제2 신드롬(SYD2)을 생성한다. 전술한 것과 같이, 제2 리드 데이터(HDR2)는 코드워드로서, n비트의 데이터와 w비트의 패러티 비트를 포함한다. 제2 리드 데이터(HDR2)에 패러티 체크 매트릭스를 곱하면, w비트의 제2 신드롬(SYD2)이 생성된다. 즉, 제2 신드롬(SYD2)의 사이즈는, 패러티 비트의 사이즈와 동일할 수 있으나, 이에 한정되는 것은 아니다.
제1 신드롬 포머(190a)는 리니어 연산기(도 5의 190 참조)에 대응되고, 리니어 연산(XOR 또는 XNOR)만으로 구성될 수 있다.
도 8을 참조하면, 제1 신드롬 포머(190a)는 XOR 연산만으로 구성될 수 있다. 제1 신드롬 포머(190a)는 256(=28) 비트의 제2 리드 데이터(HDR2)를 25(=8×3+1)비트의 제2 신드롬(SYD2)으로 변환시킨다. 제1 신드롬 포머(190a)는 예를 들어, [표 2]와 같이 입력값들의 일부의 XOR 연산으로 나타낼 수 있다.
출력값 입력값들과의 관계 (XOR연산)
s0_0 d0_0 + d0_230 + d0_232 + d0_234 … d0_255
s0_1 d0_1 + d0_230 + d0_233 … + d0_254
s0_24 d0_24 + d0_231 + d0_233 + d0_252
도 9를 참조하면, 메모리 컨트롤러(200)는 메모리 장치(100)로부터 제1 리드 데이터(HDR1)와 제2 신드롬(SYD2)를 제공받는다.이어서, 제2 신드롬 포머(290a)를 이용하여, 제1 리드 데이터(HDR1)를 변환하여 제1 신드롬(SYD1)을 생성한다. 제2 신드롬(SYD2)을 생성하기 위한 리니어 연산기(도 7의 190a 참조)와 제1 신드롬(SYD1)를 생성하기 위한 제2 신드롬 포머(290a)는 동일한 종류이다. 제2 신드롬 포머(290a)를 함수 S로 표현한다면, SYD1 = S(HDR1)이다.
이어서, 연산기(292a)는 제1 신드롬(SYD1)과 제2 신드롬(SYD2)을 논리 연산(예를 들어, XOR 연산 또는 XNOR 연산)하여, 뉴 신드롬(CXDR2)을 생성한다. 즉, CXDR2 = SYD1 + SYD2 = S(HDR1)+S(HDR2) 로 정리된다. 또한, 신드롬 포머(190a, 290a)는 리니어 연산을 하기 때문에, S(HDR1)+S(HDR2) = S(HDR1+HDR2)가 성립된다. 전술한 예에서, 제1 및 제2 신드롬(SYD1, SYD2)는 25비트이고 논리 연산은 논리(XOR) 연산이기 때문에, CXDR2도 25비트가 된다.
이어서, 인버스 연산기(294a)로 BM(Berlekamp Massey) 알고리즘과 치엔(Chien Search) 서치를 수행을 하여, 뉴 신드롬(CXDR2)을 변환하여 신뢰성 정보(WRB)를 생성한다. BM 알고리즘과 치엔 서치는, BCH 디코딩에서, 신드롬 포머의 인버스 연산에 해당한다. 즉, BM 알고리즘과 치엔 서치의 동작은 WRB = S-1(CXDR2) = S-1(SYD1 + SYD2) = S-1(S(HDR1+HDR2)) = HDR1+HDR2 로 정리할 수 있다. 결과적으로, 신뢰성 정보(WRB)는 HDR1+HDR2가 된다. 신뢰성 정보(WRB)는 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)와 동일한 사이즈인 256비트이다.
디코더(298)는 제1 리드 데이터(HDR1)와, 신뢰성 정보(WRB)를 기초로, 제1 리드 데이터(HDR1)의 에러를 수정하는 동작을 수행한다.
도 7 내지 도 9를 이용하여 설명한 내용과 관련된 예를 들면 다음과 같다. 이하는 파라미터 m=3, t=1 인 경우의 BCH 디코딩의 예이다.
제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)가 7비트(=23-1) 사이즈의 코드워드라고 가정한다. 7비트 코드워드 중에서, 4비트는 데이터이고, 3비트(=3×1)는 패러티 비트이다. 즉, 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)는 1×7 벡터이다.
제1 및 제2 신드롬 포머(190a, 290a)는 각각 7×3 매트릭스이다.
제1 신드롬(SYD1)은 제1 리드 데이터(HDR1)에 제1 신드롬 포머(190a)를 곱한 것이고, 제2 신드롬(SYD2)은 제2 리드 데이터(HDR2)에 제2 신드롬 포머(290a)를 곱한 것이다. 따라서, 제1 신드롬(SYD1) 및 제2 신드롬(SYD2)은 1×3 벡터가 된다.
뉴 신드롬(CXDR2)은 제1 신드롬(SYD1) 및 제2 신드롬(SYD2)의 연산 결과이기 때문에, 1×3 벡터이다.
뉴 신드롬(CXDR2)에 대해서, BM 알고리즘과 치엔 서치를 수행하면, 다시 1×7 벡터의 신뢰성 정보(WRB)가 생성된다.
전술한 것과 같이, m=3, t=1인 경우, 즉, 데이터의 사이즈 7(=23-1)비트이고 패러티 비트 수가 3(=3×1)비트이면, 데이터 내에 에러가 1개가 있는 경우는 100% 정정할 수 있다. 왜냐하면, 도 10에 정리한 것과 같이, 뉴 신드롬(CXDR2)와 신뢰성 정보(WRB)가 일대일로 매칭되기 때문이다.
예를 들어, 뉴 신드롬(CXDR2)이 000인 경우에는, 신뢰성 정보(WRB)가 0000000이고, 이는 제1 리드 데이터(HDR1)와 제2 리드 데이터(HDR2)가 완전히 동일한 것을 의미한다. 즉, 제1 리드 데이터(HDR1) 내에는 에러 비트가 없다.
뉴 신드롬(CXDR2)이 001인 경우에는, 신뢰성 정보(WRB)가 0000001이고, 이는 제1 리드 데이터(HDR1)의 마지막 비트와 제2 리드 데이터(HDR2)의 마지막 비트가 서로 다름을 의미한다. 따라서, 디코더(298)는 제1 리드 데이터(HDR1)의 마지막 비트를 정정할 수 있다.
유사하게, 뉴 신드롬(CXDR2)이 111인 경우에는, 신뢰성 정보(WRB)가 1000000이고, 이는 제1 리드 데이터(HDR1)의 첫 비트와 제2 리드 데이터(HDR2)의 첫 비트가 서로 다름을 의미한다. 따라서, 디코더(298)는 제1 리드 데이터(HDR1)의 첫 비트를 정정할 수 있다.
한편, 7비트의 제1 리드 데이터(HDR1)에 2개 비트 이상의 에러가 있는 경우에는, 에러 정정이 불가능하다. 에러를 정정하기 위해서는, 파리미터(m 또는 t)를 변환되어야 한다.
구체적으로, 메모리 컨트롤러(200)는 뉴 신드롬(CXDR2)를 기초로 제1 리드 데이터(HDR1)의 에러 수정이 가능한지를 확인할 수 있다.
만약, 메모리 컨트롤러(200)가 에러 수정이 불가능하다고 판단된 경우, 생성된 신뢰성 정보(WRB)를 무시하고 기설정된 방식에 따라 제1 리드 데이터(HDR1)를 처리할 수 있다. 기설정된 방식은 예를 들어, 제1 리드 데이터(HDR1)에 에러가 없다고 가정하고, 제1 리드 데이터(HDR1)를 정정하지 않는 것이다. 또는, 제1 리드 데이터(HDR1)의 모든 비트에 에러가 발생했다고 가정하고, 제1 리드 데이터(HDR1)를 정정하는 것이다.
또는, 메모리 컨트롤러(200)가 에러 수정이 불가능하다고 판단되는 경우의 횟수가 기설정된 기준을 초과하면, 파리미터(m 또는 t)를 변환할 수 있다. 즉, 제1 신드롬(SYD1) 및 제2 신드롬(SYD2)의 비트수를 증가시키는 방향으로, 파라미터(m 또는 t)를 변환할 수 있다. 전술한 것과 같이, 제1 신드롬(SYD1) 및 제2 신드롬(SYD2)의 비트수는 패러티 비트와 동일하기 때문에 mХt 로 표현될 수 있다. 따라서, 파리미터(m 또는 t)를 변화시킴으로, 제1 신드롬(SYD1) 및 제2 신드롬(SYD2)의 비트수를 증가시킬 수 있다.
도 11은 본 발명의 또 다른 실시예에 따른 스토리지 장치에서, 메모리 장치의 동작을 설명하기 위한 다른 블록도이다. 도 12는 본 발명의 또 다른 실시예에 따른 스토리지 장치에서, 메모리 컨트롤러의 동작을 설명하기 위한 다른 블록도이다. 설명의 편의상, 도 5 내지 도 10을 이용하여 설명한 것과 다른 점을 위주로 설명한다.
압축(변환)되는 제1/제2 리드 데이터(HDR1, HDR2)는, 스토리지 장치의 ECC 회로(도 1의 210 참조)에 사용되는 포맷과 일치될 필요는 없다. 즉, 낸드 플래시 메모리를 기반으로 한 스토리지 장치의 ECC 회로(210)는, 매우 긴(즉, 사이즈가 매우 큰) 데이터를 입력받아 에러정정을 한다. 따라서, 아무리 간단한 리니어 연산기(또는 신드롬 포머)라고 하더라도, 메모리 장치(100)(즉, 페이지 버퍼 및 감지 증폭기(도 2의 120 참조)) 내에 구현하는 것이 어려울 수 있다.
도 11을 참조하면, 동일한 메모리 셀들을 리드하여 제1 리드 데이터(HDR1) 및 제2 리드 데이터(HDR2)를 생성한다. 여기서, 메모리 셀은 낸드 플래시 메모리 셀일 수 있으나, 이에 한정되지 않는다.
제2 리드 데이터(HDR2)를 다수의 제2 서브 리드 데이터(HDR20~HDR2k)로 분할한다. 예를 들어, 제2 서브 리드 데이터(HDR20~HDR2k) 각각은 256비트일 수 있다.
다수의 제1 신드롬 포머(190a1~190ak)를 이용하여, 다수의 제2 서브 리드 데이터(HDR20~HDR2k) 각각을 다수의 제2 서브 신드롬(SYD20~SYD2k)로 변환/생성한다. 예를 들어, 제2 서브 신드롬(SYD20~SYD2k) 각각은 25비트일 수 있다. 전술한 것과 같이, 각 제2 서브 신드롬(SYD20~SYD2k)의 사이즈는, 대응되는 제2 서브 리드 데이터(HDR20~HDR2k)의 사이즈의 약 10%일 수 있다. BCH 디코딩의 경우, 파라미터 값(즉, m, t의 값)에 따라 정정할 수 있는 에러 수가 결정된다. 예를 들어, BCH 익스텐디드 디코딩의 경우, 256(=28) 비트의 데이터에서, 패러티 비트가 25(=8×3+1)비트라면, 3개의 에러는 완벽하게 정정할 수 있다. 일반적으로, 낸드 플래시 메모리 장치에서 에러의 발생확률은 0.1%~1% 수준이다. 256비트의 데이터의 경우에는, 약 3개 이하로 에러가 발생한다. 따라서, 256비트의 데이터에서, 패러티 비트가 25비트라면 거의 대부분의 에러를 정정할 수 있다.
메모리 장치(100)는 제1 리드 데이터(HDR1) 및 다수의 제2 서브 신드롬(SYD20~SYD2k)를 메모리 컨트롤러(200)로 출력한다.
도 12를 참조하면, 메모리 컨트롤러(200)는 제1 리드 데이터(HDR1)와 다수의 제2 서브 신드롬(SYD20~SYD2k)을 제공받는다.
이어서, 제1 리드 데이터(HDR1)를, 다수의 제1 서브 리드 데이터(HDR10~HDR1k)로 분할한다.
이어서, 다수의 제2 신드롬 포머(290a1~290ak)을 이용하여, 다수의 제1 서브 리드 데이터(HDR10~HDR1k) 각각을 변환하여 다수의 제1 서브 신드롬(SYD10~SYD1k)를 생성한다.
이어서, 다수의 연산기(292a1~292ak)를 이용하여, 다수의 서로 대응되는 제1 서브 신드롬(SYD10~SYD1k)과 제2 서브 신드롬(SYD20~SYD2k)을 논리 연산(예를 들어, XOR 연산)하여, 다수의 서브 뉴 신드롬(CXDR21~ CXDR2k)를 생성한다.
이어서, 다수의 인버스 연산기(294a1~294ak)로, 다수의 서브 뉴 신드롬(CXDR21~CXDR2k) 각각을 변환하여 다수의 서브 신뢰성 정보(WRB0~WRBk)를 생성한다. 다수의 서브 신뢰성 정보(WRB0~WRBk) 각각은 서로 대응되는 제1 서브 리드 데이터(HDR10~HDR1k)와 제2 서브 리드 데이터(HDR20~HDR2k)의 XOR 연산 결과일 수 있다.
이어서, 디코더(298)는 다수의 제1 서브 리드 데이터(HDR10~HDR1k)와 다수의 서브 신뢰성 정보(WRB0~WRBk)를 기초로, 제1 리드 데이터(HDR1)의 에러를 수정할 수 있다.
한편, 도 11 및 도 12를 설명할 때, 제1 리드 데이터(HDR1)를 다수의 제1 서브 리드 데이터(HDR10~HDR1k)로 분할하는 것을 메모리 컨트롤러(200)에서 수행하는 것으로 설명하였으나, 이에 한정되지 않는다. 즉, 메모리 장치(100)에서 제1 리드 데이터(HDR1)를 다수의 제1 서브 리드 데이터(HDR10~HDR1k)로 분할하여, 다수의 제1 서브 리드 데이터(HDR10~HDR1k)와 대응되는 다수의 제2 서브 신드롬(SYD20~SYD2k)을 함께 출력할 수도 있다.
또한, 도 11 및 도 12에서는, 제1 신드롬 포머(190a1~190ak), 제1 서브 신드롬(SYD10~SYD1k), 제2 신드롬 포머(290a1~290ak), 제2 서브 신드롬(SYD20~SYD2k), 서브 뉴 신드롬(CXDR21~CXDR2k) 등으로 설명하였으나, 이들을 각각 제1 리니어 연산기, 제1 서브 변환 정보, 제2 리니어 연산기, 제2 서브 변환 정보, 서브 연산 정보 등으로 바꾸어 설명할 수 있다.
도 13은 본 발명의 몇몇 실시예에 따른 스토리지 장치에 사용되는 메모리 장치를 설명하기 위한 사시도이다.
도 13을 참고하면, 기판 상면에 실질적으로 수직한 방향을 제1 방향, 상기 기판 상면에 평행하면서 서로 교차하는 두 방향을 각각 제2 방향 및 제3 방향으로 정의한다. 예를 들어, 상기 제2 방향 및 상기 제3 방향은 실질적으로 서로 수직하게 교차할 수 있다.
메모리 장치(100)는 주변 회로가 형성되는 주변 회로 영역(PCR: peripheral circuit region), 메모리 셀 어레이가 형성되는 메모리 셀 영역(MCR: memory cell region) 및 입출력 패드들(PAD)을 포함한다.
주변 회로 영역(PCR)은 반도체 기판(11), 반도체 기판(11)의 상면에 형성되는 주변 회로(미도시) 및 상기 주변 회로를 덮는 하부 절연막(12)을 포함할 수 있다. 메모리 셀 영역(MCR)은 하부 절연막(12)의 상면에 형성되는 베이스 층(13), 베이스 층(13)의 상면에 형성되는 메모리 셀 어레이(도시되지 않음) 및 상기 메모리 셀 어레이를 덮는 상부 절연막(14)을 포함할 수 있다. 반도체 기판의 하면(11)에는 입출력 패드들(PAD)이 형성된다. 입출력 패드들(PAD)은 상기 메모리 셀 어레이의 일 부분, 즉 메모리 셀 영역(MCR)의 일 부분과 수직 방향으로 중첩되도록 형성될 수 있다. 후술하는 바와 같이 입출력 패드들(PAD)는 주변 회로 영역(PCR)에 형성된 관통-실리콘 비아들을 덮도록 형성될 수 있다.
이와 같이 메모리 장치(100)는 반도체 기판(11) 위에 주변 회로를 형성하고 상기 주변 회로 위에 메모리 셀 어레이를 적층하는 COP(Cell on Peri) 구조를 채용하여 메모리 장치(100)의 사이즈를 감소할 수 있다.
특히, 본 발명의 몇몇 실시예에서, 메모리 장치(100) 내에 리니어 연산기(도 5의 190 참조), 신드롬 포머(도 7의 190a, 도 11의 190a1~190ak) 등이 추가적으로 형성되어야 한다. 메모리 장치(10)가 COP 구조를 채용하면, 주변 회로 영역(PCR)이 메모리 셀 영역(MCR)만큼 증가하기 때문에 상기 리니어 연산기, 신드롬 포머를 형성할 수 있는 공간이 충분해 진다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 메모리 장치 190: 제1 리니어 연산기
190a, 190a1~190ak: 제1 신드롬 포머
200: 메모리 컨트롤러 210: ECC 회로
290: 제2 리니어 연산기
290a, 290a1~290ak: 제2 신드롬 포머
HDR1: 제1 리드 데이터 HDR2: 제2 리드 데이터
CHDR1: 제1 변환 정보 CHDR2: 제2 변환 정보
CXDR1: 연산 정보 CXDR2: 뉴 신드롬
SYD1: 제1 신드롬 SYD2: 제2 신드롬
SYD10~SYD1k: 제1 서브 신드롬
SYD20~SYD2k: 제2 서브 신드롬
CXDR21~CXDR2k : 서브 뉴 신드롬
WRB: 신뢰성 정보
WRB0~WRBk: 서브 신뢰성 정보

Claims (20)

  1. 제1 리드 데이터와 제2 변환 정보를 제공받고, 상기 제2 변환 정보는 리니어 연산을 통해서 제2 리드 데이터가 변환된 데이터이고, 상기 제1 리드 데이터와 상기 제2 리드 데이터는 동일한 메모리 셀들로부터 리드된 데이터이고,
    상기 리니어 연산을 이용하여, 상기 제1 리드 데이터를 변환하여 제1 변환 정보를 생성하고,
    상기 제1 변환 정보와 상기 제2 변환 정보를 논리 연산하여, 연산 정보를 생성하고,
    상기 리니어 연산의 인버스 연산을 이용하여, 상기 연산 정보를 변환하여 신뢰성 정보를 생성하고,
    상기 제1 리드 데이터와 상기 신뢰성 정보를 기초로, 상기 제1 리드 데이터의 에러를 수정하는 것을 포함하는, 메모리 컨트롤러의 구동 방법.
  2. 제 1항에 있어서,
    상기 제1 리드 데이터는 N비트(단, N은 2이상의 자연수)이고, 상기 제1 변환 정보는 M비트(단, M은 N보다 작은 자연수)이고,
    상기 제2 리드 데이터는 N비트이고, 상기 제2 변환 정보는 M비트인, 메모리 컨트롤러의 구동 방법.
  3. 제 2항에 있어서,
    상기 제1 변환 정보의 사이즈는 상기 제1 리드 데이터의 사이즈의 10% 이하이고,
    상기 제2 변환 정보의 사이즈는 상기 제2 리드 데이터의 사이즈의 10% 이하인, 메모리 컨트롤러의 구동 방법.
  4. 제 1항에 있어서,
    상기 제1 리드 데이터와 상기 제2 리드 데이터는 하드 디시젼 리드 데이터인, 메모리 컨트롤러의 구동 방법.
  5. 제 1항에 있어서,
    상기 연산 정보를 기초로 상기 제1 리드 데이터의 에러 수정이 가능한지 확인하는 것을 더 포함하고,
    상기 제1 리드 데이터의 에러를 수정하는 것은, 상기 에러 수정이 불가능하다고 판단된 경우, 상기 신뢰성 정보를 무시하고 기설정된 방식에 따라 상기 제1 리드 데이터를 처리하는 것을 포함하는, 메모리 컨트롤러의 구동 방법.
  6. 제 5항에 있어서,
    상기 에러 수정이 불가능하다고 판단되는 경우의 횟수가 기설정된 기준을 초과하면,
    상기 제1 변환 정보 및 상기 제2 변환 정보의 비트수를 증가시키는 것을 포함하는, 메모리 컨트롤러의 구동 방법.
  7. 제 1항에 있어서,
    상기 리니어 연산은, XOR 로만 구성되거나, XNOR로만 구성되는, 메모리 컨트롤러의 구동 방법.
  8. 제 1항에 있어서,
    상기 리니어 연산은 신드롬 포머(Syndrome Former)에 의해 수행되는, 메모리 컨트롤러의 구동 방법.
  9. 제 8항에 있어서,
    상기 리니어 연산의 인버스 연산은, BM(Berlekamp Massey) 알고리즘 수행 및 치엔(Chien Search) 서치 수행을 포함하는, 메모리 컨트롤러의 구동 방법.
  10. 제 1항에 있어서,
    상기 메모리 셀들은 낸드 플래시 메모리 셀들이고,
    상기 제1 리드 데이터는 256비트이고, 제1 변환 정보는 25비트인, 메모리 컨트롤러의 구동 방법.
  11. 제 1항에 있어서,
    상기 논리 연산은, XOR 연산 또는 XNOR 연산을 포함하는, 메모리 컨트롤러의 구동 방법.
  12. 제 1항에 있어서,
    상기 제1 리드 데이터와 상기 제2 리드 데이터는 동일한 문턱전압으로 리드한 데이터인, 메모리 컨트롤러의 구동 방법.
  13. 제 1항에 있어서,
    상기 제1 리드 데이터와 상기 제2 리드 데이터는 기설정된 서로 다른 문턱전압으로 리드한 데이터이거나,
    상기 제1 리드 데이터와 상기 제2 리드 데이터는 메모리 장치의 상태에 따라 어댑티브하게 설정되는, 서로 다른 문턱 전압으로 리드한 데이터인, 메모리 컨트롤러의 구동 방법.
  14. 제1 리드 데이터와 제2 신드롬을 제공받고, 상기 제2 신드롬은 제2 리드 데이터가 제1 신드롬 포머에 의해 변환된 데이터이고, 상기 제1 리드 데이터와 상기 제2 리드 데이터는 동일한 메모리 셀들로부터 리드된 하드 디시젼 리드 데이터이고,
    제2 신드롬 포머를 이용하여, 상기 제1 리드 데이터를 변환하여 제1 신드롬을 생성하고,
    상기 제1 신드롬과 상기 제2 신드롬을 XOR 또는 XNOR 연산하여, 뉴 신드롬을 생성하고,
    상기 BM(Berlekamp Massey) 알고리즘과 치엔(Chien Search) 서치를 수행을 하여, 상기 뉴 신드롬을 변환하여 신뢰성 정보를 생성하고,
    상기 제1 리드 데이터와 상기 신뢰성 정보를 기초로, 상기 제1 리드 데이터의 에러를 수정하는 것을 포함하는, 메모리 컨트롤러의 구동 방법.
  15. 제 14항에 있어서,
    상기 제1 신드롬의 사이즈는 상기 제1 리드 데이터의 사이즈의 10% 이하이고,
    상기 제2 신드롬의 사이즈는 상기 제2 리드 데이터의 사이즈의 10% 이하인, 메모리 컨트롤러의 구동 방법.
  16. 제 14항에 있어서,
    상기 뉴 신드롬을 기초로 상기 제1 리드 데이터의 에러 수정이 가능한지 확인하는 것을 더 포함하고,
    상기 제1 리드 데이터의 에러를 수정하는 것은, 상기 에러 수정이 불가능하다고 판단된 경우, 상기 신뢰성 정보를 무시하고 기설정된 방식에 따라 상기 제1 리드 데이터를 처리하는 것을 포함하는, 메모리 컨트롤러의 구동 방법.
  17. 제 16항에 있어서,
    상기 에러 수정이 불가능하다고 판단되는 경우의 횟수가 기설정된 기준을 초과하면,
    상기 제1 신드롬 및 상기 제2 신드롬의 비트수를 증가시키는 것을 포함하는, 메모리 컨트롤러의 구동 방법.
  18. 동일한 메모리 셀들로부터 제1 리드 데이터와 제2 리드 데이터를 리드하여, 리니어 연산을 이용하여 상기 제2 리드 데이터를 변환하여 제2 변환 정보를 생성하고, 상기 제1 리드 데이터와 상기 제2 변환 정보를 출력하는 메모리 장치; 및
    상기 제1 리드 데이터와 상기 제2 변환 정보를 제공받고, 상기 리니어 연산을 이용하여 상기 제1 리드 데이터를 변환하여 제1 변환 정보를 생성하고, 상기 제1 변환 정보와 상기 제2 변환 정보를 논리 연산하여 연산 정보를 생성하고, 상기 리니어 연산의 인버스 연산을 이용하여 상기 연산 정보를 변환하여 신뢰성 정보를 생성하는 메모리 컨트롤러를 포함하는 스토리지 장치.
  19. 메모리 장치와 메모리 컨트롤러를 포함하는 스토리지 장치의 구동 방법으로서,
    상기 메모리 장치가
    다수의 메모리 셀을 리드하여 제1 리드 데이터를 생성하고,
    상기 다수의 메모리 셀을 리드하여 제2 리드 데이터를 생성하고,
    상기 제2 리드 데이터를, 다수의 제2 서브 리드 데이터로 분할하고,
    리니어 연산을 이용하여, 상기 다수의 제2 서브 리드 데이터 각각을 변환하여 다수의 제2 서브 변환 정보를 생성하고,
    상기 제1 리드 데이터와 상기 다수의 제2 서브 변환 정보를 출력하는 것을 포함하는, 스토리지 장치의 구동 방법.
  20. 제 19항에 있어서, 상기 메모리 컨트롤러가,
    상기 제1 리드 데이터와 상기 다수의 제2 서브 변환 정보를 제공받고,
    상기 제1 리드 데이터를, 다수의 제1 서브 리드 데이터로 분할하고,
    상기 리니어 연산을 이용하여, 상기 다수의 제1 서브 리드 데이터 각각을 변환하여 다수의 제1 서브 변환 정보를 생성하고,
    서로 대응되는 상기 제1 서브 변환 정보와 상기 제2 서브 변환 정보를 논리 연산하여, 다수의 서브 연산 정보를 생성하고,
    상기 리니어 연산의 인버스 연산을 이용하여, 상기 다수의 서브 연산 정보를 변환하여 다수의 서브 신뢰성 정보를 생성하고,
    상기 다수의 제1 서브 리드 데이터와 다수의 서브 신뢰성 정보를 기초로, 상기 제1 리드 데이터의 에러를 수정하는 것을 포함하는, 스토리지 장치의 구동 방법.
KR1020190098568A 2019-08-13 2019-08-13 메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법 KR20210019676A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190098568A KR20210019676A (ko) 2019-08-13 2019-08-13 메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법
US16/823,913 US11206046B2 (en) 2019-08-13 2020-03-19 Operating method of memory controller, storage device and the operating method thereof
EP20170384.0A EP3780397B1 (en) 2019-08-13 2020-04-20 Operating method of a memory controller
SG10202004465VA SG10202004465VA (en) 2019-08-13 2020-05-14 Operating method of memory controller, storage device and the operating method thereof
CN202010790981.XA CN112395128A (zh) 2019-08-13 2020-08-07 存储器控制器的操作方法、存储设备及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190098568A KR20210019676A (ko) 2019-08-13 2019-08-13 메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법

Publications (1)

Publication Number Publication Date
KR20210019676A true KR20210019676A (ko) 2021-02-23

Family

ID=70333887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190098568A KR20210019676A (ko) 2019-08-13 2019-08-13 메모리 컨트롤러의 구동방법, 스토리지 장치 및 그 구동방법

Country Status (5)

Country Link
US (1) US11206046B2 (ko)
EP (1) EP3780397B1 (ko)
KR (1) KR20210019676A (ko)
CN (1) CN112395128A (ko)
SG (1) SG10202004465VA (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240062843A1 (en) * 2022-08-22 2024-02-22 Micron Technology, Inc. Semiconductor device having syndrome generator

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231640A (en) 1990-07-20 1993-07-27 Unisys Corporation Fault tolerant processor/memory architecture
US7089276B2 (en) * 2002-10-18 2006-08-08 Lockheed Martin Corp. Modular Galois-field subfield-power integrated inverter-multiplier circuit for Galois-field division over GF(256)
US8281188B2 (en) * 2010-08-05 2012-10-02 Miller Gary L Data processing system with peripheral configuration information error detection
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9406377B2 (en) 2014-12-08 2016-08-02 Sandisk Technologies Llc Rewritable multibit non-volatile memory with soft decode optimization
US10474525B2 (en) 2015-08-11 2019-11-12 Sandisk Technologies Llc Soft bit techniques for a data storage device
US9740559B2 (en) 2015-10-28 2017-08-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for compaction based flash memory data recovery
US9690512B2 (en) 2015-11-23 2017-06-27 Samsung Electronics Co., Ltd. Method of similarity testing by syndromes and apparatus therefore
KR102420641B1 (ko) * 2017-12-15 2022-07-14 에스케이하이닉스 주식회사 에러정정방법 및 이를 이용한 반도체장치
JP2019109806A (ja) * 2017-12-20 2019-07-04 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理方法
US10804935B2 (en) 2018-01-02 2020-10-13 Intel Corporation Techniques for reducing latency in the detection of uncorrectable codewords
KR20190098568A (ko) 2018-02-14 2019-08-22 김재윤 벗겨짐이 없는 샤워 타월

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding

Also Published As

Publication number Publication date
CN112395128A (zh) 2021-02-23
US11206046B2 (en) 2021-12-21
EP3780397B1 (en) 2024-05-01
EP3780397A1 (en) 2021-02-17
US20210050866A1 (en) 2021-02-18
SG10202004465VA (en) 2021-03-30

Similar Documents

Publication Publication Date Title
US10684914B2 (en) Memory device and method of controlling ECC operation in the same
US9268638B2 (en) Flash memory control method, controller and electronic apparatus
US11475972B2 (en) Non-volatile memory device, controller for controlling the same, storage device having the same, and reading method thereof
US9627079B1 (en) Storage device, memory system having the same, and operating method thereof
US10452471B2 (en) Non-volatile memory with dynamic write abort detection and recovery
US9647697B2 (en) Method and system for determining soft information offsets
US10084479B2 (en) Low BER hard-decision LDPC decoder
US20200160923A1 (en) Memory controller for controlling memory device based on erase state information and method of operating the memory controller
US20130318420A1 (en) Code modulation encoder and decoder, memory controller including them, and flash memory system
US10985780B2 (en) Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller
US11309051B2 (en) Memory system that uses NAND flash memory as a memory chip
JP2008108297A (ja) 不揮発性半導体記憶装置
KR20170130969A (ko) 페이지 버퍼를 포함하는 메모리 장치 및 페이지 버퍼 배치 방법
US10700712B2 (en) Semiconductor device including error correction code unit that generates data block matrix including plural parity blocks and plural data block groups diagonally arranged, and methods of operating the same
CN115910158A (zh) 存储装置
KR20200055585A (ko) 랜덤 입출력 엔진을 포함하는 메모리 장치 및 그것을 포함하는 저장 장치
CN114168377A (zh) 存储器系统、半导体存储装置及数据读出方法
EP3780397B1 (en) Operating method of a memory controller
US11263075B2 (en) Memory system and operating method thereof
US11886293B2 (en) Memory controller managing strong error information and operating method thereof
US11562803B2 (en) Memory device storing parity and memory system including the same
KR20170032144A (ko) 메모리 장치의 에러 체크 및 정정(ecc) 제어 방법 및 이를 수행하는 메모리 장치

Legal Events

Date Code Title Description
A201 Request for examination