KR20200079134A - 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents

컨트롤러 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20200079134A
KR20200079134A KR1020180168761A KR20180168761A KR20200079134A KR 20200079134 A KR20200079134 A KR 20200079134A KR 1020180168761 A KR1020180168761 A KR 1020180168761A KR 20180168761 A KR20180168761 A KR 20180168761A KR 20200079134 A KR20200079134 A KR 20200079134A
Authority
KR
South Korea
Prior art keywords
data set
parity
controller
data
ldpc
Prior art date
Application number
KR1020180168761A
Other languages
English (en)
Inventor
김도훈
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020180168761A priority Critical patent/KR20200079134A/ko
Priority to US16/555,264 priority patent/US11099932B2/en
Priority to CN201910930413.2A priority patent/CN111352765B/zh
Publication of KR20200079134A publication Critical patent/KR20200079134A/ko
Priority to US17/141,319 priority patent/US11550659B2/en
Priority to US17/307,129 priority patent/US11403174B2/en
Priority to US17/851,130 priority patent/US11953990B2/en
Priority to US18/602,031 priority patent/US20240220363A1/en

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/63Joint error correction and other techniques
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • 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/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/255Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with 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/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
    • G06F2003/0691
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 기술은 데이터에 제1 패리티를 추가하고, 상기 제1 패리티가 추가된 데이터 세트를 인코딩하여 제1 패리티 데이터 세트를 생성하는 ECC(Error Correction Code) 인코더; 상기 제1 패리티 데이터 세트를 임시 저장하는 버퍼; 상기 버퍼로부터 수신받은 상기 제1 패리티 데이터 세트를 디코딩하여 디코딩 데이터 세트를 생성하는 ECC 디코더; 상기 디코딩 데이터 세트에 대한 LDPC 체크 동작을 수행하여 제2 패리티가 추가된 데이터 세트를 생성하는 제1 체크부; 및 상기 제1 및 제2 패리티들이 추가된 데이터 세트에 대한 신드롬(syndrome) 체크 동작을 수행하는 제2 체크부를 포함하는 컨트롤러를 포함한다.

Description

컨트롤러 및 이를 포함하는 메모리 시스템{Controller and memory system having the same}
본 발명은 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 컨트롤러의 데이터 경로 보호(DATA Path Protection) 기술에 관한 것이다.
메모리 시스템은 데이터가 저장되는 메모리 장치와, 메모리 장치와 호스트 사이에서 통신하는 컨트롤러를 포함할 수 있다.
메모리 장치는 휘발성(Volatile) 또는 비휘발성(Non-volatile) 메모리 장치를 포함할 수 있다. 휘발성 메모리 장치는 전원 공급이 중단되면 저장된 데이터가 소멸되는 장치이고, 비휘발성 메모리 장치는 전원 공급이 중단되더라도 저장된 데이터가 유지되는 장치이다.
최근에는 휴대용 전자 장치들의 사용이 증가하면서 비휘발성 메모리 장치의 사용이 증가하고 있다.
비휘발성 메모리 장치를 제어하는 컨트롤러는 호스트와 메모리 장치 사이에서 데이터를 전송할 수 있는데, 전송되는 데이터의 신뢰도를 높이기 위하여 데이터 경로 보호(DATA Path Protection; DPP) 동작이 수행될 수 있다.
예를 들면, 데이터 경로 보호 동작 시 전송되는 데이터의 신뢰도를 높이기 위해서, 암호화 동작, 인코딩 동작, 디코딩 동작 및 에러 체크 동작 등이 수행될 수 있으며, 각 동작의 신뢰도를 높이면서 동작 시간을 단축하기 위한 연구가 진행되고 있다.
본 발명의 실시예는 데이터의 기입 동작(write operation) 시, 입력된 데이터의 신뢰도를 높일 수 있고, 데이터의 전송 시간을 단축할 수 있는 컨트롤러 및 이를 포함하는 메모리 시스템을 제공한다.
본 발명의 실시예에 따른 컨트롤러는, 데이터에 제1 패리티를 추가하고, 상기 제1 패리티가 추가된 데이터 세트를 인코딩하여 제1 패리티 데이터 세트를 생성하는 ECC(Error Correction Code) 인코더; 상기 제1 패리티 데이터 세트를 임시 저장하는 버퍼; 상기 버퍼로부터 수신받은 상기 제1 패리티 데이터 세트를 디코딩하여 디코딩 데이터 세트를 생성하는 ECC 디코더; 상기 디코딩 데이터 세트에 대한 LDPC 체크 동작을 수행하여 제2 패리티가 추가된 데이터 세트를 생성하는 제1 체크부; 및 상기 제1 및 제2 패리티들이 추가된 데이터 세트에 대한 신드롬(syndrome) 체크 동작을 수행하는 제2 체크부를 포함하는 컨트롤러를 포함한다.
본 발명의 실시예에 따른 컨트롤러는, 호스트로부터 수신된 제1 데이터를 암호화하고, 상기 암호화된 데이터 세트에 패리티를 추가하여 인코딩하는 호스트 컨트롤러; 상기 호스트 컨트롤러에서 출력된 데이터 세트를 저장하는 제1 버퍼; 및 상기 제1 버퍼에서 출력된 데이터 세트에 패리티를 추가하여 에러 체크 동작을 수행하고, 에러가 없으면 제2 데이터를 출력하는 메모리 컨트롤러를 포함하는 컨트롤러를 포함한다.
본 발명의 실시예에 따른 메모리 시스템은, 기입 동작 시, 호스트로부터 수신받은 원본 데이터에 제1 및 제2 패리티들을 추가하고, 상기 제1 및 제2 패리티들이 포함된 제1 데이터 세트에 LDPC 패리티를 추가하여 LDPC 인코딩 동작을 수행하고, 상기 제1, 제2 및 LDPC 패리티들이 포함된 제2 데이터 세트를 신드롬 체크하는 컨트롤러; 및 상기 컨트롤러에서 출력된 상기 제2 데이터 세트를 저장하는 메모리 장치를 포함하고, 리드 동작 시, 상기 컨트롤러는 상기 메모리 장치로부터 상기 제2 데이터 세트를 수신받고, 상기 제2 데이터 세트에 대한 에러 정정 동작을 수행한 후 상기 원본 데이터를 상기 호스트에 출력하는 메모리 시스템을 포함한다.
본 기술은 데이터의 기입 동작 시, 컨트롤러 내부에서 데이터를 전송하기 위한 로직(logic)을 간소화할 수 있고, 데이터를 전송하는데 사용되는 버퍼의 개수를 증가시키지 않으면서 데이터 전송 동작의 신뢰도를 개선할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 실시예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 데이터 전송 경로를 설명하기 위한 도면이다.
도 4는 호스트 컨트롤러에서 데이터 전송 방법을 설명하기 위한 도면이다.
도 5는 메모리 컨트롤러에서 데이터 전송 방법을 설명하기 위한 도면이다.
도 6은 메모리 장치를 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 8은 본 발명의 실시예에 따른 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 9는 본 발명의 실시예에 따른 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 10은 본 발명의 실시예에 따른 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(1000)은 데이터가 저장되는 메모리 장치(Memory Device; 1100)와, 메모리 장치(1100)를 제어하는 컨트롤러(Controller; 1200)를 포함할 수 있다.
메모리 장치(1100)는 하나 또는 다수의 저장 장치들로 이루어질 수 있고, 메모리 장치(1100) 각각은 데이터가 저장되는 다수의 메모리 셀들을 포함할 수 있다. 메모리 장치(1100)는 컨트롤러(1200)의 제어에 따라 데이터의 기입(write) 동작, 리드(read) 동작 및 소거(erase) 동작 등을 수행할 수 있다. 예를 들면, 메모리 장치(1100)는 적어도 하나의 불휘발성(non-volatile) 메모리 장치를 포함할 수 있다. 메모리 장치(1100)는 적어도 하나의 낸드(NAND) 메모리 장치를 포함할 수 있다. 메모리 장치(1100)는 적어도 하나의 플래시(FLASH) 메모리 장치를 포함할 수 있다.
컨트롤러(1200)는 호스트(Host; 2000)의 요청(request)에 응답하여 메모리 장치(1100)를 제어할 수 있으며, 필요한 경우에는 호스트(2000)의 요청이 없더라도 내부 동작을 통해 메모리 장치(1100)를 제어할 수도 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)로부터 기입 요청 및 데이터를 수신 받으면, 수신된 데이터를 메모리 장치(1100)로 전송할 수 있다. 컨트롤러(1200)는 호스트(2000)로부터 수신받은 데이터를 메모리 장치(1100)로 바로 전송하는 것이 아니라, 데이터의 입출력 신뢰성을 높이기 위한 에러 체크 동작을 수행한 후에 데이터를 메모리 장치(1100)로 전송할 수 있다. 컨트롤러(1200)에서 수행되는 에러 체크 동작은 후술하도록 한다.
호스트(2000)는 PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 컨트롤러(1200)를 통해 메모리 장치(1100)와 통신할 수 있다. 호스트(2000)와 메모리 시스템(1000) 간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들이 포함될 수 있다.
도 2는 본 발명의 실시예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 2를 참조하면, 컨트롤러(1200)는 호스트(도 1의 2000)로부터 수신받은 데이터를 메모리 장치(도 1의 1100)로 전송하고 메모리 장치(1100)로부터 리드된 데이터를 호스트(2000)로 출력하기 위하여, 호스트 컨트롤러(Host Controller; 210), 버퍼(buffer; 220) 및 메모리 컨트롤러(Memory Controller; 230)를 포함할 수 있다.
이하, 호스트(2000)에서 컨트롤러(1200)로 전송되는 데이터를 제1 데이터(DATA1)라 하고, 컨트롤러(1200)에서 메모리 장치(1100)로 전송되는 데이터를 제2 데이터(DATA2)로 칭하도록 한다. 즉, 제1 데이터(DATA1)는 원본 데이터이고, 제2 데이터(DATA2)는 제1 데이터(DATA1)가 변환된 데이터이다.
호스트 컨트롤러(210), 버퍼(220) 및 메모리 컨트롤러(230)는 입력 경로(input path; IP)를 따라 제1 데이터(DATA1)를 제2 데이터(DATA1)로 변환하고, 제2 데이터(DATA2)를 메모리 장치(1100)로 전송할 수 있으며, 출력 경로(output path; OP)를 따라 제2 데이터(DATA2)를 제1 데이터(DATA1)로 복구하고, 제1 데이터(DATA1)를 호스트(2000)로 출력할 수 있다. 즉, 호스트 컨트롤러(210), 버퍼(220) 및 메모리 컨트롤러(230)는 입력 경로(IP)와 출력 경로(OP)에서 각각 사용되는 장치들을 포함할 수 있으며, 기입 동작(write operation)에서는 입력 경로(IP)에 포함된 장치들을 사용하고, 리드 동작(read operation)에서는 데이터 출력 경로(OP)에 포함된 장치들을 사용할 수 있다.
호스트 컨트롤러(210)는 기입 동작 시 제1 데이터(DATA1)에 대한 암호화 동작 및 패리티 추가 동작을 수행할 수 있고, 리드 동작 시 패리티 제거 동작 및 암호화된 데이터를 제1 데이터(DATA1)로 복구하고 호스트(2000)로 출력할 수 있다.
버퍼(220)는 기입 동작 및 리드 동작 시 호스트 컨트롤러(210) 또는 메모리 컨트롤러(230)에서 전송된 데이터를 임시로 저장할 수 있다.
메모리 컨트롤러(230)는 기입 동작 시 버퍼(220)로부터 수신받은 데이터에 대한 에러 체크 동작을 수행하고, 에러 체크 동작이 완료된 제2 데이터(DATA2)를 메모리 장치(1100)에 전송할 수 있고, 리드 동작 시 메모리 장치(1100)로부터 수신받은 제2 데이터(DATA2)에 대한 에러 정정 동작을 수행하고, 에러 정정 동작이 완료된 데이터를 버퍼(220)로 전송할 수 있다.
즉, 입력 경로(IP)에 포함된 장치들은 데이터의 기입 동작 시 컨트롤러(1200)를 통해 메모리 장치(1100)로 전송되는 데이터의 통신 장애가 있는지를 체크하는데 사용될 수 있고, 출력 경로(OP)에 포함된 장치들은 데이터의 출력 동작 시 컨트롤러(1200)를 통해 호스트(2000)로 출력되는 데이터의 통신 장애가 있는지를 체크하는데 사용될 수 있다.
상술한 호스트 컨트롤러(210), 버퍼(220) 및 메모리 컨트롤러(230)를 보다 구체적으로 설명하면 다음과 같다.
도 3은 본 발명의 실시예에 따른 데이터 전송 경로를 설명하기 위한 도면이다.
도 3을 참조하면, 입력 경로(IP)에는 외부 CRC 인코더(External Cyclic Redundancy Check Encoder; 11), 암호화 인코더(Encryption Encoder; 12), 제1 ECC 인코더(First Error Correction Code Encoder; 13), 제1 버퍼(14), 제1 ECC 디코더(First Error Correction Code Decoder; 15), 제1 체크부(First Check Component; 16) 및 제2 체크부(Second Check Component; 17)가 포함될 수 있다. 출력 경로(OP)에는 제3 체크부(Third Check Component; 18), 제2 ECC 인코더(Second ECC Encoder; 19), 제2 버퍼(20), 제2 ECC 디코더(Second ECC Decoder; 21), 암호화 디코더(Encryption Decoder; 22) 및 외부 CRC 디코더(External Cyclic Redundancy Check Decoder; 23)가 포함될 수 있다.
외부 CRC 인코더(11), 암호화 인코더(12), 제1 ECC 인코더(13), 제2 ECC 디코더(21), 암호화 디코더(22) 및 외부 CRC 디코더(23)는 호스트 컨트롤러(210)에 포함될 수 있다. 제1 및 제2 버퍼들(14, 20)은 버퍼(220)에 포함될 수 있다. 제1 ECC 디코더(15), 제1 체크부(16), 제2 체크부(17), 제3 체크부(18) 및 제2 ECC 인코더(19)는 메모리 컨트롤러(230)에 포함될 수 있다.
따라서, 기입 동작 시, 호스트 컨트롤러(210)의 입력 경로(IP)에 포함된 외부 CRC 인코더(11), 암호화 인코더(12) 및 제1 ECC 인코더(13)와, 버퍼(220)의 입력 경로(IP)에 포함된 제1 버퍼(14)와, 메모리 컨트롤러(230)의 입력 경로(IP)에 포함된 제1 ECC 디코더(15), 제1 체크부(16) 및 제2 체크부(17)가 동작할 수 있다. 출력 동작 시, 메모리 컨트롤러(230)의 출력 경로(OP)에 포함된 제3 체크부(18) 및 제2 ECC 인코더(19)와, 버퍼(220)의 출력 경로(OP)에 포함된 제2 버퍼(20)와, 호스트 컨트롤러(210)의 출력 경로(OP)에 포함된 제2 ECC 디코더(21), 암호화 디코더(22) 및 외부 CRC 디코더(23)가 동작할 수 있다.
상술한 호스트 컨트롤러(210), 버퍼(220) 및 메모리 컨트롤러(230)에 포함된 각각의 장치를 보다 구체적으로 설명하면 다음과 같다.
도 4는 호스트 컨트롤러에서 데이터 전송 방법을 설명하기 위한 도면이고, 도 5는 메모리 컨트롤러에서 데이터 전송 방법을 설명하기 위한 도면이여, 도 6은 메모리 장치를 설명하기 위한 도면이다.
도 4 내지 도 6을 참조하여 기입 동작(write operation)과 출력 동작(output operation)을 각각 설명하면 다음과 같다.
기입 동작
도 4를 참조하면, 기입 동작은 호스트(2000)로부터 기입 요청(write request)이 수신된 경우, 호스트(2000)로부터 수신된 제1 데이터(DATA1)를 변환하여 제2 데이터(DATA2)를 메모리 장치(1100)로 전송하는 동작을 의미한다. 이러한 기입 동작은 컨트롤러(1200)에서 수행될 수 있다.
기입 동작 시, 호스트(2000)로부터 제1 데이터(DATA1)가 수신되면, 외부 CRC 인코더(ECRC Encoder; 11)는 제1 데이터(DATA1)에 제1 패리티(1st Parity)를 추가한 제1 패리티 데이터 세트(1P_DATA)를 출력할 수 있다. 제1 패리티(1st Parity)는 제1 데이터(DATA1)를 암호화하기 위하여 추가되는 패리티일 수 있다. 예를 들어, 제1 데이터(DATA1)의 사이즈(S1)를 A1 바이트(byte)라고 가정하고, 제1 패리티(1st Parity)의 사이즈(S2)를 A2 바이트(byte)라고 가정한다. 예를 들면, 패리티의 사이즈는 데이터의 사이즈의 약 10%일 수 있다.
암호화 인코더(Encryption Encoder; 12)는 제1 패리티 데이터 세트(1P_DATA)를 암호화하여 암호화된 데이터 세트(EDATA)를 출력할 수 있다. 암호화 인코더(Encryption Encoder; 12)는 DES(Data Encryption Standard) 알고리즘 또는 AES(Advanced Encryption Standard) 알고리즘을 사용하여 제1 패리티 데이터 세트(1P_DATA)를 암호화할 수 있다. 이 중에서도 DES 알고리즘보다 암호화 성능이 개선된 AES 알고리즘이 사용되는 것이 바람직하다. 제1 패리티 데이터 세트(1P_DATA)가 암호화되더라도 전체 비트 수는 바뀌지 않으므로, 암호화된 데이터 세트(EDATA)의 사이즈(S3)는 제1 패리티 데이터 세트(1P_DATA)의 사이즈(S2)와 같거나 다를 수 있다. 즉, 제1 패리티 데이터 세트(1P_DATA)에 포함된 제1 데이터(DATA1)와 제1 패리티(1st Parity)가 암호화 인코더(12)에 의해 암호화되므로, 암호화된 데이터 세트(EDATA)에서는 제1 데이터(DATA1)와 제1 패리티(1st Parity)가 구분되지는 않는다.
제1 ECC 인코더(13)는 암호화된 데이터 세트(EDATA)에 제2 패리티(2nd Parity)를 추가하고, 암호화된 데이터 세트(EDATA)와 제2 패리티(2nd Parity)를 인코딩하여 제2 패리티 데이터 세트(P2_DATA)를 출력할 수 있다. 제2 패리티(2nd Parity)는 A3 바이트 사이즈를 가질 수 있다. 따라서, 제2 패리티 데이터 세트(P2_DATA)의 사이즈(S4)는 암호화된 데이터 세트(EDATA)의 사이즈(S3)에 제2 패리티(2nd Parity)의 사이즈가 추가되어 A1+A2+A3 바이트(byte)가 될 수 있다.
제2 패리티 데이터 세트(P2_DATA)는 LDPC 인코딩을 수행하기에 앞서 제1 버퍼(14)에 임시 저장될 수 있다.
제1 버퍼(14)는 휘발성 메모리 또는 비휘발성 메모리로 구성될 수 있다. 예를 들면, 제1 버퍼(14)는 DRAM(Dynamic Random Access Memory), DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 또는 불휘발성 메모리(non-volatile memory)로 구현될 수 있으며, 기입 동작이 완료될 때까지 제2 패리티 데이터 세트(P2_DATA)를 임시로 저장할 수 있다.
도 5를 참조하면, 제1 ECC 디코더(15)는 제1 버퍼(14)에 임시로 저장된 제2 패리티 데이터 세트(P2_DATA)를 디코딩하여 디코딩 데이터 세트(D_DATA)를 출력할 수 있다. 제1 ECC 디코더(15)에 입력되는 제2 패리티 데이터 세트(P2_DATA)의 사이즈(S5)는 제1 버퍼(14)에 입력되는 제2 패리티 데이터 세트(P2_DATA)의 사이즈(S4)와 같거나 다를 수 있다.
디코딩 데이터 세트(D_DATA)는 제1 ECC 인코더(13)에 입력된 암호화된 데이터 세트(EDATA)와 동일할 수 있다. 예를 들면, 제1 ECC 인코더(13)에서 인코딩되어 출력된 제2 패리티 데이터 세트(P2_DATA)가 제1 ECC 디코더(15)에 의해 다시 디코딩되므로, 제1 ECC 디코더(15)에서 출력되는 디코딩 데이터 세트(D_DATA)는 제1 ECC 디코더(15)에서 인코딩되기 이전 값인 암호화된 데이터 세트(EDATA)와 동일한 값을 가질 수 있다. 따라서, 디코딩 데이터 세트(D_DATA)의 사이즈(S6)는 암호화된 데이터 세트(EDATA)의 사이즈(S3)와 동일하다.
제1 체크부(First Check Component; 16)는 디코딩 데이터 세트(D_DATA)를 LDPC(Low Density Parity Check) 인코딩하여 LDPC 데이터 세트(L_DATA)를 출력할 수 있다. 예를 들면, 제1 체크부(16)는 디코딩 데이터 세트(D_DATA)와 생성 행렬(generation matrix)을 곱하는 방식으로 LDPC 인코딩 연산을 수행할 수 있으며, 연산 결과로 생성된 LDPC 데이터 세트(L_DATA)를 출력할 수 있다.
Figure pat00001
Figure pat00002
‘수학식 1’을 참조하면, 생성 행렬은 K 비트(또는, 바이트)의 행(row)과 N 비트(또는, 바이트)의 열(column)로 이루어질 수 있으며, LDPC 성능에 따라 다르게 설계될 수 있다. 즉, 하나의 행은 N 비트(또는, 바이트)로 이루어질 수 있다. 여기서, K와 N은 모두 양의 정수이고 N은 K보다 크다. K는 디코딩 데이터 세트(D_DATA)의 사이즈(S6)와 동일하다.
따라서, LDPC 인코딩 연산에 의해 생성되는 LDPC 데이터 세트(L_DATA)의 사이즈(S7)는 N 비트(또는, 바이트)일 수 있으며, K와 N의 차이만큼의 LDPC 패리티(LDPC Parity)가 추가될 수 있다. 즉, 디코딩 데이터 세트(D_DATA)의 사이즈(S6)에 N-K 비트(또는, 바이트)의 LDPC 패리티(LDPC Parity)가 추가되어 LDPC 데이터 세트(L_DATA)의 사이즈(S7)가 된다. 예를 들면, K가 A1+A2 바이트이고, N이 A1+A2+A3 바이트라면, LDPC 데이터 세트(L_DATA)에 추가되는 LDPC 패리티(LDPC Parity)는 A4 바이트가 된다. LDPC 패리티(LDPC Parity)의 사이즈는 제1 체크부(16)에 설정된 생성 행렬에 따라 다를 수 있다. LDPC 데이터 세트(L_DATA)는 LDPC 인코딩 결과로 생성되는 코드 워드(code word)일 수 있다. A2, A3 및 A4는 서로 같거나 다를 수 있다.
제2 체크부(Second Check Component; 17)는 LDPC 데이터 세트(L_DATA)에 대한 신드롬 체크 동작(syndrome check operation)을 수행할 수 있다. 예를 들면, 제2 체크부(17)는 패리티 체크 행렬(parity check matrix)과 LDPC 데이터 세트(L_DATA)를 곱하여 N-K 비트(또는, 바이트)의 신드롬 벡터(syndrome vector; S<(N-K):1>)를 산출할 수 있다. 제2 체크부(17)는 신드롬 벡터(S<(N-K):1>)에 따라 신드롬 체크 동작의 패스(pass) 또는 페일(fail)여부를 판단할 수 있다.
Figure pat00003
‘수학식 2’를 참조하면, 패리티 체크 행렬은 N-K 비트(또는, 바이트)의 행(row)과 N 비트(또는, 바이트)의 열(column)로 이루어질 수 있다. 즉, 하나의 행은 N 비트(또는, 바이트)로 이루어질 수 있다. 패리티 체크 행렬(parity check matrix)과 LDPC 데이터 세트(L_DATA)의 곱으로 산출된 신드롬 벡터(S<(N-K):1>)의 사이즈(S7)는 N-K 비트(또는, 바이트)일 수 있다. 신드롬 벡터(S<(N-K):1>)에 포함된 모든 비트들이 0이면 신드롬 체크 동작이 패스되고, 신드롬 벡터(S<(N-K):1>)에 포함된 비트들 중 1이 포함되면 신드롬 체크 동작은 페일될 수 있다.
제2 체크부(17)는 신드롬 벡터(S<(N-K):1>)가 모두 0이 될 때까지 체크 노드들(check nodes)을 변경하면서 LDPC 데이터 세트(L_DATA)의 신드롬 체크 동작을 수행할 수 있다. 즉, 제2 체크부(17)는 제1 데이터(DATA1), 제1 패리티(1st Parity), 제2 패리티(2nd Parity) 및 LDPC 패리티(LDPC Parity)가 모두 포함된 변형된 데이터 세트에 대하여 신드롬 체크 동작을 수행할 수 있다.
신드롬 체크 동작이 패스되면, 제2 체크부(17)는 제2 데이터(DATA2)를 출력할 수 있다. 여기서, 제2 데이터(DATA2)는 신드롬 체크 동작이 패스된 LDPC 데이터 세트(L_DATA)일 수 있다. 제2 체크부(17)에서 출력된 제2 데이터(DATA2)는 메모리 장치(1100)로 전송되고, 메모리 장치(1100)는 제2 데이터(DATA2)를 선택된 메모리 영역에 프로그램할 수 있다.
신드롬 체크 동작이 페일되면, 제2 체크부(17)는 신드롬 벡터(S<(N-K):1>)에 포함된 모든 비트들이 0이 되는 체크 노드 값을 찾는다.
도 6을 참조하여 메모리 장치(1100)의 실시예를 구체적으로 설명하면 다음과 같다.
도 6을 참조하면, 메모리 장치(1100)는 데이터가 저장되는 메모리 셀 어레이(Memory Cell Array; 110)와 프로그램, 리드 또는 소거 등의 동작을 수행하도록 구성된 주변 회로들, 및 커맨드(CMD)에 응답하여 주변 회로들을 제어하는 제어 로직(Control Logic; 170)을 포함할 수 있다. 예를 들면, 주변 회로들은 전압 생성부(Voltage Generator; 120), 로우 디코더(Row Decoder; 130), 페이지 버퍼 그룹(Page Buffer Group; 140), 컬럼 디코더(Column Decoder; 150) 및 입출력 회로(Input/Output Circuit; 160)를 포함할 수 있다.
메모리 셀 어레이(110)는 다수의 메모리 블록들(B1~Bk; k는 양의 정수)을 포함할 수 있다. 메모리 블록들(B1~Bk)은 다수의 메모리 셀들을 포함하며, 2차원 또는 3차원 구조로 구현될 수 있다. 예를 들면, 2차원 구조의 메모리 블록들(B1~Bk)에서는 메모리 셀들이 기판(substrate)에 수평방향으로 배열될 수 있으며, 3차원 구조의 메모리 블록들(B1~Bk)에서는 메모리 셀들이 기판에 대하여 수직방향으로 적층될 수 있다.
전압 생성부(120)는 동작 신호들(OP_SIG)에 응답하여 각 동작에 필요한 동작 전압들(Vop)을 생성하고 출력할 수 있다. 예를 들면, 동작 신호들(OP_SIG)이 프로그램 동작에 대한 신호인 경우, 전압 생성부(120)는 프로그램 전압, 패스 전압 및 프로그램 검증 전압 등을 생성할 수 있다. 동작 신호들(OP_SIG)이 리드 동작에 대한 신호인 경우, 전압 생성부(120)는 리드 전압 및 패스 전압 등을 생성할 수 있다. 동작 신호들(OP_SIG)이 소거 동작에 대한 신호인 경우, 전압 생성부(120)는 소거 전압, 패스 전압 및 소거 검증 전압 등을 생성할 수 있다.
로우 디코더(130)는 로우 어드레스(RADD)에 따라 로컬 라인들(local lines; LL)을 통하여 동작 전압들(Vop)을 선택된 메모리 블록에 전달할 수 있다.
페이지 버퍼 그룹(140)은 비트 라인들(bit lines; BL)을 통해 메모리 블록들(B1~Bk)에 연결될 수 있으며, 비트 라인들(BL) 각각에 연결된 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼 그룹(140)은 페이지 버퍼 제어 신호들(PBSIG)에 응답하여 비트 라인들(BL)의 전압을 제어하거나, 비트 라인들(BL)의 전압 또는 전류를 센싱할 수 있다.
컬럼 디코더(150)는 컬럼 어드레스(CADD)에 응답하여 페이지 버퍼 그룹(140)과 데이터를 주고 받거나, 입출력 회로(160)와 데이터를 주고받을 수 있다. 예를 들면, 컬럼 디코더(150)는 컬럼 라인들(CL)을 통해 페이지 버퍼 그룹(140)과 데이터를 주고받을 수 있고, 데이터 라인들(DL)을 통해 입출력 회로(160)와 데이터를 주고받을 수 있다.
입출력 회로(160)는 기입 동작 시 컨트롤러(1200)로부터 커맨드(CMD), 어드레스(ADD) 및 제2 데이터(DATA2)를 수신받을 수 있고, 출력 동작 시 제2 데이터(DATA2)를 컨트롤러(1200)로 출력할 수 있다. 예를 들면, 입출력 회로(160)는 수신된 커맨드(CMD) 및 어드레스(ADD)를 제어 로직(170)으로 전달할 수 있고, 제2 데이터(DATA2)를 컬럼 디코더(150)로 전송할 수 있다. 또한, 입출력 회로(160)는 메모리 블록들(B1~Bk)로부터 리드된 제2 데이터(DATA2)를 컨트롤러(1200)로 출력할 수 있다.
제어 로직(170)은 커맨드(CMD)에 응답하여 주변 회로들을 제어하기 위한 제어 신호들을 출력할 수 있다. 여기서, 제어 신호들은 동작 신호들(OP_SIG) 및 페이지 버퍼 제어 신호들(PBSIG)을 포함할 수 있다. 또한, 제어 로직(170)은 어드레스(ADD)에 응답하여 로우 어드레스(RADD) 및 컬럼 어드레스(CADD)를 출력할 수 있다.
상술한 바와 같이, 기입 동작 시 호스트(2000)로부터 수신된 제1 데이터(DATA1)에 제1 및 제2 패리티들(1st and 2nd Parities)과 LDPC 패리티가 추가된 데이터 세트에 대하여 데이터 체크 동작이 수행되므로, 상술한 패리티들보다 많은 패리티들을 사용하는 종래 방식보다 데이터를 전송하기 위한 로직(logic)이 간소화될 수 있다. 또한, 컨트롤러(1200) 내에서 데이터를 전송하는데 사용되는 버퍼의 개수를 증가시키지 않으면서 데이터 전송 동작의 신뢰도를 개선할 수 있다.
출력 동작
도 5를 참조하면, 출력 동작은 호스트(2000)로부터 리드 요청(request)이 수신된 경우, 메모리 장치(1100)로부터 리드된 제2 데이터(DATA2)를 변환하여 제1 데이터(DATA1)를 호스트(2000)로 출력하는 동작을 의미한다. 이러한 출력 동작은 컨트롤러(1200)에서 수행될 수 있다.
메모리 장치(1100)로부터 리드된 제2 데이터(DATA2)가 수신되면, 제3 체크부(18)는 제2 데이터(DATA2)에 대한 에러 정정 동작을 수행하고, 제2 데이터(DATA2)에 포함된 LDPC 패리티(LDPC Parity)를 제거하여 디코딩 데이터 세트(D_DATA)를 출력할 수 있다.
제2 ECC 인코더(19)는 제3 체크부(18)에서 출력된 디코딩 데이터 세트(D_DATA)를 인코딩하여 제2 패리티 데이터 세트(P2_DATA)를 출력할 수 있다. 제2 ECC 인코더(19)에서 출력된 제2 패리티 데이터 세트(P2_DATA)는 버퍼(220)에 포함된 제2 버퍼(20)에 임시 저장될 수 있다.
제2 버퍼(20)는 휘발성 메모리 또는 비휘발성 메모리로 구성될 수 있다. 예를 들면, 제2 버퍼(20)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 또는 FLASH 메모리로 구현될 수 있으며, 출력 동작이 완료될 때까지 제2 패리티 데이터 세트(P2_DATA)를 임시로 저장할 수 있다.
도 4를 참조하면, 제2 ECC 디코더(21)는 제2 버퍼(20)에 임시로 저장된 제2 패리티 데이터 세트(P2_DATA)를 디코딩하여 암호화된 데이터 세트(D_DATA)를 출력할 수 있다. 제2 ECC 디코더(21)에서 출력된 암호화된 데이터 세트(D_DATA)는 제2 ECC 디코더(21)에서 암호화되어 출력되는 데이터가 아니라, 암호화 인코더(12)에서 출력된 암호화된 데이터 세트(EDATA)와 동일한 데이터이다. 제2 ECC 디코더(21)는 디코딩 과정에서 제2 패리티 데이터 세트(P2_DATA)에 포함된 제2 패리티(2nd Parity)를 제거하여 암호화된 데이터 세트(EDATA)를 출력할 수 있다.
암호화 디코더(22)는 암호화된 데이터 세트(EDATA)를 디코딩하여 암호화가 해제된 제1 패리티 데이터 세트(1P_DATA)를 출력할 수 있다.
외부 CRC 디코더(ECRC Decoder; 23)는 제1 패리티 데이터 세트(1P_DATA)를 디코딩하여 제1 패리티(1st Parity)가 제거된 제1 데이터(DATA1)를 출력할 수 있다. 즉, 외부 CRC 디코더(23)에서 출력되는 제1 데이터(DATA1)는 호스트(2000)로 출력될 수 있다.
도 7은 본 발명의 실시예에 따른 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 7을 참조하면, 메모리 시스템(Memory System; 30000)은 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다. 메모리 시스템(30000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)를 포함할 수 있다. 컨트롤러(1200)는 프로세서(Processor; 3100)의 제어에 따라 메모리 장치(1100)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작 등을 제어할 수 있다.
메모리 장치(1100)에 프로그램된 데이터는 컨트롤러(1200)의 제어에 따라 디스플레이(Display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(RADIO TRANSCEIVER; 3300)는 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(3100)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(3100)는 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 컨트롤러(1200) 또는 디스플레이(3200)로 전송할 수 있다. 컨트롤러(1200)는 프로세서(3100)에 의하여 처리(process)된 신호를 메모리 장치(1100)에 전송할 수 있다. 또한, 무선 송수신기(3300)는 프로세서(3100)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(Input Device; 3400)는 프로세서(3100)의 동작을 제어하기 위한 제어 신호 또는 프로세서(3100)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다. 프로세서(3100)는 컨트롤러(1200)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
실시 예에 따라, 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(3100)의 일부로서 구현될 수 있고 또한 프로세서(3100)와 별도의 칩으로 구현될 수 있다.
도 8은 본 발명의 실시예에 따른 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 8을 참조하면, 메모리 시스템(Memory System; 40000)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
메모리 시스템(40000)은 데이터가 저장되는 메모리 장치(1100)와, 메모리 장치(1100)의 데이터 처리 동작을 제어할 수 있는 컨트롤러(1200)를 포함할 수 있다.
프로세서(Processor; 4100)는 입력 장치(Input Device; 4200)를 통하여 입력된 데이터에 따라 메모리 장치(1100)에 저장된 데이터를 디스플레이(Display; 4300)를 통하여 출력할 수 있다. 예컨대, 입력 장치(4200)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
프로세서(4100)는 메모리 시스템(40000)의 전반적인 동작을 제어할 수 있고 컨트롤러(1200)의 동작을 제어할 수 있다. 실시 예에 따라 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(4100)의 일부로서 구현되거나, 프로세서(4100)와 별도의 칩으로 구현될 수 있다.
도 9는 본 발명의 실시예에 따른 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 9를 참조하면, 메모리 시스템(50000)은 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
메모리 시스템(50000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 데이터 처리 동작, 예컨대 프로그램 동작, 소거 동작 또는 리드 동작을 제어할 수 있는 컨트롤러(1200)를 포함한다.
메모리 시스템(50000)의 이미지 센서(Image Sensor; 5200)는 광학 이미지를 디지털 신호들로 변환할 수 있고, 변환된 디지털 신호들은 프로세서(Processor; 5100) 또는 컨트롤러(1200)로 전송될 수 있다. 프로세서(5100)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(Display; 5300)를 통하여 출력되거나 컨트롤러(1200)를 통하여 메모리 장치(1100)에 저장될 수 있다. 또한, 메모리 장치(1100)에 저장된 데이터는 프로세서(5100) 또는 컨트롤러(1200)의 제어에 따라 디스플레이(5300)를 통하여 출력될 수 있다.
실시 예에 따라 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(5100)의 일부로서 구현되거나 프로세서(5100)와 별개의 칩으로 구현될 수 있다.
도 10은 본 발명의 실시예에 따른 메모리 장치 및 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 10을 참조하면, 메모리 시스템(Memory System; 70000)은 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(70000)은 메모리 장치(1100), 컨트롤러(1200) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다.
컨트롤러(1200)는 메모리 장치(1100)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(7100)는 호스트(HOST; 60000)의 프로토콜에 따라 호스트(60000)와 컨트롤러(1200) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라 카드 인터페이스(7100)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는 호스트(60000)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
메모리 시스템(70000)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(60000)의 호스트 인터페이스(6200)와 접속될 때, 호스트 인터페이스(6200)는 마이크로프로세서(Microprocessor; μP; 6100)의 제어에 따라 카드 인터페이스(7100)와 컨트롤러(1200)를 통하여 메모리 장치(1100)와 데이터 통신을 수행할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000: 메모리 시스템 1100: 메모리 장치
1200: 컨트롤러 2000: 호스트
210: 호스트 컨트롤러 220: 버퍼
230: 메모리 컨트롤러 11: 외부 CRC 인코더
12: 암호화 인코더 13: 제1 ECC 인코더
14: 제1 버퍼 15: 제1 ECC 디코더
16: 제1 체크부 17: 제2 체크부
18: 제3 체크부 19: 제2 ECC 인코더
20: 제2 버퍼 21: 제2 ECC 디코더
22: 암호화 디코더 23: 외부 CRC 디코더

Claims (20)

  1. 데이터에 제1 패리티를 추가하고, 상기 제1 패리티가 추가된 데이터 세트를 인코딩하여 제1 패리티 데이터 세트를 생성하는 ECC(Error Correction Code) 인코더;
    상기 제1 패리티 데이터 세트를 임시 저장하는 버퍼;
    상기 버퍼로부터 수신받은 상기 제1 패리티 데이터 세트를 디코딩하여 디코딩 데이터 세트를 생성하는 ECC 디코더;
    상기 디코딩 데이터 세트에 대한 LDPC 체크 동작을 수행하여 제2 패리티가 추가된 데이터 세트를 생성하는 제1 체크부; 및
    상기 제1 및 제2 패리티들이 추가된 데이터 세트에 대한 신드롬(syndrome) 체크 동작을 수행하는 제2 체크부를 포함하는 컨트롤러.
  2. 제1항에 있어서,
    상기 버퍼는 휘발성 메모리 또는 비휘발성 메모리로 구성되는 컨트롤러.
  3. 제1항에 있어서,
    상기 제1 체크부는 상기 디코딩 데이터 세트에 대한 LDPC 인코딩 연산을 수행하여 상기 제2 패리티가 추가된 LDPC 데이터 세트를 생성하는 컨트롤러.
  4. 제3항에 있어서,
    상기 제1 체크부는 상기 디코딩 데이터 세트와 생성 행렬을 곱하여 상기 LDPC 데이터 세트를 생성하는 방식으로 상기 LDPC 인코딩 연산을 수행하는 컨트롤러.
  5. 제3항에 있어서,
    상기 제2 체크부는 상기 LDPC 데이터 세트에 대한 신드롬 체크 동작을 수행하고, 상기 신드롬 체크 동작의 패스(pass) 또는 페일(fail)을 판단하는 컨트롤러.
  6. 제5항에 있어서,
    상기 제2 체크부는 패리티 체크 행렬과 상기 LDPC 데이터 세트를 곱하여 신드롬 벡터를 산출하는 방식으로 상기 신드롬 체크 동작을 수행하는 컨트롤러.
  7. 제6항에 있어서,
    상기 제2 체크부는 상기 신드롬 벡터의 비트들이 모두 ‘0’이면 상기 신드롬 체크 동작을 패스로 판단하고, 상기 신드롬 벡터에 적어도 하나의 ‘1’ 비트가 포함되면 상기 신드롬 체크 동작을 페일로 판단하는 컨트롤러.
  8. 제7항에 있어서, 상기 제2 체크부는,
    상기 신드롬 체크 동작이 패스되면, 상기 LDPC 데이터 세트를 메모리 장치로 전송하고,
    상기 신드롬 체크 동작이 페일되면, 상기 신드롬 벡터의 비트들이 모두‘0’이 되는 체크 노드 값을 찾는 컨트롤러.
  9. 호스트로부터 수신된 제1 데이터를 암호화하고, 상기 암호화된 데이터 세트에 패리티를 추가하여 인코딩하는 호스트 컨트롤러;
    상기 호스트 컨트롤러에서 출력된 데이터 세트를 저장하는 제1 버퍼; 및
    상기 제1 버퍼에서 출력된 데이터 세트에 패리티를 추가하여 에러 체크 동작을 수행하고, 에러가 없으면 제2 데이터를 출력하는 메모리 컨트롤러를 포함하는 컨트롤러.
  10. 제9항에 있어서, 상기 호스트 컨트롤러는,
    상기 제1 데이터에 제1 패리티를 추가하여 제1 패리티 데이터 세트를 출력하는 외부 CRC 인코더(External Cyclic Redundancy Check Encoder);
    상기 제1 패리티 데이터 세트를 암호화하여 암호화된 데이터 세트를 출력하는 암호화 인코더; 및
    상기 암호화된 데이터 세트에 제2 패리티를 추가하고, 상기 암호화된 데이터 세트와 상기 제2 패리티를 인코딩하여 생성된 제2 패리티 데이터 세트를 상기 제1 버퍼에 출력하는 제1 ECC 인코더를 포함하는 컨트롤러.
  11. 제9항에 있어서,
    상기 제1 버퍼는 휘발성 메모리 또는 비휘발성 메모리로 구현되는 컨트롤러.
  12. 제10항에 있어서, 상기 메모리 컨트롤러는,
    상기 제1 버퍼로부터 수신받은 상기 제2 패리티 데이터 세트를 디코딩하여 디코딩 데이터 세트를 출력하는 제1 ECC 디코더;
    상기 디코딩 데이터 세트를 LDPC 인코딩하여, LDPC 패리티가 추가된 LDPC 데이터 세트를 출력하는 제1 체크부; 및
    상기 제1, 제2 및 LDPC 패리티들이 포함된 상기 LDPC 데이터 세트에 대한 신드롬 체크 동작을 수행하는 제2 체크부를 포함하는 컨트롤러.
  13. 제12항에 있어서, 상기 제2 체크부는,
    상기 신드롬 체크 동작이 패스되면, 상기 LDPC 데이터 세트를 상기 제2 데이터로써 출력하고,
    상기 신드롬 체크 동작이 페일되면, 상기 신드롬 체크 동작이 패스될 때까지 체크 노드 값을 변경하는 컨트롤러.
  14. 제12항에 있어서, 상기 메모리 컨트롤러는,
    메모리 장치로부터 리드된 상기 제2 데이터에 대한 에러 정정 동작을 수행하고, 상기 LDPC 패리티가 제거된 상기 디코딩 데이터 세트를 출력하는 제3 체크부; 및
    상기 제3 체크부에서 출력된 상기 디코딩 데이터 세트를 인코딩하여 상기 제2 패리티 데이터 세트를 출력하는 제2 ECC 인코더를 더 포함하는 컨트롤러.
  15. 제14항에 있어서,
    상기 제2 ECC 인코더에서 출력된 상기 제2 패리티 데이터 세트를 저장하는 제2 버퍼를 더 포함하는 컨트롤러.
  16. 제15항에 있어서,
    상기 제2 버퍼는 휘발성 메모리 또는 비휘발성 메모리로 구현되는 컨트롤러.
  17. 제15항에 있어서, 상기 호스트 컨트롤러는
    상기 제2 버퍼로부터 수신받은 상기 제2 패리티 데이터 세트를 디코딩하여 상기 제2 패리티가 제거된 상기 암호화된 데이터 세트를 출력하는 제2 ECC 디코더;
    상기 제2 ECC 디코더에서 출력된 상기 암호화된 데이터 세트의 암호화를 해제하여 상기 제1 패리티 데이터 세트를 출력하는 암호화 디코더; 및
    상기 암호화 디코더에서 출력된 상기 제1 패리티 데이터 세트에서 상기 제1 패리티를 제거하여 상기 제1 데이터를 호스트로 출력하는 외부 CRC 디코더를 더 포함하는 컨트롤러.
  18. 기입 동작 시, 호스트로부터 수신받은 원본 데이터에 제1 및 제2 패리티들을 추가하고, 상기 제1 및 제2 패리티들이 포함된 제1 데이터 세트에 LDPC 패리티를 추가하여 LDPC 인코딩 동작을 수행하고, 상기 제1, 제2 및 LDPC 패리티들이 포함된 제2 데이터 세트를 신드롬 체크하는 컨트롤러; 및
    상기 컨트롤러에서 출력된 상기 제2 데이터 세트를 저장하는 메모리 장치를 포함하고,
    리드 동작 시, 상기 컨트롤러는 상기 메모리 장치로부터 상기 제2 데이터 세트를 수신받고, 상기 제2 데이터 세트에 대한 에러 정정 동작을 수행한 후 상기 원본 데이터를 상기 호스트에 출력하는 메모리 시스템.
  19. 제18항에 있어서, 상기 컨트롤러는,
    상기 원본 데이터에 상기 제1 패리티를 추가한 후 암호화 동작을 수행하고,
    상기 암호화 동작이 수행된 데이터에 상기 제2 패리티를 추가하여 ECC 인코딩 동작을 수행하고,
    상기 ECC 인코딩된 데이터를 버퍼에 임시로 저장한 후, 상기 제2 패리티가 포함된 데이터 세트를 디코딩하여 상기 제1 데이터 세트를 생성하고,
    상기 제1 데이터 세트에 상기 LDPC 패리티를 추가하여 상기 LDPC 인코딩 동작을 수행하고,
    상기 제1, 제2 및 LDPC 패리티들이 포함된 상기 제2 데이터 세트를 신드롬 체크한 후 상기 제2 데이터 세트를 상기 메모리 장치로 전송하는 메모리 시스템.
  20. 제18항에 있어서, 상기 컨트롤러는,
    상기 제2 데이터 세트에 대한 상기 신드롬 체크 동작이 패스되면 상기 제2 데이터 세트를 상기 메모리 장치로 전송하고,
    상기 제2 데이터 세트에 대한 상기 신드롬 체크 동작이 페일되면 상기 신드롬 체크 동작이 패스되는 체크 노드 값을 찾은 후에 상기 제2 데이터 세트를 상기 메모리 장치로 전송하는 메모리 시스템.
KR1020180168761A 2018-12-24 2018-12-24 컨트롤러 및 이를 포함하는 메모리 시스템 KR20200079134A (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020180168761A KR20200079134A (ko) 2018-12-24 2018-12-24 컨트롤러 및 이를 포함하는 메모리 시스템
US16/555,264 US11099932B2 (en) 2018-12-24 2019-08-29 Controller and memory system
CN201910930413.2A CN111352765B (zh) 2018-12-24 2019-09-29 控制器及存储器***
US17/141,319 US11550659B2 (en) 2018-12-24 2021-01-05 Controller and memory system
US17/307,129 US11403174B2 (en) 2018-12-24 2021-05-04 Controller and memory system
US17/851,130 US11953990B2 (en) 2018-12-24 2022-06-28 Controller and memory system
US18/602,031 US20240220363A1 (en) 2018-12-24 2024-03-12 Controller and memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180168761A KR20200079134A (ko) 2018-12-24 2018-12-24 컨트롤러 및 이를 포함하는 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20200079134A true KR20200079134A (ko) 2020-07-02

Family

ID=71096880

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180168761A KR20200079134A (ko) 2018-12-24 2018-12-24 컨트롤러 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (5) US11099932B2 (ko)
KR (1) KR20200079134A (ko)
CN (1) CN111352765B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200079134A (ko) * 2018-12-24 2020-07-02 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11720715B2 (en) * 2021-03-21 2023-08-08 Western Digital Technologies, Inc. Secure data storage device and method of encryption
JP2023044544A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリシステム
US11775381B2 (en) * 2021-09-17 2023-10-03 Micron Technology, Inc. Redundancy metadata schemes for RAIN protection of large codewords
US11815997B2 (en) 2021-11-10 2023-11-14 Samsung Electronics Co., Ltd. Memory controllers, memory systems, and memory modules
US11687405B2 (en) * 2021-12-01 2023-06-27 Western Digital Technologies, Inc. Centralized SRAM error location detection and recovery mechanism
TWI804439B (zh) * 2021-12-21 2023-06-01 慧榮科技股份有限公司 資料加密的錯誤偵測裝置及方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080155372A1 (en) * 2006-12-21 2008-06-26 Radiospire Networks, Inc. Methods and apparatus for improving error indication performance in systems with low-density parity check codes
KR20090014828A (ko) 2007-08-07 2009-02-11 삼성전자주식회사 에러 정정 코드를 암호화하는 플래시 메모리 시스템 및플래시 메모리 시스템의 암호화 방법
CN102067458A (zh) 2008-06-18 2011-05-18 Nxp股份有限公司 用于低密度奇偶校验解码器的节点信息存储方法和***
TW201030526A (en) * 2009-02-09 2010-08-16 Prolific Technology Inc Bridge, data compressing mthod thereof and computer system applying the same
TW201034421A (en) 2009-03-02 2010-09-16 Chang Jung Christian University Encoding device, decoding device and encrypted multimedia system
KR101599834B1 (ko) * 2009-05-28 2016-03-04 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
KR101607307B1 (ko) * 2009-07-09 2016-03-30 삼성전자주식회사 정보 부호화 방법, 정보 복호화 방법, 기록/재생 장치 및 정보 저장 매체
KR20120063329A (ko) 2010-12-07 2012-06-15 삼성전자주식회사 에러 체크 및 정정기 및 그것을 포함하는 메모리 시스템
US9048876B2 (en) * 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8924815B2 (en) * 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
KR20160046467A (ko) * 2014-10-21 2016-04-29 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템, 데이터 저장 시스템 및 그것의 동작 방법
KR102254102B1 (ko) 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102473209B1 (ko) * 2015-12-14 2022-12-02 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10367528B2 (en) * 2016-03-04 2019-07-30 Sandisk Technologies Llc Convolutional low-density parity-check coding
US20170271030A1 (en) * 2016-03-18 2017-09-21 Alibaba Group Holding Limited Method and system for using downgraded flash die for cache applications
KR102616481B1 (ko) * 2016-04-04 2023-12-21 삼성전자주식회사 수신 장치 및 그의 신호 처리 방법
KR20180061870A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US10445190B2 (en) * 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
KR20200079134A (ko) 2018-12-24 2020-07-02 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템

Also Published As

Publication number Publication date
CN111352765B (zh) 2023-11-03
US20200201711A1 (en) 2020-06-25
US11403174B2 (en) 2022-08-02
US11099932B2 (en) 2021-08-24
US11550659B2 (en) 2023-01-10
US20220334922A1 (en) 2022-10-20
US20240220363A1 (en) 2024-07-04
US20210255923A1 (en) 2021-08-19
US11953990B2 (en) 2024-04-09
CN111352765A (zh) 2020-06-30
US20210157675A1 (en) 2021-05-27

Similar Documents

Publication Publication Date Title
US11550659B2 (en) Controller and memory system
JP5776107B2 (ja) メモリコントローラ及び方法におけるデータ完全性
US8726140B2 (en) Dummy data padding and error code correcting memory controller, data processing method thereof, and memory system including the same
US11403167B2 (en) Apparatus and method for sharing data in a data processing system
KR20180019791A (ko) 반도체장치 및 반도체시스템
US11294814B2 (en) Memory system having a memory controller and a memory device having a page buffer
US20150026509A1 (en) Storage device having a data stream converter
US8171378B2 (en) Flash memory system having encrypted error correction code and encryption method for flash memory system
US20200350033A1 (en) Memory controller and memory system having the same
US10572189B2 (en) Method and decoder to adjust an error locator polynomial based on an error parity
KR20180000593A (ko) 데이터의 오류를 정정하는 방법 및 이를 이용하는 반도체장치
KR20160110774A (ko) 메모리 장치 및 이를 포함하는 시스템
US10261860B2 (en) Semiconductor systems
US11082068B2 (en) Error correction circuit, memory controller having error correction circuit, and memory system having memory controller
JP2009157515A (ja) 半導体メモリコントローラおよび半導体メモリ
US20190356331A1 (en) Error correction code unit and error correction method
KR20200128825A (ko) 분리된 rpmb 기능을 가지는 스토리지 시스템 및 그 구동 방법
TW202329147A (zh) 記憶體裝置、錯誤校正碼電路及其操作方法
KR20190043043A (ko) 전자장치
KR20210147686A (ko) 오류 정정 회로 및 오류 정정 인코딩 방법
KR20170130684A (ko) 반도체장치
KR20210023317A (ko) 반도체장치
KR20170140931A (ko) 반도체장치 및 반도체시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal