KR101678919B1 - 메모리 시스템 및 에러 정정 방법 - Google Patents

메모리 시스템 및 에러 정정 방법 Download PDF

Info

Publication number
KR101678919B1
KR101678919B1 KR1020110041679A KR20110041679A KR101678919B1 KR 101678919 B1 KR101678919 B1 KR 101678919B1 KR 1020110041679 A KR1020110041679 A KR 1020110041679A KR 20110041679 A KR20110041679 A KR 20110041679A KR 101678919 B1 KR101678919 B1 KR 101678919B1
Authority
KR
South Korea
Prior art keywords
error
metadata
seed
data
user data
Prior art date
Application number
KR1020110041679A
Other languages
English (en)
Other versions
KR20120123985A (ko
Inventor
김동
안석원
최명석
공재필
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110041679A priority Critical patent/KR101678919B1/ko
Priority to US13/456,567 priority patent/US8694873B2/en
Publication of KR20120123985A publication Critical patent/KR20120123985A/ko
Priority to US14/242,264 priority patent/US9063857B2/en
Priority to US14/718,476 priority patent/US9197247B2/en
Application granted granted Critical
Publication of KR101678919B1 publication Critical patent/KR101678919B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/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/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/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3776Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using a re-encoding step during the decoding process
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of 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/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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1525Determination and particular use of error location polynomials
    • 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/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

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

Abstract

여기서는 에러 정정 방법을 개시한다. 에러 정정 방법은, 사용자 데이터를 랜덤화시키는데 이용된 씨드 값을 갖는 메타 데이터의 에러를 검출하는 단계; 상기 메타 데이터의 에러가 존재할 때, 상기 메타 데이터의 에러를 정정하는 단계; 상기 씨드 값의 에러 존재 유무 혹은 에러 정정 결과에 관련된 씨드 확인 정보에 근거로 하여 상기 사용자 데이터를 입력받는 단계; 상기 사용자 데이터의 에러를 검출하는 단계; 및 상기 사용자 데이터의 에러가 존재할 때, 상기 사용자 데이터의 에러를 정정하는 단계를 포함한다. 본 발명의 실시 예에 따른 메모리 시스템 및 에러 정정 방법은, 씨드 값의 에러 여부 혹은 에러 정정 여부에 따라 사용자 데이터를 에러 정정함으로써, 보다 빠르게 에러 정정을 수행할 수 있다.

Description

메모리 시스템 및 에러 정정 방법{MEMORY SYSTEM AND ERROR CORRECTION METHOD}
본 발명은 메모리 시스템과 에러 정정 방법에 관한 것이다.
플래시 메모리 장치는 복수의 메모리 영역들이 한 번의 프로그램 동작으로 소거 또는 프로그램되는 일종의 EEPROM이다. 일반적인 EEPROM은 단지 하나의 메모리 영역이 한 번에 소거 또는 프로그램 가능하게 하며, 이는 플래시 메모리 장치를 사용하는 시스템들이 동시에 다른 메모리 영역들에 대해 읽고 쓸 때보다 빠르고 효과적인 속도로 플래시 메모리 장치가 동작할 수 있음을 의미한다. 플래시 메모리 및 EEPROM의 모든 형태는 데이터를 저장하는 데 사용되는 전하 저장 수단의 열화 또는 전하 저장 수단을 둘러싸고 있는 절연막의 마멸로 인해서 특정 수의 소거 동작들 후에 마멸된다.
플래시 메모리 장치는 실리콘 칩에 저장된 정보를 유지하는 데 전원을 필요로 하지 않는 방법으로 실리콘 칩 상에 정보를 저장한다. 이는 만약 칩에 공급되는 전원이 차단되면 전원의 소모 없이 정보가 유지됨을 의미한다. 추가로, 플래시 메모리 장치는 물리적인 충격 저항성 및 빠른 읽기 접근 시간을 제공한다. 이러한 특징들 때문에, 플래시 메모리 장치는 배터리에 의해서 전원을 공급받는 장치들의 저장 장치로서 일반적으로 사용되고 있다.
본 발명의 목적은 데이터의 신뢰성을 높이면서 에러 정정 시간을 단축하는 메모리 시스템 및 에러 정정 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 에러 정정 방법은, 사용자 데이터를 랜덤화시키는데 이용된 씨드 값을 갖는 메타 데이터의 에러를 검출하는 단계; 상기 메타 데이터의 에러가 존재할 때, 상기 메타 데이터의 에러를 정정하는 단계; 상기 씨드 값의 에러 존재 유무 혹은 에러 정정 결과에 관련된 씨드 확인 정보에 근거로 하여 상기 사용자 데이터를 입력받는 단계; 상기 사용자 데이터의 에러를 검출하는 단계; 및 상기 사용자 데이터의 에러가 존재할 때, 상기 사용자 데이터의 에러를 정정하는 단계를 포함한다.
실시 예에 있어서, 상기 씨드 값은 상기 메타 데이터의 전단에 위치한다.
실시 예에 있어서, 상기 메타 데이터의 에러를 정정하는 단계는, 상기 메타 데이터의 신드롬을 계산하는 단계; 상기 계산된 신드롬을 이용하여 에러 위치 다항식을 찾는 단계; 및 상기 에러 위치 다항식을 치엔 서치하는 단계를 포함한다.
실시 예에 있어서, 상기 신드롬을 계산하는 단계는, 상기 메타 데이터에 에러가 없을 때 상기 씨드 확인 정보를 발생하는 단계를 더 포함한다.
실시 예에 있어서, 상기 치엔 서치하는 단계는 역방향 치엔 서치를 이용한다.
실시 예에 있어서, 상기 치엔 서치하는 단계는 순방향 치엔 서치를 수행한다.
실시 예에 있어서, 상기 치엔 서치하는 단계는, 상기 씨드 값에 에러가 없을 때 상기 씨드 확인 정보를 발생하는 단계를 더 포함한다.
실시 예에 있어서, 상기 치엔 서치하는 단계는, 상기 씨드 값에 에러가 있을 때, 상기 씨드 값의 에러를 정정한 뒤에 상기 씨드 확인 정보를 발생하는 단계를 포함한다.
실시 예에 있어서, 상기 사용자 데이터의 에러를 정정하는 단계는, 상기 입력된 사용자 데이터의 신드롬을 계산하는 단계; 상기 계산된 신드롬을 이용하여 에러 위치 다항식을 찾는 단계; 및 상기 에러 위치 다항식을 치엔 서치하는 단계를 포함한다.
본 발명의 실시 예에 따른 메모리 시스템은, 씨드 값을 이용하여 사용자 데이터를 랜덤화시키거나, 상기 랜덤화된 사용자 데이터를 상기 씨드 값을 이용하여 디랜덤화시키는 랜덤화 회로; 상기 씨드 값을 갖는 메타 데이터 및 상기 랜덤화된 사용자 데이터를 에러 정정 코드를 이용하여 부호화시키거나, 상기 부호화된 메타 데이터 및 상기 부호화된 사용자 데이터를 상기 에러 정정 코드를 이용하여 복호화시키는 에러 정정 회로; 및 상기 부호화된 메타 데이터 및 상기 부호화된 사용자 데이터를 저장하는 적어도 하나의 비휘발성 메모리 장치를 포함하고, 상기 에러 정정 회로는, 상기 부호화된 메타 데이터를 상기 에러 정정 코드를 이용하여 복호화시키는 메타 데이터 복호기; 및 상기 메타 데이터 복호기의 복호 동작시 상기 씨드 값의 에러 존재 유무 혹은 에러 정정 결과와 관련된 씨드 확인 정보를 근거로 상기 부호화된 사용자 데이터를 상기 에러 정정 코드를 이용하여 복호화시키는 사용자 데이터 복호기를 포함한다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 더 포함한다.
실시 예에 있어서, 상기 메모리 제어기는 상기 랜덤화 회로 및 상기 에러 정정 회로를 포함한다.
실시 예에 있어서, 상기 메타 데이터 복호기는, 상기 부호화된 메타 데이터를 입력받아 신드롬을 계산하고, 상기 메타 데이터에 에러가 없을 때 씨드 확인 정보를 발생하는 제 1 신드롬 계산 유닛; 상기 1 신드롬 계산기로부터 계산된 신드롬을 이용하여 제 1 에러 위치 다항식을 찾는 제 1 에러 위치 다항식 탐색 유닛; 에러를 검출하기 위하여 상기 제 1 에러 위치 다항식을 치엔 서치하고, 상기 씨드 값에 에러가 존재하지 않을 때 상기 씨드 확인 정보를 발생하는 제 1 치엔 서치 유닛; 상기 부호화된 메타 데이터를 임시로 저장하는 제 1 버퍼 유닛; 및 에러 정정을 위하여 상기 제 1 버퍼 유닛의 출력과 상기 제 1 치엔 서치 유닛의 출력을 더하고, 상기 씨드 값의 에러가 존재할 때 상기 씨드 값의 에러를 정정한 뒤 상기 씨드 확인 정보를 발생하는 제 1 덧셈기를 포함한다.
실시 예에 있어서, 상기 메타 데이터 복호기는, 상기 씨드 확인 정보에 근거로 하여 상기 부호화된 사용자 데이터를 입력받고 상기 입력된 부호화된 사용자 데이터의 신드롬을 계산하는 제 2 신드롬 계산 유닛; 상기 제 2 신드롬 계산 유닛으로부터 계산된 신드롬을 이용하여 제 2 에러 위치 다항식을 찾는 제 2 에러 위치 다항식 탐색 유닛; 에러 위치를 판별하기 위하여 상기 제 2 에러 위치 다항식을 치엔 서치하는 제 2 치엔 서치 유닛; 상기 씨드 확인 정보에 근거로 하여 상기 부호화된 사용자 데이터를 입력받고 상기 입력된 부호화된 사용자 데이터를 임시로 저장하는 제 2 버퍼 유닛; 및 에러 정정을 위하여 상기 제 2 버퍼 유닛의 출력과 상기 제 2 치엔 서치 유닛의 출력을 더하는 제 2 덧셈기를 포함한다.
실시 예에 있어서, 상기 메모리 제어기는, 상기 메모리 제어기의 전반적인 동작을 제어하는 적어도 하나의 프로세싱 유닛; 상기 메모리 제어기의 동작 중 발생된 데이터를 임시로 저장하는 버퍼 메모리; 외부의 호스트와 상기 메모리 시스템 사이에서 데이터를 교환하기 위한 호스트 인터페이스; 및 상기 적어도 하나의 비휘발성 메모리 장치와 상기 메모리 제어기 사이에서 데이터를 교환하기 위한 비휘발성 메모리 인터페이스를 포함한다.
실시 예에 있어서, 상기 비휘발성 메모리 인터페이스와 상기 적어도 하나의 비휘발성 메모리 장치는 클록에 동기하여 데이터를 통신한다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 장치는 전원전압보다 높게 설정된 고전압을 옵션적으로 제공받는다.
실시 예에 있어서, 상기 사용자 데이터 에러 정정 복호기의 처리 비트 수는 상기 메타 데이터 에러 정정 복호기의 처리 비트 수보다 크다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 장치는 옵션적으로 고전압을 인가받는다.
실시 예에 있어서, 상기 씨드 값은 적어도 하나의 섹터의 데이터를 랜덤화시키거나 혹은 디랜덤화시킨다.
상술한 바와 같이 본 발명의 실시 예에 따른 메모리 시스템 및 에러 정정 방법은, 씨드 값의 에러 여부 혹은 에러 정정 여부에 따라 사용자 데이터를 에러 정정함으로써, 보다 빠르게 에러 정정을 수행할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템에 대한 제 1 실시 예를 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 블록의 제 1 실시 예를 보여주는 도면이다.
도 3은 도 1에 도시된 메모리 블록의 제 2 실시 예를 보여주는 도면이다.
도 4는 도 1에 도시된 부호화된 데이터(ERD)의 구성을 예시적으로 보여주는 도면이다.
도 5는 도 1에 도시된 메타 데이터 부호기를 예시적으로 보여주는 블록도이다.
도 6은 도 1에 도시된 사용자 데이터 부호기를 예시적으로 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 에러 정정 코드 복호기의 데이터 입력 방법에 대한 실시 예를 보여주는 흐름도이다.
도 8은 본 발명의 실시 예에 따른 에러 정정 코드 복호화기에서 메타 데이터에 에러가 존재하지 않을 때 순방향 치엔 서치 동작을 수행하는 에러 정정 방법을 예시적으로 보여주는 다이어그램이다.
도 9는 본 발명의 실시 예에 따른 에러 정정 코드 복호화기에서 메타 데이터에 에러가 존재할 때 순방향 치엔 서치 동작을 수행하는 에러 정정 방법을 예시적으로 보여주는 다이어그램이다.
도 10은 본 발명의 실시 예에 따른 에러 정정 코드 복호화기에서 메타 데이터에 에러가 존재할 때 역방향 치엔 서치 동작을 수행하는 에러 정정 방법을 예시적으로 보여주는 다이어그램이다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템의 제 2 실시 예를 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템의 제 3 실시 예를 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 비휘발성 메모리 장치를 예시적으로 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따른 에러 정정 방법을 예시적으로 보여주는 흐름도이다.
도 15는 본 발명의 실시 예에 따른 메모리 카드에 대한 블록도이다.
도 16은 본 발명의 실시 예에 따른 모비낸드에 대한 블록도이다.
도 17은 본 발명의 실시 예에 따른 SSD에 대한 블록도이다.
도 18은 도 17에 도시된 SSD를 갖는 컴퓨팅 시스템에 대한 블록도이다.
도 19은 도 17에 도시된 SSD를 갖는 전자기기에 대한 블록도이다.
도 20는 도 17에 도시된 SSD를 이용하는 서버 시스템에 대한 블록도이다.
도 21은 본 발명의 실시 예에 따른 PPN 장치를 예시적으로 보여주는 도면이다.
도 22은 본 발명의 실시 예에 따른 휴대용 전자 장치를 예시적으로 보여주는 도면이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템에 대한 제 1 실시 예를 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(10)은 적어도 하나의 비휘발성 메모리 장치(110) 및 그것을 제어하는 메모리 제어기(120)를 포함한다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치(110)는 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetroresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다. 또한, 본 발명의 비휘발성 메모리 장치는 3차원 어레이 구조(Three-Dimentional Array Structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(Charge Trap Flash, "CTF"라 불림)에도 모두 적용 가능하다. 아래에서는 설명의 편의를 위하여, 본 발명의 비휘발성 메모리 장치(110)가 낸드 플래시 메모리 장치라고 가정하겠다.
비휘발성 메모리 장치(110)는 에러 정정 코드(Error Correction Code; ECC)를 갖는 부호화된 데이터(ERD)를 입출력한다. 실시 예에 있어서 에러 정정 코드는 해밍(Hamming) 코드, BCH(Bose Chaudhuri Hocquenghem) 코드, RS(Reed-Solomon) 코드, CRC 등 중 적어도 하나를 이용할 수 있다. 비휘발성 메모리 장치(110)는 적어도 하나의 메모리 블록(111)을 포함한다. 메모리 블록(111)은 복수의 페이지들(도시되지 않음)을 포함한다. 비휘발성 메모리 장치(110)는 페이지 단위로 읽기 혹은 쓰기 동작을 수행할 수 있다.
도 1에서는 설명의 편의를 위하여 하나의 페이지(112)를 도시한다. 페이지(112)는 메타 영역(113) 및 사용자 영역(114)을 포함한다.
메타 영역(113)은 부호화된 메타 데이터(ERD(Meta))를 포함한다. 여기서 부호화된 메타 데이터(ERD(Meta))는 페이지(112)를 관리하기 위한 메타 데이터 및 메타 데이터의 패리티(parity)를 포함한다. 여기서 메타 데이터의 패리티는 에러 정정 코드(Error Correction Code)에 의해 발생된 것이다. 특히, 부호화된 메타 데이터(ERD(Meta))는 페이지(112)를 랜덤화시키는데 사용된 씨드 값(Seed)을 포함한다.
사용자 영역(114)은 부호화된 사용자 데이터(ERD(User))를 포함한다. 여기서 부호화된 사용자 데이터(ERD(User))는 사용자 데이터 및 사용자 데이터의 패리티( 패리티)를 포함한다. 여기서 사용자 데이터는 씨드 값(114)에 의하여 랜덤화된 데이터이다. 여기서 사용자 데이터의 패리티는 에러 정정 코드에 의해 발생된 것이다.
도 1에서 도시된 하나의 페이지(112)는 메타 영역(113)과 사용자 영역(114)로 구분된다. 하지만 본 발명의 페이지가 반드시 메타 영역과 사용자 영역으로 구분될 필요가 없다는 것은 당업자에게 알려질 것이다. 본 발명의 페이지는 메인 영역과 스페어 영역으로 구분시킬 수도 있다. 여기서 메인 영역에는 사용자 데이터가 포함되고, 스페어 영역에는 사용자 데이터의 패리티, 메타 데이터, 메타 데이터의 패리티 등을 포함할 수 있다. 페이지의 구성에 대한 좀더 자세한 것은 삼성 전자에서 출원하였으며 참고 문헌으로 결합된 미국 공개 특허 US 2009-0180323에서 설명될 것이다.
도 1에서는 설명의 편의를 위하여 하나의 부호화된 데이터(ERD)와 하나의 페이지(112)에 대응시켰다. 하지만 하나의 부호화된 데이터(ERD)가 하나의 페이지(112)에 대응하지 않을 수 있다는 것은 당업자에게 알려질 것이다. 본 발명의 페이지(112)는 복수의 부호화된 데이터(ERD)를 저장할 수도 있다. 실시 예에 있어서, 부호화된 데이터는 적어도 하나의 섹터 단위일 수 있다.
한편, 비휘발성 메모리 장치(110)는 전원전압(Vdd) 및 고전압(Vpp)을 제공받아 구동되도록 구현될 것이다. 여기서 고전압(Vpp)은 옵션이다. 비휘발성 메모리 장치(110)는 외부(예를 들어, 호스트 혹은 메모리 제어기(120))의 요청 혹은 고전압(Vpp)의 검출에 따라 고전압(Vpp)을 이용하여 구동될 수 있다. 고전압(Vpp)을 이용하여 구동되는 비휘발성 메모리 장치에 대한 자세한 것은 삼성 전자에서 출원하였으며 참고 문헌으로 결합된 미국 등록 특허 US 7,672,170에서 설명될 것이다.
메모리 제어기(120)는 외부의 호스트의 요청에 따라 데이터(DATA)를 입출력한다. 메모리 제어기(120)는 비휘발성 메모리 장치(110)를 제어한다. 예를 들어, 메모리 제어기(120)는 호스트의 요청에 응답하여 입력된 데이터(DATA)를 랜덤화시켜 비휘발성 메모리 장치(110)에 저장시키거나 혹은 호스트의 요청에 응답하여 비휘발성 메모리 장치(110)에 저장된 데이터를 디랜덤화시켜 출력시킨다. 실시 예에 있어서, 메모리 제어기(120)는 펌웨어(firmware)를 이용하여 비휘발성 메모리 장치(110)를 제어할 수 있다.
메모리 제어기(120)는 적어도 하나의 프로세싱 유닛(121), 버퍼 메모리(122), 랜덤화 회로(123), 에러 정정 회로(124), 호스트 인터페이스(125) 및 비휘발성 메모리 인터페이스(126)를 포함한다. 여기서 적어도 하나의 프로세싱 유닛(121), 버퍼 메모리(122), 랜덤화 회로(123), 에러 정정 회로(124), 호스트 인터페이스(125) 및 비휘발성 메모리 인터페이스(126)는 시스템 버스(11)를 통하여 서로 연결될 수 있다.
적어도 하나의 프로세싱 유닛(121)은 메모리 시스템(10)의 전반적인 동작을 제어한다. 실시 예에 있어서, 적어도 하나의 프로세싱 유닛(121)은 서로 다른 기능을 수행하는 두 개의 프로세싱 유닛들을 포함할 수 있다.
버퍼 메모리(122)는 호스트로부터 입력된 데이터(DATA)를 임시로 저장하거나, 프로세싱 유닛(121)의 동작 중에 발생하는 데이터를 임시로 저장하거나, 메모리 제어기(120)를 동작하기 위한 데이터(예를 들어, 펌웨어, 부트 코드)를 임시로 저장하거나, 비휘발성 메모리 장치(110)를 관리하는데 필요한 관리 데이터(예를 들어, 맵핑 테이블 정보)를 임시로 저장한다. 여기서 부트 코드는 메모리 제어기(120)에 포함된 비휘발성 메모리 장치(도시되지 않음, 예를 들어, 롬, 노아 플래시, 피램 등)에 저장될 수 있다. 여기서 관리 데이터는 비휘발성 메모리 장치(110)의 소정의 영역에 저장될 수 있다.
실시 예에 있어서, 버퍼 메모리(122)는 휘발성 메모리 장치(예를 들어, SRAM, DRAM, DDR)로 구현될 수 있다. 도 1에 도시된 버퍼 메모리(122)는 메모리 제어기(120)의 내부에 포함된다. 하지만 본 발명이 여기에 한정되지 않는다는 것은 당업자에게 알려질 것이다. 본 발명의 버퍼 메모리는 메모리 제어기의 외부에 존재할 수 있다.
랜덤화 회로(123)는 입력된 데이터(DATA)를 씨드 값(Seed)을 이용하여 랜덤화시킴으로써 랜덤 데이터(RD)를 발생하거나, 랜덤 데이터(RD)와 씨드 값(Seed)을 입력받아 디랜덤화시킴으로써 데이터(DATA)를 발생한다. 여기서 씨드 값(Seed)은 씨드 발생기(도시되지 않음)로부터 발생될 수 있다. 랜덤화 회로(120)에 대한 좀더 자세한 것은 삼성 전자에서 출원하였으며 참고 문헌으로 결합된 미국 공개 특허들 US 2009-0259803, US 2010-0217921, US 2010/0223530, US 2010-0315876에서 설명될 것이다.
에러 정정 회로(124)는 부호화 동작시 랜덤화 회로(123)로부터 랜덤 데이터(RD) 및 씨드 값(Seed)을 입력받아 대응하는 부호화된 데이터(ERD)를 출력하거나, 복호화 동작시 부호화된 데이터(ERD)를 입력받아 에러를 검출 혹은 정정함으로써, 랜덤 데이터(RD) 및 씨드 값(Seed)을 출력한다. 여기서 복호화 동작은 부호화된 메타 데이터(ERD(Meta))의 제 1 복호화 동작과 부호화된 사용자 데이터(ERD(User))의 제 2 복호화 동작으로 구분된다. 여기서 제 2 복호화 동작은 제 1 복호화 동작에서 씨드 값(Seed)의 에러 유무 혹은 에러 정정 정보(이하, '씨드 확인 정보'이라고 함; SCI)에 응답하여 수행된다.
에러 정정 회로(124)는 에러 정정 코드 부호기(131) 및 에러 정정 코드 복호기(132)를 포함한다.
에러 정정 코드 부호기(131)는 랜덤 데이터(RD) 및 씨드 값(Seed)을 에러 정정 코드에 따라 부호화함으로써 대응하는 패리티들을 발생한다. 이때 랜덤 데이터(RD), 씨드 값(Seed), 및 그것들의 패리티들을 통칭하여 부호화된 데이터(ERD)라로 한다. 도시되지 않았지만, 에러 정정 코드 부호기(131)는 프로세싱 유닛(121)으로부터 데이터(DATA)에 대응하는 메타 데이터(씨드 값(Seed) 제외)를 에러 정정 코드에 따라 부호화함으로써 대응하는 패리티를 발생할 수 있다.
실시 예에 있어서, 에러 정정 코드 부호기(131)는 BCH(Bose Chaudhuri Hocquenghem) 에러 정정 알고리즘을 이용하여 패리티를 발생한다.
다른 실시 예에 있어서, 에러 정정 코드 부호기(131)는 RS(Reed Solomon) 에러 정정 알고리즘을 이용하여 패리티를 발생한다.
에러 정정 코드 복호기(132)는 메타 데이터 복호기(141) 및 사용자 데이터 복호기(142)를 포함한다.
메타 데이터 복호기(141)는 제 1 복호화 동작을 수행한다. 즉, 메타 데이터 복호기(141)는 부호화된 메타 데이터(ERD(Meta))를 입력받아 에러 검출 혹은 정정을 수행한다. 메타 데이터 복호기(141)는 제 1 복호화 동작시 부호화된 메타 데이터(ERD(Meta))에서 우선적으로 씨드 값(Seed)의 에러 유무 혹은 에러 정정을 판별하고, 이에 따른 씨드 확인 정보(SCI)를 발생한다.
사용자 데이터 복호기(142)는 제 2 복호화 동작을 수행한다. 즉, 사용자 데이터 복호기(142)는 부호화된 사용자 데이터(ERD(User))를 씨드 확인 정보(SCI)에 응답하여 입력받아 에러 검출 혹은 정정을 수행한다.
실시 예에 있어서, 사용자 데이터 복호기(142)의 처리 비트 수는 메타 데이터 복호기(141)의 처리 비트 수보다 클 것이다.
한편, 에러 정정 회로(124)의 좀 더 자세한 것은, 삼성 전자에서 출원하였으며 참고 문헌으로 결합된 미국 공개 특허들 US 2009-0217140, US 2009-0259803, US 2010-0217921, US 2010-0223530, US 2010-0229032, US 2010-0241928에서 설명될 것이다.
호스트 인터페이스(125)는 호스트와 메모리 시스템(10) 사이에서 데이터(DATA)을 교환을 수행하기 위하여 인터페이싱한다. 실시 예에 있어서, 호스트 인터페이스(125)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, IDE (Integrated Drive Electronics) 프로토콜, PPN(Perfect Page New) 프로토콜, UFS(Universal Flash Storage) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트와 통신하도록 구현된다.
비휘발성 메모리 인터페이스(126)는 비휘발성 메모리 장치(110)와 메모리 제어기(120) 사이에서 부호화된 데이터(ERD)를 교환하기 위하여 인터페이싱한다. 실시 에에 있어서, 비휘발성 메모리 인터페이스(126)는 클록에 동기하여 비휘발성 메모리 장치(110)와 데이터 통신을 수행하도록 구현될 수 있다.
도 1에서 에러 정정 회로(124)는 비휘발성 메모리 인터페이스(126)의 외부에 존재한다. 하지만, 도 1에 도시된 에러 정정 회로(124)는 비휘발성 메모리 인터페이스(126)의 내부에 존재할 수 있다는 것은 당업자에게 알려질 것이다. 즉, 에러 정정 회로(124)는 비휘발성 메모리 인터페이스(126)의 일부일 수 있다.
일반적인 메모리 시스템은 출력 동작시 제 1 복호화 동작을 수행한 뒤에 제 2 복호화 동작을 수행한다. 반면에 본 발명의 실시 예에 따른 메모리 시스템(10)은 제 1 복호화 동작시 씨드 값(Seed)의 에러 유무 판별 혹은 정정 동작을 우선적으로 수행함으로써 씨드 확인 정보(SCI)를 발생하고, 씨드 확인 정보(SCI)에 응답하여 곧바로 제 2 복호화 동작을 수행할 수 있다. 이로써, 본 발명의 실시 예에 따른 메모리 시스템(10)은 출력 동작시 일반적인 메모리 시스템과 비교하여 부호화된 사용자 데이터(ERD(User))의 대기 시간을 줄일 수 있다.
한편, 비휘발성 메모리 장치(110) 및 메모리 제어기(120)는 하나의 기판 위에 단일 칩으로 구현될 수 있다.
한편, 메모리 시스템(10)의 좀 더 자세한 것은 삼성 전자에서 출원하였으며 참고 문헌으로 결합된 미국 공개 특허 US 2010-0082890에서 설명될 것이다.
도 2는 도 1에 도시된 메모리 블록(111)의 제 1 실시 예를 보여주는 도면이다. 도 2를 참조하면, 메모리 블록(111)은 복수의 셀 스트링들을 포함한다. 각각의 셀 스트링들은, 스트링 선택 라인(String Selection Line; SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WL0~WLm, m은 자연수)에 연결되는 복수의 메모리 셀들(MC0~MCm), 및 접지 선택 라인(Ground Selection Line; GSL)에 연결되는 접지 선택 트랜지스터(GST)를 포함한다.
여기서 스트링 선택 트랜지스터(SST)는 복수의 비트라인들(BL0~BLn)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(Common Source Line; CSL)에 연결된다. 여기서, 공통 소스 라인(GSL)은 CSL 드라이버(도시되지 않음)로부터 접지 전압 혹은 CSL 전압(예를 들어, 전원전압)을 입력받을 수 있다.
복수의 메모리 셀들(MC0~MCm) 각각은 1-비트 데이터 또는 멀티-비트 데이터를 저장한다. 하나의 워드라인에 연결된 메모리 셀들을 통칭하여 페이지(Page)라고 부른다. 여기서, 페이지(Page)에는 적어도 하나의 논리 페이지들이 저장될 수 있다.
한편, 메모리 블록에 대한 좀더 자세한 것은 삼성 전자에서 출원하였으며 참고 문헌으로 결합된 미국 등록 특허 US 7,379,333에서 설명될 것이다.
도 3은 도 1에 도시된 메모리 블록(111)의 제 2 실시 예를 보여주는 도면이다. 도 3을 참조하면, 메모리 블록(111)은 복수의 버티컬 스트링들을 포함한다. 여기서 버티컬 스트링들은 제 2 방향(혹은 수직 방향)으로 신장된다. 여기서 버티컬 스트링들은, 비트라인들(BL<0>, BL<1>, ...., BL<n>)과 공동 소스 라인(CSL) 사이에 연결된다. 여기서 비트라인들(BL<0>, BL<1>, ...., BL<n>)은 제 3 방향으로 신장된다. 비트라인들(BL<0>, BL<1>, ...., BL<n>)의 어떤 하나의 비트라인에는 4개의 버티컬 스트링들이 존재한다.
4개의 버티컬 스트링들은 스트링 선택 라인들(SSL<0>, SSL<1>, SSL<2>, SSL<3>) 각각에 의하여 대응하는 비트라인에 전기적으로 연결된다. 여기서 스트링 선택 라인들(SSL<0>, SSL<1>, SSL<2>, SSL<3>)은 제 1 방향으로 신장된다. 도 3에서는 설명의 편의를 위하여 스트링 선택 라인들(SSL<0>, SSL<1>, SSL<2>, SSL<3>)의 개수가 4개라고 하였다. 하지만 스트링 선택 라인들의 개수가 적어도 하나라는 것은 당업자에게 알려질 것이다.
또한, 4개의 버티컬 스트링들 각각은, 접지 선택 라인들(GSL<0>, GSL<1>, GSL<2>, GSL<3>) 각각에 의하여 공통 소스 라인(CSL)에 전기적으로 연결된다. 여기서 접지 선택 라인들(GSL<0>, GSL<1>, GSL<2>, GSL<3>)은 제 1 방향으로 신장된다. 도 3에서는 설명의 편의를 위하여 접지 선택 라인들(GSL<0>, GSL<1>, GSL<2>, GSL<3>)의 개수가 4개라고 하였다. 하지만 접지 선택 라인들의 개수가 적어도 하나라는 것은 당업자에게 알려질 것이다.
버티컬 스트링들 각각은 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들 각각은 대응하는 워드라인들((WL<0>, WL<1>, ...., WL<m>)에 연결된다. 복수의 메모리 셀 각각은, 1-비트 데이터 또는 멀티-비트 데이터를 저장한다. 하나의 워드라인(예를 들어 WL<2>)에 연결된 메모리 셀들을 통칭하여 페이지(Page)라고 부른다. 여기서, 페이지(Page)에는 적어도 하나의 논리 페이지들이 저장될 수 있다.
한편, 도 3에 도시된 메모리 블록(111)에 대한 좀더 자세한 것은 삼성전자에서 출원하였으며 참고 문헌으로 결합된 미국 공개 번호 US 2010-0315875에서 설명될 것이다.
도 4는 도 1에 도시된 부호화된 데이터(ERD)의 구성을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 부호화된 데이터(ERD)는 부호화된 메타 데이터(ERD(Meta)) 및 부호화된 사용자 데이터(ERS(User))를 포함한다.
부호화된 메타 데이터(ERD(Meta))는 메타 데이터(151)와 메타 데이터 패리티(152)를 포함한다. 여기서 메타 데이터(151)는 씨드 값(Seed)을 포함한다.
실시 예에 있어서, 씨드 값(Seed)은 2 바이트이고, 메타 데이터(151)는 16 바이트이고, 메타 데이터 패리티(152)는 28 바이트일 수 있다.
부호화된 사용자 데이터(ERD(User))는 사용자 데이터(153) 및 사용자 데이터패리티(154)를 포함한다.
도 5는 도 1에 도시된 메타 데이터 부호기(141)를 예시적으로 보여주는 블록도이다. 도 5를 참조하면, 메타 데이터 부호기(141)는 신드롬(syndrome) 계산 유닛(161), 에러 위치 다항식 탐색 유닛(162), 치엔 서치(chien search) 유닛(163), 버퍼 유닛(164) 및 덧셈기(165)를 포함한다.
신드롬 계산 유닛(161)은 에러 체크를 위하여 부호화된 메타 데이터(ERD(Meta))의 신드롬을 계산한다. 예를 들어, 신드롬은 부호화된 메타 데이터(ERD(Meta))에 패리티 검출 다항식을 곱함으로써 계산될 수 있다. 신드롬에는 부호화된 메타 데이터(ERD(Meta)에 포함되는 에러의 검출 및 정정을 위한 제반 정보들이 포함된다. 신드롬 계산 유닛(161)은 에러 발생 유무를 판별할 수 있다. 예를 들어, 에러가 발생하지 않는 경우 계산된 신드롬 값은 '0'이다. 반면에, 에러가 발생한 경우 계산된 신드롬 값은 '0'이 아니다.
실시 예에 있어서, 신드롬 계산 유닛(161)은 부호화된 메타 데이터(ERD(Meta))에 에러가 없는 경우 씨드 확인 정보(SCI, ①)를 발생하도록 구현된다.
에러 위치 다항식 탐색(finding) 유닛(162)은 계산된 신드롬을 이용하여 에러 위치 다항식(Error locator Polynomial; ELP)을 찾는다.
치엔 서치 유닛(163)은 치엔 서치 알고리즘을 이용하여 에러 위치 다항식(ELP)의 근(root)을 계산함으로써 에러 비트의 위치를 계산한다.
실시 예에 있어서, 치엔 서치 유닛(163)은 순방향 치엔 서치(Forward Chien Search) 동작을 수행할 수 있다.
다른 실시 예에 있어서, 치엔 서치 유닛(153)은 역방향 치엔 서치(Backward Chien search) 동작을 수행할 수 있다.
실시 예에 있어서, 치엔 선치 유닛(163)은 씨드 값(Seed)에 에러가 없을 경우 씨드 확인 정보(SCI, ②)을 발생하도록 구현된다.
버퍼 유닛(164)은 부호화된 메타 데이터(ERD(Meta))를 임시로 버퍼링한다.
덧셈기(165)는 치엔 서치 유닛(163)의 에러 비트의 위치 정보를 이용하여 버퍼 유닛(164)의 부호화된 메타 데이터(ERD(Meta))를 정정함으로써, 씨드 값(Seed)을 포함하는 메타 데이터(RD(Meta))를 복호화시킨다.
실시 예에 있어서, 덧셈기(165)는 씨드 값(Seed)에 에러가 있는 경우 씨드 값(Seed)의 에러가 정정된 후 씨드 확인 정보(SCI, ③)를 발생하도록 구현된다.
본 발명의 실시 예에 따른 메타 데이터 부호기(141)는 씨드 값(Seed)의 에러 유무가 판별되거나 혹은 씨드 값(Seed)의 정정될 때 씨드 확인 정보(SCI, ①, ②, ③)를 발생한다.
한편, 메타 데이터 부호기(141)에 대한 좀더 자세한 것은, 삼성 전자에서 출원하였으며 참고 문헌으로 결합된 미국 공개 특허 US 2008-0244362, US 2009-0217140에서 설명될 것이다.
도 6은 도 1에 도시된 사용자 데이터 부호기(142)를 예시적으로 보여주는 블록도이다. 도 6을 참조하면, 사용자 데이터 부호기(142)는 신드롬 계산 유닛(171), 에러 위치 다항식 탐색 유닛(172), 치엔 서치 유닛(173), 버퍼 유닛(174) 및 덧셈기(175)를 포함한다.
신드롬 계산 유닛(171)은 부호화된 사용자 데이터(ERD(User))의 신드롬을 계산한다. 여기서 부호화된 사용자 데이터(ERD(User))는 씨드 확인 정보(SCI)에 응답하여 신드롬 계산 유닛(171)에 입력될 것이다. 실시 예에 있어서, 사용자 데이터 부호기(142)는 부호화된 사용자 데이터(ERD(User))를 씨드 확인 정보(SCI) 응답하여 신드롬 계산 유닛(171)에 입력하기 위한 스위치(SW)를 더 포함할 수 있다.
에러 위치 다항식 탐색 유닛(172)은 계산된 신드롬을 이용하여 에러 위치 다항식(Error locator Polynomial; ELP)을 탐색한다.
치엔 서치 유닛(173)은 치엔 서치 알고리즘을 이용하여 에러 위치 다항식(ELP)의 근(root)을 계산함으로써 에러 비트의 위치를 계산한다.
버퍼 유닛(174)은 부호화된 사용자 데이터(ERD(User))를 임시로 버퍼링한다.
덧셈기(175)는 치엔 서치 유닛(173)의 에러 비트의 위치 정보를 이용하여 버퍼 유닛(174)의 부호화된 사용자 데이터(ERD(Meta))를 정정함으로써, 사용자(RD)를 복호화시킨다.
본 발명의 실시 예에 따른 사용자 데이터 부호기(142)는 씨드 확인 정보(SCI)에 근거로하여 곧바로 부호화된 사용자 데이터(ERD(User))를 입력하고, 에러 검출 및 정정을 수행함으로써, 그것보다 빠르게 데이터 출력 동작을 수행할 수 있다.
도 7은 본 발명의 실시 예에 따른 에러 정정 코드 복호기의 데이터 입력 방법에 대한 실시 예를 보여주는 흐름도이다. 도 1 내지 도 7를 참조하면, 에러 정정 코드 복호기(132)의 데이터 입력 방법은 다음과 같다.
에러 정정 코드 복호기(132)는 데이터 출력 동작시 비휘발성 메모리 장치(110)로부터 부호화된 메타 데이터(ERD(Meta))를 우선적으로 입력받는다(S110). 에러 정정 코드 복호기(132)는 입력된 메타 데이터(ERD(Meta))로부터 신드롬을 계산한다(S120).
신드롬 계산 결과로써 메타 데이터(ERD(Meta))의 에러 존재 여부가 체크될 것이다. 예를 들어, 계산된 신드롬 값이 '0'이면, 에러가 존재하지 않는 것이다. 이로써, 신드롬 계산 결과로부터 메타 데이터(ERD(Meta))의 에러가 존재하는지가 판별된다(S125). 만일, 메타 데이터(ERD(Meta))에 에러가 존재하지 않을 때, 에러 정정 코드 복호기(132)는 씨드 확인 정보(SCI)를 발생시키고, S160 단계로 진입된다.
반면에, 메타 데이터(ERD(Meta))에 에러가 존재하지 않을 때, 에러 정정 코드 복호기(132)는 계산된 신드롬을 이용하여 에러 위치 다항식을 탐색한다(S130). 이후, 에러 정정 코드 복호기(132)는 부호화된 메타 데이터(ERD(Meta)) 중 씨드 값(Seed)에 에러가 존재하는 지를 치엔 서치를 이용하여 판별한다(S140). 여기서 순방향 치엔 서치 혹은 역방향 치엔 서치이든지 우선적으로 씨드 값(Seed)에 에러가 존재하는 지가 판별될 것이다. 만약, 치엔 서치 동작 중에 씨드 값(Seed)에 에러가 없다면, 에러 정정 코드 복호기(132)는 씨드 확인 정보(SCI)를 발생시키고, S160 단계로 진입된다.
반면에, 씨드 값(Seed)에 에러가 있다면, 에러 정정 코드 복호기(132)는 씨드 값(Seed)의 에러를 정정한 뒤에 씨드 확인 정보(SCI)를 발생시키고(S155), S160 단계로 진입된다.
S160 단계에서는 씨드 확인 정보(SCI)에 근거로 하여 부호화된 사용자 데이터(ERD(User))를 입력받는다.
본 발명의 실시 예에 따른 에러 정정 코드 복호기(132)는 메타 데이터(ERD(Meta))의 에러 존재 유무, 혹은 씨드 값(Seed)의 에러 존재 유무, 혹은 에러 정정에 근거로 하여 부호화된 사용자 데이터(ERD(User)))를 곧바로 입력받는다.
도 8은 본 발명의 실시 예에 따른 에러 정정 코드 복호화기에서 메타 데이터에 에러가 존재하지 않을 때 순방향 치엔 서치 동작을 수행하는 에러 정정 방법을 예시적으로 보여주는 다이어그램이다. 도 1 및 도 8을 참조하면, 메타 데이터 복호기(141)는 부호화된 메타 데이터(ERD(Meta))를 입력받은 후, 신드롬 계산 및 계산된 신드롬을 이용하여 에러 위치 다항식을 탐색한다. 실시 예에 있어서, 신드롬 계산은 부호화된 메타 데이터(ERD(Meta))의 입력과 동시에 진행될 수 있다. 이후, 메타 데이터 복호기(141)는 순방향 치엔 서치를 수행함으로써 부호화된 메타 데이터(ERD(Meta))에 에러의 존재 유무 및 위치를 찾는다.
여기서 부호화된 메타 데이터(ERD(Meta))는 도 8에 도시된 바와 같이, 메타 데이터 및 메타 데이터 패리티로 구성된다. 여기서 메타 데이터는 씨드 값(Seed), 씨드 값을 제외한 메타 데이터로 구분된다. 메타 데이터 복호기(141)가 순방향 치엔 서치를 이용할 경우, 씨드 값(Seed)은 메타 데이터의 처음 부분에 위치할 것이다.
부호화된 메타 데이터(ERD(Meta))에 에러가 없다고 가정하였기 때문에, 메타 데이터 복호기(141)는 순방향 치엔 서치 동작을 수행할 때 씨드 값(Seed)의 에러가 없다는 것을 조기에 발견할 것이다. 이에 순방향 치엔 서치 동작이 수행 중에 메타 데이터 복호기(141)는 씨드 값(Seed)에 에러가 없다는 씨드 확인 정보(SCI)를 발생하고, 이를 사용자 데이터 복호기(142)에 전송한다. 이후, 사용자 데이터 복호기(142)는 씨드 확인 정보(SCI)를 근거로 곧바로 부호화된 사용자 데이터(ERD(User))를 입력받는다.
정리하면, 본 발명의 실시 예에 따른 메모리 시스템(10)은 씨드 값(Seed)의 에러 존재 유무를 조기에 판별하고 부호화된 사용자 데이터(ERD(User))를 입력함으로써 아이들 사이클(idle cycle)을 최소화시킬 수 있고, 이에 따라 데이터 전송 속도의 향상시킬 수 있다.
도 9는 본 발명의 실시 예에 따른 에러 정정 코드 복호화기에서 메타 데이터에 에러가 존재할 때 순방향 치엔 서치 동작을 수행하는 에러 정정 방법을 예시적으로 보여주는 다이어그램이다. 부호화된 메타 데이터(ERD(Meta))에 에러가 있다고 가정하였다. 여기서 에러는 씨드 값(Seed)의 에러 혹은 씨드 값(Seed)를 제외한 메타 데이터의 에러인지에 따라 다르게 에러 정정 방법을 수행할 것이다.
우선, 메타 데이터 복호기(141)는 순방향 치엔 서치 동작을 수행할 때 씨드 값(Seed)의 에러가 없고, 씨드 값(Seed)를 제외한 메타 데이터에 에러가 존재할 때 에러 정정 방법은 다음과 같다. 메타 데이터 복호기(141)는 순방향 치엔 서치 동작을 수행할 때 씨드 값(Seed)의 에러가 없다는 것을 조기에 발견할 수 있다. 이에 순방향 치엔 서치 동작이 수행 중에 메타 데이터 복호기(141)는 씨드 값(Seed)에 에러가 없다는 씨드 확인 정보(SCI)를 발생하고, 이를 사용자 데이터 복호기(142)에 전송한다. 이후, 사용자 데이터 복호기(142)는 씨드 확인 정보(SCI)를 근거로 곧바로 부호화된 사용자 데이터(ERD(User))를 입력받는다.
동시에(혹은, 병렬적으로), 씨드 값(Seed)를 제외한 메타 데이터에 에러가 존재하기 때문에, 메타 데이터 복호기(141)는 하드웨어적으로 에러가 발견된 위치의 비트를 자동으로 수정한다.
다음으로, 메타 데이터 복호기(141)는 순방향 치엔 서치 동작을 수행할 때 씨드 값(Seed)의 에러가 존재할 때 에러 정정 방법은 다음과 같다. 순방향 치엔 서치 동작이 수행 중에 메타 데이터 복호기(141)는 씨드 값(Seed)의 에러를 우선적으로 정정한다. 메타 데이터 복호기(141)는 씨드 값(Seed)의 에러를 정정한 뒤에 씨드 확인 정보(SCI)를 발생하고, 이를 사용자 데이터 복호기(142)에 전송한다. 이후, 사용자 데이터 복호기(142)는 씨드 확인 정보(SCI)를 근거로 곧바로 부호화된 사용자 데이터(ERD(User))를 입력받는다.
정리하면, 본 발명의 실시 예에 따른 메모리 시스템(10)은 씨드 값(Seed)의 에러를 조기에 정정하고 부호화된 사용자 데이터(ERD(User))를 입력함으로써 아이들 사이클(idle cycle)을 최소화시킬 수 있고, 이에 따라 데이터 전송 속도의 향상시킬 수 있다.
도 8 및 도 9는 순방향 치엔 서치 동작을 수행하는 에러 정정 방법을 설명하였다. 하지만 본 발명의 에러 정정 방법이 순방향 치엔 서치 동작을 수행한다고 한정될 필요가 없다는 것은 당업자에게 알려질 것이다. 본 발명의 에러 정정 방법은 역방향 치엔 서치 동작을 수행할 수 있다.
도 10은 본 발명의 실시 예에 따른 에러 정정 코드 복호화기에서 메타 데이터에 에러가 존재할 때 역방향 치엔 서치 동작을 수행하는 에러 정정 방법을 예시적으로 보여주는 다이어그램이다.
메타 데이터 복호기(141)는 부호화된 메타 데이터(ERD(Meta))를 입력받은 후, 신드롬 계산 및 계산된 신드롬을 이용하여 에러 위치 다항식을 탐색한다. 이후, 메타 데이터 복호기(141)는 역방향 치엔 서치를 수행함으로써 부호화된 메타 데이터(ERD(Meta))에 에러의 존재 유무 및 위치를 찾는다.
여기서 부호화된 메타 데이터(ERD(Meta))는 도 9에 도시된 바와 같이, 메타 데이터 및 메타 데이터 패리티로 구성된다. 여기서 메타 데이터는 씨드 값(Seed), 씨드 값을 제외한 메타 데이터로 구분된다. 메타 데이터 복호기(141)가 역방향 치엔 서치를 이용할 경우, 씨드 값(Seed)은 메타 데이터의 뒤 부분에 위치할 것이다.
부호화된 메타 데이터(ERD(Meta))에 에러가 있다고 가정하였다. 여기서 에러는 씨드 값(Seed)의 에러 혹은 씨드 값(Seed)를 제외한 메타 데이터의 에러인지에 따라 다르게 에러 정정 방법을 수행할 것이다.
우선, 메타 데이터 복호기(141)는 역방향 치엔 서치 동작을 수행할 때 씨드 값(Seed)의 에러가 없고, 씨드 값(Seed)를 제외한 메타 데이터에 에러가 존재할 때 에러 정정 방법은 다음과 같다. 메타 데이터 복호기(141)는 역방향 치엔 서치 동작을 수행할 때 씨드 값(Seed)의 에러가 없다는 것을 조기에 발견할 수 있다. 이에 순방향 치엔 서치 동작이 수행 중에 메타 데이터 복호기(141)는 씨드 값(Seed)에 에러가 없다는 씨드 확인 정보(SCI)를 발생하고, 이를 사용자 데이터 복호기(142)에 전송한다. 이후, 사용자 데이터 복호기(142)는 씨드 확인 정보(SCI)를 근거로 곧바로 부호화된 사용자 데이터(ERD(User))를 입력받는다.
동시에(혹은, 병렬적으로), 씨드 값(Seed)를 제외한 메타 데이터에 에러가 존재하기 때문에, 메타 데이터 복호기(141)는 하드웨어적으로 에러가 발견된 위치의 비트를 자동으로 수정한다.
다음으로, 메타 데이터 복호기(141)는 역방향 치엔 서치 동작을 수행할 때 씨드 값(Seed)의 에러가 존재할 때 에러 정정 방법은 다음과 같다. 역방향 치엔 서치 동작이 수행 중에 메타 데이터 복호기(141)는 씨드 값(Seed)의 에러를 우선적으로 정정한다. 메타 데이터 복호기(141)는 씨드 값(Seed)의 에러를 정정한 뒤에 씨드 확인 정보(SCI)를 발생하고, 이를 사용자 데이터 복호기(142)에 전송한다. 이후, 사용자 데이터 복호기(142)는 씨드 확인 정보(SCI)를 근거로 곧바로 부호화된 사용자 데이터(ERD(User))를 입력받는다.
정리하면, 본 발명의 실시 예에 따른 메모리 시스템(10)은 씨드 값(Seed)의 에러를 조기에 정정하고 부호화된 사용자 데이터(ERD(User))를 입력함으로써 아이들 사이클을 최소화시킬 수 있고, 이에 따라 데이터 전송 속도의 향상시킬 수 있다.
도 1 내지 도 10에 도시된 메모리 시스템(10)은 데이터(DATA)를 랜덤화시키고, 랜덤화된 데이터 대응하는 에러 정정 코드 발생시켜 부호화된 랜덤 데이터(ERD)를 관리한다. 하지만, 본 발명의 메모리 시스템(10)이 반드시 부호화된 랜덤 데이터(ERD)를 관리한다고 한정할 필요가 없다는 것은 당업자에 알려질 것이다. 본 발명의 실시 예에 따른 메모리 시스템은 데이터에 대응하는 에러 정정 코드를 발생시키고, 이후에 여기에 랜덤화 동작을 수행함으로써, 랜덤화된 부호화 데이터를 관리하도록 구현될 수도 있다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템(20)의 제 2 실시 예를 보여주는 도면이다. 도 11을 참조하면, 메모리 시스템(20)은 랜덤화된 부호화 데이터(RED)를 관리하도록 구현된다. 메모리 시스템(20)은 적어도 하나의 비휘발성 메모리 장치(210) 및 그것을 제어하는 메모리 제어기(220)를 포함한다.
비휘발성 메모리 장치(210)는 도 1에 도시된 비휘발성 메모리 장치(110)와 동일한 구성 및 동작을 수행하도록 구현될 것이다. 비휘발성 메모리 장치(210)는 랜덤화된 부호화 데이터(RED)를 입출력한다. 비휘발성 메모리 장치(210)는 적어도 하나의 메모리 블록(211)을 포함한다. 메모리 블록(211)은 복수의 페이지들(도시되지 않음)을 포함한다. 페이지(212)는 메타 영역(213) 및 사용자 영역(214)을 포함한다. 메타 영역(213)은 랜덤화된 메타 데이터(ED(Meta))를 포함한다. 특히, 랜덤화된 메타 데이터(ED(Meta)는 페이지(212)를 랜덤화시키는데 사용된 씨드 값(Seed)을 포함한다. 사용자 영역(214)은 랜덤화된 사용자 데이터(ED(User))를 포함한다.
메모리 제어기(220)는 외부의 호스트의 요청에 따라 데이터(DATA)를 입출력한다. 메모리 제어기(220)는 비휘발성 메모리 장치(210)를 제어한다. 예를 들어, 메모리 제어기(120)는 호스트의 요청에 응답하여 입력된 데이터(DATA)에 대응하는 에러 정정 코드를 발생시키고, 데이터(DATA) 및 에러 정정 코드를 씨드 값(Seed) 이용하여 랜덤화시킨 랜덤화된 부호화 데이터(RED)를 비휘발성 메모리 장치(210)로 출력한다. 여기서 랜덤화된 부호화 데이터(RED)는 랜덤화 동작을 수행하기 위한 씨드 값(Seed)을 포함한다.
메모리 제어기(220)는 적어도 하나의 프로세싱 유닛(221), 버퍼 메모리(222), 에러 정정 회로(223), 랜덤화 회로(224), 호스트 인터페이스(225) 및 비휘발성 메모리 인터페이스(226)를 포함한다. 여기서 적어도 하나의 프로세싱 유닛(221), 버퍼 메모리(222), 호스트 인터페이스(225) 및 비휘발성 메모리 인터페이스(226)는 도 1에 도시된 그것들과 동일한 구성 및 동작을 수행하도록 구현될 것이다.
에러 정정 회로(123)는 부호화 동작시 데이터(DATA)를 입력받아 대응하는 부호화된 데이터(ED)를 출력하거나, 복호화 동작시 부호화된 데이터(ED(Meta), ED(User))를 입력받아 에러를 검출 혹은 정정함으로써, 사용자 데이터(DATA) 및 메타 데이터를 복원한다. 여기서 복호화 동작은 부호화된 메타 데이터(ED(Meta))의 제 1 복호화 동작과 부호화된 사용자 데이터(ED(User))의 제 2 복호화 동작으로 구분된다. 여기서 제 2 복호화 동작은 제 1 복호화 동작에서 씨드 값(Seed)의 에러 유무 혹은 에러 정정 관련된 씨드 확인 정보(SCI)에 응답하여 수행된다.
에러 정정 회로(223)는 에러 정정 코드 부호기(231) 및 에러 정정 코드 복호기(232)를 포함한다.
에러 정정 코드 부호기(231)는 입력된 데이터(DATA)를 에러 정정 코드에 따라 부호화함으로써 대응하는 패리티들을 발생한다. 이때 입력된 데이터(DATA) 및 그것의 패리티들을 통칭하여 부호화 데이터(ED)라고 한다.
에러 정정 코드 복호기(232)는 메타 데이터 복호기(241) 및 사용자 데이터 복호기(242)를 포함한다.
메타 데이터 복호기(241)는 제 1 복호화 동작을 수행한다. 즉, 메타 데이터 복호기(241)는 부호화된 메타 데이터(ED(Meta))를 입력받아 에러 검출 혹은 정정을 수행한다. 메타 데이터 복호기(241)는 제 1 복호화 동작시 부호화된 메타 데이터(ED(Meta))에서 우선적으로 씨드 값(Seed)의 에러 유무 혹은 에러 정정을 판별하고, 이에 따른 씨드 확인 정보(SCI)를 발생한다.
사용자 데이터 복호기(242)는 제 2 복호화 동작을 수행한다. 즉, 사용자 데이터 복호기(242)는 부호화된 사용자 데이터(ED(User))를 씨드 확인 정보(SCI)에 응답하여 입력받아 에러 검출 혹은 정정을 수행한다.
랜덤화 회로(224)는 입력된 데이터(DATA) 및 그것의 패리티를 씨드 값(Seed)을 이용하여 랜덤화시킴으로써 랜덤화된 부호화 데이터(RED)를 발생하거나, 랜덤화된 부호화 데이터(RED)를 입력받아 디랜덤화시킴으로써 데이터(DATA)를 발생한다. 여기서 랜덤화된 부호화 데이터(RED)에는 랜덤화를 수행하기 위한 씨드 값(Seed)이 포함된다.
본 발명의 실시 예에 따른 메모리 시스템(10)은 제 1 복호화 동작시 씨드 값(Seed)의 에러 유무 판별 혹은 정정 동작을 우선적으로 수행함으로써 씨드 확인 정보(SCI)를 발생하고, 씨드 확인 정보(SCI)에 응답하여 곧바로 제 2 복호화 동작을 수행할 수 있다. 이로써, 본 발명의 실시 예에 따른 메모리 시스템(10)은 출력 동작시 일반적인 메모리 시스템과 비교하여 사용자 데이터(ED(User))의 대기 시간을 줄일 수 있다.
도 1 내지 도 11에서 랜덤화 회로들(113, 224) 각각은 메모리 제어기들(120, 220)의 내부에 존재한다. 하지만, 본 발명의 랜덤화 회로의 위치가 반드시 메모리 제어기일 필요가 없다는 것은 당업자에게 알려질 것이다. 본 발명의 랜덤화 회로는 비휘발성 메모리 장치의 내부에 존재할 수도 있다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템(30)의 제 3 실시 예를 보여주는 도면이다. 도 12를 참조하면, 메모리 시스템(30)은 적어도 하나의 비휘발성 메모리 장치(310) 및 그것을 제어하는 메모리 제어기(320)를 포함한다.
비휘발성 메모리 장치(310)는 도 1에 도시된 비휘발성 메모리 장치(110)와 동일한 구성 및 동작을 수행하도록 구현될 것이다. 비휘발성 메모리 장치(310)는 부호화 데이터(ED)를 입출력한다. 여기서 부호화 데이터(ED)는 데이터(DATA) 및 그것의 패리티를 포함한다.
비휘발성 메모리 장치(310)는 적어도 하나의 메모리 블록(311), 랜덤화 회로(316) 및 페이지 버퍼 회로(318)를 포함한다.
메모리 블록(311)은 복수의 페이지들(도시되지 않음)을 포함한다. 페이지(312)는 메타 영역(313) 및 사용자 영역(314)을 포함한다. 메타 영역(313)은 랜덤화된 메타 데이터(RED(Meta))를 포함한다. 특히, 랜덤화된 메타 데이터(RED(Meta)는 페이지(312)를 랜덤화시키는데 사용된 씨드 값(Seed)을 포함한다. 사용자 영역(314)은 랜덤화된 사용자 데이터(RED(User))를 포함한다.
랜덤화 회로(316)는 쓰기 동작시 부호화 데이터(ED)를 입력받아 씨드 값(Seed)을 이용하여 랜덤화시키거나(RED(RED(Meta), RED(User)) 출력함)나, 읽기 동작시 랜덤화된 부호화 데이터(RED)를 입력받아 씨드 값(Seed)을 이용하여 디랜덤화시킨다(ED 출력함). 한다. 한편, 랜덤화 회로(316)에 대한 자세한 것은 삼성전자에서 출원하였으며 참고문헌으로 결합된 미국 등록 특허 US 7,212,426, 미국 공개 특허들 US 2010-0229001, US 2010-0229007, US 2010-0259983에서 설명될 것이다.
페이지 버퍼 회로(318)는 쓰기 동작시 랜덤화된 부호화 데이터((RED(Meta), RED(User))를 입력된 어드레스에 대응하는 페이지에 저장시키거나, 읽기 동작시 입력된 어드레스에 대응하는 페이지로부터 랜덤화된 부호화 데이터((RED(Meta), RED(User))을 읽어낸다. 한편, 페이지 버퍼에 대한 자세한 것은 삼성전자에서 출원하였으며 참고문헌으로 결합된 미국 등록 특허 US 7,379,333에서 설명될 것이다.
메모리 제어기(320)는 외부의 호스트의 요청에 따라 데이터(DATA)를 입출력한다. 메모리 제어기(320)는 비휘발성 메모리 장치(310)를 제어한다. 예를 들어, 메모리 제어기(320)는 입력 동작시 호스트의 요청에 응답하여 입력된 데이터(DATA)에 대응하는 에러 정정 코드를 발생시키고, 이에 대응하는 부호화 데이터(ED)를 비휘발성 메모리 장치(310)로 출력한다. 또한, 메모리 제어기(320)는 출력 동작시 호스트의 요청에 응답하여 비휘발성 메모리 장치(310)의 대응하는 페이지로부터 부호화 데이터(ED)를 읽어와 에러를 정정한 뒤 외부로 출력시킨다.
메모리 제어기(320)는 적어도 하나의 프로세싱 유닛(321), 버퍼 메모리(322), 에러 정정 회로(323), 호스트 인터페이스(325) 및 비휘발성 메모리 인터페이스(326)를 포함한다. 여기서 적어도 하나의 프로세싱 유닛(321), 버퍼 메모리(322), 호스트 인터페이스(325) 및 비휘발성 메모리 인터페이스(326)는 도 1에 도시된 그것들과 동일한 구성 및 동작을 수행하도록 구현될 것이다. 여기서 에러 정정 회로(323)는 도 11에 도시된 에러 정정 회로(323)와 동일한 구성 및 동작을 수행하도록 구현될 것이다.
에러 정정 회로(323)는 에러 정정 코드 부호기(331) 및 에러 정정 코드 복호기(332)를 포함한다. 에러 정정 코드 복호기(332)는 메타 데이터 복호기(341) 및 사용자 데이터 복호기(342)를 포함한다.
본 발명의 실시 예에 따른 메모리 시스템(30)은 제 1 복호화 동작시 씨드 값(Seed)의 에러 유무 판별 혹은 정정 동작을 우선적으로 수행함으로써 씨드 확인 정보(SCI)를 발생하고, 씨드 확인 정보(SCI)에 응답하여 곧바로 제 2 복호화 동작을 수행할 수 있다. 이로써, 본 발명의 실시 예에 따른 메모리 시스템(10)은 출력 동작시 일반적인 메모리 시스템과 비교하여 사용자 데이터(ED(User))의 대기 시간을 줄일 수 있다.
도 1 내지 도 12에서 에러 정정 회로들(114, 223, 323) 각각은 메모리 제어기들(120, 220, 330)의 내부에 존재한다. 하지만, 본 발명의 에러 정정 회로의 위치가 반드시 메모리 제어기일 필요가 없다는 것은 당업자에게 알려질 것이다. 본 발명의 에러 정정 회로는 비휘발성 메모리 장치의 내부에 존재할 수도 있다.
도 13은 본 발명의 실시 예에 따른 비휘발성 메모리 장치를 예시적으로 보여주는 도면이다. 도 13을 참조하면, 비휘발성 메모리 장치(400)는 적어도 하나의 메모리 블록(411), 입출력 버퍼(415), 랜덤화 회로(416), 에러 정정 회로(417), 페이지 버퍼 회로(418)를 포함한다.
메모리 블록(411)은 도 1에 도시된 메모리 블록(211)와 동일하게 구현될 것이다. 메모리 블록(411)은 복수의 페이지들(도시되지 않음)을 포함한다. 하나의 페이지(412)는 메타 영역(413) 및 사용자 영역(414)을 포함한다. 메모리 블록(411)은
입출력 회로(415)는 쓰기 동작시 저장될 데이터(DATA)를 입력받거나, 읽기 동작시 읽혀진 데이터(DATA)를 외부로 출력한다.
랜덤화 회로(416)는 도 1에 도시된 랜덤화 회로(123)와 동일한 구성 및 동작을 갖도록 구현될 것이다. 랜덤화 회로(416)는 쓰기 동작시 데이터(DATA)를 입력받고 씨드 값(Seed)을 이용하여 랜덤화시키거나(RD), 읽기 동작시 씨드 값(Seed) 및 랜덤화된 데이터(RD)를 입력받고 씨드 값(Seed)을 이용하여 디랜덤화시킨다.
에러 정정 회로(417)는 도 1에 도시된 에러 정정 회로(124)와 동일한 구성 및 동작을 갖도록 구현될 것이다.
페이지 버퍼 회로(418)는 쓰기 동작시 부호화 랜덤 데이터(ERD; ERD(Meta), ERD(User))를 입력된 어드레스에 대응하는 페이지에 저장시키거나, 읽기 동작시 입력된 어드레스에 대응하는 페이지로부터 부호화된 랜덤 데이터((ERD(Meta), ERD(User))을 읽어낸다. 페이지 버퍼 회로(418)는 출력 동작시 부호화된 메타 데이터(ERD(Meta))와 부호화된 사용자 데이터(ERD(User))를 독립적으로 출력되도록 구현될 수 있다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치(400)는 랜덤화된 데이터를 저장 및 관리함으로써 데이터의 신뢰성을 향상시킬 수 있다.
도 14는 본 발명의 실시 예에 따른 에러 정정 방법을 예시적으로 보여주는 흐름도이다. 도 14를 참조하면, 에러 정정 방법은 다음과 같다. 아래에서는 설명의 편의를 위하여 도 1에 도시된 에러 정정 회로(124)의 에러 정정 방법을 설명하도록 하겠다.
에러 정정 회로(124)는 메타 데이터를 입력받고, 메타 데이터의 에러를 검출한다(S210). 여기서 메타 데이터는 랜덤 동작을 수행하기 위한 씨드 값(Seed)를 포함한다. 또한 씨드 값(Seed)은 메타 데이터에서 가장 먼저 에러 검출 동작이 수행된다고 가정하겠다.
에러 정정 회로(124)는 입력된 메타 데이터로부터 씨드 값(Seed)에 에러가 존재하는 지를 판별한다(S220).
만일, 씨드 값(Seed)에 에러가 존재하지 않으면, 에러 정정 회로(124)는 씨드 확인 정보(SCI, ②)를 발생하고, 씨드 값(Seed)을 제외한 메타 데이터에 에러가 존재하는지를 판별한다(S230). 반면에, 씨드 값(Seed)에 에러가 존재할 때, 에러 정정 회로(124)는 씨드 값(Seed)을 정정하고 씨드 확인 정보(SCI, ③)를 발생시킨다(S235). 만일, 씨드 값(Seed)을 제외한 메타 데이터에 에러가 존재하면, 씨드 값(Seed)을 제외한 메타 데이터의 에러를 정정한다(S240). 이로써, 메타 데이터의 정정 동작이 완료된다.
반면에, 씨드 값(Seed)에 에러가 존재하면, 에러 정정 회로(124)는 씨드 값(Seed)의 에러를 정정하고, 씨드 확인 정보(SCI, ③)을 발생시킨다.
에러 정정 회로(124)는 씨드 값(Seed)의 에러 존재 유무 및 에러 정정과 관련된 씨드 확인 정보(SCI,②, ③)을 근거로 하여 사용자 데이터를 입력한다(S250).
에러 정정 회로(124)는 사용자 데이터의 데이터의 에러가 존재하는 지를 판별한다(S260).
만일, 사용자 데이터의 에러가 존재하지 않으면, 에러 정정 회로(124)는 입력된 사용자 데이터를 그대로 출력한다.
반면에, 사용자 데이터의 에러가 존재하면, 에러 정정 회로(124)는 사용자 데이터의 에러를 정정하여 출력한다(S235). 상술 된 방법과 같이 사용자 데이터의 정정 동작이 완료된다.
본 발명의 실시 예에 따른 에러 정정 방법은, 메타 데이터의 정정 동작을 수행하면서 동시에 사용자 데이터의 정정 동작을 수행할 수 있다. 이로써, 본 발명의 에러 정정 방법은, 에러 정정 동작시 사용자 데이터를 처리하기 위하여 대기하는 아이들 싸이클을 줄일 수 있다.
도 15는 본 발명의 실시 예에 따른 메모리 카드에 대한 블록도이다. 도 15를 참조하면, 메모리 카드(2000)는 플래시 메모리 장치(2100), 버퍼 메모리 장치(2200) 및 그것들을 제어하는 메모리 제어기(2300)를 포함한다. 메모리 카드(2000)는 도 1에 도시된 메모리 시스템(10), 도 11에 도시된 메모리 시스템(20), 도 12에 도시된 메모리 시스템(30) 및 도 13에 도시된 비휘발성 메모리 장치(400)를 구비한 메모리 시스템 중 어느 하나로 구현될 수 있다.
플래시 메모리 장치(2100)는 도 1에 도시된 비휘발성 메모리 장치(110), 도 11에 도시된 비휘발성 메모리 장치(210), 도 12에 도시된 비휘발성 메모리 장치(310), 도 13에 도시된 비휘발성 메모리 장치(400) 중 어느 하나와 동일한 구성 및/혹은 동작을 포함한다.
버퍼 메모리 장치(2200)는 메모리 카드(2000)의 동작 중 생성되는 데이터를 임시로 저장하기 위한 장치이다. 버퍼 메모리 장치(2200)는 디램 혹은 에스램 등으로 구현될 수 있다.
메모리 제어기(2300)는 호스트 및 플래시 메모리(2100)에 사이에 연결된다. 호스트로부터의 요청에 응답하여, 메모리 제어기(2300)는 플래시 메모리 장치(2100)를 억세스한다. 메모리 제어기(2300)는 도 1에 도시된 메모리 제어기(120), 도 11에 도시된 메모리 제어기(220), 도 12에 도시된 메모리 제어기(320), 도 13에 도시된 비휘발성 메모리 장치(400)를 제어하는 메모리 제어기 중 어느 하나와 동일한 구성 및/혹은 동작을 포함한다.
메모리 제어기(2300)는 적어도 하나의 마이크로 프로세서(2310), 호스트 인터페이스(2350), 플래시 인터페이스(2360)를 포함한다. 적어도 하나의 마이크로 프로세서(2310)는 펌웨어(firmware)를 동작하도록 구현된다. 호스트 인터페이스(2350)는 호스트와 메모리 카드(2000) 사이에 데이터 교환을 수행하기 위한 카드 프로토콜(예를 들어, SD/MMC)을 통해 호스트와 인터페이싱한다.
이러한 메모리 카드(2000)는 멀티미디어 카드(Multimedia Card: MMC), 보안 디지털(Security Digital: SD), miniSD, 메모리 스틱(Memory Stick), 스마트미디어(SmartMedia), 트랜스플래시(TransFlash) 카드 등에 적용가능하다.
한편, 메모리 카드(2000)에 대한 좀더 자세한 것은 삼성전자에서 출원하였으며 참고 문헌으로 결합된 미국 공개 번호 US 2010-0306583에서 설명될 것이다.
도 16은 본 발명의 실시 예에 따른 모비낸드에 대한 블록도이다. 도 16을 참조하면, 모비낸드(3000)는 적어도 하나의 낸드 플래시 메모리 장치(3100) 및 제어기(3200)를 포함할 수 있다. 모비낸드(3000)는 MMC 4.4(다른 말로, eMMC) 규격을 지원한다. 모비낸드(3000)는 도 1에 도시된 메모리 시스템(10), 도 11에 도시된 메모리 시스템(20), 도 12에 도시된 메모리 시스템(30) 및 도 13에 도시된 비휘발성 메모리 장치(400)를 구비한 메모리 시스템 중 어느 하나로 구현될 수 있다.
적어도 하나의 낸드 플래시 메모리 장치(3100)는 도 1에 도시된 비휘발성 메모리 장치(110), 도 11에 도시된 비휘발성 메모리 장치(210), 도 12에 도시된 비휘발성 메모리 장치(310), 도 13에 도시된 비휘발성 메모리 장치(400) 중 어느 하나와 동일한 구성 및/혹은 동작을 포함한다. 실시 예에 있어서, 낸드 플래시 메모리 장치(3100)는 SDR(Sing Data Rate) 낸드 혹은 DDR(Double Data Rate) 낸드일 수 있다. 실시 예에 있어서, 낸드 플래시 메모리 장치(3100)는 단품의 낸드 플래시 메모리 장치들을 포함할 수 있다. 여기서, 단품의 낸드 플래시 메모리 장치들은 하나의 패키지(예를 들어, FBGA, Fine-pitch Ball Grid Array)에 적층되어 구현될 수 있다.
제어기(3200)는 도 1에 도시된 메모리 제어기(120), 도 11에 도시된 메모리 제어기(220), 도 12에 도시된 메모리 제어기(320), 도 13에 도시된 비휘발성 메모리 장치(400)를 제어하는 메모리 제어기 중 어느 하나와 동일한 구성 및/혹은 동작을 포함한다. 제어기(3200)는 적어도 하나의 제어기 코어(3210), 호스트 인터페이스(3250) 및 낸드 인터페이스(3260)를 포함한다. 적어도 하나의 제어기 코어(3210)는 모비낸드(3000)의 전반적인 동작을 제어한다.
호스트 인터페이스(3250)는 제어기(3210)와 호스트의 인터페이싱을 수행한다. 낸드 인터페이스(3260)는 낸드 플래시 메모리 장치(3100)와 제어기(3200)의 인터페이싱을 수행한다. 실시 예에 있어서, 호스트 인터페이스(3250)는 병렬 인터페이스(예를 들어, MMC 인터페이스)일 수 있다. 다른 실시 예에 있어서, 모비낸드(3000)의 호스트 인터페이스(3250)는 직렬 인터페이스(예를 들어, UHS-II, UFS 인터페이스)일 수 있다.
모비낸드(3000)는 호스트로부터 전원전압들(Vcc, Vccq)을 인가받는다. 여기서, 제 1 전원전압(Vcc: 3.3V)은 낸드 플래시 메모리 장치(3100) 및 낸드 인터페이스(3230)에 제공되고, 제 2 전원전압(Vccq: 1.8V/3.3V)은 제어기(3200)에 제공된다.
본 발명의 실시 예에 따른 모비낸드(3000)는 대용량의 데이터를 저장하는 데 유리할 뿐 아니라, 향상된 읽기 동작 특성을 갖는다. 본 발명의 실시 예에 따른 모비낸드(3000)는 소형 및 저전력이 요구되는 모바일 제품(예를 들어, 갤럭시S, 아이폰 등)에 응용 가능하다.
한편, 본 발명은 솔리드 스테이트 드라이버(Solid State Drive: 이하, 'SSD'라고 함)에 적용가능하다.
도 17은 본 발명의 실시 예에 따른 SSD에 대한 블록도이다. 도 17를 참조하면, SSD(4000)는 복수의 플래시 메모리 장치들(4100) 및 SSD 제어기(4200)를 포함한다.
단품의 플래시 메모리 장치(4100)는, 도 1에 도시된 비휘발성 메모리 장치(110), 도 11에 도시된 비휘발성 메모리 장치(210), 도 12에 도시된 비휘발성 메모리 장치(310), 도 13에 도시된 비휘발성 메모리 장치(400) 중 어느 하나와 동일한 구성 및/혹은 동작을 포함한다.
SSD 제어기(4200)는 도 11에 도시된 메모리 제어기(220), 도 12에 도시된 메모리 제어기(320), 도 13에 도시된 비휘발성 메모리 장치(400)를 제어하는 메모리 제어기 중 어느 하나와 동일한 구성 및/혹은 동작을 포함한다.
SSD 제어기(4200)는 복수의 플래시 메모리 장치들(4100)을 제어한다. SSD 제어기(4200)는 적어도 하나의 중앙처리장치(4210), 버퍼 메모리(4220), 호스트 인터페이스(4250) 및 플래시 인터페이스(4260)를 포함한다.
버퍼 메모리(4220)는 외부와 플래시 메모리 장치들(4100) 간의 이동 데이터를 임시로 저장한다. 또한, 버퍼 메모리(4220)는 중앙처리장치(4210)에 의해서 운용될 프로그램을 저장하는 데에도 사용된다. 버퍼 메모리(4220)는 디램(DRAM) 혹은 에스램(SRAM)으로 구현될 수 있다. 도 17에서 버퍼(4220)는 SSD 제어기(4200) 내부에 포함되지만, 본 발명이 반드시 여기에 한정될 필요는 없다는 것은 당업자에 알려질 것이다. 본 발명의 실시 예에 따른 버퍼 메모리는 SSD 제어기(4200)의 외부에 배치될 수 있다.
호스트 인터페이스(4250)는 중앙처리장치(4210)의 제어에 따라 호스트와 통신 프로토콜 방식으로 데이터를 교환한다. 실시 예에 있어서, 통신 프로토콜은 ATA(Advanced Technology Attachment) 프로토콜일 수 있다. 이러한 ATA 프로토콜은 SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, ESATA(External SATA) 인터페이스 등을 포함한다. 다른 실시 예에 있어서, 통신 프로토콜은 USB(Universal Serial Bus) 프로토콜일 수 있다.
호스트 인터페이스(4250)를 통해 호스트로부터 입력되는 데이터나 호스트로 전송되어야 할 데이터는 중앙처리장치(4210)의 제어에 따라 CPU 버스를 경유하지 않고 버퍼 메모리(4220)를 통해 전송된다.
플래시 인터페이스(4260)는 저장 장치로 사용되는 플래시 메모리 장치들(4100)과 SSD 제어기(4200) 사이의 인터페이싱을 수행한다. 플래시 인터페이스(4260)는 낸드 플래시 메모리, 원내드(One-NAND) 플래시 메모리, 멀티 레벨 플래시 메모리, 싱글 레벨 플래시 메모리를 지원하도록 구성될 수 있다.
본 발명의 실시 예에 따른 SSD(4000)는 프로그램 동작시 랜덤 데이터를 저장함으로써, 데이터의 신뢰성을 향상시킨다. 그 결과로써 본 발명의 SSD(4000)는 저장된 데이터의 신뢰성을 향상시킬 수 있다. 한편, SSD(4000)에 대한 좀더 자세한 것은 삼성전자에서 출원하였으며 참고 문헌으로 결합된 미국 공개 번호 US 2010-0082890에서 설명될 것이다.
도 18은 도 17에 도시된 SSD(4000)를 갖는 컴퓨팅 시스템에 대한 블록도이다. 도 18을 참조하면, 컴퓨팅 시스템(5000)은, 적어도 하나의 중앙처리장치(5100), 비휘발성 메모리 장치(5200), 램(5300), 입출력 장치(5400), 및, SSD(5500)를 포함한다.
적어도 하나의 중앙처리장치(5100)는 시스템 버스에 연결된다. 비휘발성 메모리 장치(5200)는 컴퓨팅 시스템(5000)을 동작하는데 필요한 데이터가 저장된다. 이러한 데이터에는 개시 명령 시퀀스, 혹은 기본적인 입/출력 동작 시스템(예를 들어, BIOS) 시퀀스 등이다. 램(5300)은 중앙처리장치(5100)가 실행될 때 생성되는 데이터가 임시로 저장된다.
입출력 장치(5400)는, 실시 예에 있어서, 키보드, 포인팅 장치(마우스), 모니터, 모뎀, 등이 입출력 장치 인터페이스를 통하여 시스템 버스에 연결된다.
SSD(5500)는 읽기 가능한 저장 장치로써, 도 17에 도시된 SSD(4000)와 동일하게 구현된다.
도 19은 도 17에 도시된 SSD(4000)를 갖는 전자기기에 대한 블록도이다. 도 19을 참조하면, 전자기기(6000)는, 프로세서(6100), 롬(6200), 램(6300), 및 플래시 인터페이스(6400), 및 SSD(6500)을 포함한다.
프로세서(6100)는 펌웨어 코드 혹은 임의의 코드를 실행하기 위하여 램(6300)을 억세스한다. 또한, 프로세서(6100)는 개시 명령 시퀀스 혹은 기본 입출력 동작 시스템 시퀀스들과 같은 고정 명령 시퀀스들을 실행하기 위하여 롬(6200)에 억세스한다. 플래시 인터페이스(6400)는 전자기기(6000)와 SSD(6500) 사이의 인터페이싱을 수행한다.
SSD(6500)는 전자기기(6000)에 착탈이 가능할 수 있다. SSD(6500)는, 도 19에 도시된 SSD(4000)와 동일하게 구현된다.
본 발명의 전자기기(6000)는 셀룰러 폰, 개인 디지털 보조기(Personal Digital Assistants: PDAs), 디지털 카메라, 캠코더, 및 휴대용 오디오 재생장치(예를 들어, MP3), PMP 등이 될 수 있다.
도 20는 도 17에 도시된 SSD(4000)를 이용하는 서버 시스템에 대한 블록도이다. 도 20를 참조하면, 서버 시스템(7000)은 서버(7100), 및 서버(7100)를 동작하는 데 필요한 데이터를 저장하는 적어도 하나의 SSD(7200)를 포함한다. 여기서 적어도 하나의 SSD(7200)는, 도 17에 도시된 SSD(4000)와 동일한 구성 및 동일한 동작으로 구현된다.
서버(7100)는 응용 통신 모듈(7110), 데이터 처리 모듈(7120), 업그레이드 모듈(7130), 스케줄링 센터(7140), 로컬 리소스 모듈(7150), 및 리페어 정보 모듈(7160)을 포함한다.
응용 통신 모듈(7110)은 서버(7100)와 네트워크에 연결된 컴퓨팅 시스템과 통신하거나 혹은 서버(7100)와 SSD(7200)이 통신하도록 구현된다. 응용 통신 모듈(7110)은 사용자 인터페이스를 통하여 인가된 데이터 혹은 정보를 데이터 처리 모듈(7120)로 전송한다.
데이터 처리 모듈(7120)은 로컬 리소스 모듈(7150)에 링크된다. 여기서 로컬 리소스 모듈(7150)은 서버(7100)에 입력된 데이터 혹은 정보를 근거로 하여 사용자에게 리페어 숍들(repair shops)/딜러들(dealers)/기술적인 정보의 목록을 인가한다.
업그레이드 모듈(7130)은 데이터 처리 모듈(7120)과 인터페이싱 한다. 업그레이드 모듈(7130)은 SSD(7200)로부터 전송된 데이터 혹은 정보를 근거로 하여 펌웨어, 리셋 코드, 진단 시스템 업그레이드 혹은 다른 정보들을 전자기기(appliance)에 업그레이드한다.
스케쥴링 센터(7140)는 서버(7100)에 입력된 데이터 혹은 정보를 근거로 하여 사용자에게 실시간의 옵션을 허용한다.
리페어 정보 모듈(7160)은 데이터 처리 모듈(7120)과 인터페이싱한다. 리페어 정보 모듈(7160)은 사용자에게 리페어 관련 정보(예를 들어, 오디오, 비디오, 혹은 문서 파일)를 인가하는데 이용된다. 데이터 처리 모듈(7120)은 SSD(7100)으로부터 전송된 정보를 근거로 하여 관련된 정보를 패키징한다. 그 뒤, 이러한 정보는 SSD(7200)에 전송되거나 혹은 사용자에게 디스플레이된다.
본 발명의 실시 예에 따른 메모리 시스템은 PPN(Perfect Page New) 장치에도 적용가능하다.
도 21은 본 발명의 실시 예에 따른 PPN 장치(8000)를 예시적으로 보여주는 도면이다. 도 21을 참조하면, PPN 장치(8000)는 복수의 낸드 플래시 메모리들(8100) 및 그것들을 제어하는 제어기(8200)를 포함한다. PPN 장치(8000)는 도 1에 도시된 메모리 시스템(10), 도 11에 도시된 메모리 시스템(20), 도 12에 도시된 메모리 시스템(30) 및 도 13에 도시된 비휘발성 메모리 장치(400)를 구비한 메모리 시스템 중 어느 하나로 구현될 수 있다.
PPN 장치(8000)는 DDR(Double Data Rared) 인터페이스를 갖는 PPN 프로토콜을 통하여 호스트와 통신을 수행한다. PPN 장치(8000)와 호스트 사이에는 제 1 호스트 채널(HC1) 및 제 2 호스트 채널(HC2)을 통하여 데이터 통신이 수행된다. 여기서 호스트 채널의 개수가 2개로 제한되지 않는다는 것은 당업자에게 알려질 것이다. 한편, PPN 장치(8000)는 호스트에 에러 정정 엔진이 요구되지 않도록 데이터의 신뢰성을 보장한다. 예를 들어, PPN 장치(8000)는 3년 이상 3000회의 프로그램/소거 싸이클을 보장한다.
복수의 낸드 플래시 메모리들(8100)과 제어기(8200) 사이에는 내부 채널들(IC1~IC4)을 통하여 데이터 통신이 수행된다. 여기서 내부 채널의 개수가 4개로 제한되지 않는다는 것은 당업자에게 알려질 것이다.
본 발명의 실시 예에 따른 메모리 시스템은 태블릿(tablet) 제품(예를 들어, 갤럭시탭, 아이패드 등)에도 적용가능하다.
도 22은 본 발명의 실시 예에 따른 휴대용 전자 장치(9000)를 예시적으로 보여주는 도면이다. 도 22를 참조하면, 휴대용 전자 장치(9000)는 일반적으로 적어도 하나의 컴퓨터 판독 가능 매체(9020), 처리 시스템(9040), 입출력 서브시스템(9060), 무선 주파수 회로(9080) 및 오디오 회로(9100)를 포함한다. 각 구성요소들 적어도 하나의 통신 버스 혹은 신호선(9030)으로 연결될 수 있다.
휴대용 전자 장치(9000)는, 한정되지 않는 핸드헬드 컴퓨터(handheld computer), 태블릿 컴퓨터, 이동 전화, 미디어 플레이어, PDA(personal digital assistant) 등과 이들 아이템 중 둘 이상의 조합을 포함하는 임의의 휴대용 전자 장치일 수 있다. 여기서 적어도 하나의 컴퓨터 판독 가능 매체(9020)는 도 1에 도시된 메모리 시스템(10), 도 11에 도시된 메모리 시스템(20), 도 12에 도시된 메모리 시스템(30) 및 도 13에 도시된 비휘발성 메모리 장치(400)를 구비한 메모리 시스템 중 적어도 하나를 포함한다. 한편, 휴대용 전자 장치(9000)에 대한 좀더 자세한 것은 참고 문헌으로 결합된 미국 등록 번호 US 7,509,588에서 설명될 것이다.
본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 실시 예에 있어서, 본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10, 20, 30: 메모리 시스템
110, 210, 310, 400: 비휘발성 메모리 장치
120, 220, 320: 메모리 제어기
121, 221, 321: 프로세싱 유닛
122, 222,322: 버퍼 메모리
123, 224, 316: 랜덤화 회로
124, 223, 323: 에러 정정 회로
131, 231, 331: 에러 정정 부호기
132, 232, 332: 에러 정정 복호기
141, 241, 341: 메타 데이터 복호기
142, 242, 242: 사용자 데이터 복호기
125, 225, 325: 호스트 인터페이스
126, 226, 326: 비휘발성 메모리 인터페이스
161, 171: 신드롬 계산 유닛
162, 172: 에러 위치 다항식 탐색 유닛
163, 173: 치엔 서치 유닛
164, 174: 버퍼 유닛
165, 175: 덧셈기
DATA: 데이터
D: 랜덤 데이터
RD: 부호화된 랜덤 데이터
RED: 랜덤화된 부호 데이터
ERD(Meta): 부호화된 메타 데이터
ERD(User): 부호화된 사용자 데이터
SCI: 씨드 확인 정보

Claims (10)

  1. 사용자 데이터를 랜덤화시키는데 이용된 씨드 값을 갖는 메타 데이터의 에러를 검출하는 단계;
    상기 메타 데이터의 에러가 존재할 때, 상기 메타 데이터의 에러를 정정하는 단계;
    상기 씨드 값의 에러 존재 유무 혹은 에러 정정 결과에 관련된 씨드 확인 정보에 근거로 하여 상기 사용자 데이터를 입력받는 단계;
    상기 사용자 데이터의 에러를 검출하는 단계; 및
    상기 사용자 데이터의 에러가 존재할 때, 상기 사용자 데이터의 에러를 정정하는 단계를 포함하는 에러 정정 방법.
  2. 제 1 항에 있어서,
    상기 메타 데이터의 에러를 정정하는 단계는,
    상기 메타 데이터의 신드롬을 계산하는 단계;
    상기 계산된 신드롬을 이용하여 에러 위치 다항식을 찾는 단계; 및
    상기 에러 위치 다항식을 치엔 서치하는 단계를 포함하는 에러 정정 방법.
  3. 제 2 항에 있어서,
    상기 신드롬을 계산하는 단계는,
    상기 메타 데이터에 에러가 없을 때 상기 씨드 확인 정보를 발생하는 단계를 더 포함하는 에러 정정 방법.
  4. 제 2 항에 있어서,
    상기 치엔 서치하는 단계는 역방향 치엔 서치를 이용하는 에러 정정 방법.
  5. 제 2 항에 있어서,
    상기 치엔 서치하는 단계는 순방향 치엔 서치를 수행하는 에러 정정 방법.
  6. 제 5 항에 있어서,
    상기 치엔 서치하는 단계는,
    상기 씨드 값에 에러가 없을 때 상기 씨드 확인 정보를 발생하는 단계; 및
    상기 씨드 값에 에러가 있을 때, 상기 씨드 값의 에러를 정정한 뒤에 상기 씨드 확인 정보를 발생하는 단계를 포함하는 에러 정정 방법.
  7. 제 1 항에 있어서,
    상기 사용자 데이터의 에러를 정정하는 단계는,
    상기 입력된 사용자 데이터의 신드롬을 계산하는 단계;
    상기 계산된 신드롬을 이용하여 에러 위치 다항식을 찾는 단계; 및
    상기 에러 위치 다항식을 치엔 서치하는 단계를 포함하는 에러 정정 방법.
  8. 씨드 값을 이용하여 사용자 데이터를 랜덤화시키거나, 상기 랜덤화된 사용자 데이터를 상기 씨드 값을 이용하여 디랜덤화시키는 랜덤화 회로;
    상기 씨드 값을 갖는 메타 데이터 및 상기 랜덤화된 사용자 데이터를 에러 정정 코드를 이용하여 부호화시키거나, 상기 부호화된 메타 데이터 및 상기 부호화된 사용자 데이터를 상기 에러 정정 코드를 이용하여 복호화시키는 에러 정정 회로; 및
    상기 부호화된 메타 데이터 및 상기 부호화된 사용자 데이터를 저장하는 적어도 하나의 비휘발성 메모리 장치를 포함하고,
    상기 에러 정정 회로는,
    상기 부호화된 메타 데이터를 상기 에러 정정 코드를 이용하여 복호화시키는 메타 데이터 복호기; 및
    상기 메타 데이터 복호기의 복호 동작시 상기 씨드 값의 에러 존재 유무 혹은 에러 정정 결과와 관련된 씨드 확인 정보를 근거로 상기 부호화된 사용자 데이터를 상기 에러 정정 코드를 이용하여 복호화시키는 사용자 데이터 복호기를 포함하는 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 더 포함하고, 상기 메모리 제어기는 상기 랜덤화 회로 및 상기 에러 정정 회로를 포함하는 메모리 시스템.
  10. 제 9 항에 있어서,
    상기 메타 데이터 복호기는,
    상기 부호화된 메타 데이터를 입력받아 신드롬을 계산하고, 상기 메타 데이터에 에러가 없을 때 씨드 확인 정보를 발생하는 제 1 신드롬 계산 유닛;
    상기 1 신드롬 계산기로부터 계산된 신드롬을 이용하여 제 1 에러 위치 다항식을 찾는 제 1 에러 위치 다항식 탐색 유닛;
    에러를 검출하기 위하여 상기 제 1 에러 위치 다항식을 치엔 서치하고, 상기 씨드 값에 에러가 존재하지 않을 때 상기 씨드 확인 정보를 발생하는 제 1 치엔 서치 유닛;
    상기 부호화된 메타 데이터를 임시로 저장하는 제 1 버퍼 유닛; 및
    에러 정정을 위하여 상기 제 1 버퍼 유닛의 출력과 상기 제 1 치엔 서치 유닛의 출력을 더하고, 상기 씨드 값의 에러가 존재할 때 상기 씨드 값의 에러를 정정한 뒤 상기 씨드 확인 정보를 발생하는 제 1 덧셈기를 포함하는 메모리 시스템.
KR1020110041679A 2011-05-02 2011-05-02 메모리 시스템 및 에러 정정 방법 KR101678919B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020110041679A KR101678919B1 (ko) 2011-05-02 2011-05-02 메모리 시스템 및 에러 정정 방법
US13/456,567 US8694873B2 (en) 2011-05-02 2012-04-26 Memory system and error correction method
US14/242,264 US9063857B2 (en) 2011-05-02 2014-04-01 Memory system and error correction method
US14/718,476 US9197247B2 (en) 2011-05-02 2015-05-21 Memory system and error correction method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110041679A KR101678919B1 (ko) 2011-05-02 2011-05-02 메모리 시스템 및 에러 정정 방법

Publications (2)

Publication Number Publication Date
KR20120123985A KR20120123985A (ko) 2012-11-12
KR101678919B1 true KR101678919B1 (ko) 2016-11-24

Family

ID=47091091

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110041679A KR101678919B1 (ko) 2011-05-02 2011-05-02 메모리 시스템 및 에러 정정 방법

Country Status (2)

Country Link
US (3) US8694873B2 (ko)
KR (1) KR101678919B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200102528A (ko) * 2018-01-24 2020-08-31 마이크론 테크놀로지, 인크. 메모리 시스템에의 중요 데이터 저장

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9459955B2 (en) * 2012-05-24 2016-10-04 Sandisk Technologies Llc System and method to scramble data based on a scramble key
CN102882678B (zh) * 2012-07-02 2014-10-29 飞天诚信科技股份有限公司 一种非接触式烧写种子的方法及系统
US9098205B2 (en) 2013-01-30 2015-08-04 Sandisk Technologies Inc. Data randomization in 3-D memory
US9400721B2 (en) 2013-03-11 2016-07-26 Seagate Technology Llc Error correction code seeding
US9262264B2 (en) 2013-03-11 2016-02-16 Seagate Technology Llc Error correction code seeding
US20150121156A1 (en) 2013-10-28 2015-04-30 Sandisk Technologies Inc. Block Structure Profiling in Three Dimensional Memory
KR102133542B1 (ko) * 2013-12-03 2020-07-14 에스케이하이닉스 주식회사 랜더마이저 및 디랜더마이저를 포함하는 메모리 시스템
US9406368B2 (en) * 2014-01-21 2016-08-02 International Business Machines Corporation Dynamic temperature adjustments in spin transfer torque magnetoresistive random-access memory (STT-MRAM)
US9418721B2 (en) 2014-01-21 2016-08-16 International Business Machines Corporation Determining and storing bit error rate relationships in spin transfer torque magnetoresistive random-access memory (STT-MRAM)
KR20150122825A (ko) * 2014-04-23 2015-11-03 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
US8996838B1 (en) * 2014-05-08 2015-03-31 Sandisk Technologies Inc. Structure variation detection for a memory having a three-dimensional memory configuration
US9244764B2 (en) 2014-05-08 2016-01-26 Sandisk Technologies Inc. Error correcting code techniques for a memory having a three-dimensional memory configuration
US9257186B2 (en) * 2014-05-08 2016-02-09 Sandisk Technologies Inc. Memory access techniques for a memory having a three-dimensional memory configuration
US8918577B1 (en) 2014-06-13 2014-12-23 Sandisk Technologies Inc. Three dimensional nonvolatile memory with variable block capacity
US9710326B2 (en) * 2014-07-28 2017-07-18 SK Hynix Inc. Encoder by-pass with scrambler
US9424929B1 (en) 2015-03-11 2016-08-23 Kabushiki Kaisha Toshiba Memory system and memory control method
US10353599B2 (en) * 2015-08-04 2019-07-16 Toshiba Memory Corporation Storage system that has a plurality of managers among which a master manager is switchable
KR20170057902A (ko) * 2015-11-17 2017-05-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20170161141A1 (en) * 2015-12-02 2017-06-08 Samsung Electronics Co., Ltd. Method and apparatus for correcting data in multiple ecc blocks of raid memory
KR102511459B1 (ko) 2016-03-17 2023-03-17 삼성전자주식회사 비휘발성 메모리 장치 및 그 동작 방법
KR102636039B1 (ko) 2016-05-12 2024-02-14 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
US10685710B2 (en) * 2016-11-17 2020-06-16 Toshiba Memory Corporation Memory controller
KR20180082927A (ko) * 2017-01-11 2018-07-19 에스케이하이닉스 주식회사 메모리장치의 에러정정장치 및 에러정정방법과, 에러정정장치를 포함하는 메모리 컨트롤러
KR20180091296A (ko) 2017-02-06 2018-08-16 삼성전자주식회사 손상된 메타 데이터를 처리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR102319189B1 (ko) * 2017-06-21 2021-10-28 삼성전자주식회사 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법
US10956294B2 (en) * 2017-09-15 2021-03-23 Samsung Electronics Co., Ltd. Methods and systems for testing storage devices via a representative I/O generator
KR20190095825A (ko) * 2018-02-07 2019-08-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10642688B2 (en) 2018-04-12 2020-05-05 EMC IP Holding Company LLC System and method for recovery of unrecoverable data with enhanced erasure coding and replication
US10592338B2 (en) * 2018-04-27 2020-03-17 EMC IP Holding Company LLC Scale out data protection with erasure coding
KR20210079556A (ko) 2019-12-20 2021-06-30 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20210124688A (ko) * 2020-04-07 2021-10-15 에스케이하이닉스 주식회사 데이터 처리 시스템, 이를 위한 메모리 컨트롤러 및 그 동작 방법
KR20210149314A (ko) * 2020-06-02 2021-12-09 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11722152B1 (en) * 2020-11-25 2023-08-08 Astera Labs, Inc. Capacity-expanding memory control component
JP2022102785A (ja) 2020-12-25 2022-07-07 キオクシア株式会社 メモリシステム
JP7253594B2 (ja) 2021-08-27 2023-04-06 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6543024B2 (en) * 1996-02-09 2003-04-01 Overland Storage, Inc. Write format for digital data storage
US7810012B1 (en) * 2003-08-06 2010-10-05 Oracle America, Inc. Format for randomized data block in a storage device
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
KR100528482B1 (ko) 2003-12-31 2005-11-15 삼성전자주식회사 데이타를 섹터 단위로 랜덤하게 입출력할 수 있는 플래시메모리 시스템
US7379333B2 (en) 2004-10-28 2008-05-27 Samsung Electronics Co., Ltd. Page-buffer and non-volatile semiconductor memory including page buffer
US7409623B2 (en) * 2004-11-04 2008-08-05 Sigmatel, Inc. System and method of reading non-volatile computer memory
US7433141B2 (en) * 2005-03-09 2008-10-07 Tandberg Data Corporation Data randomization for rewriting in recording/reproduction apparatus
US20070268905A1 (en) 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
US7398351B2 (en) * 2006-05-23 2008-07-08 International Business Machines Corporation Method and system for controlling access to data of a tape data storage medium using encryption/decryption of metadata
KR100850516B1 (ko) 2007-01-25 2008-08-05 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
KR100891332B1 (ko) 2007-03-30 2009-03-31 삼성전자주식회사 에러 정정 부호화기를 이용하여 에러를 체크하는 bch에러 정정 방법 및 회로
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US7945825B2 (en) * 2007-11-25 2011-05-17 Spansion Isreal, Ltd Recovery while programming non-volatile memory (NVM)
US8359516B2 (en) * 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
KR101344347B1 (ko) 2008-01-16 2013-12-24 삼성전자주식회사 프로그램 시작 전압을 조절하는 불휘발성 메모리 장치,그것의 프로그램 방법, 그리고 그것을 포함하는 메모리시스템
KR101437396B1 (ko) 2008-02-27 2014-09-05 삼성전자주식회사 레이턴시를 줄일 수 있는 에러 정정 블록을 포함하는메모리 시스템 및 그것의 에러 정정 방법
JP4856110B2 (ja) 2008-03-01 2012-01-18 株式会社東芝 チェンサーチ装置およびチェンサーチ方法
KR101517185B1 (ko) 2008-04-15 2015-05-04 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8042597B2 (en) 2009-04-27 2011-10-25 Lutron Electronics Co., Inc. Roller shade system having hembar for pleating a shade fabric
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
KR101554159B1 (ko) * 2008-10-08 2015-09-21 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
KR101563647B1 (ko) 2009-02-24 2015-10-28 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
KR101519626B1 (ko) 2009-02-27 2015-05-14 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR101504338B1 (ko) 2009-03-04 2015-03-23 삼성전자주식회사 불휘발성 메모리 장치의 동작 방법
KR20100099961A (ko) 2009-03-04 2010-09-15 삼성전자주식회사 불휘발성 메모리 장치 및 그 동작 방법
KR20100100394A (ko) 2009-03-06 2010-09-15 삼성전자주식회사 반도체 디스크 장치 그리고 그것의 데이터 기록 및 읽기 방법
KR20100104623A (ko) 2009-03-18 2010-09-29 삼성전자주식회사 데이터 처리 시스템 및 그것의 부호율 제어 스킴
KR20100111990A (ko) 2009-04-08 2010-10-18 삼성전자주식회사 플래시 메모리 장치 및 그것의 데이터 랜덤화 방법
KR101624969B1 (ko) 2009-05-26 2016-05-31 삼성전자주식회사 메모리 시스템 및 그것의 배드 블록 관리 방법
KR20100133707A (ko) 2009-06-12 2010-12-22 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 최상위 비트 프로그램 상태 판별 방법
KR101650130B1 (ko) * 2010-05-14 2016-08-24 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
US8700950B1 (en) * 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
KR101818671B1 (ko) * 2011-04-19 2018-02-28 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 시스템 및 그것의 랜덤 데이터 읽기 방법
US8806112B2 (en) * 2011-07-14 2014-08-12 Lsi Corporation Meta data handling within a flash media controller

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200102528A (ko) * 2018-01-24 2020-08-31 마이크론 테크놀로지, 인크. 메모리 시스템에의 중요 데이터 저장
KR102403173B1 (ko) * 2018-01-24 2022-05-30 마이크론 테크놀로지, 인크. 메모리 시스템에의 중요 데이터 저장

Also Published As

Publication number Publication date
US20150256197A1 (en) 2015-09-10
US20140223228A1 (en) 2014-08-07
US20120284589A1 (en) 2012-11-08
US9197247B2 (en) 2015-11-24
US9063857B2 (en) 2015-06-23
KR20120123985A (ko) 2012-11-12
US8694873B2 (en) 2014-04-08

Similar Documents

Publication Publication Date Title
KR101678919B1 (ko) 메모리 시스템 및 에러 정정 방법
KR102277521B1 (ko) 저장 장치 및 그것의 리드 리클레임 및 읽기 방법
KR101893145B1 (ko) 메모리 시스템들 및 그것들의 블록 복사 방법들
US10120585B2 (en) Memory system of optimal read reference voltage and operating method thereof
US9477612B2 (en) Memory system for reliable predicted sequential read operation
US10725863B2 (en) Memory system and method for operating the same
US10354743B2 (en) Memory system including plurality of memory regions and method of operating the same
US10108506B2 (en) Controller of semiconductor memory device and method of operating the same
US10373689B2 (en) Semiconductor memory device and method of operating the same
US20190243734A1 (en) Memory controller and operating method thereof
KR102503169B1 (ko) 반도체 메모리 장치 및 그것의 동작 방법
US20110208897A1 (en) Method and memory system using a priori probability information to read stored data
US11531615B2 (en) Controller and memory system for performing garbage collection operation, and operating method thereof
TWI681396B (zh) 解碼方法、記憶體控制電路單元以及記憶體儲存裝置
US20200057580A1 (en) Semiconductor memory device and operating method thereof
US11270744B2 (en) Semiconductor memory device configured to output data based on a warm-up cycle and operating method thereof
US20210042221A1 (en) Controller for semiconductor memory device and method of operating the same
TWI573033B (zh) 資料搜尋方法、記憶體儲存裝置及記憶體控制電路單元
US10658051B2 (en) Memory controller and method of operating the same
KR20130054385A (ko) 분산형 ecc 프로세싱 시스템 및 방법
KR20230086446A (ko) 저장 장치, 호스트 장치 및 그들의 동작 방법
KR20230166453A (ko) 컨트롤러 및 그 동작 방법
KR20240085385A (ko) 오류 정정 디코딩 실패 여부를 빠르게 판단하는 스토리지 장치 및 그 동작 방법
KR20180091268A (ko) Bch 디코더 및 이의 동작 방법
TW201312578A (zh) 分配的錯誤修正編碼處理之系統及方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191031

Year of fee payment: 4