KR20170056407A - 데이터의 인코딩과 디코딩을 위한 메모리 시스템 - Google Patents

데이터의 인코딩과 디코딩을 위한 메모리 시스템 Download PDF

Info

Publication number
KR20170056407A
KR20170056407A KR1020160061010A KR20160061010A KR20170056407A KR 20170056407 A KR20170056407 A KR 20170056407A KR 1020160061010 A KR1020160061010 A KR 1020160061010A KR 20160061010 A KR20160061010 A KR 20160061010A KR 20170056407 A KR20170056407 A KR 20170056407A
Authority
KR
South Korea
Prior art keywords
bits
data
memory
memory controller
error
Prior art date
Application number
KR1020160061010A
Other languages
English (en)
Other versions
KR102663812B1 (ko
Inventor
예브게니 블라이흐만
모셰 트위토
애브너 도르
엘로나 에레즈
공준진
샤이 랜디스
야론 샤니
요아프 쉬어쉬브스키
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170056407A publication Critical patent/KR20170056407A/ko
Application granted granted Critical
Publication of KR102663812B1 publication Critical patent/KR102663812B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/1515Reed-Solomon 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/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
    • 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/2909Product 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/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/2948Iterative decoding
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • H03M13/453Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD] wherein the candidate code words are obtained by an algebraic decoder, e.g. Chase decoding
    • H03M13/455Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD] wherein the candidate code words are obtained by an algebraic decoder, e.g. Chase decoding using a set of erasure patterns or successive erasure decoding, e.g. generalized minimum distance [GMD] decoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • 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/0409Online test
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
    • 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/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory 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/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/2957Turbo codes and decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

메모리 시스템은 메모리 컨트롤러와 메모리 장치를 포함하고, 상기 메모리 장치는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 복수의 저장된 비트들을 저장하는 복수의 메모리 셀들을 포함하는 가장 작은 제1메모리 페이지를 포함하고, 상기 메모리 컨트롤러는 상기 복수의 저장된 비트들에 대응하는 복수의 리드 비트들을 생성하기 위해 상기 제1메모리 페이지에 대해 제1하드 리드 작동을 수행하고, 작동 값을 생성하고, 상기 작동 값에 기초하여 상기 복수의 리드 비트들 중 제1그룹의 비트들 중에서 어느 하나의 값을 변경할지 여부를 결정하고, 상기 메모리 컨트롤러가 상기 제1그룹의 비트들 중에서 어느 하나의 값을 변경하기로 판단한 경우, 상기 메모리 컨트롤러는 각각이 상기 제1그룹의 비트들 각각에 대응하는 LLR(Log Likelihood Ratio) 값들에 기초하여 상기 제1그룹의 비트들 중에서 하나를 선택하고, 선택된 비트 값을 변경한다.

Description

데이터의 인코딩과 디코딩을 위한 메모리 시스템{MEMORY SYSTEM FOR ENCODING AND DECODING DATA}
본 발명의 개념에 따른 실시 예는 메모리 시스템에 관한 것으로, 특히 데이터의 오류 비트들을 정정할 수 있는 인코더와 디코더를 이용하여 비트 오류 비율을 감소시킬 수 있는 메모리 시스템 관한 것이다.
NAND 플래시 메모리는 EEPROM(electrically erasable and programmable read only memory)의 일 예이다. NAND 플래시 메모리는 서로 직렬로 접속된 복수의 메모리 셀들을 포함하는 NAND 셀 단위들을 이용하여 작은 칩 영역에 많은 양의 정보를 저장할 수 있다.
데이터가 메모리 장치에 저장되고, 저장된 데이터가 상기 메모리 장치로부터 리드될 때, 오류는 증가할 수 있다.
다양한 오류 정정 코드들은 그러한 오류들을 검출하고 정정하는데 사용될 수 있다. 상기 오류 정정 코드들은 RS 코드(Reed-Solomon code), BCH 코드(Bose-Chaudhuri-Hocquenghem code), 또는 LDPC 코드(low density parity check code) 등을 포함할 수 있다.
본 발명이 이루고자 하는 기술적 과제는 데이터의 비트 오류 비율을 감소시키면서도 하드웨어의 복잡도 상승을 방지할 수 있는 인코딩과 디코딩을 위한 메모리 시스템을 제공하는 것이다.
본 발명에 따른 메모리 시스템은 메모리 컨트롤러와 메모리 장치를 포함하고, 상기 메모리 장치는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 복수의 저장된 비트들을 저장하는 복수의 메모리 셀들을 포함하는 가장 작은 제1메모리 페이지를 포함하고, 상기 메모리 컨트롤러는 상기 복수의 저장된 비트들에 대응하는 복수의 리드 비트들을 생성하기 위해 상기 제1메모리 페이지에 대해 제1하드 리드 작동을 수행하고, 작동 값을 생성하고, 상기 작동 값에 기초하여 상기 복수의 리드 비트들 중 제1그룹의 비트들 중에서 어느 하나의 값을 변경할지 여부를 결정하고, 상기 메모리 컨트롤러가 상기 제1그룹의 비트들 중에서 어느 하나의 값을 변경하기로 판단한 경우, 상기 메모리 컨트롤러는 각각이 상기 제1그룹의 비트들 각각에 대응하는 LLR(Log Likelihood Ratio, 대수 가능성비) 값들에 기초하여 상기 제1그룹의 비트들 중에서 하나를 선택하고, 선택된 비트 값을 변경할 수 있다.
상기 메모리 컨트롤러는, 상기 제1하드 리드 작동에 의해 생성된 상기 복수의 리드 비트들 중에서 오류들을 정정하기 위해 제1BCH(bose-chaudhuri-hocquenghim) ECC(error correcting code) 디코딩 작동을 수행하고, 상기 메모리 컨트롤러가 상기 제1그룹의 비트들 중에서 어느 하나를 변경하기로 판단한 경우, 상기 메모리 컨트롤러는 상기 복수의 리드 비트들 중에서 부가적인 오류들을 정정하기 위해, 값들이 변경된 선택된 비트들을 포함하는 상기 복수의 리드 비트들에 대해 제2BCH ECC 디코딩 작동을 수행할 수 있다.
상기 제1메모리 페이지는, 상기 복수의 저장된 비트들이 복수의 행들과 복수의 열들로 배열되고, 상기 복수의 행들은 복수의 데이터 프레임들과 적어도 하나의 패리티 프레임을 포함하고, 상기 적어도 하나의 패리티 프레임은 각각이 복수의 컬럼 그룹들에 대응하는 복수의 패리티 값들을 포함하고, 상기 복수의 컬럼 그룹들 각각은 상기 제1메모리 페이지의 상기 복수의 컬럼들 중에서 적어도 하나를 포함하고, 상기 복수의 패리티 값들 각각은 상기 저장된 비트들 중에서 상기 비트들 각각에 대해 수행된 XOR 연산의 결과이고, 상기 비트들은 상기 데이터 프레임들 중에서 어느 하나에 포함되고 상기 패리티 값에 상응하는 상기 컬럼 그룹에 포함될 수 있다.
상기 메모리 컨트롤러는, 상기 제1 및 제2 BCH ECC 디코딩 작동들 중에서 적어도 하나의 결과에 기초하여 상기 복수의 데이터 프레임들 각각을 하나 또는 그 이상의 오류 프레임들 또는 하나 또는 그 이상의 정정 프레임들로서 지정하는 할 수 있다.
본 발명에 따른 메모리 시스템은 메모리 컨트롤러와 메모리 장치를 포함하고, 상기 메모리 장치는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 복수의 메모리 셀들을 포함하는 가장 작은 제1메모리 페이지를 포함하고, 상기 메모리 컨트롤러는, 외부 장치로부터 복수의 비트들을 수신하고, 수신된 복수의 비트들에 대해 ECC(error correcting code) 인코딩을 수행하여 복수의 제1데이터 코드 워드들을 생성하고, 상기 복수의 제1데이터 코드 워드들 각각은 제1데이터 비트들과 제1리던던시 비트들을 포함하고, 상기 제1리던던시 비트들은 상기 제1데이터 비트들과 관련된 초기 오류 정정 능력을 제공하고, 상기 복수의 제1데이터 코드 워드들 각각을 복수의 데이터 프레임들로서 상기 제1메모리 페이지에 저장하고, 델타 신드롬 데이터를 생성하고, 생성된 델타 신드롬 데이터는 상기 복수의 제1데이터 코드 워드들 각각에 대응하는 적어도 복수의 제1스테이지 델타 신드롬들을 포함하고, 상기 복수의 제1데이터 코드 워드들 중에서 각 제1데이터 코드 워드에 대해, 상기 제1데이터 코드 워드에 대응하는 상기 제1스테이지 델타 신드롬은 제1스테이지 오류 정정 능력을 제공하고, 상기 제1스테이지 오류 정정 능력은 상기 제1데이터 코드 워드의 상기 제1리던던시 비트들에 의해 제공된 상기 초기 오류 정정 능력에 관련된 부가적인 오류 정정 능력일 수 있다.
상기 메모리 컨트롤러는, BCH(bose-chaudhuri-hocquenghim) ECC(error correcting code) 인코딩을 수행하여 상기 복수의 제1데이터 코드 워드들을 생성함으로써 상기 복수의 제1데이터 코드 워드들은 BCH 코드 워드들일 수 있다.
상기 메모리 컨트롤러는 상기 메모리 컨트롤러에 의해 생성된 델타 신드롬 데이터는 상기 복수의 제1데이터 코드 워드들 각각에 대한 N(N은 양의 정수) 스테이지들 델타 신드롬들을 포함하고, 상기 N 스테이지들 델타 신드롬들 중에서 서로 다른 스테이지들의 델타 신드롬들은, 상기 델타 신드롬들의 상기 N 스테이지들 중 서로 다른 스테이지들의 델타 신드롬들에 대응하는 상기 제1데이터 코드 워드들의 상기 제1리던던시 비트들에 의해 제공된 상기 초기 오류 정정 능력과 관련된 서로 다른 부가적인 오류 정정 능력들을 포함하고, 상기 N 스테이지들의 델타 신드롬들 중 동일한 스테이지의 델타 신드롬들은, 상기 델타 신드롬들의 상기 N 스테이지들 중에서 동일한 스테이지의 델타 신드롬들에 대응하는 상기 제1데이터 코드 워드들의 상기 제1리던던시 비트들에 의해 제공된 상기 초기 오류 정정 능력과 관련된 동일한 부가적인 오류 정정 능력들을 포함할 수 있다.
본 발명에 따른 메모리 시스템은 메모리 컨트롤러와 메모리 장치를 포함하고, 상기 메모리 장치는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 복수의 저장된 비트들을 저장하는 복수의 메모리 셀들을 포함하는 가장 작은 제1메모리 페이지를 포함하고, 상기 메모리 컨트롤러는, 상기 복수의 저장된 비트들에 대응하는 복수의 제1데이터 코드 워드들을 생성하기 위하여 상기 제1메모리 페이지에 대해 제1하드 리드 작동을 수행하고, 상기 복수의 제1데이터 코드 워드들 각각은 제1데이터 비트들과 제1리던던시 비트들을 포함하고, 상기 제1리던던시 비트들은 초기 오류 정정 능력을 제공하고, 상기 제1데이터 코드 워드들의 상기 제1리던던시 비트들의 상기 초기 오류 정정 능력들을 이용하여 상기 제1데이터 코드 워드들의 오류들을 정정하기 위하여 제1ECC(error correcting code) 디코딩 작동을 수행하고, 하나 또는 그 이상의 오류 코드 워드들의 초기 정정 능력들을 보강할 것인지 여부를 판단하고, 상기 복수의 제1데이터 코드 워드들 중에서 제1데이터 코드 워드인 상기 하나 또는 그 이상의 오류 코드 워드들 각각은 상기 제1데이터 코드 워드의 상기 제1리던던시 비트들의 초기 정정 능력을 초과하는 비트들 오류들의 개수를 포함하고, 상기 메모리 컨트롤러가 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하기로 판단한 경우, 상기 메모리 컨트롤러는 각각이 상기 하나 또는 그 이상의 오류 코드 워드들에 대응하는 하나 또는 그 이상의 제1델타 신드롬들을 생성하고, 상기 하나 또는 그 이상의 제1델타 신드롬들 각각은 제1부가적인 오류 정정 능력을 가지고, 상기 메모리 컨트롤러는 제2ECC 디코딩 작동을 수행하여 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하고, 상기 하나 또는 그 이상의 제1델타 신드롬들의 상기 제1 부가적인 오류 정정 능력들에 의해 보강된 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 제1리던던시 비트들의 상기 초기 오류 정정 능력들을 이용하여 상기 하나 또는 그 이상의 오류 코드 워드들의 오류들을 정정할 수 있다.
상기 메모리 컨트롤러는, 상기 메모리 장치에 저장된 오버헤드 보호 데이터에 기초하여 적어도 하나의 제2코드 워드의 제2리던던시 비트들을 획득하고, 상기 적어도 하나의 제2코드 워드는 복수의 제1델타 신드롬들에 대해 RS(Reed-Solomon) 인코딩을 수행하여 생성된 코드 워드이고, 상기 제1ECC 디코딩 작동에 기초하여 상기 하나 또는 그 이상의 오류 코드 워드들의 총 개수를 판단하고, 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강할지 여부를 판단하고, 상기 복수의 제1델타 신드롬들 중에서 상기 제2리던던시 비트들을 이용하여 상기 메모리 컨트롤러에 의해 복원될 수 있는 상기 델타 신드롬들의 최대 개수가 상기 하나 또는 그 이상의 오류 코드 워드들의 총 개수보다 작지 않을 때, 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하기로 판단하고, 복수의 제1델타 신드롬들 중에서 상기 제2리던던시 비트들을 이용하여 상기 메모리 컨트롤러에 의해 복원될 수 있는 상기 델타 신드롬들의 최대 개수가 상기 하나 또는 그 이상의 오류 코드 워드들의 총 개수보다 작을 때, 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하지 않기로 판단할 수 있다.
상기 메모리 컨트롤러가 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하기로 판단한 경우, 상기 메모리 컨트롤러는, 올바른 제1코드 워드들의 상기 데이터 비트들에 기초하여 제1델타 신드롬들을 계산하고, 상기 올바른 제1코드 워드들 각각은 상기 복수의 제1코드 워드들 중에서 상기 하나 또는 그 이상의 오류 코드 워드들 중 어느 하나가 아닌 제1코드 워드이고, 상기 하나 또는 그 이상의 오류 프레임들의 상기 하나 또는 그 이상의 제1델타 신드롬들을 복원하기 위해, RS 디코딩 작동을 수행하여 상기 하나 또는 그 이상의 오류 프레임들의 상기 하나 또는 그 이상의 제1델타 신드롬들을 획득하고, 상기 RS 디코딩 작동은 계산된 제1델타 신드롬들과 상기 제2리던던시 비트들을 이용하여 수행될 수 있다.
본 발명에 따른 메모리 시스템은 데이터의 비트 오류 비율을 감소시키면서도 하드웨어의 복잡도 상승을 방지할 수 있는 효과가 있다.
본 발명에 따른 메모리 시스템은 데이터의 비트 오류 비율을 감소시키면서도 사용 가능한 메모리 페이지 공간을 증가시킬 수 있는 효과가 있다.
본 발명에 따른 메모리 시스템은 데이터의 비트 오류 비율을 감소시키면서도 데이터 처리량(throughput)을 높일 수 있는 효과가 있다.
도 1은 본 발명의 실시 예들에 따른 메모리 시스템의 블록도를 나타낸다.
도 2는 본 발명의 실시 예들에 따른 메모리 페이지 구조를 나타낸다.
도 3은 본 발명의 실시 예들에 따른 인코딩 방법을 설명하기 위한 플로우차트이다
도 4는 본 발명의 실시 예들에 따른 디코딩 방법을 설명하기 위한 플로우차트이다.
도 5는 본 발명의 실시 예들에 따른 SFHR 동작을 설명하기 위한 플로우 차트이다.
도 6a는 본 발명의 실시 예들에 따른 페이지 소프트 리드를 설명하기 위한 메모리 페이지의 일부 구조를 나타낸다.
도 6b는 본 발명의 실시 예들에 따른 페이지 소프트 리드/정정 작동을 설명하기 위한 플로우차트이다.
도 7a는 본 발명의 실시 예들에 따른 예상된 ECC와 함께 사용하기 위한 메모리 페이지의 구조를 나타낸다.
도 7b는 본 발명의 실시 예들에 따른 예상된 ECC를 이용하여 생성된 예상된 오버헤드를 설명하기 위한 블록도를 나타낸다.
도 8은 본 발명의 실시 예들에 따른 예상된 ECC 인코딩 방법을 설명하기 위한 플로우차트이다.
도 9는 본 발명의 실시 예들에 따른 예상된 ECC 디코딩 작동을 포함하는 디코딩 방법을 나타내는 플로우차트이다.
도 10은 본 발명의 실시 예들에 따른 예상된 ECC 디코딩 작동을 설명하기 위한 플로우차트이다.
도 11은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 컴퓨터 시스템을 나타내는 블록도이다.
도 12는 본 발명의 실시 예들에 따른 메모리 카드를 나타내는 블록도이다.
도 13은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 네트워크 시스템을 나타내는 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예 들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어 들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다. 여기서 "및/또는"이라는 용어는 하나 또는 그 이상의 관련된 나열된 항목들의 일부 또는 전부를 포함할 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소 에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등 도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
특별한 언급이나 논의에서 명백한 경우를 제외하고 "처리하다", "연산하다", "계산하다", "판단하다", 또는 "디스플레이하다" 등과 같은 용어는 컴퓨터 시스템, 또는 이와 유사한 전자 컴퓨팅 장치의 행위(action)와 프로세들을 지칭할 수 있다. 상기 전자 컴퓨팅 장치는 컴퓨터 시스템의 레지스터들과 메모리들 내의 물리적, 전기적인 양으로 표현되는 데이터를 조작하고, 컴퓨터 시스템 메모리들, 레지스터들, 다른 그러한 정보 스토리지, 또는 전송 또는 디스플레이 장치들 내의 물리적인 양들로 표현되는 다른 유사한 데이터로 변환할 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
 이하의 설명에서는, 예시적인 실시예들은 행위들(acts) 및 작동들의 상징적인(symbolic) 표현들(예컨대, 플로우차트들, 플로우 다이어그램들, 데이터 플로우 다이어그램들, 구조 다이어그램들, 블록 다이어그램들 등의 형태)을 참조하여 설명될 것이다.
상기 작동들은 프로그램 모듈들 또는 기능적인 프로세스들로써 구현되고, 기존 전자 시스템들의 기존 하드웨어를 이용하여 구현될 수 있다. 상기 기능적인 프로세스들은 특정 작업들(tasks) 또는 특정 추상 데이터 유형을 수행하는 루틴들(routines), 프로그램들, 오브젝트들(objects), 구성요소들, 데이터 구조들 등을 포함할 수 있다.
상기 기존 전자 시스템들은 불휘발성 메모리들, 유니버셜 플래시 메모리들, 유니버셜 플래시 메모리 컨트롤러들, 불휘발성 메모리들과 메모리 컨트롤러, 포인트-앤-촬영(point-and-shoot) 카메라들, PDA들(personal digital assistants), 스마트폰들, 태블릿 PC들(tablet personal computers), 랩탑(laptop) 컴퓨터들 등이고, 상기 기존의 하드웨어는 하나 또는 그 이상의 CPUs(central processing units), DSPs(digital signal processors), ASICs(application-specific-integrated-circuits), FPGAs(field programmable gate arrays) 컴퓨터 등일 수 있다.
비록 플로우 차트는 작동들을 연속적인 프로세스로 기술할 수 있으나, 많은 작동들은 병렬로 또는 동시에(concurrently or simultaneously) 수행될 수 있다. 또한, 동작들의 순서는 재배열될 수 있다. 프로세스는 상기 작동들이 완료될 때 종료될 수 있으나, 도면에 포함되지 않은 부가적인 단계들을 포함할 수 있다. 프로세스는 방법, 기능(function), 절차(procedure), 서브 루틴(subroutine), 서브 프로그램 등에 대응할 수 있고, 기능 또는 메인 기능을 호출하는 기능의 복귀(return)에 대응할 수 있다.
본 명세서에서 "스토리지 미디어", "컴퓨터로 판독 가능한 스토리지 미디어", 또는 비일시적인(non-transitory) 컴퓨터로 판독 가능한 스토리지 미디어" 라는 용어는 데이터를 저장하기 위한 하나 또는 그 이상의 장치들을 나타낼 수 있고, RAM(random access memory), ROM(read only memory), MRAM(magnetic RAM), 코어 메모리(core memory), 마그네틱 디스크 스토리지 미디어들, 광(optical) 스토리지 미디어들, 플래시 메모리 장치들 및/또는 정보를 저장하기 위한 다른 유형의(tangible) 기계로 판독 가능한 매체들을 포함할 수 있다.
여기서 "컴퓨터로 판독 가능한 미디어"라는 용어는 휴대 가능한 또는 고정된 스토리지 장치들, 광 스토리지 장치들, 및 명령(들) 및/또는 데이터를 저장, 보유(containing), 또는 이동(carrying)할 수 있는 다양한 다른 미디어들을 포함할 수 있으나 이에 한정되는 것은 아니다.
또한, 실시 예들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어들, 또는 이들의 조합으로 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로 코드로 구현될 때, 필요한 업무들(tasks)을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들이 컴퓨터로 판독 가능한 스토리지 미디어와 같은 기계 또는 컴퓨터로 판독 가능한 매체에 저장될 수 있다. 소프트웨어로 구현될 때, 프로세서 또는 프로세서들은 필요한 업무들을 수행하기 위하여 프로그램될 수 있고, 이에 의하여 특별 목적 프로세서(들) 또는 컴퓨터(들)로 변환될 수 있다.
코드 세그먼트는 절차, 기능 서브프로그램, 프로그램, 루틴(routine), 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 세그먼트들의 조합을 나타낼 수 있다. 코드 세그먼트는 정보 데이터, 인수들(arguments), 파라미터들, 또는 메모리 컨텐츠들을 패스(pass) 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로와 결합될 수 있다. 정보, 인수, 파라미터들, 데이터 등은 메모리 공유, 메시지 패싱, 토큰 패싱, 네트워크 전달(transmission) 등을 포함하는 적합한 수단들을 통하여 패스, 전달(forwarded), 또는 전송될 수 있다.
비록 대응하는 평면도들 및/또는 일부 단면 사시도(들)은 도시되지 않을 수 있으나, 여기에 도시된 장치 구조들의 단면도(들)은 사시도(들), 평면도 및/또는 3개의 서로 다른 방향들로 도시되는 바와 같이 두개의 서로 다른 방향들을 따라 확장하는 복수의 장치 구조들을 뒷받침할 증거를 제공할 수 있다. 두 개의 서로 다른 방향들은 서로 직교하거나 직교하지 않을 수 있다. 3개의 서로 다른 방향들은 두 개의 서로 다른 방향들과 직교할 수 있는 세 번째 방향을 포함할 수 있다.
복수의 장치 구조들은 동일한 전자 장치로 통합될 수 있다. 예컨대, 장치 구조(예컨대, 메모리 셀 구조 또는 트랜지스터 구조)가 단면도로 도시될 때, 전자 장치는 상기 전자 장치의 평면도로 도시되는 바와 같이 복수의 장치 구조들(예컨대, 메모리 셀 구조들 또는 트랜지스터 구조들)을 포함할 수 있다. 복수의 장치 구조들은 어레이 및/또는 2차원 패턴으로 배열될 수 있다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예들에 따른 메모리 시스템의 블록도를 나타낸다. 도 1을 참조하면, 메모리 시스템(900)은 메모리 컨트롤러(1000)와 불휘발성 메모리 장치(2000)를 포함할 수 있다.
불휘발성 메모리 장치(2000)는 플래시 메모리, NAND 플래시 메모리, PRAM(phase change random access memory), FRAM(ferroelectric RAM), MRAM(magnetic RAM)으로 구현될 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 불휘발성 메모리 장치(2000)는 복수의 NAND 플래시 메모리 장치들을 포함할 수 있다. 불휘발성 메모리 장치(2000)는 평면 구조 또는 적층 메모리 셀들을 가진 3-차원(three-dimensional) 메모리 셀 구조를 가질 수 있다.
불휘발성 메모리 장치(2000)는 메모리 셀 어레이(2100), X-디코더(121), 전압 생성기(125), 입출력 버퍼(input/output(I/O) buffer;124), 페이지 버퍼(123), 및 하나 또는 그 이상의 회로들로서 구현된 제어 로직(126)을 포함할 수 있다. 불휘발성 메모리 장치(2000)는 입출력 패드(127)를 더 포함할 수 있다.
메모리 셀 어레이(2100)는 복수의 워드 라인들(W/L)과 복수의 비트 라인들(B/L)을 포함할 수 있다. 메모리 셀 어레이(2100)의 각 메모리 셀은 불휘발성 메모리 셀로서 구현될 수 있다. 예컨대, 메모리 셀 어레이(2100)의 각 메모리 셀은 플로팅 게이트, 또는 전하 포획 층(charge trapping layer)과 같은 전하 저장 층을 포함할 수 있다.
메모리 셀 어레이(2100)는 복수의 블럭들과 복수의 페이지들을 포함할 수 있다. 하나의 블럭은 복수의 페이지들을 포함한다. 페이지는 프로그램(program) 작동과 리드(read) 작동의 단위일 수 있고, 블럭은 이레이즈(erase) 작동의 단위일 수 있다. 예컨대, 메모리 셀 어레이(2100)는 제1블럭(2120)과 제2블럭(2130)을 포함할 수 있다. 도 1에 도시된 바와 같이, 제1블럭(2120)은 페이지들(PAGE 1~PAGE N)을 포함할 수 있고, 제2블럭(2130)은 페이지들(PAGE 1~PAGE N)을 포함할 수 있고, N은 1보다 큰 양의 정수이다.
제어 로직(126)은 불휘발성 메모리 장치(2000)의 전반적인 작동을 제어할 수 있다. 메모리 컨트롤러(1000)로부터 명령(CMD)을 수신할 때 제어 로직(126)은 상기 명령(CMD)을 해석하고 해석된 명령(CMD)에 따라 작동(예컨대, 프로그램 작동, 리드 작동, 리드 리트라이(read retry) 작동, 또는 이레이즈 작동)을 수행하기 위해 불휘발성 메모리 장치(2000)를 제어할 수 있다.
X-디코더(121)는 제어 로직(126)에 의해 제어되고, 로우 어드레스에 따라 메모리 셀 어레이(2100)의 적어도 하나의 워드 라인들(W/L)을 구동시킬 수 있다.
전압 생성기(125)는 제어 로직(126)에 의해 제어되고, 프로그램 작동, 리드 작동, 또는 이레이즈 작동에 요구되는 하나 또는 그 이상의 전압들을 생성하고, 생성된 전압들을 X-디코더(121)에 의해 선택된 하나 또는 그 이상의 로우들로 공급할 수 있다.
레지스터(128)는 메모리 컨트롤러(1000)로부터 입력된 정보가 저장되는 공간이고, 복수의 래치들을 포함할 수 있다. 예컨대, 레지스터(128)는 리드 전압 정보를 그룹화하고, 상기 정보를 테이블 형태로 저장할 수 있다.
페이지 버퍼(123)는 제어 로직(126)에 의해 제어되고, 작동 모드(예컨대, 리드 작동 또는 프로그램 작동)에 따라 감지 증폭기 또는 라이트 드라이버로써 작동할 수 있다.
입출력 패드(127)와 입출력 버퍼(124)는 외부 장치(예컨대, 메모리 컨트롤러(1000) 또는 호스트)와 불휘발성 메모리 장치(2000) 사이에서 교환되는 데이터의 입출력 경로들의 역할을 할 수 있다.
메모리 컨트롤러(1000)는 마이크로프로세서(111), 롬(read only memory, 113), 램(random access memory, 112), 인코더(1100), 디코더(1200), 메모리 인터페이스(116), 및 버스(118)를 포함할 수 있다. 메모리 컨트롤러(1000)의 구성요소들(111~116)은 버스(118)를 통해 서로 전기적으로 접속될 수 있다.
마이크로프로세서(111)는 메모리 컨트롤러(1000)를 포함하는 메모리 시스템(900)의 전반적인 작동을 제어할 수 있다. 마이크로프로세서(111)는 제어 신호들을 생성하여 다른 구성요소들을 제어하는 회로일 수 있다. 메모리 시스템(900)으로 전력이 공급될 때, 마이크로프로세서(111)는 램(112) 상에서 메모리 시스템(900)을 작동시키기 위한 펌웨어(예컨대, 롬(113)에 저장된)를 구동시킬 수 있고, 이에 따라 메모리 시스템(900)의 전반적인 작동을 제어할 수 있다.
실시 예들에 따라, 마이크로프로세서(111)는 롬(113), 램(112), 인코더 (1100), 디코더(1200), 메모리 인터페이스(116), 및 버스(118)의 일부 또는 전부를 포함하는 메모리 컨트롤러(1000)의 다른 구성요소들의 작동들을 제어하기 위한 명령들을 발행할 수 있다.
실시 예들에 따라, 메모리 컨트롤러(1000)에 의해 수행되는 것으로 본 명세서에 개시되어 있는 임의의 작동들은 마이크로프로세서(111)에 의해 또는 마이크로프로세서(111)의 제어에 따라 수행될 수 있다.
실시 예들에 따라, 메모리 컨트롤러(1000)에 의해 수행되는 것으로 본 명세서에 개시되어 있는 임의의 작동들은 상기 작동들에 대응하고 프로그램 코드(예컨대, 롬(113)에 저장된)에 포함된 명령들을 실행하는 마이크로프로세서(111)에 의해 또는 마이크로프로세서(111)의 제어에 따라 수행될 수 있다.
메모리 시스템(900)의 구동 펌웨어 코드는 롬(113)에 저장될 수 있으나 이에 한정되지 않는다. 펌웨어 코드는 또한 롬(113) 이외의 불휘발성 메모리 장치(2000)의 일부에 저장될 수 있다. 따라서, 마이크로프로세서(111)의 제어(control or intervention)는 마이크로프로세서(111)의 직접적인 제어(control) 뿐만 아니라 마이크로프로세서(111)에 의해 구동되는 소프트웨어인 펌웨어의 제어(intervention)도 포함할 수 있다.
버퍼로서의 역할을 하는 메모리인 램(112)은 호스트 또는 마이크로프로세서(111)로부터 입력된 초기 명령, 데이터, 및 다양한 변수들 또는 불휘발성 메모리 장치(2000)로부터 출력된 데이터를 저장할 수 있다. 램(112)은 불휘발성 메모리 장치(2000)로 입력되거나 불휘발성 메모리 장치(2000)로부터 출력되는 데이터와 다양한 파라미터들과 변수들을 저장할 수 있다.
메모리 인터페이스(116)는 메모리 컨트롤러(1000)와 불휘발성 메모리 장치(2000) 사이의 인터페이스로서의 역할을 할 수 있다. 메모리 인터페이스(116)는 불휘발성 메모리 장치(2000)의 입출력 패드(127)에 접속될 수 있고, 입출력 패드(127)와 데이터를 교환할 수 있다.
게다가, 메모리 인터페이스(116)는 불휘발성 메모리 장치(2000)에 적합한 명령을 생성할 수 있고, 불휘발성 메모리 장치(2000)의 입출력 패드(127)로 생성된 명령을 제공할 수 있다. 메모리 인터페이스(116)는 불휘발성 메모리 장치(2000)에 의해 실행될 명령과 불휘발성 메모리 장치(2000)의 주소(ADD)를 공급할 수 있다.
실시 예들에 따라, 디코더(1200)는 ECC(error correcting code) 디코더일 수 있고, 인코더(1100)는 ECC 인코더일 수 있다. 실시 예들에 따라, 디코더(1200)와 인코더(1100)는 오류 비트 정정을 수행할 수 있다. 인코더(1100)는 데이터가 불휘발성 메모리 장치(2000)로 제공되기 전에 상기 데이터에 대해 오류 정정 인코딩을 수행함으로써 하나 또는 그 이상의 패리티들(parity bits) 및/또는 리던던시 비트들(redundancy bits)이 첨가된 데이터를 생성할 수 있다. 하나 또는 그 이상의 패리티 비트들 및/또는 리던던시 비트들은 불휘발성 메모리 장치(2000)에 저장될 수 있다.
디코더(1200)는 출력 데이터에 대해 오류 정정 디코딩을 수행하고, 상기 오류 정정 디코딩의 결과에 기초하여 상기 오류 정정 디코딩이 성공적인지 여부를 판단하고, 상기 판단 결과에 기초하여 지시 신호를 출력할 수 있다. 리드 데이터는 디코더(1200)로 전송되고, 디코더(1200)는 상기 하나 또는 그 이상의 패리티 비트들 및/또는 리던던시 비트들을 이용하여 상기 데이터의 오류 비트들을 정정할 수 있다.
상기 오류 비트들의 갯수가 정정될 수 있는 오류 비트들의 제한을 초과할 경우, 디코더(1200)는 상기 오류 비트들을 정정할 수 없어 오류 정정 실패를 초래한다. 인코더(1100)와 디코더(1200)는 예컨대, 하나 또는 그 이상의 LDPC 코드(low density parity check code), BCH 코드(Bose-Chaudhuri-Hocquenghem code), 터보 코드(turbo code), RS 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code)을 이용하거나, TCM(trellis-coded modulation) 또는 BCM(block coded modulation)과 같은 부호화된 변조(coded modulation)를 이용하여 오류 정정을 수행할 수 있다.
일반적으로, BCH 코드들은 비교적 낮은 전력 사용과 낮은 실리콘 면적 이용을 허용할 수 있다. 그러나, BCH 코드들은 낮은 비트 오류 비율(BER, bit error rate) 범위를 제공할 수 있다. 일반적으로, LDPC 코드들은 상대적으로 높은 비트 오류 비율 범위를 허용할 수 있다. 그러나, LDPC 코드들은 높은 비트 오류 비율 값들에서 상대적으로 높은 전력 소모와 높은 실리콘 면적, 및 마진을 고려한 전체 데이터의 처리량(marginal throughput)과 연관될 수 있다.
인코더(1100)와 디코더(1200) 각각은 오류 정정 회로, 시스템, 또는 장치를 포함할 수 있다.
도 2는 본 발명의 실시 예들에 따른 메모리 페이지 구조를 나타낸다.
도 2는 메모리 페이지(200)를 나타낸다. 메모리 페이지(200)는 메모리 셀 어레이(2100)의 상기 메모리 페이지들의 구조를 나타낸다. 메모리 페이지(200)는 메모리 페이지(200)가 제1메모리 블럭(2120)의 제1페이지(PAGE1)에 해당하는 예를 참조하여 설명될 것이다.
그러나, 본 발명의 실시 예들에 따라, 메모리 셀 어레이(2100)의 상기 메모리 페이지들의 적어도 일부 또는 전부는 메모리 페이지(200)와 관련하여 본 명세서에 개시되어 있는 구조와 동일한 구조를 가질 수 있다.
정보는 복수의 데이터 프레임들(205)과 패리티 프레임(207)으로써 메모리 페이지(200)에 저장된다. 데이터 프레임들(205)은 데이터 프레임들(205-1~205-M, M은 1보다 큰 양의 정수)를 포함할 수 있다. 도 2에 도시된 바와 같이 데이터 프레임들(205) 각각은 데이터 비트들(210)과 대응하는 리던던시 비트들(215)을 포함할 수 있다. 데이터 비트들(210)은 컬럼들(210-1~210-L)로 배열될 수 있고, 리던던시 비트들은 컬럼들(215-1~215-K)로 배열될 수 있고, L과 K는 모두 1보다 큰 양의 정수들이다.
본 발명의 실시 예들에 따라 도 3을 참조하여 보다 상세히 설명될 것이지만 데이터 프레임들(205) 중에서 어느 하나의 리던던시 비트들(215)은 상기 데이터 프레임의 대응하는 데이터 비트들(210) 상에서 수행되는 ECC 인코딩의 결과일 수 있다.
실시 예들에 따라, 메모리 페이지(200)의 전체 크기는 8KB 이하이고, 데이터 프레임들(205) 중에서 각 프레임의 크기는 2000 bits 이하이고, 패리티 프레임(207)의 크기는 1000 bits 이하(예컨대, 데이터 프레임들(205) 중에서 어느 하나의 크기의 절반)일 수 있다.
실시 예들에 따라, 패리티 비트(207)는 메모리 페이지(200)의 데이터 비트들(210)과 리던던시 비트들(215)에 대응하여 SPC(single parity check) 비트들을 저장할 수 있다. 설명을 위해 제1SPC 비트(207-1), 제2SPC 비트(207-2), 및 제3SPC 비트(207-3)를 포함하는 3개의 SPC 비트들이 도 2에 도시된다.
예컨대, 패리티 프레임(207)의 SPC 비트들은 폴디드 스킴(folded scheme)을 사용하여 결정되고, 폴디드 스킴은 메모리 페이지(200)의 비트들 중에서 2개의 컬럼들의 비트들의 배타적 논리합(XOR, exclusive-OR)이 하나의 SPC 비트를 계산하는데 사용된다. 패리티 프레임(207)의 하나의 SPC 비트를 생성하는데 사용되는 메모리 페이지(200)의 2개의 컬럼들의 비트들은 FCP(folded column pair)로 지칭된다.
예컨대, 도 2에 도시된 바와 같이 데이터 비트들의 제1컬럼의 비트들(210-1)과 데이터 비트들의 제2컬럼의 비트들(210-2)에서 수행되는 XOR 연산의 결과는 제1SPC 비트(207-1)로써 저장된다.따라서 데이터 비트들의 제1컬럼(210-1)과 데이터 비트들의 제2컬럼(210-2)은 제1SPC 비트(207-1)를 계산하는데 사용되는 FCP를 구성한다.
다른 FCP 비트들(예컨대, 제2SPC 비트(207-2)와 제3SPC 비트(207-3))은 제1SPC 비트(207-1)에 대해 전술한 방식과 동일한 방식으로 계산될 수 있다. 또한, 제3SPC 비트(207-3)에 의해 도시된 바와 같이, 패리티 프레임(207)은 또한 리던던시 비트들(215)의 FCP들에 대해XOR 연산을 수행한 결과를 나타내는 SPC 비트들을 포함할 수 있다.
폴디드 스킴을 이용하여 패리티 프레임(207)의 크기는 데이터 프레임들(205) 중에서 하나의 크기의 절반일 수 있으므로, 상기 SPC 정보를 저장하는데 필요한 메모리 페이지 공간의 양을 감소시키고, 더 많은 데이터 비트들 및/또는 리던던시 비트들을 위해 사용 가능한 메모리 페이지 공간의 양을 증가시킬 수 있다.
도 3은 본 발명의 실시 예들에 따른 인코딩 방법을 설명하기 위한 플로우차트이다. 실시 예들에 따라, 도 3에 도시된 방법은 예컨대, 도 1에 도시된 메모리 컨트롤러(1000)에 의해 수행될 수 있다. 도 3은 데이터 비트들이 메모리 컨트롤러(1000)에 의해 인코딩되고 메모리 셀 어레이(2100) 내의 페이지(200)로써 저장되는 예를 참조하여 설명될 것이다.
도 3을 참조하면, 메모리 컨트롤러(1000)는 데이터 비트들을 수신할 수 있다(S310). 예컨대, 메모리 컨트롤러(1000)는 호스트(미도시)를 포함하는 외부 장치로부터 데이터 비트들을 수신할 수 있다. 실시 예들에 따라, 인코더(1100)는 마이크로프로세서(111)를 통해 호스트로부터 상기 데이터 비트들을 수신할 수 있다.
메모리 컨트롤러(1000)는 S310 단계에서 수신된 데이터 비트들을 인코딩하여 데이터 코드 워드들(data code words)을 생성할 수 있다. 실시 예들에 따라, 인코더(1100)는 BCH 코드를 이용하여 데이터 코드 워드들을 생성할 수 있다(S320). 따라서 S320 단계에서 생성된 코드 워드들은 데이터 비트들(210)과 상기 데이터 비트들에 대응하는 리던던시 비트들(215)을 포함하는 BCH 코드 워드들일 수 있다.
메모리 컨트롤러(1000)는 S320 단계에서 생성된 상기 데이터 코드 워드들을 메모리 셀 어레이(2100) 내의 메모리 페이지의 데이터 프레임들로써 저장할 수 있다(S330). 예컨대, 메모리 컨트롤러(1000)는 상기 데이터 코드워드들을 메모리 셀 어레이(2100)의 메모리 페이지의 프레임들로써 저장하기 위하여, S320 단계에서 생성된 상기 데이터 코드 워드들을 메모리 장치(2000)를 제어하는 하나 또는 그 이상의 명령들과 함께 메모리 장치(2000)로 전송할 수 있다.
예컨대, 메모리 컨트롤러(1000)는 S320 단계에서 생성된 상기 데이터 코드 워드들을 도 2에 도시된 메모리 페이지(200)의 데이터 프레임들(205)로써 저장하기 위해 메모리 장치(2000)를 제어할 수 있다.
메모리 컨트롤러(1000)는 상기 S320 단계에서 생성된 상기 데이터 코드 워드들의 각 FCP에 대해 SPC 비트들을 판단할 수 있다(S340). 예컨대, 메모리 컨트롤러(1000)는 도 2에서 전술한 바와 동일한 방식으로 각 SPC 비트에 대응하는 상기 FCP의 상기 비트들에 대해 XOR 연산을 수행한 결과가 될 각 SPC를 판단함으로써, S320에서 생성된 데이터 코드 워드들의 상기 비트들에 대응하는 각 FCP의 상기 SPC 비트들을 생성할 수 있다.
메모리 컨트롤러(1000)는 상기 S340 단계에서 판단된 SPC 비트들을 인코딩하여 SPC 코드 워드를 생성할 수 있다(S350). 실시 예들에 따라, 인코더(1100)는 BCH 코드를 이용하여 SPC 코드 워드를 생성할 수 있다. 따라서, 생성된 SPC 코드 워드들은 데이터 비트들(210)과 상기 데이터 비트들에 대응하는 리던던시 비트들(215)을 포함하는 BCH 코드워드들일 수 있다.
비록 상기 S340 단계와 상기 S350 단계는 상기 S330 단계 이 후에 수행되는 것으로 예시되었지만, 상기 S340 단계와 상기 S350 단계는 상기 S330 단계의 수행 전에 또는 상기 S330 단계의 수행 동안에 수행될 수 있다. 예컨대, 상기 S320 단계에서 생성된 상기 데이터 코드 워드들의 데이터 비트들은 메모리 컨트롤러(1000, 예컨대, RAM(112))의 버퍼 메모리에 저장될 수 있다.
게다가, 상기 S340 단계와 상기 S350 단계는 상기 데이터 비트들이 메모리 셀 어레이(2100)의 페이지에 저장되기 전에 메모리 컨트롤러(1000)의 상기 버퍼 메모리에 저장된 상기 데이터 코드 워드들의 데이터 비트들에 기초하여 수행될 수 있다.
상기 메모리 컨트롤러(1000)는 상기 S350 단계에서 생성된 상기 SPC 코드 워드를 메모리 셀 어레이(2100) 내의 메모리의 페이지 상의 패리티 프레임으로써 저장할 수 있다(S360). 예컨대, 메모리 컨트롤러(1000)는 상기 SPC 코드 워드를 메모리 셀 어레이(2100)의 메모리 페이지의 프레임으로써 저장하기 위해 메모리 장치(2000)를 제어하는 하나 또는 그 이상의 명령들에 따라 상기 S350 단계에서 생성된 상기 SPC 코드 워드를 메모리 장치(2000)로 전송할 수 있다.
예컨대, 메모리 컨트롤러(1000)는 상기 S350 단계에서 생성된 상기 SPC 코드 워드를 도 2에 도시된 메모리 페이지(200)의 패리티 프레임(207)으로써 저장하기 위해 메모리 장치(2000)를 제어할 수 있다.
예컨대, 메모리 페이지(200)에 저장된 상기 정보를 디코딩하는 방법은 도 4를 참조하여 상세히 설명될 것이다.
도 4는 본 발명의 실시 예들에 따른 디코딩 방법을 설명하기 위한 플로우차트이다. 실시 예들에 따라, 도 4에 도시된 방법은 도 1에 도시된 메모리 컨트롤러(1000)에 의해 수행될 수 있다. 명확히 하기 위하여 도 4는 도 5, 도 6a, 및 도 6b를 부분적으로 참조하여 설명될 것이다.
도 4, 도 5, 및 도 6b는 데이터 비트들이 메모리 셀 어레이(2100) 내의 메모리 페이지(200)로부터 메모리 컨트롤러(1000)에 의해 리드되고, 메모리 컨트롤러(1000)에 의해 디코딩되는 예를 참조하여 설명될 것이다.
도 4를 참조하면, 메모리 컨트롤러(1000)는 메모리 페이지(200)로부터 리드된 모든 프레임들에 대해 SFHR(single frame hard read) 동작을 수행할 수 있다(S405). 메모리 페이지(200)는 메모리 컨트롤러(1000)에 의해 리드될 수 있다. SFHR 동작의 실시 예는 도 5에 도시된다.
도 5는 본 발명의 실시 예들에 따른 SFHR 동작을 설명하기 위한 플로우 차트이다. 도 5를 참조하면, SFHR 동작은 두 단계, 즉 리딩하는 단계(S510)와 디코딩하는 단계(S515)를 포함할 수 있다.
메모리 컨트롤러(1000)는 경판정(hard decision)을 이용하여 데이터 페이지(200)의 프레임을 리드할 수 있다(S510). 예컨대, 메모리 컨트롤러(1000)는 메모리 페이지(200)의 제1데이터 프레임(205-1)을 리드할 수 있다. 상기 S510 단계 이후에, 메모리 컨트롤러(1000)는 디코딩을 진행할 수 있다(S515). 메모리 컨트롤러(1000)는 프레임 디코딩과 오류 검사를 포함하는 디코딩 동작을 수행할 수 있다. 본 발명의 실시 예들에 따라, 상기 디코딩 동작은 S520 단계 내지 S570 단계를 포함할 수 있다.
메모리 컨트롤러(1000)는 상기 S510 단계에서 리드된 상기 데이터 프레임을 ECC 디코딩을 수행할 수 있다(S520). 예컨대, 디코더(1200)는 제1데이터 프레임(205-1) 상에서 ECC 디코딩을 수행할 수 있다. 실시 예들에 따라, 메모리 페이지(200)에 저장된 데이터 프레임들(205)은 BCH 코드를 이용하여 인코딩될 수 있다. 따라서 디코더(1200)는 제1데이터 프레임(205-1) 상에서 BCH 디코딩 동작을 수행할 수 있다.
메모리 컨트롤러(1000)는 상기 S520 단계에서 수행된 상기 ECC 디코딩 동작의 성공 여부를 판단할 수 있다(S530). 예컨대, 상기 ECC 디코딩이 BCH 디코딩일 때, 디코더(1200)는 BCH 디코딩을 수행하기 위한 공지된 절차들에 따라 상기 BCH 디코딩 동작의 성공 여부를 판단할 수 있다.
실시 예들에 따라, 디코더(1200)는 상기 S520 단계에서 수행된 상기 BCH 디코딩 동작의 성공 여부를 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))로 지시하는 신호를 생성할 수 있다. 상기 BCH 디코딩 동작의 결과들이 상기 프레임이 성공적으로 디코딩되었음을 나타내는 경우, 상기 S520 단계에서 수행된 상기 BCH 디코딩 동작은 성공한 것으로 간주할 수 있다.
상기 S530 단계에서 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111)를 이용하여)가 상기 S520 단계의 상기 BCH 디코딩이 성공하지 않은 것으로 판단한 경우, 메모리 컨트롤러(1000)는 S570 단계를 진행할 수 있다. 상기 BCH 디코딩 동작의 결과들이 상기 프레임이 성공적으로 디코딩되지 않았음을 나타내는 경우, 상기 S520 단계에서 수행된 상기 BCH 디코딩 동작이 성공하지 않은 것으로 간주할 수 있다.
상기 S570 단계에서, 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111)를 이용하여)는 상기 S510 단계에서 리드된 상기 프레임(예컨대, 제1프레임(205-1))을 오류 프레임으로 지정할 수 있다. 예컨대, 상기 S570 단계에서 상기 마이크로프로세서는 상기 제1프레임(205-1)이 오류 프레임임을 나타내는 프레임 지정 데이터를 RAM(112)에 저장할 수 있다. 여기서 상기 "오류 프레임"이라는 용어는 (예컨대, 메모리 컨트롤러(1000)에 의해) 적어도 하나의 비트 오류를 포함한다고 판단된 데이터 프레임을 지칭할 수 있다.
다시 상기 S530 단계에서, 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111)를 이용하여)가 상기 S520 단계의 상기 BCH 디코딩이 성공한 것으로 판단한 경우, 메모리 컨트롤러(1000)는 S540 단계를 진행할 수 있다.
실시 예들에 따라, 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111)를 이용하여)는 상기 S510 단계에서 리드된 상기 프레임의 CRC 체크를 수행할 수 있다(S540).
메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111)를 이용하여)가 상기 S540 단계의 CRC 체크가 성공하지 않은 것으로 판단한 경우(S550), 메모리 컨트롤러(1000)는 S570 단계를 진행할 수 있다. 공지된 CRC 오류 검출 방법들에 따라, 상기 프레임으로부터 계산된 CRC 체크 값이 상기 프레임으로부터 리드된 CRC 체크 값과 매칭되지 않을 경우 상기 S540 단계의 CRC 체크가 성공하지 않은 것으로 간주될 수 있다.
메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111)를 이용하여)가 상기 S540 단계의 CRC 체크가 성공한 것으로 판단한 경우(S550), 메모리 컨트롤러(1000)는 S560 단계를 진행할 수 있다. 공지된 CRC 오류 검출 방법들에 따라, 상기 프레임으로부터 계산된 CRC 체크 값이 상기 프레임으로부터 리드된 CRC 체크 값과 매칭될 경우 상기 S540 단계의 CRC 체크는 성공한 것으로 간주될 수 있다.
실시 예들에 따라, 상기 S540 단계와 상기 S550 단계는 상기 S515 단계의 하드 디코딩 동작으로부터 제외될 수 있다. 따라서, 메모리 컨트롤러(1000)가 S530 단계에서 상기 BCH 디코딩이 성공한 것으로 판단한 경우, 메모리 컨트롤러(1000)는 S530 단계에서 S560 단계로 직접 진행할 수 있다.
메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111)를 이용하여)는 S510 단계에서 리드된 상기 프레임을 정정 프레임으로 지정할 수 있다(S560). 예컨대, 마이크로프로세서(111)는 제1프레임(205-1)이 정정 프레임임을 나타내는 데이터 프레임 지정 데이터를 RAM(112)에 저장할 수 있다. 여기서 "정정 프레임" 이라는 용어는 (예컨대, 메모리 컨트롤러(1000)에 의해) 비트 오류들이 없다고 판단된 데이터 프레임을 지칭할 수 있다.
다시 도 4의 S405 단계를 참조하면, 실시 예들에 따라, 메모리 컨트롤러(1000)가 메모리 페이지(200)의 각 데이터 프레임에 대해 도 5에 도시된 상기 SFHR 동작을 수행한 이후에 메모리 컨트롤러(1000)는 S410 단계를 진행할 수 있다.
메모리 컨트롤러(1000)가 메모리 페이지(200)의 상기 모든 프레임들이 정정 프레임들이라고 지정되었는지 여부를 판단할 수 있다(S410). 예컨대, 마이크로프로세서(111)는 메모리 페이지(200)의 모든 데이터 프레임들(205)이 정정 프레임들이라고 지정되었는지 여부를 판단하기 위해 S405 단계에서 수행된 상기 SFHR 동작들이 수행되는 동안 RAM(112)에 저장된 상기 프레임 지정 데이터를 체크할 수 있다.
메모리 컨트롤러(1000)가 메모리 페이지(200)의 모든 데이터 프레임들(205)이 정정 프레임들이라고 지정한 경우(S410), 메모리 컨트롤러(1000)는 S450 단계를 진행할 수 있다. 상기 데이터 디코딩 동작이 성공적이라고 판단하고, 상기 데이터 디코딩 동작은 메모리 페이지(200)에 대해 종료된다(S450).
메모리 컨트롤러(1000)가 메모리 페이지(200)의 모든 데이터 프레임들(205)이 정정 프레임들이라고 지정한 것이 아니라고 판단한 경우(S410), 메모리 컨트롤러(1000)는 S415 단계 내지 S440 단계를 포함하는 순환 데이터 디코딩 루틴을 개시할 수 있다.
메모리 컨트롤러(1000)는 데이터 값 bsr 값을 총 오류 프레임들의 갯수로 설정할 수 있다. S420 단계의 페이지 소프트 리드/정정 동작이 수행되기 이전에 상기 값 bsr 값이 메모리 페이지(200)의 총 오류 프레임들을 나타낼 수 있다.
S420 단계는 도 6a와 도 6b를 참조하여 상세히 설명될 것이다. 실시 예들에 따라, 마이크로프로세서(111)는 메모리 페이지(200)의 상기 데이터 프레임들(205)의 총 갯수가 현재 오류 프레임들로 지정되었는지 판단하기 위하여 RAM(112)에 저장된 상기 프레임 지정 데이터를 체크할 수 있고, 마이크로프로세서(111)는 상기 판단된 오류 프레임들의 총 갯수를 상기 데이터 값 bsr 값으로써 RAM(112)에 저장할 수 있다(S415).
메모리 컨트롤러(1000)는 페이지 소프트 리드/정정 동작을 수행할 수 있다(S420). 상기 소프트 리드 동작의 예는 도 6a와 도 6b를 참조하여 설명될 것이다.
도 6a는 본 발명의 실시 예들에 따른 페이지 소프트 리드를 설명하기 위한 메모리 페이지의 일부 구조를 나타낸다. 도 6a를 참조하면, 도 6a는 메모리 페이지 (600)를 나타낸다. 메모리 페이지(600)는 상기 페이지 소프트 리드 동작의 설명을 용이하게 하기 위한 목적으로 메모리 페이지(600)가 메모리 페이지(600)의 상기 비트들 중에서 두 열의 비트들의 XOR 연산이 단일 SPC 비트를 계산하기 위해 사용되는 폴디드 스킴을 사용하지 않는 것을 제외하면, 도 2에 도시된 메모리 페이지(200)와 동일한 구조를 가질 수 있다.
예컨대, 메모리 페이지(200)와 마찬가지로 메모리 페이지(600) 또한 메모리 페이지(600) 내의 데이터 비트들의 열들에 대응하는 SPC 비트들을 저장하는 패리티 프레임을 포함할 수 있다. 그러나 메모리 페이지(200)와 달리, 상기 메모리 페이지 (600)의 SPC 비트들은 FCP가 아닌 단일 컬럼에 기초하여 계산된다.
메모리 페이지(600)는 복수의 데이터 프레임들을 포함할 수 있다. 간략화를 위해 데이터 프레임들(62와 64)만 도시되었다. 도 6a에 도시된 실시 예들에 따라, 데이터 프레임들(62와 64)은 오류 프레임들일 수 있다. 예컨대, 데이터 프레임들(62와 64)은 디코더(1200)가 S520 단계와 S530 단계에서 성공적으로 디코딩할 수 없는 프레임들 및/또는 S540 단계와 S550 단계에서 설명된 상기 CRC 체크에 실해한 데이터 프레임일 수 있다.
도 6은 또한 XOR 연산 값들(64)을 도시한다. 메모리 페이지(600)의 각 열에 대한 XOR 연산 값이다. 상기 XOR 연산의 공지된 특성에 따라, 메모리 페이지(600)의 비트들의 컬럼 중에서 하나의 값을 알 수 없는 경우, 상기 미지의 값은 상기 컬럼의 공지된 값들과 상기 컬럼에 대응하는 상기 SPC 비트의 XOR 연산을 수행하여 계산될 수 있다.
그러한 XOR 연산의 결과는 상기 컬럼의 상기 미지의 값의 정정값일 수 있다. 따라서, 메모리 페이지(600)의 각 컬럼에 대해 상기 XOR 연산 값들(64) 중에서 상기 대응하는 XOR 연산 값은 상기 컬럼과 상기 컬럼의 상기 SPC 비트 데이터에 대한 모든 정정 데이터 프레임들의 비트들에 대해 수행된 XOR 연산의 결과들을 나타낼 수 있다.
또한, 컬럼의 미지의 비트들의 상기 XOR 연산은 상기 컬럼의 상기 XOR 연산 값과 동일해야하는 것으로 알려져 있다. 여기서 "미지의 비트들"이라는 용어는 오류 프레임 또는 오류 프레임들의 비트들을 지칭할 수 있다. 더 상세히 논의될 바와 같이, 컬럼의 미지의 비트들의 상기 XOR의 상기 언급된 특징은 소프트 리드 판단 동작을 수행하고, 상기 미지의 비트들이 반전(예컨대, 값의 변경)되어야 하는지 여부를 판단하기 위해 상기 미지의 비트들에 대응하는 우도비(Log Likelihood Ratio(LLR))들과 함께 사용될 수 있다.
예컨대, 도 6a에서 각 오류 프레임들(62와 64)에 대해 프로그램 값들, 경판정 값들, 리드 LLR 값들, 및 연판정 값들이 도시된다. 도 6a에서 상기 "프로그램 값"은 프레임에 프로그램된 오리지널 값을 지칭하고, 상기 "경판정" 값은 SFHR 동작(예컨대, 도 5에 도시된 SFHR 동작)에 따라 상기 프레임으로부터 리드된 값을 지칭하고, 상기 "리드 LLR" 값들은 메모리 컨트롤러(1000)에 의해 수행된 소프트 리드 동작에 따라 계싼된 LLR 값들을 지칭할 수 있고, 상기 "연판정" 값은 S420 단계에 포함된 소프트 리드 판단 동작의 결과를 지칭할 수 있고, 도 6a에 도시된 예제들(예제 A~예제 E)을 참조하여 보다 상세히 설명될 것이다.
예컨대, 상기 언급된 소프트 리드 판단 동작은 모든 컬럼에 대해 그 컬럼의 비트들의 제로 섬을 검사한다.상기 제로 섬은 상기 컬럼의 상기 SPC 비트를 포함하는 상기 컬럼의 비트들에 대해 XOR 연산들을 수행한 결과이다.
예컨대, 상기 소프트 리드 판단 동작은 도 6a를 참조하여 설명될 것이다. 예제 A를 참조하면, 오류 프레임(62)의 제1컬럼의 경판정 값(1)과 데이터 프레임(64)의 제1컬럼의 경판정 값(10)의 XOR은 1 XOR 1 = 0이므로 오류 프레임(62)의 제1컬럼의 대응하는 XOR 연산 값(1)과 같지 않다.
따라서, 데이터 프레임들(62와 64)의 제1컬럼의 비트들의 XOR을 제1컬럼의 대응하는 XOR 연산 값과 같도록 하기 위하여 데이터 프레임들(62와 64)의 제1컬럼의 비트들 중에서 어느 하나를 반전시킨다. 제1컬럼의 비트들 중에서 반전될 비트를 선택하기 위해서, 메모리 컨트롤러(1000)는 예컨대, 마이크로 컨트롤러(111)를 이용하여, 데이터 프레임들(62와 64)의 제1컬럼의 비트들의 LLR들의 절대 값들을 비교하고, 가장 작은 LLR을 가지는 비트를 반전될 비트로써 선택할 수 있다.
데이터 프레임(62)의 제1컬럼의 비트의 LLR의 절대 값(0.5)은 데이터 프레임(64)의 제1컬럼의 비트의 LLR의 절대값(1.5)보다 작다. 따라서,데이터 프레임(62)의 제1컬럼의 비트는 1에서 0으로 반전된다. 예제 A에 대하여, 도 6a에 도시된 바와 같이, 소프트 리드 판단 동작은 데이터 프레임(62)의 제1컬럼의 비트를 반전시킨 결과 데이터 프레임(62)의 제1컬럼의 비트를 정정하여 상기 반전된 비트를 원래 프로그램된 값과 매칭시킬 수 있다.
비트들(예컨대, 리드 데이터 값들)의 LLR들은 예컨대, 메모리 컨트롤러(1000)에 의해 소프트 리드 동작들을 이용하여 공지된 방법들에 따라 계산될 수 있다. 소프트 리드 동작들은 메모리 셀에 저장된 값을 리드하기 위하여 서로 다른 리드 전압들을 이용하여 몇개의 리드 동작들이 메모리 셀에 적용된다.
소프트 리드 판단 동작은 도 6a에 도시된 예제 B를 참조하여 설명될 것이다. 도 6a에 도시된 예제 B에서, 데이터 프레임(62)의 제2컬럼의 경판정 값(0)과 데이터 프레임(64)의 제2컬럼의 경판정 값(1)의 XOR은 0 XOR 1 = 1이므로, 상기 제2컬럼의 XOR 연산 값(1)과 일치한다. 따라서 메모리 컨트롤러(1000)는 데이터 프레임들(62와 54)의 제2컬럼의 비트들의 XOR을 상기 제2컬럼의 대응하는 XOR 동작 값과 같도록 하기 위해 데이터 프레임들(62와 64)의 제2컬럼의 비트들 중에서 비트를 반전시킬 필요가 없다.
도 6a에 도시된 예제 B를 참조하면, 소프트 리드 판단 동작은 정확히 상기 제2컬럼의 비트들 어느것도 반전시키지 않은 결과, 데이터 프레임들(62와 64)의 상기 제2컬럼의 비트들 중에서 반전되는 비트 없이 정확하다(즉, 데이터 프레임들(62와 64)의 상기 제2컬럼의 상기 비트들은 반전될 필요가 없이 도 6a에 도시된 바와 같이 이미 대응하는 프로그램 값들과 매칭되었다).
소프트 리드 판단 동작은 도 6a에 도시된 예제 C를 참조하여 설명될 것이다. 도 6a에 도시된 예제 C를 참조하면, 데이터 프레임(62)의 제3컬럼의 경판정 값(1)과 데이터 프레임(64)의 제3컬럼의 경판정 값(0)의 XOR은 1 XOR 0 = 1이므로, 상기 제3컬럼의 대응하는 XOR 연산 값(0)과 일치하지 않는다.
따라서, 데이터 프레임들(62와 64)의 상기 제3컬럼의 비트들 중에서 하나는 반전된다. 상기 제3컬럼의 디트들 중에서 반전될 비트를 선택하기 위하여 예제 A에서 전술한 방법과 동일하게, 메모리 컨트롤러(1000)는 데이터 프레임들(62와 64)의 제3컬럼의 비트들의 LLR들의 절대값들을 비교하여 가장 작은 절대값을 갖는 LLR을 가지는 비트를 반전될 비트로써 선택한다.
데이터 프레임(62)의 상기 제3컬럼의 비트의 LLR의 절대값(1.5)은 데이터 프레임(64)의 상기 제3컬럼의 비트의 LLR의 절대값(0.3)보다 크다. 따라서, 데이터 프레임(64)의 제3컬럼의 비트는 0에서 1로 반전된다.
도 6a에 도시된 예제 C에서, 반전 된 후가 아니라 반전되기 전에 상기 반전된 비트는 대응하는 프로그램 값과 일치하기 때문에 소프트 리드 판단 동작은 데이터 프레임(64)의 제3컬럼의 비트를 반전시키고, 데이터 프레임(64)의 비트를 정정하지 않는다.
소프트 리드 판단 동작은 도 6a에 도시된 예제 D를 참조하여 설명될 것이다. 도 6a에 도시된 예제 D를 참조하면, 데이터 프레임(62)의 제4컬럼의 경판정 값(1)과 데이터 프레임(64)의 제4컬런의 경판정 값(1)의 XOR은 1 XOR 1 = 0이므로, 상기 제3컬럼의 대응하는 XOR 연산 값(1)과 일치하지 않는다.
따라서, 데이터 프레임들(62와 64)의 제4컬럼의 비트들 중에서 어느 하나는 반전된다. 예제 A와 예제 C에서 전술한 방법과 동일하게 메모리 컨트롤러(1000)는 데이터 프레임들(62와 64)의 제4컬럼의 비트들의 LLR들의 절대 값들을 비교하고, 가장 작은 절대값을 가지는 LLR을 가지는 비트를 반전될 비트로써 선택할 수 있다.
데이터 프레임(62)의 제4컬럼의 비트의 LLR의 절대값(1.7)은 데이터 프레임(64)의 제4컬럼의 비트의 비트의 LLR의 절대값(0.3)보다 크다. 따라서, 데이터 프레임(64)의 제4컬럼의 비트는 1에서 0으로 반전된다. 도 6a에 도시된 예제 D에 도시된 바와 같이, 소프트 리드 판단 동작은 데이터 프레임(64)의 제4컬럼의 비트를 반전시킨 결과 데이터 프레임(64)의 제4컬럼의 비트를 정정하여 상기 반전된 비트를 원래 프로그램된 값과 일치시킨다.
소프트 리드 판단 동작은 도 6a에 도시된 예제 E를 참조하여 설명될 것이다. 도 6a에 도시된 예제 E를 참조하면, 데이터 프레임(62)의 제5컬럼의 경판정 값(0)과 데이터 프레임(64)의 제5프레임의 경판정 값(1)의 XOR은 0 XOR 1 = 1이므로, 제3컬럼의 대응하는 XOR 연산 값(0)과 일치하지 않는다.
따라서, 데이터 프레임들(62와 64)의 제5컬럼의 비트들 중에서 어느 하나는 반전된다. 예제 A, 예제 C, 및 예제 D에서 전술한 방법과 동일하게, 메모리 컨트롤러(1000)는 데이터 프레임들(62와 64)의 제5컬럼의 비트들의 LLR들의 절대값들을 비교하고, 가장 작은 절대값을 가지는 LLR을 가지는 비트를 반전될 비트로써 선택할 수 있다.
데이터 프레임(62)의 제5컬럼의 비트의 LLR의 절대값(0.7)은 데이터 프레임 (64)의 제5컬럼의 비트의 LLR의 절대값(1.7)보다 작다. 따라서, 데이터 프레임(62)의 제5컬럼의 비트는 0에서 1로 반전된다. 도 6a에 도시된 예제 E를 참조하면, 소프트 리드 판단 동작은 데이터 프레임(64)의 제5컬럼의 비트를 반전시킨 결과 데이터 프레임(64)의 제5컬럼의 비트를 정정하여 반전된 비트를 원래 프로그램된 값과 일치시킨다. S420의 페이지 소프트 리드/정정 동작은 도 6b를 참조하여 보다 상세히 설명될 것이다.
도 6b는 본 발명의 실시 예들에 따른 페이지 소프트 리드/정정 작동을 설명하기 위한 플로우차트이다. 도 6b는 도 2에 도시된 메모리 페이지(200)를 참조하여 설명될 것이다.
도 6b에 도시된 바와 같이, S420 단계의 페이지 소프트 리드/정정 작동은 S605의 소프트 리드 작동, S610 단계의 LLR 판단 작동, 및 S612 단계의 소프트 정정 작동을 포함할 수 있다. S430 단계 내지 S440 단계를 참조하여 상세히 설명할 바와 같이, S420은 도 4에 도시된 프로세스의 하나의 실행 동안, 반복적으로 복수회 수행될 수 있다.
실시 예들에 따라, 메모리 컨트롤러(1000)는 S605 단계, S610 단계, 및 S612 단계를 모두 수행함으로써 S420 단계의 초기 반복(예컨대, 도 4에 도시된 프로세스의 하나의 실행 동안 수행되는 S420 단계의 제1반복)을 수행할 수 있고, 메모리 컨트롤러(1000)는 S612 단계의 정정 작동만 수행함으로써(예컨대, S605 단계의 소프트 리드 작동과 S610 단계의 LLR 판단 작동의 수행을 제외하고) S420 단계의 각 후속 반복(예컨대, 초기 반복 이후의 각 반복)을 수행할 수 있다.
따라서, 메모리 컨트롤러(1000)는 시간 소비 소프트 리드 작동 및/또는 매번 LLR 판단 작동의 수행 없이 S420 단계를 반복적으로 수행할 수 있다. 대신에 메모리 컨트롤러(1000)는 S420 단계의 일부 또는 모든 반복들(초기 반복 다음의 반복들을 포함하는)에 대해 S612 단계에 더하여 S605 단계와 S610 단계 중에서 하나 또는 모두를 수행할 수 있다.
도 6b를 참조하면, S605 단계에서 메모리 컨트롤러(1000)는 연판정 리드 방법을 이용하여 메모리 페이지(200)를 읽어올 수 있다. 예컨대, 마이크로프로세서(111)는 공지의 방법들에 따라 소프트 리드 작동을 수행하기 위하여 메모리 페이지(200)에 대응하는 가가 메모리 셀에 대해 일련의 리드 작동을 지시하는 리드 명령들을 발행할 수 있다.
S610 단계에서 메모리 컨트롤러(1000)는 오류 프레임들의 비트들에 대한 LLR 값들을 판단할 수 있다. 예컨대, 마이크로프로세서(111)는 메모리 페이지(200)의 프레임들(예컨대, 데이터 프레임들(205)와 패리티 프레임(207)) 중에서 현재 오류 프레임들이라고 지정된 프레임들을 판단하기 위하여 도 5를 참조하여 설명한 SFHR 작동 동안 RAM(112)에 저장된 프레임 지정 데이터를 참조할 수 있다.
또한, 공지의 방법들에 따라, S605 단계의 소프트 리드 작동은 메모리 페이지(200)의 프레임들 각각의 각 비트에 대한 LLR 값을 생성하기 위하여 복수의 서로 다른 리드 전압들을 사용할 수 있다. 리드 비트에 대한 LLR들의 절대값들은 상기 비트의 상기 리드 값의 정확성에 대한 확신 레벨을 나타낼 수 있다.
실시 예들에 따라, S610 단계에서, 메모리 컨트롤러(1000)는 프레임들(205와 207) 중에서 오류 프레임들의 비트들에 대해서만 LLR 값들을 계산할 수 있다. 실시 예들에 따라, S610 단계에서 메모리 컨트롤러(1000)는 데이터 프레임들(205와 207) 중에서 모든 프레임들의 비트들에 대한 LLR 값들을 계산할 수 있다.
S612 단계에서, 메모리 컨트롤러(1000)는 소프트 정정 작동을 수행할 수 있다. S612 단계는 S615 단계 내기 S640 단계를 포함할 수 있다.
S615 단계에서, 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 인덱스 값 i를 1로 설정할 수 있다.
S620 단계에서, 메모리 컨트롤러(1000)는 메모리 페이지(200)의 FCP i의 미지의 비트들에 대해 수행된 XOR 연산의 결과가 FCP i의 XOR 연산 값과 일치하는지를 판단할 수 있다. 상기 언급한 바와 같이, 미지의 비트들은 현재 오류 프레임들이라고 지정된 데이터 프레임들의 비트들일 수 있다. 마이크로프로세서(111)는 예컨대, RAM(112)에 저장된 프레임 지정 데이터를 컨설팅(consulting)함으로써 데이터 프레임들이 오류 프레임들인지 여부를 판단할 수 있다.
도 2에서 언급한 바와 같이, 메모리 페이지(200)의 데이터 프레임들(205)의 비트들은 FCP들에 배열되고, 각 FCP는 패리티 프레임(207)에 저장된 SPC 비트에 대응할 수 있다.
실시 예들에 따라, S620 단계에서, 마이크로프로세서(111)는 S620 단계에서 사용된 XOR 연산 값이 하나의 컬럼 대신 FCP들을 이용하여 계산되는 것을 제외하고 도 6a의 예제 A 내지 예제 E를 참조하여 설명된 동일한 소프트 리드 판단 작동을 수행할 수 있다.
따라서, S620 단계에서, 메모리 페이지(200)의 FCP i에 대해 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 패리티 프레임(207)에 저장된 SPC 비트들 중에서 FCP i와 FCP i의 SPC 비트에 대해 모든 정정 데이터 프레임들의 비트들에 수행된 XOR 연산의 결과로써 FCP i에 대응하는 XOR 연산 값을 계산할 수 있다.
S620 단계에서 메모리 컨트롤러(1000)는 FCO i의 미지의 비트들에 수행된 XOR 연산의 결과가 FCO i의 XOR 연산 값과 일치하지 않는다고 판단한 경우, 메모리 컨트롤러(1000)는 S625 단계를 진행할 수 있다.
S625 단계에서, 메모리 컨트롤러(1000)는 FCP i의 모든 미지의 비트들 중에서 가장 낮은 LLR 값을 가지는 FCP i의 미지의 비트를 반전시킬 수 있다. 예컨대, 마이크로프로세서(111)는 FCP i의 모든 미지의 비트들의 모든 LLR들 중에서 가장 작은 절대값을 갖는 LLㄲ을 가지는 미지의 비트의 값을 0에서 1, 또는 1에서 0으로 변경하도록 라이트 명령들을 생성할 수 있다.
S625 단계 이후에, 메모리 컨트롤러(1000)는 S630 단계를 진행할 수 있다. S630 단계는 이후에 상세히 설명될 것이다.
다시 S620 단계에서 메모리 컨트롤러(1000)는 FCO i의 미지의 비트들에 수행된 XOR 연산의 결과가 FCP i의 XOR 연산 값과 일치한다고 판단한 경우, 메모리 컨트롤러(1000)는 S630 단계를 진행할 수 있다.
S630 단계에서, 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 상기 인덱스 값 i가 메모리 페이지(200)에 포함된 FCP들의 총 개수와 일치하는지 여부를 판단할 수 있다.
메모리 컨트롤러(1000)가 인덱스 값 i가 메모리 페이지(200)에 포함된 FCP들의 총 개수와 일치한다고 판단한 경우, 페이지 소프트 리드 작동은 종료된다. 메로리 컨트롤러(1000)가 인덱스 값 i가 메모리 페이지(200)에 포함된 FCP들의 총 개수와 일치하지 않는다고 판단한 경우, 메모리 컨트롤러(1000)는 S635 단계를 진행할 수 있다.
S635 단계에서, 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 인덱스 값 i를 증가시킬 수 있다. 따라서 메모리 컨트롤러(1000)는 메모리 페이지(200)의 각 FCP에 대해 S620 단계 내지 S630 단계를 수행할 수 있다.
다시 도 4를 참조하면, S420 단계의 페이지 소프트 리드/정정 작동이 완료된 후에, 메모리 컨트롤러(1000)는 S425 단계를 진행할 수 있다. S425 단계에서, 메모리 컨트롤러(1000)는 데이터 프레임들(205)과 패리티 프레임(207) 중에서 현재 오류 프레임으로 지정된 각 프레임에 대해 도 5의 SFHR 작동의 하드 디코딩 일부를 수행할 수 있다.
예컨대, 메모리 컨트롤러(1000)는 S420 단계에서 수행된 페이지 소프트 리드/정정 작동의 결과를 통해 정정 가능하게 된 부가적인 프레임들을 정정하기 위해 S425 단계를 수행할 수 있다. S430 단계 내지 S440 단계를 참조하여 이하에서 보다 상세히 설명될 바와 같이, S425 단계는 반복적으로 수행될 수 있다.
실시 예들에 따라, 메모리 컨트롤러(1000)는 도 5에 도시된 SFHR 작동에서 하드 리드 작동(S510 단계) 수행 없이 하드 디코딩 작동 일부만(예컨대, S515 단계만)을 수행함으로써 S425 단계의 각 반복을 수행할 수 있다. 메모리 컨트롤러(1000)는 S510 단계와 S515 단계 모두 수행함으로써 S425 단계의 일부 또는 전부를 수행할 수 있다. S425 단계 이후에 메모리 컨트롤러(1000)는 S430 단계를 진행할 수 있다.
메모리 컨트롤러(1000)는 asr 값을 현재 오류 프레임들의 개수로 설정할 수 있다(S430). asr 값은 S420 단계의 페이지 소프트 리드/정정 작동 이후에 오류 프레임들의 총 개수를 나타낼 수 있다. 예컨대, S430 단계에서 마이크로프로세서(111)는 RAM(112)에 저장된 프레임 지정 데이터를 참조하여 메모리 페이지(200)의 현재 오류 프레임들의 개수를 판단할 수 있다.
메모리 컨트롤러(1000)는 상기 asr 값이 0과 일치하는지 여부를 판단할 수 있다(S435). 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 asr 값이 0과 일치한다고 판단한 경우, 메모리 컨트롤러(1000)는 S450 단계를 진행하고, 도 4의 페이지 디코딩 작동이 성공적이라고 판단할 수 있다. S435 단계에서 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 asr가 0과 일치하지 않는다고 판단한 경우 메모리 컨트롤러(1000)는 S440을 진행할 수 있다.
메모리 컨트롤러(1000)는 asr 값이 S415 단계에서 미리 설정된 bsr 값보다 작은지 여부를 판단할 수 있다(S440). 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 asr 값이 bsr 값보다 적다고 판단한 경우 메모리 컨트롤러(1000)는 S4125 단계로 돌아갈 수 있다.
메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 asr 값이 bsr 값보다 적지 않다고 판단한 경우, 메모리 컨트롤러(1000)는 S445 단계를 진행하고, 도 4의 페이지 디코딩 작동이 실패라고 판단할 수 있다.
따라서, 실시 예들에 따라, 메모리 컨트롤러(1000)는 S415 단계 내지 S440 단계를 반복적으로 수행할 수 있다. S420 단계의 페이지 소프트 정정 작동이 수행될 때마다(예컨대, S612), 메모리 페이지(200)의 하나 또는 그 이상의 비트들이 변경될 수 있다. 또한, 변경된 비트들은 S425 단계의 하드 디코딩 작동들에서 더 많은 프레임들이 성공적으로 디코딩 될 수 있도록 할 수 있다.
따라서, 실시 예들에 따라, 메모리 컨트롤러(1000)는 (ⅰ) 메모리 컨트롤러(1000)가 메모리 페이지(200)의 모든 프레임들이 성공적으로 디코딩되었다고 판단할 때까지 또는 (ⅱ) 메모리 컨트롤러(1000)가 S420 단계의 페이지 소프트 정정 작동의 수행과 S425 단계의 하드 디코딩 작동들의 수행의 가장 최근의 반복이 메모리 페이지(200)의 프레임들 중에서 오류 프레임들의 개수의 저하가 발생하지 않은 것으로 판단할 때까지 S415 단계 내지 S440 단계를 반복적으로 수행할 수 있다.
도 3의 인코딩 방법, 도 4의 디코딩 방법, 및 메모리 시스템(900)을 이용하여, 실시 예들에 따라, 메모리 셀 어레이(2100)의 페이지(200)의 각 셀이 3비트를 저장하는 경우 메모리 페이지(200)의 총 리던던시는 11%이하일 수 있다. 예컨대, 데이터 프레임들(205) 중에서 어느 하나의 데이터 비트들(210)의 길이는 1821 bits일 수 있다.
또한, 데이터 프레임들(205) 중에서 어느 하나의 리던던시 비트들(215)과 결합된 데이터 비트들(210)의 길이는 1986 bits일 수 있다. 예컨대, 그러한 1986 bit 데이터 프레임의 정정 능력은 15 오류들일 수 있다.
따라서, 데이터 프레임들(205) 중에서 어느 하나의 BCH 리던던시 레이트(중복 비율)는 9.06%일 수 있다. 또한, 예컨대, 페이지(200)는 36 총 데이터 프레임들(205)과 0.5 패리티 프레임(207, 예컨대, 패리티 프레임(207)은 데이터 프레임들(205) 중에서 어느 하나의 절반)으로써 사용할 프레임들을 포함할 수 있다. 따라서, 메모리 페이지(200)의 패리티 리던던시 비율은 예컨대, 1.75%일 수 있고, 메모리 페이지(200)의 총 리던던시는 예컨대, 10.94%일 수 있다.
도 3의 인코딩 방법과 도 4의 디코딩 방법을 구현하기 위해 BCH 코드들이 메모리 시스템(900)의 디코더(1200)와 인코더(1100)에 의해 사용될 때, 하드웨어(HW) 복잡도(예컨대, 메모리 컨트롤러(1000)의 HW 복잡도)은 인코딩과 디코딩을 위해 LDPC 코드들을 사용하는 메모리 컨트롤러의 HW 복잡도에 비해 아주 작을 수 있다. 기본 BCH 코드 워드 길이(예컨대, 2000이하)와 정정 능력(t, 예컨대, 13오류들 이하)은 종래의 BCH 코드들에 비해 상대적으로 작을 수 있기 때문이다.
또한, 도 3의 인코딩 방법과 도 4의 디코딩 방법을 구현하는 메모리 시스템(900)은 낮은 연판정 확률 때문에 BER 범위를 달성하고, 1K LDPC 코드 성능을 초과할 수 있고, 높은 처리 성능을 달성할 수 있다. 실시 예들에 따라, BER 범위는 예상된 ECC를 이용하여 더욱 개선할 수 있다.
도 7a는 본 발명의 실시 예들에 따른 예상된 ECC와 함께 사용하기 위한 메모리 페이지의 구조를 나타낸다.
도 7a는 메모리 페이지(200)를 나타낸다. 도 7a에 도시된 메모리 페이지 (200)는 도 2의 메모리 페이지(200)와 동일한 구조를 포함할 수 있다. 또한, 도 7a에 도시된 바와 같이, 메모리 페이지(200)의 데이터 프레임들(205)은 제1RAU(712)와 제2RAU(714)를 포함하는 복수의 RAU들로 분리될 수 있다.
또한, 도 7a에 도시된 바와 같이, 제1RAU와 제2RAU 각각은 예상된 오버헤드와 연관될 수 있다. 예컨대, 제1RAU(712)는 제1예상된 오버헤드(722)와 연관되고, 제2RAU(714)는 제2예상된 오버헤드(724)와 연관될 수 있다. 도 2를 참조하여 설명한 바와 같이, 실시 예들에 따라, 메모리 페이지(200)의 총 크기는 8KB 이하이고, 데이터 프레임들(205) 중에서 각 프레임의 크기는 2000bits 이하이고, 패리티 프레임(207)의 크기는 1000bits 이하일 수 있다.
또한, 도 7a에 도시된 바와 같이 제1 및 제2 RAU들(722와 724) 각각의 총 크기는 4KB 이하인 경우에, 메모리 페이지(200)의 데이터 프레임들(205)은 두개의 RAU들로 분리될 수 있다.
이하에서 보다 상세히 설명할 바와 같이, 예상된 오버헤드들(722와 724) 각각은 리던던시 비트들(215)의 리던던시 데이터에 부가하여 리던던시 데이터를 획득하기 위해 디코더(1200)에 의해 사용될 수 있는 데이터를 포함할 수 있다.
여기서 델타 신드롬이라 언급되고, 예상된 오버헤드들(722와 724)을 통해서 획득된 추가 리던던시 데이터는 데이터 프레임들(205) 각각의 리던던시 비트들 (215)에 의해 이미 제공된 오류 정정 능력을 향상시키기 위해 메모리 컨트롤러 (1000)에 의해 사용될 수 있다. 앞서 언급된 델타 신드롬들은 이하에서 보다 상세히 설명될 것이다.
실시 예들에 따라, 제1 및 제2 예상된 오버헤드들(722와 724)는 예컨대, 예상된 BCH의 개념의 예시들일 수 있다. 예상된 BCH의 개념은 메모리 페이지(예컨대, 메모리 페이지(200))에서 몇몇의 프레임들에 존재하는 다수의 오류들의 상대적으로 높은 가능성과 메모리 페이지의 다수의 프레임들에 존재하는 다수의 오류들의 상대적으로 낮은 가능성의 정보 이용을 포함할 수 있다.
이를 감안하면, 예상된 BCH는 실패한 워드들의 다른 숫자들에 대해 변수 보호를 가능하게 할 수 있다(예컨대, 하나의 실패한 워드에 대한 가장 강한 보호와 메모리 페이지의 모든 실패한 워드들에 대한 가장 약한 보호).
예상된 BCH는 기본 BCH 코드 정정 능력을
Figure pat00001
오류들에서
Figure pat00002
오류들로 확장함으로써 달성된다. 여기서, 'i'는 예상된 페이지 스테이지 인덱스이고,
Figure pat00003
는 데이터 프레임들(205) 중에서 데이터 프레임의 신뢰성 비트들(215)의 초기 오류 정정 능력이고,
Figure pat00004
Figure pat00005
에 비해 상대적인 정정 능력의 변화이다.
예컨대, 수신기(예컨대, 디코더(1200))에서 수신된 워드(예컨대, 일련의 데이터 비트들)는 y = c + e로 나타낼 수 있고, 여기서 c는 코드 워드이고, e는 오류 시퀀스이고,
Figure pat00006
, C는
Figure pat00007
오류들의 정정능력을 갖는 프리머티브(primitive) BCH 코드이고, n은 코드 워드 c의 코드 길이이고, m은 양의 정수이다.
또한, 상기 수신기는 아래 기재된 오류 시퀀스
Figure pat00008
의 신드롬으로부터 전송된 코드 워드를 디코딩할 수 있다.
Figure pat00009
이기 때문에,
Figure pat00010
는 방정식(1)에 따라
Figure pat00011
로 계산될 수 있다.
Figure pat00012
(1)
오류 정정 능력을
Figure pat00013
로 확장하기 위해서, 상기 수신기는 아래의 방정식(2)에 의해 표현된 확장된 오류 신드롬을 가질 수 있다.
Figure pat00014
=
Figure pat00015
=
Figure pat00016
. (2)
상기 수신기는 아래의 방정식(3)에 따라
Figure pat00017
을 계산할 수 있다.
Figure pat00018
. (3)
따라서, 상기 수신기가 내부 정보
Figure pat00019
를 가질 경우, 상기 수신기는 아래의 방정식(4)에 의해 정의된 확장된 오류 신드롬을 평가할 수 있다.
Figure pat00020
(4)
이 부가 정보(코드 워드 c의 "델타" 신드롬,
Figure pat00021
)은 예상된 BCH 리던던시로써 저장될 수 있다.
따라서, 코드 워드 c의 델타 신드롬,
Figure pat00022
은 아래의 방정식(5)에 따라 정의된다.
Figure pat00023
, (5)
where
Figure pat00024
.
실시 예들에 따라,
Figure pat00025
비트들은 상기 언급된 코드 워드 c의 델타 신드롬
Figure pat00026
을 저장하기 위해 요구된다.
예상된 BCH 가 메모리 페이지(200)의 RAU의 데이터 프레임들 중에서 어느 하나만 실패를 지원하기 위해 사용되는 경우, 델타 신드롬
Figure pat00027
은 데이터 프레임들(205) 각각에 대해 계산되지만, 계산된 델타 신드롬들
Figure pat00028
각각에 대해 수행된 XOR 연산의 결과만이 델타 신드롬 XOR 값으로써 저장된다.
따라서, 메모리 페이지(200)의 RAU에 오직 하나의 오류 프레임이 존재할 때, 정정 프레임들의 델타 신드롬들
Figure pat00029
은 상기 방정식들 (1) 내지 (5)에 따라 계산되고, 오류 프레임의 델타 신드롬
Figure pat00030
은 오류 프레임들의 계산된 델타 신드롬들
Figure pat00031
과 상기 언급된 델타 신드롬 XOR 값에 대해 수행된 XOR 연산의 결과가 판단함으로써 복원될 수 있다. 오류 프레임의 델타 신드롬
Figure pat00032
이 복원되면, 오류 프레임의 정정 능력은
Figure pat00033
에서
Figure pat00034
로 증가될 수 있다.
예상된 BCH는 메모리 페이지(200)의 RAU의 다수의 데이터 프레임들의 실패를 지원하기 위해, 델타 신드롬
Figure pat00035
은 데이터 프레임들(205) 각각에 대해 계산되고, 델타 신드롬들
Figure pat00036
중에서 다른 스테이지들(예컨대, i에 대한 다른 값들)은 예컨대, RS 코드를 이용하여 인코딩되고, 결과로 초래된 RS 코드의 리던던시 데이터는 예컨대, 도 7b에 도시된 바와 같이 저장된다.
도 7b는 본 발명의 실시 예들에 따른 예상된 ECC를 이용하여 생성된 예상된 오버헤드를 설명하기 위한 블록도를 나타낸다. 예컨대, 도 7b는 제1리던던시 데이터(722-1)를 포함하는 제1예상된 오버헤드(722)를 나타낸다.
도 8을 참조하여 보다 상세히 설명될 바와 같이, 제1리던던시 데이터(722-1)는 메모리 페이지(200)의 제2RAU(712)의 데이트 프레임들 각각의 델타 신드롬들
Figure pat00037
의 제1스테이지 델타 신드롬 데이터에 대해 RS 인코딩을 수행함으로써 형성된 RS 코드 워드들로부터의 리던던시 데이터일 수 있다.
도 7b에 도시된 바와 같이, 델타 신드롬들
Figure pat00038
은 델티 신드롬 데이터의 N 스테이지들을 포함할 수 있고, 제1예상된 오버 헤드(722)는 제1부터 제N리던던시 데이터(722-1 내지 722-N)를 포함할 수 있다.
도 8은 본 발명의 실시 예들에 따른 예상된 ECC 인코딩 방법을 설명하기 위한 플로우차트이다. 실시 예들에 따라, 도 8에 도시된 방법은 예컨대 도 1에 도시된 메모리 컨트롤러(1000)에 의해 수행될 수 있다.
실시 예들에 따라, 도 8에 도시된 단계들은 도 3에 도시된 S310 단계부터 S360단계의 데이터 인코딩 단계들에 추가로(예컨대, 이후에) 수행될 수 있고, 데이터 비트들은 메모리 컨트롤러(1000)에 의해 인코딩되고, 메모리 셀 어레이(2100) 내의 페이지(200)로써 저장될 수 있다. 따라서, 도 8은 S310 단계부터 S360 단계에서 이미 수행된 시나리오를 참조하여 아래에서 설명된다.
도 8을 참조하면, 메모리 컨트롤러(1000)는 인덱스 값 n을 1로 설정할 수 있다(S805). 예컨대, 마이크로프로세서(111)는 RAM(112)에 인덱스 값 n을 저장할 수 있다(S805).
메모리 컨트롤러(1000)는 RAU n의 각 데이터 프레임의 데이터 비트들(210)에 대한 델타 신드롬 데이터의 N 스테이지들을 생성할 수 있고(S810), 여기서 N은 메모리 페이지(200)의 RAU들의 델타 신드롬 데이터의 총 스테이지들의 개수를 나타내는 양의 정수이다.
실시 예들에 따라, 도 8에 도시된 예상된 ECC 디코딩 방법은 예상된 BCH를 이용할 수 있다. 예컨대, n=1일 때, 마이크로프로세서(111)는 상기 언급된 방정식들 (1) 내지 (5)에 따라 RAU 1(예컨대, 제1RAU(722))의 각 데이터 프레임에 대해 델타 신드롬
Figure pat00039
, N(예컨대,
Figure pat00040
)을 생성하기 위하여 인코더 (1100)를 제어할 수 있다(S810). 방정식들 (1) 내지 (50)를 참조하여 언급한 바와 같이,
Figure pat00041
는 초기 정정 능력
Figure pat00042
을 참조하여 특정 데이터 프레임에 대한 델타 신드롬
Figure pat00043
에 의해 제공된 추가 BCH 정정 능력을 나타낸다.
메모리 컨트롤러(1000)는 인덱스 값 i를 1로 설정할 수 있다(S815). 예컨대, 마이크로프로세서(111)는 인덱스 값 i를 RAM(112)에 저장할 수 있다(S815).
메모리 컨트롤러(1000)는 RAU n의 모든 데이터 프레임들에 대한 스테이지 i 델타 신드롬들을 디코딩하여 RAU n에 대한 스테이지 i 코드 워드를 생성할 수 있다. 예컨대, n=1이고 i=1일 때, 마이크로프로세서(111)는 RAU 1(예컨대, 제1RAU(722))에 대한 스테이지 1코드 워드를 생성하기 위하여 제1RAU(722)의 각 데이터 프레임의 스테이지 1델타 신드롬들
Figure pat00044
상에서 RS 인코딩을 수행함으로써 인코더(1100)를 제어할 수 있다(S820).
따라서, 제1RAU(722)의 각 데이터 프레임의 스테이지 1 델타 신드롬들
Figure pat00045
은 예컨대, 마이크로프로세서(111)의 제어 하에 결합될 수 있고, 결합된 데이터는 RAU 1에 대한 하나의 스테이지 1 코드 워드를 생성하기 위하여 RS 코드를 이용하여 인코더(1100)에 의해 인코딩된다(S820).
예컨대, 도 7b에서 제1RAU(722)의 6개의 데이터 프레임들이 도시되었다. 제1RAU(722)가 총 6개의 데이터 프레임들을 가질 경우, 6개의 스테이지 1 델타 신드롬
Figure pat00046
은 결합되고, 예컨대, 마이크로프로세서(111)의 제어 하에, 인코더(1100)는 RS 코드를 이용하여 제1RAU(722)에 대한 하나의 스테이지 1 코드 워드를 생성하기 위하여 결합된 6개의 스테이지 1 델타 신드롬들을 인코딩한다.
S820 단계에서 생성된 스테이지 i 코드 워드가 RS 코드 워드이므로, 스테이지 i 코드 워드는 데이터 비트들과 리던던시 비트들을 포함할 수 있다.
메모리 컨트롤러(1000)는 인덱스 값 i와 값 N을 비교할 수 있다(S825). 예컨대, S825 단계는 스테이지 코드 워드들이 모든 스에티지들 i=1, 2, 3, ...N에 대해 생성되는지 여부를 판단하기 위하여 사용될 수 있다.
메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 i는 N과 일치하지 않는다고 판단한 경우, 메모리 컨트롤러(1000)는 S830 단계를 진행할 수 있다. 메모리 컨트롤러(1000)는 인덱스 값 i를 증가시키고, 새로운 값 i에 대해 S820 단계를 반복할 수 있다(S830).
S825 단계에서, 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 i는 N과 일치한다고 판단한 경우, 메모리 컨트롤러(1000)는 S835 단계를 진행할 수 있다. 따라서 S820 단계는 반복적으로 되풀이되어서 N 스테이지 코드 워드들이 각각이 델타 신드롬들 델타 신드롬
Figure pat00047
(i=1, 2, 3, ..., N)에 대응하여 생성된다.
또한, 스테이지 i 코드 워드의 정정 능력은 스테이지 i 코드 워드에 대해 생성된 리던던시 비트들의 개수를 제어함으로써 제어될 수 있다. 예컨대, 콩지된 바와 같이 RS 코드 워드의 오류 정정 능력은 비트들 면에서 RS 코드 워드에 포함된 리던던시 비트들의 개수의 절반과 같을 수 있다. 또한, S820 단계의 다른 반복들에서 생성된 다른 스테이지들 i 의 코드 워드들은 다른 오류 정정 능력들을 가지도록 생성될 수 있다. 예컨대, 표 1은 데이터 프레임의 리던던시 비트들(215)의 원래 오류 정정 능력들(예컨대, t0)의 실시예를 나타낸다.
Stage Index ti (bits) Maximal correctable Failures (frames)
0 13 18
1 14 5
2 16 4
3 17 3
4 21 2
5 29 1
예컨대, 표 1에 도시된 바와 같이, 초기 오류 정정 능력 t0에 상응하는 인덱스 값 0에 대해, 데이터 프레임들(205)의 초기 오류 정정 능력 t0는 데이터 프레임 당 13 bits이고, 정정될 수 있는 오류 프레임들의 총 개수는 18이다(즉, 메모리 페이지(200)가 두개의 RAU들로 고르게 분리되어 총 36개의 프레임들을 포함할 경우 메모리 페이지(200)의 하나의 RAU의 모든 데이터 프레임들).
실시 예들에 따라, 표 1에 도시된 인덱스 값 1에 대해, S810 단계에서 생성된 스테이지 1 델타 신드롬 데이터의 총 오류 정정 능력 t1은 데이터 프레임 당 14bits이고, 추가된 정정 능력
Figure pat00048
은 데이터 프레임 당 1 bit이고, S820 단계에서 생성된 대응하는 스테이지 1 코드 워드는 메모리 페이지(200)의 RAU의 데이터 프레임들 중에서 최대 5개의 오류 프레임들의 스테이지 1 델타 신드롬의 복원을 허용하는 다수의 리던던시 비트들을 가지는 RS 코드 워드일 수 있다.
실시 예들에 따라, 표 1에 도시된 인덱스 값 2에 대해, S810 단계에서 생성된 스테이지 2 델타 신드롬 데이터의 총 오류 정정 능력 t2는 데이터 프레임 당 16bits이고, 추가된 정정 능력
Figure pat00049
는 데이터 프레임 당 3 bits이고, S820 단계에서 생성된 대응하는 스테이지 2 코드 워드는 메모리 페이지(200)의 RAU의 데이터 프레임들 중에서 최대 4개의 오류 프레임들의 스테이지 2 델타 신드롬의 복원을 허용하는 다수의 리던던시 비트들을 가지는 RS 코드 워드일 수 있다.
실시 예들에 따라, 표 1에 도시된 인덱스 값 3에 대해, S810 단계에서 생성된 스테이지 3 델타 신드롬 데이터의 총 오류 정정 능력 t3은 데이터 프레임 당 17bits이고, 추가된 정정 능력
Figure pat00050
는 데이터 프레임 당 4 bit이고, S820 단계에서 생성된 대응하는 스테이지 3 코드 워드는 메모리 페이지(200)의 RAU의 데이터 프레임들 중에서 최대 3개의 오류 프레임들의 스테이지 3 델타 신드롬의 복원을 허용하는 다수의 리던던시 비트들을 가지는 RS 코드 워드일 수 있다.
실시 예들에 따라, 표 1에 도시된 인덱스 값 4에 대해, S810 단계에서 생성된 스테이지 4 델타 신드롬 데이터의 총 오류 정정 능력 t4은 데이터 프레임 당 21bits이고, 추가된 정정 능력
Figure pat00051
는 데이터 프레임 당 4 bit이고, S820 단계에서 생성된 대응하는 스테이지 4 코드 워드는 메모리 페이지(200)의 RAU의 데이터 프레임들 중에서 최대 2개의 오류 프레임들의 스테이지 4 델타 신드롬의 복원을 허용하는 다수의 리던던시 비트들을 가지는 RS 코드 워드일 수 있다.
실시 예들에 따라, 표 1에 도시된 인덱스 값 5에 대해, S810 단계에서 생성된 스테이지 5 델타 신드롬 데이터의 총 오류 정정 능력 t5은 데이터 프레임 당 29bits이고, 추가된 정정 능력
Figure pat00052
는 데이터 프레임 당 16 bit이고, S820 단계에서 생성된 대응하는 스테이지 5 코드 워드는 메모리 페이지(200)의 RAU의 데이터 프레임들 중에서 최대 1개의 오류 프레임들의 스테이지 5 델타 신드롬의 복원을 허용하는 다수의 리던던시 비트들을 가지는 RS 코드 워드일 수 있다.
따라서, 표 1에 도시된 바와 같이, 델타 신드롬 스테이지들의 오류 정정 능력들
Figure pat00053
이 증가하기 때문에, 델타 신드롬 스테이지들에 기초하여 형성된 RS 코드 워드들은 델타 신드롬 데이터가 복원될 수 있는 오류 프레임들의 최대 개수가 감소하도록 형성될 수 있다. 예컨대, 상대적으로 낮은 오류 정정 능력들
Figure pat00054
을 가지는 엘타 신드롬 스테이지들은 상대적으로 높은 수의 오류 프레임들의 델타 신드롬 데이터를 복원할 수 있는 코드 워드들로 인코딩되는 반면, 상대적으로 높은 오류 정정 능력들
Figure pat00055
을 가지는 델타 신드롬 스테이지들은 상대적으로 적은 수의 오류 프레임들의 델타 신드롬 데이터를 복원할 수 있는 코드 워드들로 인코딩될 수 있다.
메모리 컨트롤러(1000, 예컨대, 인코더(1100))는 S820 단계의 반복들 1 내지 N을 통해 RAU n에 대해 생성된 리던던시 데이터를 예상된 오버헤드 보호 코드 워드 n으로 인코딩할 수 있다(S835). 예컨대, 제1RAU(722)에 대응하는 제1예상된 오버헤드 보호 코드 워드 722-P(예컨대, 예상된 오버헤드 보호 코드 워드 1)는 도 7b에 도시된다. 메모리 컨트롤러(1000)는 예상된 오버헤드 보호 코드 워드 n을 예컨대, 메모리 페이지(200)에 저장할 수 있다(S835).
메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 인덱스 값 n이 메모리 페이지(200)의 총 RAU들의 개수와 일치하는지 여부를 판단할 수 있다(S840). 예컨대, 메모리 페이지(200)의 총 RAU들의 갯수가 RAM(112)에 저장되거나, 외부 소스로부터 마이크로프로세서(111)로 공급될 수 있다.
S840 단계에서 메모리 컨트롤러(1000)는 인덱스 값 n이 총 RAU들의 개수와 일치하지 않다고 판단한 경우, 메모리 컨트롤러(1000)는 S845 단계에서 인덱스 값 n을 증가시킬 수 있고, 증가된 n 값에 대해 S810 단계부터 S840 단계를 수행할 수 있다. S840 단계에서 메모리 컨트롤러(1000)가 인덱스 값 n이 메모리 페이지(200)의 총 RAU들의 개수와 일치한다고 판단한 경우, 메모리 컨트롤러(1000)는 S850 단계를 진행하고 인코딩 작동을 종료할 수 있다.
도 9를 참조하여 예상된 ECC를 이용한 디코딩 방법을 설명할 것이다.
도 9는 본 발명의 실시 예들에 따른 예상된 ECC 디코딩 작동을 포함하는 디코딩 방법을 나타내는 플로우차트이다. 실시 예들에 따라, 도 9에 도시된 방법은 예컨대 도 1에 도시된 메모리 컨트롤러(1000)에 의해 수행될 수 있다. 간략화를 위해 도 9는 도 10을 참조하여 부분적으로 설명될 것이다.
또한, 도 9와 도 10은 데이터 비트들이 메모리 셀 어레이(2100) 내의 메모리 페이지(200)로부터 메모리 컨트롤러(1000)에 의해 리드되고 메모리 컨트롤러(1000)에 의해 디코딩 되는 예를 참조하여 설명될 것이다.
도 9를 참조하면 메모리 컨트롤러(1000)는 메모리 페이지(200)로부터 리드된 각 RAU의 각 프레임에 대해 도 5에 도시된 SFHR 작동을 수행할 수 있다(S905). 도 5에서 상기 언급한 바와 같이, 메모리 컨트롤러(1000)는 예컨대, RAM(112)에 각 데이터 프레임(205)이 오류 프레임인지 정정 프레임인지를 나타내는 프레임 지정 데이터를 저장할 수 있다.
메모리 컨트롤러(1000)는 메모리 페이지(200)의 모든 프레임들이 정정 프레임들로 지정되었는지 여부를 판단할 수 있다(S910). 예컨대, 마이크로프로세서(111)는 메모리 페이지(200)의 모든 데이터 프레임들(205)이 정정 프레임들로 지정되었는지 여부를 판단하기 위해 S905 단계에서 수행된 SFHR 작동 동안에 RAM(112)에 저장된 프레임 지정 데이터를 체크할 수 있다.
S910 단계에서 메모리 컨트롤러(1000)가 메모리 페이지(200)의 모든 데이터 프레임들(205)이 정정 프레임들로 지정되었다고 판단한 경우, 메모리 컨트롤러(1000)는 S950 단계를 진행할 수 있다. S950 단계에서, 메모리 컨트롤러(1000)는 도 9의 데이터 디코딩 작동이 메모리 페이지(200)를 디코딩하는데 성공하였다고 판단하고, 메모리 페이지(200)에 대한 데이터 디코딩 직동을 종료한다.
S910 단계에서 메모리 컨트롤러(1000)가 메모리 페이지(200)의 모든 데이터 프레임들(205)이 정정 프레임으로 지정되었다고 판단하지 않은 경우, 메모리 커트롤러(1000)는 S915 단계부터 S940 단계를 포함하는 순환 데이터 디코딩 루틴을 개시할 수 있다.
S915 단계에서, 메모리 컨트롤러(1000)는 데이터 값 bsr 값을 오류 프레임들의 총 개수로 설정할 수 있다. 값 bsr 값은 S920 단계의 페이지 소프트 리드/정정 작동이 수행되기 전의 메모리 페이지(200)의 총 오류 프레임들의 개수를 나타낸다. 예컨대, 실시 예들에 따라, S915 단계에서 마이크로프로세서(111)는 현재 오류 프레임들이라고 지정된 메모리 페이지(200)의 데이터 프레임들(205)의 총 개수를 판단하기 위해 RAM(112)에 저장된 프레임 지정 데이터를 체크하고, 마이크로프로세서(111)는 판단된 오류 프레임들의 총 개수를 데이터 값 bsr 값으로서 RAM(112)에 저장할 수 있다.
S917 단계에서, 메모리 컨트롤러(1000)는 메모리 페이지(200)의 각 RAU에 대해 예상된 ECC 디코딩 작동을 수행할 수 있다. 예상된 디코딩 작동의 예는 도 10에 도시된다.
도 10은 본 발명의 실시 예들에 따른 예상된 ECC 디코딩 작동을 설명하기 위한 플로우차트이다. 예컨대, 도 10은 제1RAU(722)를 참조하여 설명될 것이나, S917 단계의 일부로서 도 10에 도시된 방법은 도 9의 페이지 디코딩 방법에 의해 디코딩되는 메모리 페이지의 모든 RAU에 대해 수행된다. 따라서, 제1RAU(722)를 참조하여 후술하는 도 10의 작동들은 메모리 페이지(200)의 모든 RAU에 대해 수행될 수 있다.
도 10을 참조하면, 메모리 컨트롤러(1000)는 스테이지 1부터 스테이지 N 리던던시 데이터를 획득하기 위해 제1RAU(722)에 대응하는 예상된 오버헤드 보호 코드워드를 디코딩할 수 있다(S1005).
예컨대, 도 8을 참조하여 언급한 바와 같이 S835 단계에 따라 메모리 컨트롤러(1000)는 메모리 페이지(200)의 각 RAU n에 대해 예상된 오버헤드 보호 코드워드를 생성하고, 예상된 오버헤드 보호 코드 워드들을 (예컨대, 메모리 페이지(200) 또는 메모리 장치(2000)의 다른 부분에) 저장할 수 있다. 따라서, S1005 단계에서 예컨대 디코더(1200)에 의해 디코딩된 제1RAU(722)의 예상된 오버헤드 보호 코드워드는 S835 단계에서 예컨대 인코더(1100)에 의해 생성된 예상된 오버헤드 보호 코드 워드일 수 있다.
S1005 단계에서 제1RAU(722)에 대한 예상된 오버헤드 보호 코드워드를 디코딩함으로써, 메모리 컨트롤러(1000)는, 제1RAU(722)의 데이터 프레임들의 스테이지 1 내지 스테이지 N 델타 신드롬 각각에 RS 인코딩 작동들을 수행하여 생성된 스테이지 1 내지 스테이지 N 코드 워드들의 리던던시 데이터(예컨대, 리던던시 비트들)를 획득할 수 있다.
S1010 단계에서 메모리 컨트롤러(1000)는 인덱스 값 j를 1로 설정할 수 있다.
S1015 단계에서 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 제1RAU(722)의 현재 오류 프레임들의 개수가 스테이지 j 코드 워드의 오류 정정 능력보다 큰지 여부를 판단할 수 있다. 예컨대, 표 1을 이용하여 j = 1일 때, 스테이지 1 코드 워드는 스테이지 1 델타 신드롬 데이터(예컨대, 스테이지 1 델타 신드롬들
Figure pat00056
)을 5개의 오류 프레임들까지 복원할 수 있다.
따라서, 제1RAU(722)의 데이터 프레임들 중에서 오류 프레임들의 총 개수가 5보다 크면, 메모리 컨트롤러(1000)는 제1RAU(722)의 오퓨 프레임들 각각의 스테이지 1 델타 신드롬 데이터를 복원할 수 없다. 또한, 제1RAU(722)의 데이터 프레임들 중에서 오류 프레임들의 총 개수가 5보다 크지 않으면, 메모리 컨트롤러(1000)는 제1RAU(722)의 오류 프레임들 각각의 스테이지 1 델타 신드롬 데이터를 복원 할 수 있다.
따라서, S1015 단계에서 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 제1RAU(722)의 현재 오류 프레임들의 개수가 스테이지 j 코드 워드의 오류 정정 능력보다 크다고 판단한 경우, 메모리 컨트롤러(1000)는 S1055 단계를 진행하고, 도 10의 예상된 ECC 디코딩 작동을 종료할 수 있다.
또한, S1015 단계에서 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서 (111))가 제1RAU(722)의 현재 오류 프레임들의 개수가 스테이지 j 코드 워드의 오류 정정 능력보다 크지 않다고 판단한 경우, 메모리 컨트롤러는 S1020 단계를 진행할 수 있다. 예컨대, S1015 단계에서 마이크로프로세서(111)는 제1RAU(722)의 데이터 프레임들 중에서 오류 프레임들의 총 개수를 판단하기 위하여 RAM(112)에 저장된 프레임 지정 데이터를 체크할 수 있다.
S1020 단계에서, 메모리 컨트롤러(1000)는 제1RAU(722)의 오류 프레임들에 대해 스테이지 j 델타 신드롬 데이터를 획득할 수 있다. 예컨대, 제1RAU(722)의 모든 오류 데이터 프레임에 대해 스테이지 j 델타 신드롬 데이터(예컨대, j=1일 때 스테이지 1 델타 신드롬들
Figure pat00057
)는 예컨대, 상기 언급한 방정식들 (1) 내지 (5)을 이용하여 각 오류 프레임에 대해 계산될 수 있다.
예컨대, 제1RAU(722)는 총 18개의 데이터 프레임들(205)을 포함할 수 있고, 18개 중에서 13개의 데이터 프레임들은 현재 오류 데이터 프레임들로서 지정될 수 있고, 스테이지 j 델타 신드롬 데이터는 제1RAU(722)의 13개의 정정 데이터 프레임들 각각에 대해 생성될 수 있다.
S1025단계에서, 메모리 컨트롤러(1000)는 S1020 단계에서 획득된 오류 프레임들의 스테이지 j 델타 신드롬 데이터와 S1005단계에서 획득된 스테이지 j 리던던시 데이터에 기초하여 제1RAU의 오류 프레임들에 대한 스테이지 j 델타 신드롬 데이터를 획득할 수 있다.
예컨대, 앞서 언급한 바와 같이, 표 1에 도시된 스테이지 1코드 워드는 5개의 오류 프레임들의 스테이지 1 델타 신드롬 데이터를 복원할 수 있다. 또한, 앞서 언급한 바와 같이, 제1RAU(722)의 18개 중에 13개의 데이터 프레임들은 오류 프레임들이므로 제1RAU(722)의 5개의 데이터 프레임들만이 오류 프레임들이다.
따라서 13개의 오류 프레임들의 스테이지 1 델타 신드롬 데이터와 S1005 단계에서 획득된 스테이지 j 코드 워드의 리던던시 비트들을 결합함으로써, 메모리 컨트롤러(1000, 예컨대, 디코더(1200))는 공지의 RS 디코딩 절차들을 이용하여 5개의 오류 프레임들에 대응하는 전체 스테이지 j 코드 워드의 누락 비트들을 복원할 수 있다. S1025 단계 이후에 미모리 컨트롤러(1000)는 S1030 단계를 진행할 수 있다.
메모리 컨트롤러(1000, 예컨대, 디코더(1200))는 S1025 단계에서 획득된 전체 복원된 스테이지 j 델타 신드롬 데이터를 이용하여 제1RAU(722)의 오류 프레임들에 대해 디코딩을 수행할 수 있다(S1030).
예컨대, S1025 단계에서 전체 스테이지 j 코드 워드가 복원되면, S1030 단계에서 디코더(1200)는
Figure pat00058
bits에 의해 5개의 오류 프레임들 각각의 리던딘시 비트들(215)의 오류 정정 능력을 증가시키기 위해 복원된 스테이지 j 델타 신드롬 데이터를 이용할 수 있다.
표 1을 참조하여 설명한 바와 같이,
Figure pat00059
= 1이고, 총 오류 정정 능력 t1 = 14 bits 이다. 따라서, 14 bits와 같거나 그 이하의 전체 개수를 갖는 오류를 가지는 5개의 오류 프레임들 각각에 대해, 디코더(1200)는 오류 프레임을 성공적으로 디코딩할 수 있고, 오류 프레임들의 총 개수를 감소시킬 수 있다.
메모리 컨트롤러(1000)는 정정 프레임들과 오류 프레임들의 지정을 업데이트할 수 있다(S1035). 예컨대, 메모리 컨트롤러(1000, 디코더(1200))는 S1030 단계에서 5개의 오류 프레임들 중에서 하나 또는 그 이상을 성공적으로 디코딩 한 경우, 마이크로컨트롤러는 S1030 단계에서 오류 프레임에서 정정 프레임들로 정정된 하나 또는 그 이상의 오류 프레임들의 지정들을 변경하기 위하여 RAM(112)에 저장된 프레임 지정 정보를 변경할 수 있다.
메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 제1RAU(722)의 모든 데이터 프레임들이 정확한지 여부를 판단할 수 있다(S1040). 예컨대, 마이크로프로세서(111)는 제1RAU(722)의 모든 프레임들이 정확한 프레임들로서 지정되었는지 여부를 판단하기 위해 RAM(112)에 저장된 프레임 지정 데이터를 체크할 수 있다.
S1040 단계에서 메모리 컨트롤러(1000)가 제1RAU의 데이터 프레임들이 정확하다고 판단한 경우, 메모리 컨트롤러(1000)는 S1055 단계를 진행하고, 도 10의 예상된 ECC 디코딩 작동을 종료할 수 있다. S1040 단계에서 메모리 컨트롤러(1000)가 제1RAU의 모든 데이터 프레임이 정확하다고 판단하지 않은 경우, 메모리 컨트롤러(1000)는 S1045 단계를 진행할 수 있다.
인덱스 값 j가 메모리 컨트롤러(1000)에 의해 1만큼 증가할 수 있다(S1045). 예컨대, 마이크로프로세서(111)는 인덱스 값 j를 증가시킬 수 있다.
메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 인덱스 값 j가 값 N보다 큰지 여부를 판단할 수 있다(S1050). 여기서 N은 제1RAU(722)의 데이터 프레임들에 대응하는 델타 신드롬 데이터의 총 스테이지들의 개수이다. 도 1에 도시된 예에서, 델타 신드롬 데이터의 총 스테이지들의 개수는 5이크로, N=5이다.
S1050 단계에서 메모리 컨트롤러(1000)가 인덱스 값 j가 N값보다 크지 않다고 판단한 경우, 메모리 컨트롤러(1000)는 S1015 단계로 돌아가서 새로이 증가한 인덱스 값 j에 대하여 S1015 단계 내지 S1045 단계를 수행할 수 있다. S1050 단계에서 메모리 컨트롤러(1000)가 인덱스 값 j가 N값보다 크다고 판단한 경우, 메모리 컨트롤러(1000)는 S1055 단계를 진행하고 도 10의 예상된 ECC 디코딩 작동을 종료할 수 있다.
또한, 실시 예들에 따라, 메모리 컨트롤러(1000)가 도 10에 도시된 프로세스를 이용하여 MC 프레임들을 다루는(address) 것이 가능하다. 여기서, "MC 프레임"이라는 용어는 BCH 디코딩 동안(예컨대, 도 5에 도시된 S530 단계 동안) 정정 프레임이라고 잘못 지정된 오류 프레임인 미스(miss)-정정된 프레임을 지칭할 수 있다.
MC 신드롬은 MC 프레임에 기초하여 생성된(예컨대, S1020 단계) 신드롬이다. MC 프레임이 존재할 때, MC 프레임은 오류 프레임이므로, MC 프레임(예컨대, 도 10의 S1020 단계)에 기초하여 생성된 MC 신드롬 또한 잘못된 것일 수 있다.
그러나, 잘못된 스테이지 j 신드롬들의 총 개수(예컨대, 공지의 오류 프레임들의 스테이지 j 신드롬들의 개수 + (2 x 스테이지 MC 신드롬들)) 가 최대 오류 정정 능력과 같거나 그 이하인 한, 메모리 컨트롤러(1000, 예컨대, 디코더(1200))는 예컨대, S1025 단계에 대하여 전술한 동일한 방법으로 모든 잘못된 스테이지 j 신드롬들(예컨대, 하나 또는 그 이상의 잘못된 스테이지 j MC 신드롬들)을 정정하기 위해 스테이지 j 신드롬 코드 워드를 사용할 수 있다.
또한, 메모리 컨트롤러(1000, 예컨대, 디코더(1200))는 MC 신드롬들을 식별할 수 있다. 예컨대, MC 신드롬들은 정정 프레임들로서 식별된 프레임들(예컨대, RAM(112)에 저장된 프레임 지정 데이터)에 기초하여 생성되기 때문에 메모리 컨트롤러(1000)는 S1025 단계에서 정정된 스테이지 j 신드롬이 MC 신드롬이라고 판단할 수 있다.
따라서, 메모리 컨트롤러(1000)가 (ⅰ) S1025 단계에서 정정되고 (ⅱ) 정정 프레임이라고 식별된 프레임(예컨대, RAM(112)에 저장된 프레임 지정 데이터)에 기초하여 생성된 것으로 감지한 신드롬들을 MC 신드롬들이라고 인식할 수 있다. 또한, MC 신드롬이 검출될 때, 디코더(1200)는 예컨대, 마이크로프로세서(111)를 시그널링할 수 있다.
시그널링은 MC 신드롬에 대응하는 MC 프레임의 식별을 포함할 수 있다. 디코더(1200)에 의해 생성된 알림에 기초하여 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 (예컨대, RAM(112)에 저장된 프레임 지정 데이터를 업데이트함으로써) MC 프레임을 오류 프레임이라고 지정할 수 있고, 상기 MC 프레임에 대응하는 새로이 정정된 스테이지 j 신드롬 데이터를 이용하여 MC 프레임에 부가적인 BCH 디코딩 작동을 수행할 수 있다.
다시 도 9를 참조하면, S917 단계가 완료된 후에, 메모리 컨트롤러(1000)는 메모리 페이지(200)의 RAU들 각각의 모든 데이터 프레임들이 정확한지 아닌지 여부를 판단할 수 있다. 예컨대, S919 단계에서, 마이크로프로세서(111)는 메모리 페이지(200)의 RAU들 각각의 모든 데이터 프레임들이 정확한지 여부를 판단하기 위해 RAM(112)에 저장된 프레임 지정 데이터를 체크할 수 있다.
S919 단계에서 메모리 컨트롤러(1000)가 메모리 페이지(200)의 RAU들 각각의 모든 데이터 프레임들이 정확하다고 판단한 경우, 메모리 컨트롤러(1000)는 S950 단계를 진행할 수 있고, 도 9의 페이지 디코딩 방법은 메모리 페이지(200) 디코딩에 성공한 것으로 판단할 수 있다. S919 단계에서, 메모리 컨트롤러(1000)가 메모리 페이지(200)의 RAU 들 각각의 모든 데이터 프레임들이 정확하다고 판단한 것이 아닌 경우, 메모리 컨트롤러(1000)는 S920 단계를 진행할 수 있다.
S920 단계에서 메모리 컨트롤러(1000)는 페이지 소프트 리드/정정 작동을 수행할 수 있다. 메모리 컨트롤러(1000)는 도 6a와 도 6b를 참조하여 S420 단계를 참조하여 S420 단계에 대해 전술한 방법과 동일한 방법으로 S920 단계에서 메모리 페이지(200)에 페이지 소프트 리드/정정 작동을 수행할 수 있다.
S930 단계 내지 S940 단계를 참조하여 보다 상세히 후술할 바와 같이, S920 단계는 도 9에 도시된 프로세스의 단일 실행 동안, 복수회 반복적으로 수행될 수 있다. 실시 예들에 따라, 메모리 컨트롤러(1000)는 도 6b에 도시된 S605 단계, S610 단계, 및 S612 단계 모두를 수행함으로써 S920 단계(예컨대, 도 9에 도시된 프로세스의 단일 실행 동안 수행된 S920 단계의 제1반복)의 초기 반복을 수행할 수 있고, 메모리 컨트롤러(1000)는 S612 단계(예컨대, S605 단계의 소프트 리드 작동과 S610 단계의 LLR 판단 작동의 수행을 제외)의 정정 작동만 수행함으로써 S920 단계(예컨대, 초기 반복 이후의 각 반복) 이후의 각 반복을 수행할 수 있다.
따라서, 메모리 컨트롤러(1000)는 매번 시간 소비 소프트 리드 작동 및/또는 LLR 판단 작동의 수행 없이 S920 단계를 반복적으로 수행할 수 있다. 대안적으로, 메모리 컨트롤러(1000)는 S605 단계와 S610 단계 중에서 하나 또는 모두 수행할 수 있고, S920 단계의 모든 반복들(초기 반복 이후의 반복들)의 일부에 대해 S612 단계를 추가적으로 수행할 수 있다. S920 단계 이후에, 메모리 컨트롤러(1000)는 S925 단계를 진행할 수 있다.
S925 단계에서 메모리 컨트롤러(1000)는 데이터 프레임들(205)과 패리티 프레임(207) 중에서 현재 오류 프레임이라고 지정된 각 프레임에 대해 도 5의 SFHR 작동을 수행할 수 있다. 예컨대, 메모리 컨트롤러(1000)는 추가적으로 프레임들을 정정하기 위해 S925 단계를 수행할 수 있고, 정정은 S920 단계에서 수행된 페이지 소프트 리드 작동의 결과들을 통해 가능하다.
S930 단계 내지 S940 단계를 참조하여 보다 상세히 후술할 바와 같이, S925 단계는 반복적으로 수행될 수 있다. 실시 예들에 따라 메모리 컨트롤러(1000)는 예컨대 단계 S510의 하드 리드 작동을 수행하지 않고 도 5(예컨대, S515 단계만)에 도시된 SFHR 작동의 하드 코드 작동 부분만 수행함으로써 S925 단계를 수행할 수 있다.
따라서, 메모리 컨트롤러(1000)는 매번 또는 전혀 시간 소비 하드 리드 작동의 수행 없이 S925 단계를 반복적으로 수행할 수 있다. 따라서, 메모리 컨트롤러(1000)는 S510과 S515 모두 수행함으로써 S925 단계의 일부 또는 모든 반복들을 수행할 수 있다. S920 단계 이후에 메모리 컨트롤러(1000)는 S930 단계를 진행할 수 있다.
S930 단계에서, 메모리 컨트롤러(1000)는 asr 값을 현재 오류 프레임들의 개수로 설정할 수 있다. asr 값은 S920 단계의 페이지 소프트 리드/정정 작동 이후의 총 오류 프레임들의 개수를 나타낸다. 예컨대, S930 단계에서, 마이크로프로세서(111)는 RAM(112)에 저장된 프레임 지정 데이터를 참조하여 메모리 페이지(200)의 현재 오류 프레임들의 개수를 판단할 수 있다.
S935 단계에서 메모리 컨트롤러(1000)는 asr 값이 0과 일치하는지 여부를 판단할 수 있다. S935 단계에서, 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 asr 값이 0과 일치한다고 판단한 경우, 메모리 컨트롤러(1000)는 S950 단계를 진행할 수 있고, 도 9의 페이지 디코딩 작동은 메모리 페이지(200) 디코딩에 성공한 것으로 판단할 수 있다. S935 단계에서 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 asr 값이 0과 일치하지 않는다고 판단한 경우, 메모리 컨트롤러(1000)는 S940 단계를 진행할 수 있다.
S940 단계에서 메모리 컨트롤러(1000)는 asr 값이 S415 이전 단계에서 설정된 값보다 작다고 판단할 수 있다. S940 단계에서 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))가 asr 값이 bsr 값보다 작다고 판단한 경우, 메모리 컨트롤러(1000)는 S915 단계로 돌아갈 수 있다.
S940 단계에서 메모리 컨트롤러(1000, 예컨대, 마이크로프로세서(111))는 asr 값이 bsr 값보다 작지 않다고 판단한 경우, 메모리 컨트롤러(1000)는 S945 단계를 진행할 수 있고, 도 9의 페이지 디코딩 작동은 메모리 페이지(200)를 성공적으로 디코딩하는데 실패했다고 판단할 수 있다.
따라서, 실시 예들에 따라, 메모리 컨트롤러(1000)는 S915 단계 내지 S940 단계를 반복적으로 수행할 수 있다. S920 단계의 페이지 소프트 정정 작동이 수행될 때마다, 메모리 페이지(200)의 하나 또는 그 이상의 비트들은 변경될 수 있다.
또한, 변경된 비트들은 더 많은 프레임들에 대해 S917 단계의 예상된 ECC 디코딩 작동들 또는 S925 단계의 SFHR 작동들에서 성공적으로 디코딩되도록 할 수 있다. 또한, 표 1에 앞서 도시된 바와 같이, 제1 및 제2 예상된 오버 헤드들(722와 724)을 생성하기 위하여 사용된 스테이지 1 내지 N 코드 워드들은 복원될 수 있는 스테이지 i 델타 신드롬 데이터에 대한 오류 프레임들의 수가 작을수록, 복원된 스테이지 i 델타 신드롬 데이터의 오류 정정 능력은 증가하도록 계산될 수 있다.
따라서, S920 단계의 페이지 소프트 정정 작동과 S925 단계의 SFHR 작동의 반복적인 사용을 통해 부가적인 코드 워드들이 정정되므로, 사용될 수 있는 스테이지 i 코드 워드들의 오류 정정 능력은 증가하고, 더 많은 수의 오류들을 가지는 오류 프레임들은 성공적으로 정정된다.
따라서, 실시 예들에 따라, 메모리 컨트롤러(1000)는 (ⅰ) 메모리 컨트롤러(1000)가 메모리 페이지(200)의 모든 프레임들이 성공적으로 디코딩 되었다고 판단할 때까지 또는 (ⅱ) 메모리 컨트롤러(1000)가 S917 단계의 예상된 ECC 디코딩 작동의 수행, S920 단계의 페이지 소프트 리드/정정 작동의 수행, 및 S925 단계의 SFHR 작동들의 수행의 최근 반복이 메모리 페이지(200)의 프레임들로부터 오류 프레임들의 개수의 저하를 초래하지 않는다고 판단할 때가지 S915 단계 내지 S940 단계를 반복적으로 수행할 수 있다.
메모리 시스템(900)에 따라 도 8의 인코딩 방법과 도 9의 디코딩 방법을 이용하여, 실시 예들에 따라, 메모리 셀 어레이(2100)의 페이지(200)의 각 셀은 3 bits를 저장할 때, 메모리 페이지(200)의 총 리던던시는 11% 이하일 수 있다.
예컨대, 데이터 프레임들(205) 중에서 어느 하나의 데이터 비트들(210)의 길이가 1821 bits일 수 있다. 또한, 데이터 프레임들(205) 중에서 어느 하나의 리던던시 비트들(215)와 결합된 데이터 비트들(210)의 길이는 예컨대, 1964 bits일 수 있다.
그러한 1964 비트 데이터 프레임의 정정 능력은 예컨대, 13개의 오류들일 수 있다. 따라서 데이터 프레임들(205) 중에서 어느 하의 BCH 리던던시 레이트는 7.85%일 수 있다. 또한, 페이지(200)는 예컨대, 36개의 총 데이터 프레임들(205)과 패리티 프레임(207)으로 사용하기 위한 0.5개의 프레임들(얘컨대, 패리티 프레임(207)은 데이터 프레임들(205) 중에서 어느 하나의 크기의 절반)을 포함할 수 있다.
따라서, 메모리 페이지(200)의 패리티 리던던시 레이트는 예컨대, 1.39%일 수 있다. 또한, 예상된 BCH 리던던시는 4KB RAU x 2 당 465 bits 일수 있다. 또한, 예상된 BCH 리던던시의 리던던시 레이트는 예컨대, 1.72%이고, 메모리 페이지(200)의 총 리던던시 레이트는 예컨대, 10.9%일 수 있다.
도 8의 인코딩 방법과 도 9의 디코딩 방법을 수행하기 위하여 BCH 코드들은 메모리 시스템(900)의 디코더(1200)와 인코더(1100)에 의해 사용된다. HW 복잡도(예컨대, 메모리 컨트롤러(1000)의 HW 복잡도)은 인코딩과 디코딩 하기 위한 LDPC 코드들을 사용하는 메모리 컨트롤러의 HW 복잡도에 비해 매우 작을 수 있다. 왜냐하면, 기본 BCH 코드 워드 길이(예컨대, 2000 이하)와 정정 능력(t, 예컨대, 13개의 오류들)은 종래의 BCH 코드들에 비해 상대적으로 작기 때문이다.
또한, 도 3의 인코딩 방법과 도 4의 디코딩 방법을 수행하는 메모리 시스템(900)은 매우 작은 경판정 확률 때문에 1K LDPC 코드 성능을 초과하는 BER 범위를 달성하고, 우수한 처리량(throughput) 성능을 달성할 수 있다.
도 11은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 컴퓨터 시스템을 나타내는 블록도이다. 모바일 장치, 데스트탑(desktop) 컴퓨터, 및 서버와 같은 컴퓨터 시스템(3000)은 실시 예들에 따라 메모리 시스템(3400)을 사용할 수 있다.
컴퓨터 시스템(3000)은 CPU(central processin unit, 3100), RAM(3200), 사용자 인터페이스(user interface, 3300), 및 메모리 시스템(3400)을 포함할 수 있고, 버스들(3500)과 전기적으로 접속될 수 있다. 호스트는 컴퓨터 시스템(3000)에 전술한 바와 같이 CPU(3100), RAM(3200), 및 사용자 인터페이스(3300)를 포함할 수 있다.
CPU(3100)는 컴퓨터 시스템(3000)을 전반적으로 제어할 수 있고, 사용자 인터페이스(3300)를 통해 입력된 사용자 명령들에 대응하는 계산들을 수행할 수 있다. RAM(3200)은 CPU(3100)에 대한 데이터 메모리로서 기능할 수 있고, CPU(3100)는 메모리 시스템(3400)에 데이터를 라이트하거나 메모리 시스템(3400)으로부터 데이터를 리드할 수 있다.
전술한 실시 예들에 따라, 메모리 시스템(3400)은 메모리 컨트롤러(3410)와 메모리 장치(3420)를 포함할 수 있다. 메모리 컨트롤러(3410)는 인코더, 디코더, 및 스턱(stuck) 셀 정보 저장 유닛을 포함하고, 메모리 장치(3420)는 복수의 메모리 셀들을 포함하는 셀 어레이를 포함하고, 상기 셀 어레이는 스턱 셀들을 포함할 수 있다.
인코더는 스턱 셀 정보 저장 유닛으로부터 스턱 셀들에 대한 정보를 수신하고, 셀 어레이에 저장될 데이터를 인코딩하고, 코드워드를 생성하고, 상기 코드 워드에 대응하는 헤더를 생성할 수 있다. 인코더에 의해 생성된 코드 워드셀 어레이에 포함된 스턱 셀들의 값들을 포함할 수 있다. 디코더는 헤더로부터 인코딩 정보를 추출하고, 인코딩 정보에 기초하여 셀 어레이에 저장된 데이터를 디코딩할 수 있다.
실시 예들에 따라, 메모리 컨트롤러(3410)와 메모리 장치(3420) 각각은 도 1 내지 도 10을 참조하여 전술한 메모리 컨트롤러(1000)와 메모리 장치(2000) 각각에 의해 구현될 수 있다.
도 12는 본 발명의 실시 예들에 따른 메모리 카드를 나타내는 블록도이다. 도 1 내지 도 10을 참조하여 전술한 본 발명의 실시 예들에 따른 메모리 시스템(900)은 메모리 카드(4000)일 수 있다.
예컨대, 메모리 카드(4000)는 eMMC(embedded multimedia card), 또는 SD (secure digital) 카드를 포함할 수 있다. 도 12에 도시된 바와 같이, 메모리 카드(4000)는 메모리 컨트롤러(4100), 불휘발성 메모리(4200), 및 포트 영역(4300)을 포함할 수 있다. 도 1 내지 도 10을 참조하여 전술한 본 발명의 실시 예들에 따른 메모리 장치(2000)는 도 12에 도시된 불휘발성 메모리(4200)일 수 있다.
메모리 컨트롤러(4100)는 인코더, 디코더, 및 본 발명의 실시 예들에 따라 전술한 바와 같이 스턱 셀 정보 저장 유닛을 포함할 수 있다. 인코더와 디코더는 본 발명의 실시 예들에 따른 인코딩 방법과 디코딩 방법을 수행할 수 있고, 스턱 셀 정보 저장 유닛은 불휘발성 메모리(4200)에 포함된 스턱 셀들에 대한 정보를 저장할 수 있다.
메모리 컨트롤러(4100)는 미리 설정된 프로토콜을 준수하는 포트 영역(4300)을 통해 외부 호스트와 통신할 수 있다. 상기 프로토콜은 eMMC 프로토콜, SD 프로토콜, SATA(serial advanced technology attachment) 프로토콜, SAS(serial attached small) 프로토콜, 또는 USB(universal serial bus) 프로토콜일 수 있다. 불휘발성 메모리(4200)는 전원 공급이 차단되더라도 저장된 데이터를 유지하는 메모리 셀들을 포함할 수 있다. 예컨대, 불휘발성 메모리(4200)는 플래시 메모리, MRAM, RRAM, FRAM, 또는 PCM(phase change memory)를 포함할 수 있다.
실시 예들에 따라, 메모리 컨트롤러(4100)와 메모리 장치(4200) 각각은 도 1 내지 도 10을 참조하여 전술한 메모리 컨트롤러(1000)와 메모리 장치(2000) 각각으로 구현될 수 있다.
도 13은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 네트워크 시스템(5000)을 나타내는 블록도이다. 도 13에 도시된 바와 같이, 네트워크 시스템(5000)은 서버 시스템(5100)과 네트워크(5000)를 통해서 접속된 복수의 터미널들(5300, 5400, 및 5500)을 포함할 수 있다.
서버 시스템(5100)은 네트워크(5200)에 접속된 복수의 터미널들(5300, 5400, 및 5500)으로부터 수신된 요청들을 처리하기 위한 서버(5110)와 터미널들(5300, 5400, 및 5500)로부터 수신된 요청들에 대응하는 데이터를 저장하기 위한 SSD(5120)를 포함할 수 있다. 여기서 SSD(5120)는 본 발명의 실시 예들에 따른 메모리 시스템일 수 있다.
본 발명의 실시 예들에 따라, SSD(5120)는 도 1 내지 도 10을 참조하여 전술한 메모리 시스템(900)에 의해 구현될 수 있다.
한편, 본 발명의 실시 예들에 따른 메모리 시스템은 다양한 패키지들 중 어느 하나를 통해서 마운트될 수 있다. 예컨대, 본 발명의 실시 예들에 따른 메모리 시스템은 POP(package on package), BGA(ball grid array), CSP(chip scale package), PLCC(plastic lead type chip carrier), PDIP(plastic dual inline package), COB(chip on board), CERDIP(ceramic dual-in-line package), MQFP(plastic metric quad flat pack), TQFP(thin quad flatpack), SOIC(small outline), SSOP(shrink miniature out package), TSOP(thin small outline package), SIP(system in package), MCP(multi-chip package), WFP(wafer level fabricated package), WSP(wafer level processing stacked package) 등을 포함하는 패키지들 중에서 어느 하나를 통해 마운트될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
900: 메모리 시스템
1000: 메모리 컨트롤러
2000: 불휘발성 메모리 장치
2100: 메모리 셀 어레이
121: X-디코더
123: 페이지 버퍼
124: 입출력 버퍼
125: 전압 생성기
126: 제어 로직
127: 입출력 패드

Claims (10)

  1. 메모리 컨트롤러; 및
    메모리 장치를 포함하고,
    상기 메모리 장치는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 복수의 저장된 비트들을 저장하는 복수의 메모리 셀들을 포함하는 가장 작은 제1메모리 페이지를 포함하고,
    상기 메모리 컨트롤러는 상기 복수의 저장된 비트들에 대응하는 복수의 리드 비트들을 생성하기 위해 상기 제1메모리 페이지에 대해 제1하드 리드 작동을 수행하여 작동 값을 생성하고, 상기 작동 값에 기초하여 상기 복수의 리드 비트들 중에서 제1그룹의 비트들 중에서 어느 하나의 값을 변경할지 여부를 결정하고,
    상기 메모리 컨트롤러가 상기 제1그룹의 비트들 중에서 어느 하나의 값을 변경하기로 판단한 경우, 상기 메모리 컨트롤러는 각각이 상기 제1그룹의 비트들 각각에 대응하는 LLR(Log Likelihood Ratio) 값들에 기초하여 상기 제1그룹의 비트들 중에서 하나를 선택하고, 선택된 비트 값을 변경하는 메모리 시스템.
  2. 제1항에 있어서, 상기 메모리 컨트롤러는,
    상기 제1하드 리드 작동에 의해 생성된 상기 복수의 리드 비트들 중에서 오류들을 정정하기 위해 제1BCH(bose-chaudhuri-hocquenghim) ECC(error correcting code) 디코딩 작동을 수행하고
    상기 메모리 컨트롤러가 상기 제1그룹의 비트들 중에서 어느 하나를 변경하기로 판단한 경우, 상기 메모리 컨트롤러는 상기 복수의 리드 비트들 중에서 부가적인 오류들을 정정하기 위해, 값들이 변경된 선택된 비트들을 포함하는 상기 복수의 리드 비트들에 대해 제2BCH ECC 디코딩 작동을 수행하는 메모리 시스템.
  3. 제1항에 있어서, 상기 제1메모리 페이지는,
    상기 복수의 저장된 비트들이 복수의 행들과 복수의 열들로 배열되고, 상기 복수의 행들은 복수의 데이터 프레임들과 적어도 하나의 패리티 프레임을 포함하고,
    상기 적어도 하나의 패리티 프레임은 각각이 복수의 컬럼 그룹들에 대응하는 복수의 패리티 값들을 포함하고, 상기 복수의 컬럼 그룹들 각각은 상기 제1메모리 페이지의 상기 복수의 컬럼들 중에서 적어도 하나를 포함하고,
    상기 복수의 패리티 값들 각각은 상기 저장된 비트들 중에서 상기 비트들 각각에 대해 수행된 XOR 연산의 결과이고, 상기 비트들은 상기 데이터 프레임들 중에서 어느 하나에 포함되고 상기 패리티 값에 상응하는 상기 컬럼 그룹에 포함되는 메모리 시스템.
  4. 제3항에 있어서, 상기 메모리 컨트롤러는,
    상기 제1 BCH ECC 디코딩 작동과 제2 BCH ECC 디코딩 작동 중에서 적어도 하나의 결과에 기초하여 상기 복수의 데이터 프레임들 각각을 하나 또는 그 이상의 오류 프레임들 또는 하나 또는 그 이상의 정정 프레임들로서 지정하는 메모리 시스템.
  5. 메모리 컨트롤러; 및
    메모리 장치를 포함하고,
    상기 메모리 장치는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 복수의 메모리 셀들을 포함하는 가장 작은 제1메모리 페이지를 포함하고,
    상기 메모리 컨트롤러는,
    외부 장치로부터 복수의 비트들을 수신하고,
    수신된 복수의 비트들에 대해 ECC(error correcting code) 인코딩을 수행하여 복수의 제1데이터 코드 워드들을 생성하고, 상기 복수의 제1데이터 코드 워드들 각각은 제1데이터 비트들과 제1리던던시 비트들을 포함하고, 상기 제1리던던시 비트들은 상기 제1데이터 비트들과 관련된 초기 오류 정정 능력을 제공하고,
    상기 복수의 제1데이터 코드 워드들 각각을 복수의 데이터 프레임들로서 상기 제1메모리 페이지에 저장하고,
    델타 신드롬 데이터를 생성하고, 생성된 델타 신드롬 데이터는 상기 복수의 제1데이터 코드 워드들 각각에 대응하는 적어도 복수의 제1스테이지 델타 신드롬들을 포함하고,
    상기 복수의 제1데이터 코드 워드들 중에서 각 제1데이터 코드 워드에 대해, 상기 제1데이터 코드 워드에 대응하는 상기 제1스테이지 델타 신드롬은 제1스테이지 오류 정정 능력을 제공하고, 상기 제1스테이지 오류 정정 능력은 상기 제1데이터 코드 워드의 상기 제1리던던시 비트들에 의해 제공된 상기 초기 오류 정정 능력에 관련된 부가적인 오류 정정 능력인 메모리 시스템.
  6. 제5항에 있어서, 상기 메모리 컨트롤러는,
    BCH(bose-chaudhuri-hocquenghim) ECC(error correcting code) 인코딩을 수행하여 상기 복수의 제1데이터 코드 워드들을 생성함으로써 상기 복수의 제1데이터 코드 워드들은 BCH 코드 워드들인 메모리 시스템.
  7. 제5항에 있어서, 상기 메모리 컨트롤러는
    상기 메모리 컨트롤러에 의해 생성된 델타 신드롬 데이터는 상기 복수의 제1데이터 코드 워드들 각각에 대한 N(N은 양의 정수) 스테이지들 델타 신드롬들을 포함하고,
    상기 N 스테이지들 델타 신드롬들 중에서 서로 다른 스테이지들의 델타 신드롬들은, 상기 델타 신드롬들의 상기 N 스테이지들 중 서로 다른 스테이지들의 델타 신드롬들에 대응하는 상기 제1데이터 코드 워드들의 상기 제1리던던시 비트들에 의해 제공된 상기 초기 오류 정정 능력과 관련된 서로 다른 부가적인 오류 정정 능력들을 포함하고,
    상기 N 스테이지들의 델타 신드롬들 중 동일한 스테이지의 델타 신드롬들은, 상기 델타 신드롬들의 상기 N 스테이지들 중에서 동일한 스테이지의 델타 신드롬들에 대응하는 상기 제1데이터 코드 워드들의 상기 제1리던던시 비트들에 의해 제공된 상기 초기 오류 정정 능력과 관련된 동일한 부가적인 오류 정정 능력들을 포함하는 메모리 시스템.
  8. 메모리 컨트롤러; 및
    메모리 장치를 포함하고,
    상기 메모리 장치는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 복수의 저장된 비트들을 저장하는 복수의 메모리 셀들을 포함하는 가장 작은 제1메모리 페이지를 포함하고,
    상기 메모리 컨트롤러는,
    상기 복수의 저장된 비트들에 대응하는 복수의 제1데이터 코드 워드들을 생성하기 위하여 상기 제1메모리 페이지에 대해 제1하드 리드 작동을 수행하고, 상기 복수의 제1데이터 코드 워드들 각각은 제1데이터 비트들과 제1리던던시 비트들을 포함하고, 상기 제1리던던시 비트들은 초기 오류 정정 능력을 제공하고,
    상기 제1데이터 코드 워드들의 상기 제1리던던시 비트들의 상기 초기 오류 정정 능력들을 이용하여 상기 제1데이터 코드 워드들의 오류들을 정정하기 위하여 제1ECC(error correcting code) 디코딩 작동을 수행하고,
    하나 또는 그 이상의 오류 코드 워드들의 초기 정정 능력들을 보강할 것인지 여부를 판단하고,
    상기 복수의 제1데이터 코드 워드들 중에서 제1데이터 코드 워드인 상기 하나 또는 그 이상의 오류 코드 워드들 각각은 상기 제1데이터 코드 워드의 상기 제1리던던시 비트들의 초기 정정 능력을 초과하는 비트들 오류들의 개수를 포함하고,
    상기 메모리 컨트롤러가 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하기로 판단한 경우,
    상기 메모리 컨트롤러는 각각이 상기 하나 또는 그 이상의 오류 코드 워드들에 대응하는 하나 또는 그 이상의 제1델타 신드롬들을 생성하고, 상기 하나 또는 그 이상의 제1델타 신드롬들 각각은 제1부가적인 오류 정정 능력을 가지고,
    상기 메모리 컨트롤러는 제2ECC 디코딩 작동을 수행하여 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하고, 상기 하나 또는 그 이상의 제1델타 신드롬들의 상기 제1 부가적인 오류 정정 능력들에 의해 보강된 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 제1리던던시 비트들의 상기 초기 오류 정정 능력들을 이용하여 상기 하나 또는 그 이상의 오류 코드 워드들의 오류들을 정정하는 메모리 시스템.
  9. 제8항에 있어서, 상기 메모리 컨트롤러는,
    상기 메모리 장치에 저장된 오버헤드 보호 데이터에 기초하여 적어도 하나의 제2코드 워드의 제2리던던시 비트들을 획득하고, 상기 적어도 하나의 제2코드 워드는 복수의 제1델타 신드롬들에 대해 RS(Reed-Solomon) 인코딩을 수행하여 생성된 코드 워드이고,
    상기 제1ECC 디코딩 작동에 기초하여 상기 하나 또는 그 이상의 오류 코드 워드들의 총 개수를 판단하고,
    상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강할지 여부를 판단하고,
    상기 복수의 제1델타 신드롬들 중에서 상기 제2리던던시 비트들을 이용하여 상기 메모리 컨트롤러에 의해 복원될 수 있는 상기 델타 신드롬들의 최대 개수가 상기 하나 또는 그 이상의 오류 코드 워드들의 총 개수보다 작지 않을 때, 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하기로 판단하고,
    복수의 제1델타 신드롬들 중에서 상기 제2리던던시 비트들을 이용하여 상기 메모리 컨트롤러에 의해 복원될 수 있는 상기 델타 신드롬들의 최대 개수가 상기 하나 또는 그 이상의 오류 코드 워드들의 총 개수보다 작을 때, 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하지 않기로 판단하는 메모리 시스템.
  10. 제9항에 있어서, 상기 메모리 컨트롤러가 상기 하나 또는 그 이상의 오류 코드 워드들의 상기 초기 정정 능력들을 보강하기로 판단한 경우, 상기 메모리 컨트롤러는,
    올바른 제1코드 워드들의 상기 데이터 비트들에 기초하여 제1델타 신드롬들을 계산하고, 상기 올바른 제1코드 워드들 각각은 상기 복수의 제1코드 워드들 중에서 상기 하나 또는 그 이상의 오류 코드 워드들 중 어느 하나가 아닌 제1코드 워드이고,
    상기 하나 또는 그 이상의 오류 프레임들의 상기 하나 또는 그 이상의 제1델타 신드롬들을 복원하기 위해, RS 디코딩 작동을 수행하여 상기 하나 또는 그 이상의 오류 프레임들의 상기 하나 또는 그 이상의 제1델타 신드롬들을 획득하고, 상기 RS 디코딩 작동은 계산된 제1델타 신드롬들과 상기 제2리던던시 비트들을 이용하여 수행되는 메모리 시스템.

KR1020160061010A 2015-11-13 2016-05-18 데이터의 인코딩과 디코딩을 위한 메모리 시스템 KR102663812B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/941,051 US9792176B2 (en) 2015-11-13 2015-11-13 Method and apparatus for encoding and decoding data in memory system
US14/941,051 2015-11-13

Publications (2)

Publication Number Publication Date
KR20170056407A true KR20170056407A (ko) 2017-05-23
KR102663812B1 KR102663812B1 (ko) 2024-05-07

Family

ID=58691136

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160061010A KR102663812B1 (ko) 2015-11-13 2016-05-18 데이터의 인코딩과 디코딩을 위한 메모리 시스템

Country Status (2)

Country Link
US (1) US9792176B2 (ko)
KR (1) KR102663812B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469103B1 (en) 2017-04-19 2019-11-05 Seagate Technology Llc Adaptive read retry optimization
KR102648618B1 (ko) * 2018-03-28 2024-03-19 에스케이하이닉스 주식회사 컨트롤러, 그것의 동작방법 및 컨트롤러를 포함하는 메모리 시스템
KR20190140788A (ko) * 2018-06-12 2019-12-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US10747614B2 (en) * 2018-07-23 2020-08-18 Micron Technology, Inc. Hybrid iterative error correcting and redundancy decoding operations for memory sub-systems
US10886947B2 (en) * 2018-12-20 2021-01-05 Toshiba Memory Corporation Efficient decoding of n-dimensional error correction codes
US11115055B2 (en) * 2019-01-10 2021-09-07 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding data in memory system
US11742879B2 (en) 2019-03-13 2023-08-29 Samsung Electronics Co., Ltd. Machine-learning error-correcting code controller
US11184026B2 (en) * 2019-03-13 2021-11-23 Samsung Electronics Co., Ltd. Super-HPC error correction code
US11172455B2 (en) 2019-07-16 2021-11-09 Microsoft Technology Licensing, Llc Peak to average power output reduction of RF systems utilizing error correction
US11063696B2 (en) 2019-07-16 2021-07-13 Microsoft Technology Licensing, Llc Increasing average power levels to reduce peak-to-average power levels using error correction codes
US11031961B2 (en) 2019-07-16 2021-06-08 Microsoft Technology Licensing, Llc Smart symbol changes for optimization of communications using error correction
US11044044B2 (en) 2019-07-16 2021-06-22 Microsoft Technology Licensing, Llc Peak to average power ratio reduction of optical systems utilizing error correction
US11086719B2 (en) 2019-07-16 2021-08-10 Microsoft Technology Licensing, Llc Use of error correction codes to prevent errors in neighboring storage
US10911284B1 (en) 2019-07-16 2021-02-02 Microsoft Technology Licensing, Llc Intelligent optimization of communication systems utilizing error correction
US11075656B2 (en) 2019-07-16 2021-07-27 Microsoft Technology Licensing, Llc Bit error reduction of communication systems using error correction
US10911141B1 (en) 2019-07-30 2021-02-02 Microsoft Technology Licensing, Llc Dynamically selecting a channel model for optical communications
JP2021111826A (ja) * 2020-01-07 2021-08-02 キオクシア株式会社 復号装置及び復号方法
JP2021150733A (ja) * 2020-03-17 2021-09-27 キオクシア株式会社 半導体装置及び半導体記憶装置
TWI779610B (zh) * 2021-05-17 2022-10-01 瑞昱半導體股份有限公司 偵測快閃記憶體模組的方法及相關的系統晶片
JP2023040796A (ja) * 2021-09-10 2023-03-23 キオクシア株式会社 メモリシステム
US11824556B1 (en) * 2022-07-25 2023-11-21 Samsung Electronics Co., Ltd. Error correction using soft decision bits and multiple hypotheses
CN116431381B (zh) * 2023-04-06 2024-01-05 深圳三地一芯电子股份有限公司 平衡闪存ecc纠错能力方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060179400A1 (en) * 2005-02-08 2006-08-10 Lsi Logic Corporation Delta syndrome based iterative Reed-Solomon product code decoder
US20080282106A1 (en) * 2007-05-12 2008-11-13 Anobit Technologies Ltd Data storage with incremental redundancy
KR20120035064A (ko) * 2010-10-04 2012-04-13 삼성전자주식회사 리드 성능을 향상시킬 수 있는 리드 파라미터 변경 방법과 상기 방법을 수행할 수 있는 장치들
KR20150075170A (ko) * 2013-12-24 2015-07-03 삼성전자주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447970B2 (en) * 2004-06-16 2008-11-04 Seagate Technology, Inc. Soft-decision decoding using selective bit flipping
US7444579B2 (en) 2005-04-28 2008-10-28 Micron Technology, Inc. Non-systematic coded error correction
US8046660B2 (en) 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7966550B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
US8359518B2 (en) 2009-10-27 2013-01-22 Altera Canada Co. 2D product code and method for detecting false decoding errors
WO2011092641A1 (en) * 2010-01-28 2011-08-04 International Business Machines Corporation Method, device and computer program product for decoding a codeword
US8433985B2 (en) 2010-03-29 2013-04-30 Intel Corporation Error correction mechanisms for flash memories
US8812939B2 (en) 2011-01-28 2014-08-19 Marvell World Trade Ltd. Soft decoding systems and methods for flash based memory systems
KR101206176B1 (ko) 2011-03-07 2012-11-28 인하대학교 산학협력단 고성능 연접 bch 기반 순방향 오류 정정 시스템 및 방법
US8880977B2 (en) * 2011-07-22 2014-11-04 Sandisk Technologies Inc. Systems and methods of storing data
US9166626B2 (en) 2011-11-18 2015-10-20 Korea Advanced Institute Of Science And Technology Encoding, decoding, and multi-stage decoding circuits for concatenated BCH, and error correction circuit of flash memory device using the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060179400A1 (en) * 2005-02-08 2006-08-10 Lsi Logic Corporation Delta syndrome based iterative Reed-Solomon product code decoder
US20080282106A1 (en) * 2007-05-12 2008-11-13 Anobit Technologies Ltd Data storage with incremental redundancy
KR20120035064A (ko) * 2010-10-04 2012-04-13 삼성전자주식회사 리드 성능을 향상시킬 수 있는 리드 파라미터 변경 방법과 상기 방법을 수행할 수 있는 장치들
KR20150075170A (ko) * 2013-12-24 2015-07-03 삼성전자주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러

Also Published As

Publication number Publication date
US9792176B2 (en) 2017-10-17
US20170139769A1 (en) 2017-05-18
KR102663812B1 (ko) 2024-05-07

Similar Documents

Publication Publication Date Title
KR102663812B1 (ko) 데이터의 인코딩과 디코딩을 위한 메모리 시스템
USRE49253E1 (en) Semiconductor memory device
US9673840B2 (en) Turbo product codes for NAND flash
CN113032178B (zh) 存储器控制器及快闪存储器的存取方法
US9141467B2 (en) Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof
KR101991911B1 (ko) 비트 상태 맵핑 동작을 수행하는 코드 변조 인코더와 코드 변조 디코더를 포함하는 메모리 컨트롤러, 그것을 포함하는 데이터 저장 장치 및 플래시 메모리 시스템
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
JP2015507409A (ja) 代数符号を用いるマルチフェーズecc符号化
US10848184B2 (en) Method for controlling storage device with aid of error correction and associated apparatus
US20190089384A1 (en) Memory system
US10795761B2 (en) Memory system and method of controlling non-volatile memory
CN111696615A (zh) 存储器系统和操作存储器系统的方法
KR102314481B1 (ko) Siso 복호 방법, 디코더 및 반도체 메모리 시스템
US20150149856A1 (en) Decoding with log likelihood ratios stored in a controller
US11150813B2 (en) Memory system
KR101496052B1 (ko) 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로
KR102226174B1 (ko) 반복 복호기, 반복 복호 방법 및 반도체 메모리 시스템
CN107590018B (zh) 译码方法、存储器控制电路单元及存储器存储装置
US10177793B2 (en) Error correction code (ECC) operations in memory
US11689216B1 (en) Low gate-count generalized concatenated code (GCC) by online calculation of syndromes instead of buffer
US11876535B1 (en) Memory controller and method for controlling data in decoding pipeline
US11115055B2 (en) Method and apparatus for encoding and decoding data in memory system
US10114569B2 (en) Computing system with shift expandable coding mechanism and method of operation thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant