KR102127287B1 - 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법 - Google Patents

메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법 Download PDF

Info

Publication number
KR102127287B1
KR102127287B1 KR1020140015628A KR20140015628A KR102127287B1 KR 102127287 B1 KR102127287 B1 KR 102127287B1 KR 1020140015628 A KR1020140015628 A KR 1020140015628A KR 20140015628 A KR20140015628 A KR 20140015628A KR 102127287 B1 KR102127287 B1 KR 102127287B1
Authority
KR
South Korea
Prior art keywords
data
memory
error correction
read
error
Prior art date
Application number
KR1020140015628A
Other languages
English (en)
Other versions
KR20150094391A (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 KR1020140015628A priority Critical patent/KR102127287B1/ko
Priority to US14/619,429 priority patent/US9552896B2/en
Publication of KR20150094391A publication Critical patent/KR20150094391A/ko
Application granted granted Critical
Publication of KR102127287B1 publication Critical patent/KR102127287B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법에 관한 것이다. 본 발명의 데이터 읽기 방법은, 불휘발성 메모리의 메모리 셀들로부터 데이터를 읽는 단계, 데이터를 내부 메모리에 저장하는 단계, 내부 메모리에 저장된 데이터 중 일부 데이터를 백업 데이터로 덮어쓰는 단계, 내부 메모리에 저장된 백업 데이터를 이용하여 에러 정정을 수행하는 단계, 그리고 내부 메모리에 저장된 백업 데이터를 에러 정정에 의해 정정된 데이터로 덮어쓰는 단계로 구성된다.

Description

메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법{MEMORY CONTROLLER AND METHOD OF READING DATA FROM NONVOLATILE MEMORY BY MEMORY CONTROLLER}
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법에 관한 것이다.
반도체 메모리(semiconductor memory)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비소 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리는 크게 휘발성 메모리(Volatile memory)와 불휘발성 메모리(Nonvolatile memory)로 구분된다.
휘발성 메모리는 전원 공급이 차단되면 저장하고 있던 데이터를 소실하는 메모리 장치이다. 휘발성 메모리는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등을 포함한다. 불휘발성 메모리는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다.
반도체 메모리는 메모리 컨트롤러와 함께 사용된다. 메모리 컨트롤러는 반도체 메모리의 쓰기, 읽기 등과 같은 제반 동작들을 제어하도록 구성되는 반도체 회로이다. 메모리 컨트롤러는 랜덤 액세스 메모리를 동작 메모리로 사용하여 반도체 메모리를 제어하도록 구성된다.
메모리 컨트롤러가 사용하는 동작 메모리의 사이즈(즉, 용량)는, 랜덤 액세스 메모리의 제조 비용과 밀접한 관계를 갖는다. 동작 메모리의 사이즈가 증가할수록, 동작 메모리의 제조 비용은 증가한다. 동작 메모리의 사이즈가 감소할수록, 동작 메모리의 제조 비용은 감소한다. 또한, 동작 메모리의 사이즈는 메모리 컨트롤러의 동작 성능과도 밀접한 관계를 갖는다. 동작 메모리의 사이즈가 증가할수록, 메모리 컨트롤러의 동작 성능은 향상된다. 동작 메모리의 사이즈가 감소할수록, 메모리 컨트롤러의 동작 성능은 감소된다.
본 발명의 목적은, 저용량의 동작 메모리를 이용하여 높은 동작 성능을 제공하는 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법
내부 메모리를 포함하는 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 본 발명의 실시 예에 따른 데이터 읽기 방법은, 상기 불휘발성 메모리의 메모리 셀들로부터 데이터를 읽는 단계; 상기 데이터를 상기 내부 메모리에 저장하는 단계; 상기 내부 메모리에 저장된 상기 데이터 중 일부 데이터를 백업 데이터로 덮어쓰는 단계; 상기 내부 메모리에 저장된 상기 백업 데이터를 이용하여 에러 정정을 수행하는 단계; 그리고 상기 내부 메모리에 저장된 상기 백업 데이터를 상기 에러 정정에 의해 정정된 데이터로 덮어쓰는 단계를 포함한다.
실시 예로서, 상기 백업 데이터를 상기 정정된 데이터로 덮어쓰는 단계 이후에, 상기 내부 메모리에 저장된 데이터를 상기 불휘발성 메모리로부터 읽어진 데이터로서 외부로 출력하는 단계를 더 포함한다.
실시 예로서, 상기 데이터의 사이즈는, 상기 불휘발성 메모리가 한 번에 데이터를 읽는 읽기 단위의 사이즈이다.
실시 예로서, 상기 백업 데이터는 상기 데이터 중 에러를 갖는 일부 데이터에 덮어쓰기 된다.
실시 예로서, 상기 메모리 셀들로부터 연판정을 이용하여 제2 데이터를 읽는 단계를 더 포함하고, 상기 백업 데이터는 상기 연판정과 연관된 데이터이다.
실시 예로서, 상기 메모리 셀들로부터 제2 데이터를 읽는 단계를 더 포함하고, 상기 에러 정정을 수행하는 단계는, 상기 백업 데이터 및 상기 제2 데이터를 이용하여 수행된다.
실시 예로서, 상기 제2 데이터가 읽어질 때의 읽기 전압은 상기 데이터가 읽어질 때의 읽기 전압과 다르다.
실시 예로서, 상기 메모리 셀들로부터 읽어지는 데이터는 복수의 필드들을 포함하고, 상기 데이터를 상기 내부 메모리에 저장하는 단계는, 상기 데이터의 각 필드에 대해 에러 정정 디코딩을 수행하여, 제2 데이터를 생성하는 단계; 그리고 상기 제2 데이터를 상기 내부 메모리에 저장하는 단계를 포함한다.
실시 예로서, 상기 데이터 중 일부 데이터를 상기 백업 데이터로 덮어쓰는 단계는, 상기 메모리 셀들로부터 연판정을 이용하여 제3 데이터를 읽는 단계; 상기 제2 데이터의 필드들 중 에러를 갖는 필드에 대해 상기 제3 데이터를 이용하여 제2 에러 정정을 수행하여, 제4 데이터를 생성하는 단계; 그리고 상기 내부 메모리에 저장된 상기 제2 데이터의 필드들 중 에러 필드에, 상기 제3 데이터의 필드들 중 대응하는 필드를 상기 백업 데이터로서 덮어쓰는 단계를 포함하고, 상기 에러 필드는, 상기 제2 데이터의 필드들 중 상기 제2 에러 정정에 의해 정정되지 않는 에러를 갖는 필드이다.
실시 예로서, 상기 백업 데이터를 이용하여 상기 에러 정정을 수행하는 단계는, 상기 메모리 셀들로부터 제3 데이터를 읽는 단계; 그리고 상기 에러 필드에 대응하는 상기 제3 데이터의 필드에 대해 상기 백업 데이터를 이용하여 제3 에러 정정 디코딩을 수행하는 단계를 포함한다.
실시 예로서, 상기 백업 데이터를 상기 에러 정정에 의해 정정된 데이터로 덮어쓰는 단계는, 상기 내부 메모리에 저장된 상기 에러 필드를, 상기 제3 에러 정정 디코딩에 의해 에러가 정정된 필드로 덮어쓰는 단계를 포함한다.
실시 예로서, 상기 에러 정정은 저밀도 패리티 검사(Low Density Parity Check, LDPC)에 기반하여 수행된다.
본 발명의 실시 예에 따른 메모리 컨트롤러는, 불휘발성 메모리로부터 데이터를 읽도록 구성되는 메모리 관리자; 상기 메모리 관리자로부터 상기 데이터를 수신하고, 상기 메모리 관리자로부터 수신되는 상기 데이터의 에러를 정정하도록 구성되는 에러 정정 인코더 및 디코더; 그리고 상기 에러 정정 인코더 및 디코더에 의해 에러 정정된 데이터를 저장하도록 구성되는 내부 메모리를 포함하고, 상기 내부 메모리에 저장된 상기 에러 정정에 의해 정정된 데이터의 일부 데이터는 백업 데이터로 덮어쓰기 되고, 상기 에러 정정 인코더 및 디코더는 상기 백업 데이터를 이용하여 제2 에러 정정을 수행하도록 구성된다.
실시 예로서, 상기 에러 정정 디코더는, 상기 메모리 관리자로부터 수신되는 제2 데이터 및 상기 백업 데이터를 이용하여 상기 제2 에러 정정을 수행하도록 구성되고, 상기 제2 에러 정정에 의해 정정된 데이터에 의해 상기 백업 데이터가 덮어쓰기 된다.
실시 예로서, 상기 메모리 관리자, 상기 에러 정정 인코더 및 디코더, 그리고 상기 내부 메모리는 하나의 반도체 칩으로 집적된다.
본 발명에 따르면, 에러 정정 과정에서 사용되지 않는 에러 데이터가 저장된 내부 메모리에 에러 정정 과정에서 사용되는 백업 데이터가 저장된다. 제한된 용량을 갖는 내부 메모리에서, 백업 데이터가 저장되는 공간이 추가로 확보되므로, 대용량의 백업 데이터가 내부 메모리에 동시에 백업될 수 있다. 따라서, 저용량의 내부 메모리를 이용하여, 향상된 동작 성능을 제공하는 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 메모리 블록을 보여주는 회로도이다.
도 4는 본 발명의 실시 예에 따른 메모리 컨트롤러를 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 데이터 읽기 방법을 보여주는 순서도이다.
도 6은 데이터 읽기의 제1 섹션을 보여주는 순서도이다.
도 7은 메모리 셀들의 문턱 전압들의 산포 범위들 및 읽기 전압들을 보여준다.
도 8은 제1 섹션이 수행되는 동안 처리되는 데이터의 예를 보여준다.
도 9는 데이터 읽기의 제2 섹션을 보여주는 순서도이다.
도 10은 메모리 셀들의 문턱 전압들의 산포 범위들 및 읽기 전압들의 제2 예를 보여준다.
도 11은 제2 섹션이 수행되는 동안 처리되는 데이터의 예를 보여준다.
도 12는 데이터 읽기의 제3 섹션을 보여주는 순서도이다.
도 13은 메모리 셀들의 문턱 전압들의 산포 범위들 및 읽기 전압들의 제3 예를 보여준다.
도 14는 제3 섹션이 수행되는 동안 처리되는 데이터의 예를 보여준다.
도 15는 본 발명의 다른 예에 따른 메모리 셀 어레이를 보여주는 블록도이다.
도 16은 본 발명의 다른 실시 예에 따른 메모리 블록을 보여주는 회로도이다.
도 17은 본 발명의 제 2 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 18은 본 발명의 실시 예에 따른 스토리지 모듈을 보여주는 블록도이다.
도 19는 본 발명의 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 불휘발성 메모리(110) 및 메모리 컨트롤러(120)를 포함한다.
불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신할 수 있다. 불휘발성 메모리(110)는 메모리 컨트롤러(120)와 데이터(DATA)를 교환할 수 있다.
커맨드(CMD)는 미리 정해진 동작을 수행할 것을 지시하는 신호일 수 있다. 불휘발성 메모리(110)는 커맨드(CMD)에 응답하여 읽기, 프로그램, 소거 등과 같은 다양한 동작들을 수행할 수 있다. 어드레스(ADDR)는 불휘발성 메모리(110)의 저장 공간들을 식별하는 신호일 수 있다. 불휘발성 메모리(110)는 어드레스(ADDR)에 의해 식별된 저장 공간에 대해, 커맨드(CMD)에 의해 지정된 동작(예를 들어, 읽기, 프로그램, 소거 등)을 수행할 수 있다.
메모리 컨트롤러(120)는 불휘발성 메모리(110)를 제어하도록 구성된다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 커맨드(CMD) 및 어드레스(ADDR)를 전송할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)와 데이터(DATA)를 교환할 수 있다.
메모리 컨트롤러(120)는 읽기 커맨드, 프로그램 커맨드 또는 소거 커맨드를 불휘발성 메모리(110)로 전송하여, 불휘발성 메모리(110)가 읽기, 프로그램 또는 소거를 수행하도록 제어할 수 있다.
메모리 컨트롤러(120)는 내부 메모리(123) 및 에러 정정 인코더 및 디코더(127)를 포함한다.
내부 메모리(123)는 메모리 컨트롤러(120)의 동작 메모리, 캐시 메모리, 또는 버퍼 메모리로 사용되는 랜덤 액세스 메모리일 수 있다. 내부 메모리(123)는 SRAM, DRAM, SDRAM, MRAM, RRAM, PRAM, FRAM 등과 같은 랜덤 액세스 메모리를 포함할 수 있다.
에러 정정 인코디 및 디코더(127)는 불휘발성 메모리(110)에 기입될 데이터를 에러 정정 인코딩할 수 있다. 메모리 컨트롤러(120)는 에러 정정 인코더 및 디코더(127)에 의해 인코딩된 데이터를 불휘발성 메모리(110)에 기입할 수 있다. 에러 정정 인코더 및 디코더(127)는 불휘발성 메모리(110)로부터 읽어지는 데이터를 에러 정정 디코딩할 수 있다. 예를 들어, 에러 정정 인코더 및 디코더(127)는 불휘발성 메모리(110)로부터 읽어지는 데이터의 에러를 정정할 수 있다. 메모리 컨트롤러(120)는 에러 정정 인코더 및 디코더(127)에 의해 디코딩된 데이터를 최종적인 읽기 데이터로서 외부로 출력하거나, 불휘발성 메모리(110)에 재기입하거나, 또는 내부적으로 사용할 수 있다.
예시적으로, 메모리 컨트롤러(120), 내부 메모리(123), 그리고 에러 정정 인코디 및 디코더(127)는 하나의 반도체 칩으로 집적될 수 있다. 예시적으로, 불휘발성 메모리(110) 및 메모리 컨트롤러(120)는 하나의 패키지로 실장될 수 있다.
예시적으로, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제어 신호들(미도시)을 더 전송할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 어드레스 래치 인에이블(ALE, Address Latch Enable) 신호, 커맨드 래치 인에이블(CLE, Command Latch Enable) 신호, 읽기 인에이블(RE, Read Enable) 신호, 쓰기 인에이블(WE, Write Enable) 신호, 칩 인에이블(CE, Chip Enable) 신호, 데이터 스트로브(DQS, Data Strobe) 신호, 쓰기 보호(WP, Write Protect) 신호 등을 전송할 수 있다.
어드레스 래치 인에이블(ALE) 신호는 불휘발성 메모리(110)로 어드레스(ADDR)가 전송됨을 알리는 신호일 수 있다. 커맨드 래치 인에이블(CLE) 신호는 불휘발성 메모리(110)로 커맨드(CMD)가 전송됨을 알리는 신호일 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 읽기 인에이블(RE) 신호를 전송하여, 불휘발성 메모리(110)의 읽기를 제어할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 쓰기 인에이블(WE) 신호를 전송하여, 불휘발성 메모리(110)의 프로그램을 제어할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 칩 인에이블(CE) 신호를 전송하여, 불휘발성 메모리(110)의 메모리 칩들 중 하나를 선택할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 데이터 스트로브(DQS) 신호를 전송하여, 불휘발성 메모리(110)와의 데이터 통신을 제어할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 쓰기 보호(WP) 신호를 전송하여, 불휘발성 메모리(110)에서 의도하지 않은 쓰기가 발생하는 것을 방지할 수 있다.
예시적으로, 메모리 컨트롤러(120)는 불휘발성 메모리(110)에 다양한 전압들을 제공할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)에 전원 전압(VCC), 접지 전압(VSS), 입출력용 전원 전압(VCCQ), 입출력용 접지 전압(VSSQ) 등을 제공할 수 있다.
이하에서, 본 발명의 기술적 사상을 간결하게 설명하기 의하여, 불휘발성 메모리(110)는 낸드 플래시 메모리를 포함하는 것으로 설명된다. 그러나, 본 발명의 기술적 사상은 낸드 플래시 메모리에 한정되지 않는다. 본 발명의 기술적 사상은 플래시 메모리, EPROM (Electrically Programmable Read Only Memory), EEPROM(Electrically Erasible & Programmable ROM), PRAM (Phase Change Random Access Memory), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함하는 불휘발성 메모리에 적용될 수 있다. 또한, 본 발명의 기술적 사상은 불휘발성 메모리(110)에 한정되지 않는다. 본 발명의 기술적 사상은 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리에도 적용될 수 있다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리(110)를 보여주는 블록도이다. 도 2를 참조하면, 불휘발성 메모리(110)는 메모리 셀 어레이(111), 어드레스 디코더 회로(113), 페이지 버퍼 회로(115), 데이터 입출력 회로(117), 그리고 제어 로직 회로(119)를 포함한다.
메모리 셀 어레이(111)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 복수의 메모리 셀들을 포함한다. 각 메모리 블록은 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WL), 그리고 적어도 하나의 스트링 선택 라인(SSL)을 통해 어드레스 디코더 회로(113)에 연결될 수 있다. 각 메모리 블록은 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(115)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 복수의 비트 라인들(BL)에 공통으로 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)의 메모리 셀들은 동일한 구조들을 가질 수 있다.
어드레스 디코더 회로(113)는 복수의 접지 선택 라인들(GSL), 복수의 워드 라인들(WL), 그리고 복수의 스트링 선택 라인들(SSL)을 통해 메모리 셀 어레이(111)에 연결된다. 어드레스 디코더 회로(113)는 제어 로직 회로(119)의 제어에 따라 동작한다. 어드레스 디코더 회로(113)는 메모리 컨트롤러(120)로부터 어드레스를 수신할 수 있다. 어드레스 디코더 회로(113)는 수신된 어드레스(ADDR)를 디코딩하고, 디코딩된 어드레스에 따라 워드 라인들(WL)에 인가되는 전압들을 제어할 수 있다. 예를 들어, 프로그램 시에, 어드레스 디코더 회로(113)는, 제어 로직 회로(119)의 제어 따라, 워드 라인들(WL)에 패스 전압을 인가할 수 있다. 프로그램 시에, 어드레스 디코더 회로(113)는, 제어 로직 회로(119)의 제어에 따라, 워드 라인들(WL) 중 어드레스(ADDR)가 가리키는 워드 라인에 프로그램 전압을 더 인가할 수 있다.
페이지 버퍼 회로(115)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(111)에 연결된다. 페이지 버퍼 회로(115)는 복수의 데이터 라인들(DL)을 통해 데이터 입출력 회로(117)와 연결된다. 페이지 버퍼 회로(115)는 제어 로직 회로(119)의 제어에 따라 동작한다.
페이지 버퍼 회로(115)는 메모리 셀 어레이(111)의 메모리 셀들에 프로그램될 데이터 또는 메모리 셀들로부터 읽히는 데이터를 저장할 수 있다. 프로그램 시에, 페이지 버퍼 회로(115)는 메모리 셀들에 프로그램될 데이터를 저장할 수 있다. 저장된 데이터에 기반하여, 페이지 버퍼 회로(115)는 복수의 비트 라인들(BL)을 바이어스할 수 있다. 프로그램 시에, 페이지 버퍼 회로(115)는 쓰기 드라이버로 기능할 수 있다. 읽기 시에, 페이지 버퍼 회로(115)는 비트 라인들(BL)의 전압들을 센싱하고, 센싱 결과를 저장할 수 있다. 읽기 시에, 페이지 버퍼 회로(115)는 감지 증폭기로 기능할 수 있다.
데이터 입출력 회로(117)는 복수의 데이터 라인들(DL)을 통해 페이지 버퍼 회로(115)와 연결된다. 데이터 입출력 회로(117)는 메모리 컨트롤러(120, 도 1 참조)와 데이터(DATA)를 교환할 수 있다.
데이터 입출력 회로(117)는 메모리 컨트롤러(120)로부터 수신되는 데이터(DATA)를 임시로 저장할 수 있다. 데이터 입출력 회로(117)는 저장된 데이터를 페이지 버퍼 회로(115)로 전달할 수 있다. 데이터 입출력 회로(117)는 페이지 버퍼 회로(115)로부터 전달되는 데이터(DATA)를 임시로 저장할 수 있다. 데이터 입출력 회로(117)는 저장된 데이터(DATA)를 메모리 컨트롤러(110)로 전송할 수 있다. 데이터 입출력 회로(117)는 버퍼 메모리로 기능할 수 있다.
제어 로직 회로(119)는 메모리 컨트롤러(120)로부터 커맨드(CMD)를 수신한다. 제어 로직 회로(119)는 수신된 커맨드(CMD)를 디코딩하고, 디코딩된 커맨드에 따라 불휘발성 메모리(110)의 제반 동작을 제어할 수 있다. 제어 로직 회로(119)는 메모리 컨트롤러(120)로부터 다양한 제어 신호들 및 전압들을 더 수신할 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 블록(BLKa)을 보여주는 회로도이다. 예시적으로, 도 2에 도시된 메모리 셀 어레이(111)의 복수의 메모리 블록들(BLK1~BLKz) 중 하나의 메모리 블록(BLKa)이 도 3에 도시된다.
도 2 및 도 3을 참조하면, 메모리 블록(BKLa)은 복수의 스트링들(SR)을 포함한다. 복수의 스트링들(SR)은 복수의 비트 라인들(BL1~BLn)에 각각 연결될 수 있다. 각 스트링(SR)은 접지 선택 트랜지스터(GST), 메모리 셀들(MC), 그리고 스트링 선택 트랜지스터(SST)를 포함한다.
각 스트링(SR)의 접지 선택 트랜지스터(GST)는 메모리 셀들(MC) 및 공통 소스 라인(CSL)의 사이에 연결된다. 복수의 스트링들(SR)의 접지 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결된다.
각 스트링(SR)의 스트링 선택 트랜지스터(SST)는 메모리 셀들(MC) 및 비트 라인(BL)의 사이에 연결된다. 복수의 스트링들(SR)의 스트링 선택 트랜지스터들(SST)은 복수의 비트 라인들(BL1~BLn)에 각각 연결된다. 복수의 비트 라인들(BL1~BLn)은 페이지 버퍼 회로(115)에 연결될 수 있다.
각 스트링(SR)에서, 접지 선택 트랜지스터(GST) 및 스트링 선택 트랜지스터(SST) 사이에 복수의 메모리 셀들(MC)이 제공된다. 각 스트링(SR)에서, 복수의 메모리 셀들(MC)은 직렬 연결될 수 있다.
복수의 스트링들(SR)에서, 공통 소스 라인(CSL)으로부터 동일한 순서에 위치한 메모리 셀들(MC)은 하나의 워드 라인에 공통으로 연결될 수 있다. 복수의 스트링들(SR)의 메모리 셀들(MC)은 복수의 워드 라인들(WL1~WLm)에 연결될 수 있다. 복수의 워드 라인들(WL1~WLm)은 어드레스 디코더 회로(113)에 연결될 수 있다.
하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)은 하나 또는 그 이상의 페이지 데이터들(PD)을 저장할 수 있다. 하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)에 프로그램되는 페이지 데이터들은 하나의 메모리 셀(MC)에 프로그램되는 비트들에 각각 대응할 수 있다.
하나의 메모리 셀(MC)에 프로그램되는 제1 비트는 제1 페이지 데이터(PD1)에 대응할 수 있다. 제1 페이지 데이터(PD1)는 하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)에 제1 비트들로 프로그램될 수 있다. 하나의 메모리 셀(MC)에 프로그램되는 제2 비트는 제2 페이지 데이터(PD2)에 대응할 수 있다. 제2 페이지 데이터(PD2)는 하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)에 제2 비트들로 프로그램될 수 있다. 하나의 메모리 셀(MC)에 프로그램되는 제3 비트는 제3 페이지 데이터(PD3)에 대응할 수 있다. 제3 페이지 데이터(PD3)는 하나의 워드 라인(WL)에 연결된 메모리 셀들에 제3 비트들로 프로그램될 수 있다. 하나의 메모리 셀(MC)에 프로그램되는 제k 비트는 제k 페이지 데이터(PDk)에 대응할 수 있다. 제k 페이지 데이터(PDk)는 하나의 워드 라인(WL)에 연결된 메모리 셀들에 제k 비트들로 프로그램될 수 있다.
간결한 설명을 위하여, 하나의 워드 라인에 연결된 메모리 셀들(MC)에 세 개의 페이지 데이터들이 프로그램되는 것으로 가정된다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않는다. 본 발명의 기술적 사상은 하나의 워드 라인에 연결된 메모리 셀들(MC)에 k 개(k는 1 이상의 자연수)의 페이지 데이터들이 프로그램되는 예에 적용될 수 있다.
도 4는 본 발명의 실시 예에 따른 메모리 컨트롤러(120)를 보여주는 블록도이다. 도 1 및 도 4를 참조하면, 메모리 컨트롤러(120)는 버스(121), 코어(122), 내부 메모리(123), 호스트 관리자(126), 에러 정정 인코더 및 디코더(127), 그리고 메모리 관리자(128)를 포함한다.
버스(121)는 메모리 컨트롤러(120)의 내부 구성 요소들 사이에 채널을 제공하도록 구성된다. 예를 들어, 버스(121)는 AMBA (Advanced Microcontroller Bus Architecture), AHB (Advanced High performance Bus), ASB (Advanced Systen Bus), APB (Advanced Peripheral Bus), PCI (Peripheral Component Interconnect), PCI-express 등과 같은 다양한 버스 프로토콜들 중 하나에 기반하여 동작할 수 있다.
코어(122)는 메모리 컨트롤러(120)의 구성 요소들을 제어하고, 메모리 컨트롤러(120)의 제반 동작을 제어할 수 있다. 코어(122)는 명령의 수행, 데이터의 처리, 장치의 제어 등을 수행할 수 있다.
내부 메모리(123)는 코어(122)의 동작 메모리, 캐시 메모리, 버퍼 메모리 등으로 사용될 수 있다. 내부 메모리(123)는 SRAM, DRAM, SDRAM, PRAM, MRAM, RRAM, FRAM 등과 같은 랜덤 액세스 메모리를 포함할 수 있다. 내부 메모리(123)는 제 영역(124) 및 제2 영역(125)을 포함한다.
제1 영역(124)는 처리 영역일 수 있다. 예를 들어, 제1 영역(124)은 코어(122) 또는 메모리 컨트롤러(120)의 다른 구성 요소(예를 들어, 에러 정정 인코더 및 디코더(127))가 알고리즘을 수행할 때 사용하도록 할당된 영역일 수 있다.
제2 영역(125)은 호스트 버퍼 영역일 수 있다. 예를 들어, 제2 영역(125)은 메모리 컨트롤러(120)가 외부 호스트로 출력할 데이터를 저장하도록 할당된 영역일 수 있다.
호스트 관리자(126)는 코어(122)의 제어에 따라 동작한다. 호스트 관리자(126)는 외부 호스트와의 통신을 관리하도록 구성된다. 호스트 관리자(126)는 외부 호스트로부터 수신되는 커맨드를 처리하여 코어(122) 또는 메모리 관리자(128)로 전달할 수 있다. 호스트 관리자(126)는 외부 호스트로부터 수신되는 데이터를 내부 메모리(123)에 저장할 수 있다. 호스트 관리자(126)는 내부 메모리(123)의 호스트 버퍼 영역(125)에 저장된 데이터를 외부 호스트로 출력할 수 있다.
에러 정정 인코더 및 디코더(127)는 코어(122)의 제어에 따라 동작한다. 에러 정정 인코더 및 디코더(127)는 쓰기 데이터를 인코딩하도록 구성된다. 예를 들어, 에러 정정 인코더 및 디코더(127)는 외부 호스트로부터 수신되어 내부 메모리(123)에 저장된 데이터, 또는 불휘발성 메모리(110)에 기입될 데이터를 인코딩할 수 있다. 에러 정정 인코더 및 디코더(127)는 읽기 데이터를 디코딩하도록 구성된다. 예를 들어, 에러 정정 인코더 및 디코더(127)는 불휘발성 메모리(110)로부터 읽어져 내부 메모리(123)에 저장된 데이터, 또는 외부 호스트로 출력될 데이터를 디코딩할 수 있다. 에러 정정 디코딩을 통해, 에러 정정 인코더 및 디코더(127)는 데이터의 에러를 정정할 수 있다.
예시적으로, 에러 정정 인코더 및 디코더(127)는 저밀도 패리티 검사(Low Density Parity Check)에 기반하여 인코딩 및 디코딩을 수행할 수 있다. 예를 들어, 에러 정정 인코더 및 디코더(127)는 에러 정정이 수행될 데이터에 미리 정해진 우도값들을 사상할 수 있다. 에러 정정 인코더 및 디코더(127)는 에러 정정이 수행될 데이터의 각 비트의 값에 따라, 해당 비트에 우도값을 사상할 수 있다. 예를 들어, 각 비트가 '1'의 값을 가질 때, 해당 비트에 제1 우도값이 사상될 수 있다. 각 비트가 '0'의 값을 가질 때, 해당 비트에 제2 우도값이 사상될 수 있다. 우도값들이 사상된 사상 데이터 및 미리 정해진 패리티 검사 행렬(Parity Check Matrix)를 이용하여, 에러가 정정될 수 있다.
메모리 관리자(128)는 코어(122)의 제어에 따라 동작한다. 메모리 관리자(128)는 불휘발성 메모리(110)를 제어하도록 구성된다. 불휘발성 메모리(110)는 코어(122) 또는 호스트 관리자(126)로부터의 명령에 따라, 불휘발성 메모리(110)에 읽기, 쓰기 또는 소거 커맨드를 전송할 수 있다. 메모리 관리자(128)는 불휘발성 메모리(110)에 데이터를 전송하거나 불휘발성 메모리(110)로부터 데이터를 수신할 수 있다. 메모리 관리자(128)는 불휘발성 메모리(110)로 어드레스를 전송할 수 있다. 메모리 관리자(128)는 불휘발성 메모리(110)로 다양한 제어 신호들 및 전압들을 제공할 수 있다.
도 5는 본 발명의 실시 예에 따른 데이터 읽기 방법을 보여주는 순서도이다. 도 1 내지 도 5를 참조하면, S110 단계에서, 메모리 셀들(MC)로부터 제1 데이터가 읽어진다. 예를 들어, 하나의 워드 라인(예를 들어, WL2)에 연결된 메모리 셀들(MC)로부터 제1 데이터가 읽어질 수 있다. 예를 들어, 제1 데이터는 불휘발성 메모리(110)에서 한 번에 데이터가 읽어지는 읽기 단위에 대응할 수 있다. 제1 데이터는, 워드 라인(WL2)에 연결된 메모리 셀들(MC)에 저장된 세 개의 페이지 데이터들(PD1~PD3) 중 하나의 페이지 데이터에 대응할 수 있다.
S120 단계에서, 제1 데이터가 내부 메모리(123)에 저장된다. 예시적으로, 제1 데이터는 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)에 저장될 수 있다.
S110 단계 및 S120 단계는 데이터 읽기의 제1 섹션을 구성할 수 있다. 제1 섹션은 도 6 내지 도 8을 참조하여 더 상세하게 설명된다.
S130 단계에서, 내부 메모리(123)에 저장된 제1 데이터 중 일부 데이터가 백업 데이터로 덮어쓰기된다. 백업 데이터는 불휘발성 메모리(110)로부터 읽어진 제1 데이터를 처리하기 위해 필요한 데이터일 수 있다. 백업 데이터는, 코어(121) 또는 에러 정정 인코터 및 디코더(127)가 특정한 알고리즘을 수행하기 위해 필요한 데이터일 수 있다. S130 단계는 데이터 읽기의 제2 섹션을 구성할 수 있다. 제2 섹션은 도 9 내지 도 11을 참조하여 더 상세하게 설명된다. 백업 데이터는 에러 정정 인코디 및 디코더(127)가 에러 정정, 즉 저밀도 패리티 검사에 기반한 에러 정정을 수행하기 위해 필요한 데이터일 수 있다.
일부 데이터는 제1 데이터 중 에러를 갖는 데이터를 포함할 수 있다. 즉, 백업 데이터는 제1 데이터 중 에러를 갖는 일부 데이터를 덮어쓸 수 있다.
S140 단계에서, 백업 데이터를 이용하여 에러 정정이 수행된다. 에러 정정 디코더 및 인코더(127)는 내부 메모리(123)에 저장된 백업 데이터를 이용하여 에러 정정을 수행할 수 있다. 에러 정정 디코더 및 인코더(127)는 내부 메모리(123)에 저장된 백업 데이터를 이용하여, 불휘발성 메모리(110)로부터 읽어진 제1 데이터와 연관된 에러 정정을 수행할 수 있다. 에러 정정 디코더 및 인코더(127)는 백업 데이터를 이용하여, 불휘발성 메모리(110)로부터 읽어진 제1 데이터를 에러가 없는 최종 데이터로 디코딩하기 위한 에러 정정을 수행할 수 있다.
S150 단계에서, 내부 메모리(123)에 저장된 백업 데이터가 정정된 데이터로 덮어쓰기된다. 예를 들어, 백업 데이터에 의해 덮어쓰기된 일부 데이터에 대응하며, 에러 정정에 의해 에러를 갖지 않게 된 데이터가 백업 데이터를 덮어쓸 수 있다.
S140 단계 및 S150 단계는 데이터 읽기의 제3 섹션을 구성한다. 제3 섹션은 도 12 내지 도 14를 참조하여 더 상세하게 설명된다.
상술된 바와 같이, 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)은 불휘발성 메모리(110)로부터 읽어진 제1 데이터를 저장하도록 할당된다. 통상적으로, 에러 정정을 수행하기 위한 처리 데이터는 내부 메모리(123)의 제1 영역(124, 처리 영역)에 저장되도록 할당된다. 본 발명의 실시 예에 따르면, 처리 데이터인 백업 데이터는 제1 영역(124, 처리 영역)이 아닌 제2 영역(125, 호스트 버퍼 영역)에 저장된다. 백업 데이터는 제2 영역(125, 호스트 버퍼 영역)에 저장된 제1 데이터 중 무효한 부분에 덮어쓰기된다. 구체적으로, 백업 데이터는 제2 영역(125, 호스트 버퍼 영역)에 저장된 제1 데이터 중 에러를 갖는 부분에 덮어쓰기된다. 따라서, 불휘발성 메모리(110)로부터 데이터를 읽는 데이터 읽기에 영향을 주지 않으면서, 백업 데이터(즉, 처리 데이터)가 제1 영역(124, 처리 영역)이 아닌 제2 영역(125, 호스트 버퍼 영역)에 저장된다.
따라서, 내부 메모리(123)의 제1 영역(124, 처리 영역)의 용량이 충분하지 않은 경우, 백업 데이터가 저장될 공간이 제2 영역(125, 호스트 버퍼 영역)에 확보되므로, 메모리 시스템(100)의 동작 성능이 향상될 수 있다. 또한, 백업 데이터가 저장될 저장 공간이 제1 영역(124, 처리 영역)에 필요하지 않으므로, 제1 영역의 용량이 감소될 수 있으며, 메모리 시스템(100)의 제조 비용이 감소될 수 있다. 특히, eMMC (embeded MultiMedia Card), UFS (Universal Flash Storage)와 같이 제한된 내부 메모리를 갖는 장치들에 본 발명의 기술적 사상이 적용되면, 해당 장치들의 동작 성능이 대폭 향상될 수 있다.
도 6은 데이터 읽기의 제1 섹션을 보여주는 순서도이다. 도 7은 메모리 셀들(MC)의 문턱 전압들의 산포 범위들 및 읽기 전압들을 보여준다. 도 7에서, 가로 축은 전압(또는 메모리 셀들(MC)의 문턱 전압)을 가리키고, 세로 축은 메모리 셀들의 수를 가리킨다. 도 8은 제1 섹션이 수행되는 동안 처리되는 데이터의 예를 보여준다.
도 1 내지 도 4, 그리고 도 6 내지 도 8을 참조하면, S210 단계에서, 메모리 셀들로부터 제1 데이터가 읽어진다. 예를 들어, 하나의 워드 라인(예를 들어, WL2)에 연결된 메모리 셀들(MC)로부터 제1 데이터(D1)가 읽어질 수 있다. 제1 데이터(D1)는 워드 라인(WL2)에 연결된 메모리 셀들(MC)에 저장된 세 개의 페이지 데이터들(PD1~PD3) 중 하나의 페이지 데이터에 대응할 수 있다. 제1 데이터(D1)는 경판정(hard decision)을 이용하여 읽어질 수 있다.
워드 라인(WL2)에 연결된 메모리 셀들(MC)에 세 개의 페이지 데이터들(PD1~PD3)이 기입된다. 각 메모리 셀(MC)은 3-비트를 저장할 수 있다. 각 메모리 셀(MC)에 저장되는 비트들은 제1 비트(B1), 제 비트(B2), 그리고 제3 비트(B3)일 수 있다. 메모리 셀들(MC1)의 제1 비트들(B1)은 제1 페이지 데이터(PD1)를 형성하고, 제2 비트들(B2)은 제2 페이지 데이터(PD2)를 형성하고, 제3 비트들(B3)은 제3 페이지 데이터(PD3)를 형성할 수 있다.
메모리 셀들(MC)은, 저장된 데이터에 따라 서로 다른 문턱 전압의 산포 범위들을 가질 수 있다. 메모리 셀들(MC)의 문턱 전압들의 레벨들을 판별함으로써, 메모리 셀들(MC)에 저장된 데이터가 판별될 수 있다.
예시적으로, 메모리 셀들(MC)은 소거 상태(E)와 제1 내지 제7 프로그램 상태들(P1~P7)에 해당하는 문턱 전압 산포 범위들을 가질 수 있다. 소거 상태(E) 및 제1 내지 제3 프로그램 상태들(P1~P3) 중 하나의 범위에 대응하는 문턱 전압을 갖는 메모리 셀(MC)은 '1'의 값을 갖는 제1 비트(B1)를 가질 수 있다. 제4 내지 제7 프로그램 상태들(P4~P7) 중 하나의 범위에 대응하는 문턱 전압을 갖는 메모리 셀(MC)은 '0'의 값을 갖는 제1 비트(B1)를 가질 수 있다.
소거 상태(E), 제1 프로그램 상태(P1), 제6 프로그램 상태(P6), 그리고 제7 프로그램 상태(P7) 중 하나의 범위에 대응하는 문턱 전압을 갖는 메모리 셀(MC)은 '1'의 제2 비트(B2)를 가질 수 있다. 제2 내지 제5 프로그램 상태들(P2~P5) 중 하나의 범위에 대응하는 문턱 전압을 갖는 메모리 셀(MC)은 '0'의 제2 비트(B2)를 가질 수 있다.
소거 상태(E), 제2 프로그램 상태(P2), 제4 프로그램 상태(P4), 제6 프로그램 상태(P6) 중 하나의 범위에 대응하는 문턱 전압을 갖는 메모리 셀(MC)은 '1'의 값을 갖는 제3 비트(B3)를 가질 수 있다. 제1 프로그램 상태(P1), 제3 프로그램 상태(P3), 제5 프로그램 상태(P5), 그리고 제6 프로그램 상태(P6) 중 하나의 범위에 대응하는 문턱 전압을 갖는 메모리 셀(MC)은 '0'의 값을 갖는 제3 비트(B3)를 가질 수 있다.
도 7에 도시된 상태들(E, P1~P7) 및 상태들(E, P1~P7) 각각에 매핑되는 제1 내지 제3 비트들(B1~B3)의 값들은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다.
경판정을 이용한 데이터 읽기는, 상태들(E, P1~P7)의 사이의 전압을 메모리 셀들(MC)에 인가함으로써 수행될 수 있다. 예시적으로 메모리 셀들(MC)로부터 제1 페이지 데이터(PD1), 즉 제1 비트들(B1)이 읽어질 때, 제4 전압(V4)이 사용될 수 있다. 워드 라인(WL2)에 제4 전압(V4)이 인가되고, 워드 라인(WL2)에 연결된 메모리 셀들(MC)이 턴-온 되는지 또는 턴-오프 되는지에 따라, 메모리 셀들(MC)의 제1 비트들(B1)이 판별될 수 있다.
턴-온 되는 메모리 셀(MC)은 제4 전압(V4)보다 낮은 문턱 전압을 가지며, 소거 상태(E) 및 제1 내지 제3 프로그램 상태들(P1~P3) 중 하나의 범위에 대응하는 문턱 전압을 갖는 것으로 식별된다. 즉, 턴-온 되는 메모리 셀(MC)의 제1 비트(B1)는 '1'인 것으로 식별된다.
턴-오프 되는 메모리 셀(MC)은 제4 전압(V4)보다 높은 문턱 전압을 가지며, 제4 내지 제7 프로그램 상태들(P4~P7) 중 하나의 범위에 대응하는 문턱 전압을 갖는 것으로 식별된다. 즉, 턴-오프 되는 메모리 셀(MC)의 제1 비트(B1)는 '0'인 것으로 식별된다.
마찬가지로, 메모리 셀들(MC)로부터 제2 페이지 데이터(PD2), 즉 제2 비트들(B2)이 읽어질 때, 제2 전압(V2) 및 제6 전압(V6)이 이용될 수 있다. 제2 전압(V2)보다 낮거나 제6 전압(V6)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제2 비트(B2)는 '1'인 것으로 식별될 수 있다. 제2 전압(V2)보다 높고 제6 전압(V6)보다 낮은 문턱 전압을 갖는 메모리 셀(MC)의 제2 비트(B2)는 '0'인 것으로 식별될 수 있다.
마찬가지로, 메모리 셀들(MC)로부터 제3 페이지 데이터(PD3), 제3 비트들(B3)이 읽어질 때, 제1 전압(V1), 제3 전압(V3), 제5 전압(V5), 그리고 제7 전압(V7)이 이용될 수 있다. 제1 전압(V1)보다 낮거나, 제3 전압(V3)보다 높고 제5 전압(V5)보다 낮거나, 또는 제7 전압(V7)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제3 비트(B3)는 '1'인 것으로 식별될 수 있다. 제1 전압(V1)보다 높거나 제3 전압(V3)보다 낮고, 제5 전압(V5)보다 높거나 제7 전압(V7)보다 낮은 문턱 전압을 갖는 메모리 셀(MC)의 제3 비트(B3)는 '0'인 것으로 식별될 수 있다.
경판정을 이용한 제1 읽기가 수행되면, 제1 데이터(D1)가 생성된다. 제1 데이터(D1)는 제1 내지 제3 페이지 데이터들(PD1~PD3) 중 하나일 수 있다. 제1 데이터(D1)는 복수의 비트들을 포함한다. 제1 데이터(D1)의 각 비트는 각 메모리 셀(MC)에 대응할 수 있다. 제1 데이터(D1)의 복수의 비트들은 복수의 필드들(F1~F4)로 분할된다.
예시적으로, 필드는 에러 정정 인코더 및 디코더(127)에서 에러 정정이 수행되는 데이터의 단위일 수 있다. 에러 정정 인코더 및 디코더(127)는 각 필드에 대해 에러 정정 인코딩 또는 디코딩을 수행할 수 있다. 간결한 설명을 위하여, 불휘발성 메모리(110)의 읽기의 단위인 하나의 페이지는 네 개의 필드들로 분할되는 것으로 가정된다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않는다.
S220 단계에서, 제1 데이터(D1)의 각 필드에 대해 제1 에러 정정이 수행되어, 제2 데이터(D2)가 생성된다. 예를 들어, 제1 데이터(D1)의 각 필드에서, 제1 범위 내의 에러들이 정정될 수 있다. 에러 정정 인코더 및 디코더(127)는 불휘발성 메모리(110)로부터 읽어진 제1 데이터(D1)의 각 필드에 대해 에러 정정 디코딩을 수행할 수 있다. 에러 정정 인코더 및 디코더(127)는 제1 데이터(D1)의 필드들(F1~F4) 중 선택된 필드의 부분 데이터의 각 비트의 값에 따라, 각 비트에 우도값을 사상하여 사상 데이터를 생성할 수 있다. 예를 들어, 각 비트가 '1'의 값을 가질 때, 각 비트에 제1 우도값이 사상될 수 있다. 각 비트가 '0'의 값을 가질 때, 각 비트에 제2 우도값이 사상될 수 있다. 에러 정정 인코더 및 디코더(127)는 사상 데이터 및 미리 정해진 패리티 검사 행렬을 이용하여, 에러 정정 디코딩을 수행할 수 있다.
제1 데이터(D1)의 필드들(F1~F4) 중 제1 범위 내의 에러들(예를 들어, 제1 범위 내의 에러 비트 수)을 갖는 필드의 에러는 제1 에러 정정에 의해 정정될 수 있다. 제1 데이터(D1)의 필드들(F1~F4) 중 제1 범위 밖의 에러들을 갖는 필드의 에러는 정정되지 않을 수 있다. 제1 에러 정정이 수행되면, 제2 데이터(D2)가 생성될 수 있다.
에러가 존재하지 않는 필드에서, 제1 데이터(D1)와 제2 데이터(D2)의 비트들의 값들은 동일할 수 있다. 에러가 정정된 필드에서, 제1 데이터(D1)와 제2 데이터(D2)의 비트들의 값들은 일부 다를 수 있다. 예를 들어, 제1 데이터(D1) 및 제2 데이터(D2)에서 에러가 정정된 비트들의 값은 서로 다를 수 있다. 에러가 정정되지 않은 필드에서, 제1 데이터(D1)와 제2 데이터(D2)의 비트들의 값들은 동일할 수 있다.
제2 데이터(D2)의 제1 필드는 에러를 갖지 않을 수 있다. 예를 들어, 제2 데이터(D2)의 제1 필드는 에러가 정정된 필드이거나 에러가 존재하지 않는 필드일 수 있다. 제2 데이터(D2)의 제2 내지 제4 필드들(F2~F4) 각각은 에러를 갖는 에러 필드일 수 있다. 예를 들어, 제2 데이터(D2)의 제2 내지 제4 필드들(F2~F4) 각각은 제1 범위 밖의 에러들을 가질 수 있다. 즉, 제2 데이터(D2)의 제2 내지 제4 필드들(F2~F4) 각각은 제1 에러 정정에 의해 정정되지 않는 에러들을 가질 수 있다.
S230 단계에서, 제1 범위 내의 에러들이 정정된 제1 데이터, 즉 제2 데이터(D2)가 내부 메모리(123)에 저장된다. 제2 데이터(D2)는 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)에, 버퍼 데이터(BD)로서 저장될 수 있다.
S240 단계에서, 제1 에러 정정이 수행된 후에도 에러가 존재하는지 판별된다. 예를 들어, 제2 데이터(D2)에 에러가 존재하는지 판별된다. 예를 들어, 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)에 저장된 버퍼 데이터(BD)에 에러가 존재하는지 판별될 수 있다.
에러가 존재하는 것으로 판별되면, S250 단계에서, 제2 섹션이 진행된다. 에러가 존재하지 않는 것으로 판별되면, S260 단계에서, 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)에 저장된 버퍼 데이터(BD)가 출력된다. 예를 들어, 버퍼 데이터(BD)는 에러가 정정된 최종적인 읽기 데이터로서 외부 호스트로 출력될 수 있다. 다른 예로서, 버퍼 데이터(BD)는 불휘발성 메모리(110)에 재기입되거나, 메모리 컨트롤러(120)에서 내부적으로 사용될 수 있다.
도 9는 데이터 읽기의 제2 섹션을 보여주는 순서도이다. 도 10은 메모리 셀들(MC)의 문턱 전압들의 산포 범위들 및 읽기 전압들의 제2 예를 보여준다. 도 10에서, 가로 축은 전압(또는 메모리 셀들(MC)의 문턱 전압)을 가리키고, 세로 축은 메모리 셀들의 수를 가리킨다. 도 11은 제2 섹션이 수행되는 동안 처리되는 데이터의 예를 보여준다.
도 1 내지 도 4, 그리고 도 9 내지 도 11을 참조하면, S310 단계에서, 메모리 셀들로부터 제3 데이터(D3)가 읽어진다. 예를 들어, 하나의 워드 라인(예를 들어, WL2)에 연결된 메모리 셀들(MC)로부터 제3 데이터(D3)가 읽어질 수 있다. 제3 데이터(D3)는 워드 라인(WL2)에 연결된 메모리 셀들(MC)에 저장된 세 개의 페이지 데이터들(PD1~PD3) 중 하나의 페이지 데이터에 대응할 수 있다. 제3 데이터(D3)는 제1 데이터(D1)와 동일한 페이지 데이터에 대응할 수 있다. 제3 데이터(D3)는 연판정(soft decision)을 이용하여 읽어질 수 있다.
연판정을 이용한 데이터 읽기는, 적어도 두 번의 읽기를 포함할 수 있다. 본 발명의 기술적 사상을 간결히 설명하기 위하여, 연판정을 이용한 읽기는 두 번의 읽기를 포함하는 것으로 가정된다. 그러나, 연판정을 이용한 읽기는 세 번 이상의 읽기를 포함할 수 있다.
연판정을 이용한 두 번의 읽기 각각은, 상태들(E, P1~P7)의 사이의 전압을 메모리 셀들(MC)에 인가함으로써 수행될 수 있다. 연판정의 각 읽기 시에 인가되는 전압들은, 도 6 내지 도 8을 참조하여 설명된 경판정을 이용한 읽기 시의 전압들(V1~V7)과 다를 수 있다.
예시적으로, 연판정을 이용한 제1 읽기 시에, 제1 내지 제7 전압들(V1L~V7L)이 사용될 수 있다. 제1 내지 제7 전압들(V1L~V7L)은 경판정 시의 제1 내지 제7 전압들(V1~V7)과 유사한 레벨을 갖되, 그보다 낮을 수 있다.
연판정을 이용한 제1 읽기 시에, 메모리 셀들(MC)로부터 제1 페이지 데이터(PD1), 즉 제1 비트들(B1a)이 읽어질 때, 제4 전압(V4L)이 이용될 수 있다. 제4 전압(V4L)보다 낮은 문턱 전압을 갖는 메모리 셀(MC)의 제1 비트(B1a)는 '1'로 판정되고, 제4 전압(V4L)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제1 비트(B1a)는 '0'으로 판정될 수 있다.
연판정을 이용한 제1 읽기 시에, 메모리 셀들(MC)로부터 제2 페이지 데이터(PD2), 즉 제2 비트들(B2a)이 읽어질 때, 제2 전압(V2L) 및 제6 전압(V6L)이 이용될 수 있다. 제2 전압(V2L)보다 낮거나 제6 전압(V6L)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제2 비트(B2a)는 '1'로 판정될 수 있다. 제2 전압(V2L)과 제6 전압(V6L) 사이의 문턱 전압을 갖는 메모리 셀(MC)의 제2 비트(B2a)는 '0'으로 판정될 수 있다.
연판정을 이용한 제1 읽기 시에, 메모리 셀들(MC)로부터 제3 페이지 데이터(PD3), 즉 제3 비트들(B3a)이 읽어질 때, 제1 전압(V1L), 제3 전압(V3L), 제5 전압(V5L) 및 제7 전압(V7L)이 이용될 수 있다. 제1 전압(V1L)보다 낮거나, 제3 전압(V3L) 및 제5 전압(V5L) 사이이거나, 제7 전압(V7L)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제3 비트(B3a)는 '1'로 판정될 수 있다. 제1 전압(V1L)과 제3 전압(V3L)의 사이이거나, 제5 전압(V5L)과 제7 전압(V7L)의 사이인 문턱 전압을 갖는 메모리 셀(MC)의 제3 비트(B3a)는 '0'으로 판정될 수 있다.
예시적으로, 연판정을 이용한 제2 읽기 시에, 제1 내지 제7 전압들(V1H~V7H)이 사용될 수 있다. 제1 내지 제7 전압들(V1H~V7H)은 경판정 시의 제1 내지 제7 전압들(V1~V7)과 유사한 레벨을 갖되, 그보다 높을 수 있다.
연판정을 이용한 제2 읽기 시에, 메모리 셀들(MC)로부터 제1 페이지 데이터(PD1), 즉 제1 비트들(B1b)이 읽어질 때, 제4 전압(V4H)이 이용될 수 있다. 제4 전압(V4H)보다 낮은 문턱 전압을 갖는 메모리 셀(MC)의 제1 비트(B1b)는 '1'로 판정되고, 제4 전압(V4H)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제1 비트(B1b)는 '0'으로 판정될 수 있다.
연판정을 이용한 제2 읽기 시에, 메모리 셀들(MC)로부터 제2 페이지 데이터(PD2), 즉 제2 비트들(B2b)이 읽어질 때, 제2 전압(V2H) 및 제6 전압(V6H)이 이용될 수 있다. 제2 전압(V2H)보다 낮거나 제6 전압(V6H)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제2 비트(B2b)는 '1'로 판정될 수 있다. 제2 전압(V2H)과 제6 전압(V6H) 사이의 문턱 전압을 갖는 메모리 셀(MC)의 제2 비트(B2b)는 '0'으로 판정될 수 있다.
연판정을 이용한 제2 읽기 시에, 메모리 셀들(MC)로부터 제3 페이지 데이터(PD3), 즉 제3 비트들(B3b)이 읽어질 때, 제1 전압(V1H), 제3 전압(V3H), 제5 전압(V5H) 및 제7 전압(V7H)이 이용될 수 있다. 제1 전압(V1H)보다 낮거나, 제3 전압(V3H) 및 제5 전압(V5H) 사이이거나, 제7 전압(V7H)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제3 비트(B3b)는 '1'로 판정될 수 있다. 제1 전압(V1H)과 제3 전압(V3H)의 사이이거나, 제5 전압(V5H)과 제7 전압(V7H)의 사이인 문턱 전압을 갖는 메모리 셀(MC)의 제3 비트(B3b)는 '0'으로 판정될 수 있다.
연판정을 이용한 제1 읽기 시에 읽어진 데이터와 제2 읽기 시에 읽어진 데이터가 조합되어, 연판정을 이용한 제3 데이터(D3)가 생성될 수 있다. 예를 들어, 제1 및 제2 읽기 시에 판정된 데이터가 연산(예를 들어, 배타적 논리 합(XOR))되어, 제3 데이터(D3)가 생성될 수 있다. 즉, 제3 데이터(D3)는 각 메모리 셀(MC)에 대한 제1 및 제2 읽기의 결과가 동일한지 또는 서로 다른지를 가리킬 수 있다. 제3 데이터(D3)의 사이즈는 제1 데이터(D1)의 사이즈와 동일할 수 있다. 제3 데이터(D3)의 복수의 비트들은 복수의 필드들(F1~F4)로 분할된다.
S320 단계에서, 제2 및 제3 데이터(D2, D3)의 제1 범위 밖의 에러들을 갖는 각 에러 필드에 대해 제2 에러 정정이 수행되어, 제4 데이터(D4)가 생성된다. 예를 들어, 제3 데이터(D3)를 이용하여 제2 데이터(D2)에 대해 에러 정정이 수행되어, 제2 범위 내의 에러들이 정정될 수 있다.
예를 들어, 각 메모리 셀(MC)은 제2 데이터(D2)의 하나의 비트 및 제3 데이터(D3)의 하나의 비트에 대응한다. 에러 정정 인코더 및 디코더(127)는 제2 및 제3 데이터(D2, D3)의 각 에러 필드에 우도값들을 사상하여, 사상 데이터를 생성할 수 있다. 제2 데이터(D2)의 에러 필드의 각 비트의 값이 '1'이고, 제3 데이터(D3)의 대응하는 필드의 대응하는 비트가 제1 값(예를 들어, 제1 및 제2 읽기의 결과가 동일함을 가리키는 값)을 가질 때, 각 비트에 제1 우도값이 사상될 수 있다. 제2 데이터(D2)의 에러 필드의 각 비트의 값이 '0'이고, 제3 데이터(D3)의 대응하는 필드의 대응하는 비트가 제1 값을 가질 때, 각 비트에 제2 우도값이 사상될 수 있다. 제2 데이터(D2)의 에러 필드의 각 비트의 값이 '1'이고, 제3 데이터(D3)의 대응하는 필드의 대응하는 비트가 제2 값(예를 들어, 제1 및 제2 읽기의 결과가 서로 다름을 가리키는 값)을 가질 때, 각 비트에 제3 우도값이 사상될 수 있다. 제2 데이터(D2)의 에러 필드의 각 비트의 값이 '0'이고, 제3 데이터(D3)의 대응하는 필드의 대응하는 비트가 제2 값을 가질 때, 각 비트에 제4 우도값이 사상될 수 있다. 제1 및 제2 우도값들 각각은 제3 및 제4 우도값들 각각보다 클 수 있다. 대응하는 필드는 동일한 위치의 필드를 가리키고, 대응하는 비트는 동일한 위치의 비트를 가리킬 수 있다.
우도값들이 사상된 사상 데이터 및 패리티 검사 행렬을 이용하여, 제2 에러 정정이 수행될 수 있다. 제2 에러 정정에 사용되는 사상 데이터는, 제1 에러 정정에 사용되는 사상 데이터보다 더 많은 수의 우도값들을 사용한다. 따라서, 제2 에러 정정의 정밀도가 제1 에러 정정의 정밀도보다 높으며, 제2 범위는 제1 범위보다 클 수 있다.
제2 에러 정정 디코딩이 수행되면, 제4 데이터(D4)가 생성된다. 제4 데이터의 필드들(F2~F4) 중 에러가 정정된 필드(F2)는 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)에 저장된 대응하는 필드에 덮어쓰기될 수 있다.
S330 단계에서, 에러가 존재하는지 판별된다. 예시적으로, 제2 에러 정정이 수행된 후, 제4 데이터(D4)의 필드들(F2~F4) 중 제2 범위 밖의 에러를 가져, 에러가 정정되지 않은 필드가 존재하는지 판별된다.
에러가 존재하면, S340 단계에서, 제2 범위 밖의 에러들을 갖는 제2 에러 필드가, 제3 데이터(D3)의 대응하는 필드로 덮어쓰기된다. 예를 들어, 제2 영역(125, 호스트 버퍼 영역)에 저장된 필드들 중 제2 범위 밖의 에러들을 갖는 제2 에러 필드들(예를 들어, 제2 및 제4 필드들(F2, F4))에, 제3 데이터(D3)의 대응하는 필드들(예를 들어, 제2 및 제4 필드들(F2, F4))이 덮어쓰기될 수 있다. 이후에, S350 단계에서, 제3 섹션이 수행될 수 있다.
에러가 존재하지 않으면, S360 단계에서, 제2 영역(125, 호스트 버퍼 영역)에 저장된 버퍼 데이터(BD)가 출력된다. 예를 들어, 버퍼 데이터(BD)는 에러가 정정된 최종적인 읽기 데이터로서 외부 호스트로 출력될 수 있다. 다른 예로서, 버퍼 데이터(BD)는 불휘발성 메모리(110)에 재기입되거나, 메모리 컨트롤러(120)에서 내부적으로 사용될 수 있다.
도 12는 데이터 읽기의 제3 섹션을 보여주는 순서도이다. 도 13은 메모리 셀들(MC)의 문턱 전압들의 산포 범위들 및 읽기 전압들의 제3 예를 보여준다. 도 13에서, 가로 축은 전압(또는 메모리 셀들(MC)의 문턱 전압)을 가리키고, 세로 축은 메모리 셀들의 수를 가리킨다. 도 14는 제3 섹션이 수행되는 동안 처리되는 데이터의 예를 보여준다.
도 1 내지 도 4, 그리고 도 12 내지 도 14를 참조하면, S410 단계에서, 읽기 레벨이 조절된다. 예를 들어, 메모리 셀들(MC)로부터 데이터를 읽기 위해 사용되는 읽기 전압의 레벨이 조절될 수 있다. 경판정을 이용한 읽기 시에 사용될 읽기 전압의 레벨이 조절될 수 있다. 도 9 내지 도 11을 참조하여 설명된 에러 정정의 결과에 따라, 읽기 전압의 레벨이 조절될 수 있다.
S420 단계에서, 조절된 읽기 레벨을 이용하여 메모리 셀들(MC)로부터 제5 데이터(D5)가 읽어진다. 예를 들어, 하나의 워드 라인(예를 들어, WL2)에 연결된 메모리 셀들(MC)로부터 제5 데이터(D5)가 읽어질 수 있다. 제5 데이터(D5)는 워드 라인(WL2)에 연결된 메모리 셀들(MC)에 저장된 세 개의 페이지 데이터들(PD1~PD3) 중 하나의 페이지 데이터에 대응할 수 있다. 제5 데이터(D5)는 제1 데이터(D1)와 동일한 페이지 데이터에 대응할 수 있다. 제5 데이터(D5)는 경판정(soft decision)을 이용하여 읽어질 수 있다. 제5 데이터(D5)의 복수의 비트들은 복수의 필드들(F1~F4)로 분할된다.
경판정을 이용한 읽기 시에, 제1 내지 제7 전압들(V1'~V7')이 사용될 수 있다. 제1 내지 제7 전압들(V1'~V7')은 도 6 내지 도 8을 참조하여 설명된 제1 내지 제7 전압들(V1~V7)로부터 조절된 레벨을 가질 수 있다. 예시적으로, 제1 내지 제7 전압들(V1'~V7')은 도 6 내지 도 8을 참조하여 설명된 제1 내지 제7 전압들(V1~V7)로부터 감소된 레벨을 가질 수 있다.
메모리 셀들(MC)로부터 제1 페이지 데이터(PD1), 즉 제1 비트들(B1)이 읽어질 때, 제4 전압(V4')이 이용될 수 있다. 제4 전압(V4')보다 낮은 문턱 전압을 갖는 메모리 셀(MC)의 제1 비트(B1)는 '1'로 판정되고, 제4 전압(V4L)보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제1 비트(B1)는 '0'으로 판정될 수 있다.
메모리 셀들(MC)로부터 제2 페이지 데이터(PD2), 즉 제2 비트들(B2)이 읽어질 때, 제2 전압(V2') 및 제6 전압(V6')이 이용될 수 있다. 제2 전압(V2')보다 낮거나 제6 전압(V6')보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제2 비트(B2)는 '1'로 판정될 수 있다. 제2 전압(V2')과 제6 전압(V6') 사이의 문턱 전압을 갖는 메모리 셀(MC)의 제2 비트(B2)는 '0'으로 판정될 수 있다.
메모리 셀들(MC)로부터 제3 페이지 데이터(PD3), 즉 제3 비트들(B3)이 읽어질 때, 제1 전압(V1['), 제3 전압(V3'), 제5 전압(V5') 및 제7 전압(V7')이 이용될 수 있다. 제1 전압(V1')보다 낮거나, 제3 전압(V3') 및 제5 전압(V5') 사이이거나, 제7 전압(V7')보다 높은 문턱 전압을 갖는 메모리 셀(MC)의 제3 비트(B3)는 '1'로 판정될 수 있다. 제1 전압(V1')과 제3 전압(V3')의 사이이거나, 제5 전압(V5')과 제7 전압(V7')의 사이인 문턱 전압을 갖는 메모리 셀(MC)의 제3 비트(B3)는 '0'으로 판정될 수 있다.
S430 단계에서, 제3 및 제5 데이터(D3, D5)의 제2 범위 밖의 에러들을 갖는 각 제2 에러 필드에 대해 제3 에러 정정이 수행되어, 제6 데이터(D6)가 생성된다. 예를 들어, 제3 데이터(D3)를 이용하여 제6 데이터(D6)에 대해 에러 정정이 수행되어, 제3 범위 내의 에러들이 정정될 수 있다. 제3 데이터(D3)는 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)으로부터 읽어질 수 있다.
예를 들어, 각 메모리 셀(MC)은 제3 데이터(D3)의 하나의 비트 및 제5 데이터(D5)의 하나의 비트에 대응한다. 에러 정정 인코더 및 디코더(127)는 제3 및 제5 데이터(D3, D5)의 각 제2 에러 필드에 우도값들을 사상하여, 사상 데이터를 생성할 수 있다. 우도값들이 사상된 사상 데이터 및 패리티 검사 행렬을 이용하여, 제3 에러 정정이 수행될 수 있다.
제3 에러 정정 디코딩이 수행되면, 제6 데이터(D6)가 생성된다. 제6 데이터의 필드들(F2, F4) 중 에러가 정정된 필드들(F2, F4)은 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)에 저장된 대응하는 필드에 덮어쓰기될 수 있다.
S440 단계에서, 에러가 존재하는지 판별된다. 예시적으로, 제3 에러 정정이 수행된 후, 제6 데이터(D6)의 필드들(F2, F4) 중 제3 범위 밖의 에러를 가져, 에러가 정정되지 않은 필드가 존재하는지 판별된다.
에러가 존재하지 않으면, S450 단계에서, 제2 영역(125, 호스트 버퍼 영역)에 저장된 버퍼 데이터(BD)가 출력된다. 예를 들어, 버퍼 데이터(BD)는 에러가 정정된 최종적인 읽기 데이터로서 외부 호스트로 출력될 수 있다. 다른 예로서, 버퍼 데이터(BD)는 불휘발성 메모리(110)에 재기입되거나, 메모리 컨트롤러(120)에서 내부적으로 사용될 수 있다.
에러가 존재하면, S460 단계에서, 다음 프로세스가 수행된다. 예를 들어, 메모리 셀들(MC)로부터 정상적으로 데이터를 읽기 위한 후속 동작이 수행될 수 있다.
상술된 바와 같이, 메모리 컨트롤러(120)의 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)은 불휘발성 메모리(110)로부터 읽어지는 데이터를 저장하도록 할당될 수 있다. 불휘발성 메모리(110)로부터 데이터를 읽는 과정에서, 제2 영역(125, 호스트 버퍼 영역)에 저장된 데이터 중 일부는 무효 데이터일 수 있다. 예를 들어, 도 9 내지 도 11을 참조하여 설명된 데이터 읽기의 제2 섹션에서, 버퍼 데이터(BD)의 제2 및 제4 필드들(F2, F4)은 에러를 갖는 에러 필드들이며, 데이터 읽기 시에 사용되지 않는 무효 데이터이다. 따라서, 도 12 내지 도 14를 참조하여 설명된 데이터 읽기의 제3 섹션과 같이, 버퍼 데이터(BD)의 제2 및 제4 필드들(F2, F4)은 데이터 읽기 시에 사용되는 정보, 즉 제3 데이터(D3)의 일부를 저장하도록 사용될 수 있다.
따라서, 내부 메모리(123)의 제1 영역(124, 처리 영역)의 용량이 충분하지 않은 경우, 백업 데이터가 저장될 공간이 제2 영역(125, 호스트 버퍼 영역)에 확보되므로, 메모리 시스템(100)의 동작 성능이 향상될 수 있다. 또한, 백업 데이터가 저장될 저장 공간이 제1 영역(124, 처리 영역)에 필요하지 않으므로, 제1 영역의 용량이 감소될 수 있으며, 메모리 시스템(100)의 제조 비용이 감소될 수 있다. 특히, eMMC (embeded MultiMedia Card), UFS (Universal Flash Storage)와 같이 제한된 내부 메모리를 갖는 장치들에 본 발명의 기술적 사상이 적용되면, 해당 장치들의 동작 성능이 대폭 향상될 수 있다.
도 15는 본 발명의 다른 예에 따른 메모리 셀 어레이(110')를 보여주는 블록도이다. 도 15를 참조하면, 메모리 셀 어레이(110')는 복수의 플레인들(111_1~111_k)을 포함한다. 복수의 플레인들(111_1~111_k)은 동일한 구조를 가질 수 있다. 복수의 플레인들(111_1~111_k) 각각은 복수의 메모리 블록들(BLK1~BLKz)을 포함한다.
복수의 플레인들(111_1~111_k)로부터 동시에 데이터가 읽어질 수 있다. 복수의 플레인들(111_1~111_k) 각각에서 읽어지는 데이터는 복수의 필드들(F1~F4)을 포함한다. 메모리 셀 어레이(110')의 플레인들의 수가 증가할수록, 메모리 셀 어레이(110')로부터 한 번에 읽어지는 데이터의 양이 증가한다. 즉, 제3 데이터(D3)의 양이 증가한다. 본 발명의 실시 예에 따라, 내부 메모리(123)의 제2 영역(125, 호스트 버퍼 영역)이 제3 데이터(D3)를 저장하도록 설정되면, 대용량의 제3 데이터(D3)를 저장하기 위한 별도의 메모리가 요구되지 않는다. 따라서, 메모리 시스템(100)의 제조 비용이 감소될 수 있다. 특히, eMMC (embeded MultiMedia Card), UFS (Universal Flash Storage)와 같이 제한된 내부 메모리를 갖는 장치들에 본 발명의 기술적 사상이 적용되면, 해당 장치들의 동작 성능이 대폭 향상될 수 있다.
도 16은 본 발명의 다른 실시 예에 따른 메모리 블록(BLKb)을 보여주는 회로도이다. 도 16을 참조하면, 메모리 블록(BLKb)은 복수의 셀 스트링들(CS11~CS21, CS12~CS22)을 포함한다. 복수의 셀 스트링들(CS11~CS21, CS12~CS22)은 행 방향(row direction)및 열 방향(column direction)을 따라 배열되어, 행들 및 열들을 형성할 수 있다.
예를 들어, 행 방향(row direction)을 따라 배열된 셀 스트링들(CS11, CS12)은 제1 행을 형성하고, 행 방향(row direction)을 따라 배열된 셀 스트링들(CS21, CS22)은 제2 행을 형성할 수 있다. 열 방향(column direction)을 따라 배열된 셀 스트링들(CS11, CS21)은 제1 열을 형성하고, 열 방향(column direction)을 따라 배열된 셀 스트링들(CS12, CS22)은 제2 열을 형성할 수 있다.
각 셀 스트링은 복수의 셀 트랜지스터들을 포함할 수 있다. 복수의 셀 트랜지스터들은 접지 선택 트랜지스터들(GSTa, GSTb), 메모리 셀들(MC1~MC6), 그리고 스트링 선택 트랜지스터들(SSTa, SSTb)을 포함한다. 각 셀 스트링의 접지 선택 트랜지스터들(GSTa, GSTb), 메모리 셀들(MC1~MC6), 그리고 스트링 선택 트랜지스터들(SSTa, GSTb)은 셀 스트링들(CS11~CS21, CS12~CS22)이 행들 및 열들을 따라 배열되는 평면(예를 들어, 메모리 블록(BLKb)의 기판 상의 평면)과 수직한 높이 방향으로 적층될 수 있다.
최하단의 접지 선택 트랜지스터들(GSTa)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다.
복수의 셀 스트링들(CS11~CS21, CS12~CS22)의 접지 선택 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다.
예시적으로, 동일한 높이(또는 순서)의 접지 선택 트랜지스터들은 동일한 접지 선택 라인에 연결되고, 서로 다른 높이(또는 순서)를 갖는 접지 선택 트랜지스터들은 서로 다른 접지 선택 라인들에 연결될 수 있다. 예를 들어, 제1 높이의 접지 선택 트랜지스터들(GSTa)은 제1 접지 선택 라인에 공통으로 연결되고, 제2 높이의 접지 선택 트랜지스터들(GSTb)은 제2 접지 선택 라인에 공통으로 연결될 수 있다.
예시적으로, 동일한 행의 접지 선택 트랜지스터들은 동일한 접지 선택 라인에 연결되고, 서로 다른 행의 접지 선택 트랜지스터들은 서로 다른 접지 선택 라인들에 연결될 수 있다. 예를 들어, 제1 행의 셀 스트링들(CS11, CS12)의 접지 선택 트랜지스터들(GSTa, GSTb)은 제1 접지 선택 라인에 연결되고, 제2 행의 셀 스트링들(CS21, CS22)의 접지 선택 트랜지스터들(GSTa, GSTb)은 제2 접지 선택 라인에 연결될 수 있다.
기판(또는 접지 선택 트랜지스터들(GST))으로부터 동일한 높이(또는 순서)에 위치한 메모리 셀들은 하나의 워드 라인에 공통으로 연결되고, 서로 다른 높이(또는 순서)에 위치한 메모리 셀들은 서로 다른 워드 라인들(WL1~WL6)에 각각 연결될 수 있다. 예를 들어, 메모리 셀들(MC1)은 워드 라인(WL1)에 공통으로 연결된다. 메모리 셀들(MC2)은 워드 라인(WL2)에 공통으로 연결된다. 메모리 셀들(MC3)은 워드 라인(WL3)에 공통으로 연결된다. 메모리 셀들(MC4)은 워드 라인(WL4)에 공통으로 연결된다. 메모리 셀들(MC5)은 워드 라인(WL5)에 공통으로 연결된다. 메모리 셀들(MC6)은 워드 라인(WL6)에 공통으로 연결된다.
복수의 셀 스트링들(CS11~CS21, CS12~CS22)의 동일한 높이(또는 순서)의 제1 스트링 선택 트랜지스터들(SSTa)에서, 서로 다른 행의 제1 스트링 선택 트랜지스터들(SSTa)은 서로 다른 스트링 선택 라인들(SSL1a~SSL2a)에 각각 연결된다. 예를 들어, 셀 스트링들(CS11, CS12)의 제1 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)에 공통으로 연결된다. 셀 스트링들(CS21, CS22)의 제1 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SSL2a)에 공통으로 연결된다.
복수의 셀 스트링들(CS11~CS21, CS12~CS22)의 동일한 높이(또는 순서)의 제2 스트링 선택 트랜지스터들(SSTb)에서, 서로 다른 행의 제2 스트링 선택 트랜지스터들(SSTb)은 서로 다른 스트링 선택 라인들(SSL1b~SSL2b)에 각각 연결된다. 예를 들어, 셀 스트링들(CS11, CS12)의 제2 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SSL1b)에 공통으로 연결된다. 셀 스트링들(CS21, CS22)의 제2 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SSL2b)에 공통으로 연결된다.
즉, 서로 다른 행의 셀 스트링들은 서로 다른 스트링 선택 라인들에 연결된다. 동일한 행의 셀 스트링들의 동일한 높이(또는 순서)의 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인에 연결된다. 동일한 행의 셀 스트링들의 서로 다른 높이(또는 순서)의 스트링 선택 트랜지스터들은 서로 다른 스트링 선택 라인들에 연결된다.
예시적으로, 동일한 행의 셀 스트링들의 스트링 선택 트랜지스터들은 하나의 스트링 선택 라인에 공통으로 연결될 수 있다. 예를 들어, 제1 행의 셀 스트링들(CS11, CS12)의 스트링 선택 트랜지스터들(SSTa, SSTb)은 하나의 스트링 선택 라인에 공통으로 연결될 수 있다. 제2 행의 샐 스트링들(CS21, CS22)의 스트링 선택 트랜지스터들(SSTa, SSTb)은 하나의 스트링 선택 라인에 공통으로 연결될 수 있다.
복수의 셀 스트링들(CS11~CS21, CS12~CS22)의 열들은 서로 다른 비트 라인들(BL1, BL2)에 각각 연결된다. 예를 들어, 제1 열의 셀 스트링들(CS11~CS21)의 스트링 선택 트랜지스터들(SSTb)은 비트 라인(BL1)에 공통으로 연결된다. 제2 열의 셀 스트링들(CS12~CS22)의 스트링 선택 트랜지스터들(SST)은 비트 라인(BL2)에 공통으로 연결된다.
도 16에 도시된 메모리 블록(BLKb)은 예시적인 것이다. 본 발명의 기술적 사상은 도 16에 도시된 메모리 블록(BLKb)에 한정되지 않는다. 예를 들어, 셀 스트링들의 행들의 수는 증가 또는 감소될 수 있다. 셀 스트링들의 행들의 수가 변경됨에 따라, 셀 스트링들의 행들에 연결되는 스트링 선택 라인들 또는 접지 선택 라인의 수, 그리고 하나의 비트 라인에 연결되는 셀 스트링들의 수 또한 변경될 수 있다.
셀 스트링들의 열들의 수는 증가 또는 감소될 수 있다. 셀 스트링들의 열들의 수가 변경됨에 따라, 셀 스트링들의 열들에 연결되는 비트 라인들의 수, 그리고 하나의 스트링 선택 라인에 연결되는 셀 스트링들의 수 또한 변경될 수 있다.
셀 스트링들의 높이는 증가 또는 감소될 수 있다. 예를 들어, 셀 스트링들 각각에 적층되는 접지 선택 트랜지스터들, 메모리 셀들 또는 스트링 선택 트랜지스터들의 수는 증가 또는 감소될 수 있다.
예시적으로, 쓰기 및 읽기는 셀 스트링들(CS11~CS21, CS12~CS22)의 행의 단위로 수행될 수 있다. 스트링 선택 라인들(SSL1a, SSL1b, SSL2a, SSL2b)에 의해, 셀 스트링들(CS11~CS21, CS12~CS22)이 하나의 행 단위로 선택될 수 있다.
셀 스트링들(CS11~CS21, CS12~CS22)의 선택된 행에서, 쓰기 및 읽기는 워드 라인의 단위로 수행될 수 있다. 셀 스트링들(CS11~CS21, CS12~CS22)의 선택된 행에서, 선택된 워드 라인에 연결된 메모리 셀들이 프로그램될 수 있다.
도 17은 본 발명의 제 2 실시 예에 따른 메모리 시스템(200)을 보여주는 블록도이다. 도 17을 참조하면, 메모리 시스템(200)은 불휘발성 메모리(210) 및 메모리 컨트롤러(220)를 포함한다. 불휘발성 메모리(210)는 복수의 불휘발성 메모리 칩들을 포함한다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 불휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(220)와 통신하도록 구성된다. 예시적으로, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(220)와 통신하는 것으로 도시되어 있다.
도 17에서, 하나의 채널에 복수의 불휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 불휘발성 메모리 칩이 연결되도록 메모리 시스템(200)이 변경될 수 있다.
메모리 컨트롤러(220)는 내부 메모리(223) 및 에러 정정 인코더 및 디코더(227)를 포함할 수 있다. 메모리 컨트롤러(220)는 불휘발성 메모리(110)로부터 읽어지는 제3 데이터(D3)를 내부 메모리(223)의 호스트 버퍼 영역에 백업할 수 있다.
도 18은 본 발명의 실시 예에 따른 스토리지 모듈(300)을 보여주는 블록도이다. 도 18을 참조하면, 스토리지 모듈(300)은 불휘발성 메모리(310), 메모리 컨트롤러(320), 그리고 커넥터(340)를 포함한다.
메모리 컨트롤러(320)는 프로그램 동작 제어부(330)를 포함할 수 있다. 즉, 메모리 컨트롤러(320)는 불휘발성 메모리(310)에서 프로그램이 수행되는 동안 정상 모드 또는 덤프 모드를 식별할 수 있다. 메모리 컨트롤러(320)는 판별된 모드에 따라, 후속 프로그램과 연관된 페이지 데이터를 불휘발성 메모리(310)에 로딩할 수 잇다. 정상 모드에서, 메모리 컨트롤러(320)는 후속 프로그램과 연관된 하나의 페이지 데이터를 불휘발성 메모리(310)에 로딩할 수 있다. 덤프 모드에서, 메모리 컨트롤러(320)는 후속 프로그램과 연관된 둘 이상의 페이지 데이터들을 불휘발성 메모리(310)로 전송할 수 있다. 덤프 모드에서, 메모리 컨트롤러(320)는 후속 프로그램과 연관된 적어도 하나의 덤프 커맨드를 불휘발성 메모리(210)로 전송할 수 있다.
커넥터(340)는 스토리지 모듈(300)과 외부 장치를 연결할 수 있다. 커넥터(340)는 SATA (Serial AT Attachment), eSATA, PCI (Peripheral Component Interconnect), PCI-e, SCSI (Small Computer System Interface), USB (Universal Serial Bus), Mini USB, Micro USB, Firewire 등의 표준에 따른 소켓을 포함할 수 있다. 커넥터(340)는 PGA (Pin Grid Array), BGA (Ball Grid Array) 등과 같은 연결 수단을 포함할 수 있다.
스토리지 모듈(300)은 솔리드 스테이트 드라이브(SSD, Solid State Drive), PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 스토리지(UFS) 모듈, eMMC (embeded MMC) 모듈 등과 같은 다양한 스토리지 모듈을 형성할 수 있다.
도 19는 본 발명의 실시 예에 따른 컴퓨팅 장치(1000)를 보여주는 블록도이다. 도 19를 참조하면, 컴퓨팅 장치(1000)는 프로세서(1100), 메모리(1200), 스토리지(1300), 모뎀(1400), 그리고 사용자 인터페이스(1500)를 포함한다.
프로세서(1100)는 컴퓨팅 장치(1000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 프로세서(1100)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 프로세서(1100)는 범용 컴퓨터에 사용되는 범용 프로세서, 특수 목적 컴퓨터에 사용되는 특수 목적 프로세서, 또는 모바일 컴퓨팅 장치에 사용되는 어플리케이션 프로세서일 수 있다.
메모리(1200)는 프로세서(1100)와 통신할 수 있다. 메모리(1200)는 프로세서(1100) 또는 컴퓨팅 장치(1000)의 메인 메모리일 수 있다. 프로세서(1100)는 메모리(1200)에 코드 또는 데이터를 임시로 저장할 수 있다. 프로세서(1100)는 메모리(1200)를 이용하여 코드를 실행하고, 데이터를 처리할 수 있다. 프로세서(1100)는 메모리(1200)를 이용하여 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 실행할 수 있다. 프로세서(1100)는 메모리(1200)를 이용하여 컴퓨팅 장치(1000)의 제반 동작을 제어할 수 있다. 메모리(1200)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다. 메모리(120)는 랜덤 액세스 메모리로 구성될 수 있다.
스토리지(130)는 프로세서(1100)와 통신할 수 있다. 스토리지(1300)는 장기적으로 보존되어야 하는 데이터를 저장할 수 있다. 즉, 프로세서(1100)는 장기적으로 보전되어야 하는 데이터를 스토리지(1300)에 저장할 수 있다. 스토리지(1300)는 컴퓨팅 장치(1000)를 구동하기 위한 부트 이미지를 저장할 수 있다. 스토리지(1300)는 운영체제, 어플리케이션과 같은 다양한 소프트웨어들의 소스 코드들을 저장할 수 있다. 스토리지(1300)는 운영체제, 어플리케이션과 같은 다양한 소프트웨어들에 의해 처리된 데이터를 저장할 수 있다.
예시적으로, 프로세서(1100)는 스토리지(1300)에 저장된 소스 코드들을 메모리(1200)에 로드하고, 메모리(1200)에 로드된 코드들을 실행함으로써, 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 구동할 수 있다. 프로세서(1100)는 스토리지(1300)에 저장된 데이터를 메모리(1200)에 로드하고, 메모리(1200)에 로드된 데이터를 처리할 수 있다. 프로세서(1100)는 메모리(1200)에 저장된 데이터 중 장기적으로 보존하고자 하는 데이터를 스토리지(1300)에 저장할 수 있다.
스토리지(1300)는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지(1300)는 도 18을 참조하여 설명된 스토리지 모듈(300)을 포함할 수 있다. 컴퓨팅 장치(1000)에 도 18을 참조하여 설명된 스토리지 모듈(300)이 채용되면, 프로세서(1100)가 스토리지(1300)로부터 데이터를 읽는 속도가 획기적으로 개선된다. 따라서, 컴퓨팅 장치(1000)의 동작 성능이 향상된다.
모뎀(1400)은 프로세서(1100)의 제어에 따라 외부 장치와 통신을 수행할 수 있다. 예를 들어, 모뎀(1400)은 외부 장치와 유선 또는 무선 통신을 수행할 수 있다. 모뎀(140)은 LTE (Long Term Evolution), 와이맥스(WiMax), GSM (Global System for Mobile communication), CDMA (Code Division Multiple Access), 블루투스(Bluetooth), NFC (Near Field Communication), 와이파이(WiFi), RFID (Radio Frequency IDentification) 등과 같은 다양한 무선 통신 방식들, 또는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SCSI (Small Computer System Interface), 파이어와이어(Firewire), PCI (Peripheral Component Interconnection) 등과 같은 다양한 유선 통신 방식들 중 적어도 하나에 기반하여 통신을 수행할 수 있다.
사용자 인터페이스(1500)는 프로세서(1100)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(1500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(150)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
컴퓨팅 장치(1000)는 스마트 폰, 스마트 패드, 스마트 카메라 등과 같은 모바일 컴퓨팅 장치를 형성할 수 있다. 컴퓨팅 장치(1000)는 개인용 컴퓨터, 노트북 컴퓨터, 스마트 텔레비전 등과 같은 다양한 장치들을 형성할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100, 200; 메모리 시스템
110, 110', 210; 불휘발성 메모리
120, 220; 메모리 컨트롤러
130; 프로그램 동작 제어부
111; 메모리 셀 어레이
113; 어드레스 디코더 회로
115; 페이지 버퍼 회로
117; 데이터 입출력 회로
119; 제어 로직 회로
BLKa~BLKz; 메모리 블록들
121; 버스
122; 코어
123, 223; 내부 메모리
124; 제1 영역(처리 영역)
125; 제2 영역(호스트 버퍼 영역)
126; 호스트 관리자
127, 227; 에러 정정 인코더 및 디코더
128; 메모리 관리자

Claims (10)

  1. 내부 메모리를 포함하는 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법에 있어서:
    상기 불휘발성 메모리의 메모리 셀들로부터 데이터를 읽는 단계;
    상기 데이터를 상기 내부 메모리에 저장하는 단계;
    상기 내부 메모리에 저장된 상기 데이터 중 일부 데이터를 백업 데이터로 덮어쓰는 단계;
    상기 내부 메모리에 저장된 상기 백업 데이터를 이용하여 에러 정정을 수행하는 단계; 그리고
    상기 내부 메모리에 저장된 상기 백업 데이터를 상기 에러 정정에 의해 정정된 데이터로 덮어쓰는 단계를 포함하는 데이터 읽기 방법.
  2. 제1 항에 있어서,
    상기 백업 데이터를 상기 정정된 데이터로 덮어쓰는 단계 이후에, 상기 내부 메모리에 저장된 데이터를 상기 불휘발성 메모리로부터 읽어진 데이터로서 외부로 출력하는 단계를 더 포함하는 데이터 읽기 방법.
  3. 제1 항에 있어서,
    상기 데이터의 사이즈는, 상기 불휘발성 메모리가 한 번에 데이터를 읽는 읽기 단위의 사이즈인 데이터 읽기 방법.
  4. 제1 항에 있어서,
    상기 백업 데이터는 상기 데이터 중 에러를 갖는 일부 데이터에 덮어쓰기 되는 데이터 읽기 방법.
  5. 제1 항에 있어서,
    상기 메모리 셀들로부터 연판정을 이용하여 제2 데이터를 읽는 단계를 더 포함하고,
    상기 백업 데이터는 상기 연판정과 연관된 데이터인 데이터 읽기 방법.
  6. 제1 항에 있어서,
    상기 메모리 셀들로부터 제2 데이터를 읽는 단계를 더 포함하고,
    상기 에러 정정을 수행하는 단계는, 상기 백업 데이터 및 상기 제2 데이터를 이용하여 수행되는 데이터 읽기 방법.
  7. 제6 항에 있어서,
    상기 제2 데이터가 읽어질 때의 읽기 전압은 상기 데이터가 읽어질 때의 읽기 전압과 다른 데이터 읽기 방법.
  8. 제1 항에 있어서,
    상기 메모리 셀들로부터 읽어지는 데이터는 복수의 필드들을 포함하고,
    상기 데이터를 상기 내부 메모리에 저장하는 단계는,
    상기 데이터의 각 필드에 대해 에러 정정 디코딩을 수행하여, 제2 데이터를 생성하는 단계; 그리고
    상기 제2 데이터를 상기 내부 메모리에 저장하는 단계를 포함하는 데이터 읽기 방법.
  9. 제8 항에 있어서,
    상기 데이터 중 일부 데이터를 상기 백업 데이터로 덮어쓰는 단계는,
    상기 메모리 셀들로부터 연판정을 이용하여 제3 데이터를 읽는 단계;
    상기 제2 데이터의 필드들 중 에러를 갖는 필드에 대해 상기 제3 데이터를 이용하여 제2 에러 정정을 수행하여, 제4 데이터를 생성하는 단계; 그리고
    상기 내부 메모리에 저장된 상기 제2 데이터의 필드들 중 에러 필드에, 상기 제3 데이터의 필드들 중 대응하는 필드를 상기 백업 데이터로서 덮어쓰는 단계를 포함하고,
    상기 에러 필드는, 상기 제2 데이터의 필드들 중 상기 제2 에러 정정에 의해 정정되지 않는 에러를 갖는 필드인 데이터 읽기 방법.
  10. 불휘발성 메모리로부터 데이터를 읽도록 구성되는 메모리 관리자;
    상기 메모리 관리자로부터 상기 데이터를 수신하고, 상기 메모리 관리자로부터 수신되는 상기 데이터의 에러를 정정하도록 구성되는 에러 정정 인코더 및 디코더; 그리고
    상기 에러 정정 인코더 및 디코더에 의해 에러 정정된 데이터를 저장하도록 구성되는 내부 메모리를 포함하고,
    상기 내부 메모리에 저장된 상기 에러 정정에 의해 정정된 데이터의 일부 데이터는 백업 데이터로 덮어쓰기 되고,
    상기 에러 정정 인코더 및 디코더는 상기 백업 데이터를 이용하여 제2 에러 정정을 수행하도록 구성되는 메모리 컨트롤러.
KR1020140015628A 2014-02-11 2014-02-11 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법 KR102127287B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140015628A KR102127287B1 (ko) 2014-02-11 2014-02-11 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법
US14/619,429 US9552896B2 (en) 2014-02-11 2015-02-11 Memory controller and method of reading data from nonvolatile memory by memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140015628A KR102127287B1 (ko) 2014-02-11 2014-02-11 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법

Publications (2)

Publication Number Publication Date
KR20150094391A KR20150094391A (ko) 2015-08-19
KR102127287B1 true KR102127287B1 (ko) 2020-06-26

Family

ID=53775016

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140015628A KR102127287B1 (ko) 2014-02-11 2014-02-11 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법

Country Status (2)

Country Link
US (1) US9552896B2 (ko)
KR (1) KR102127287B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101545512B1 (ko) * 2012-12-26 2015-08-24 성균관대학교산학협력단 반도체 메모리 장치, 검증 독출 방법 및 시스템
US9947399B2 (en) * 2015-03-26 2018-04-17 Sandisk Technologies Llc Updating resistive memory
US10410738B2 (en) * 2016-03-15 2019-09-10 Toshiba Memory Corporation Memory system and control method
KR102389432B1 (ko) * 2017-11-07 2022-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
KR20200076524A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110185259A1 (en) 2010-01-25 2011-07-28 Samsung Electronics Co., Ltd. Overwritable nonvolatile memory device and related data write method

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100530980C (zh) 2003-07-09 2009-08-19 汤姆森特许公司 里德-所罗门乘积码的错误校正方法
KR100743253B1 (ko) * 2006-04-11 2007-07-27 엠텍비젼 주식회사 코드 데이터 에러 정정 방법 및 장치
KR100888695B1 (ko) 2007-02-27 2009-03-16 삼성전자주식회사 과표본화 읽기 동작을 수행하는 플래시 메모리 장치 및그것의 데이터 독출 방법
US8443267B2 (en) 2009-04-28 2013-05-14 Lsi Corporation Systems and methods for hard decision assisted decoding
KR101670922B1 (ko) 2009-08-07 2016-11-09 삼성전자주식회사 아날로그 신호를 출력하는 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
KR101618311B1 (ko) 2010-02-08 2016-05-04 삼성전자주식회사 플래시 메모리 장치 및 그것의 읽기 방법
KR101678404B1 (ko) 2010-02-25 2016-11-23 삼성전자주식회사 사전 확률 정보를 사용하는 메모리 시스템 및 그것의 데이터 처리 방법
KR101541040B1 (ko) 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
KR101727704B1 (ko) 2010-10-04 2017-04-18 삼성전자주식회사 리드 성능을 향상시킬 수 있는 리드 파라미터 변경 방법과 상기 방법을 수행할 수 있는 장치들
KR101792868B1 (ko) 2010-11-25 2017-11-02 삼성전자주식회사 플래시 메모리 장치 및 그것의 읽기 방법
JP2012244305A (ja) 2011-05-17 2012-12-10 Toshiba Corp メモリコントローラ、半導体メモリ装置、および復号方法
KR101835605B1 (ko) 2011-11-24 2018-03-08 삼성전자 주식회사 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법
US8898541B2 (en) * 2011-11-30 2014-11-25 Sony Corporation Storage controller, storage device, information processing system, and storage controlling method
KR101990971B1 (ko) 2012-01-30 2019-06-19 삼성전자 주식회사 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법
US8667368B2 (en) * 2012-05-04 2014-03-04 Winbond Electronics Corporation Method and apparatus for reading NAND flash memory
US9043672B2 (en) * 2013-02-27 2015-05-26 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110185259A1 (en) 2010-01-25 2011-07-28 Samsung Electronics Co., Ltd. Overwritable nonvolatile memory device and related data write method

Also Published As

Publication number Publication date
US20150227420A1 (en) 2015-08-13
KR20150094391A (ko) 2015-08-19
US9552896B2 (en) 2017-01-24

Similar Documents

Publication Publication Date Title
US9478300B2 (en) Operation method of nonvolatile memory system
US9690654B2 (en) Operation method of nonvolatile memory system
KR102285994B1 (ko) 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
KR102293078B1 (ko) 불휘발성 메모리 장치
KR102249810B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR102187521B1 (ko) 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법
KR102294848B1 (ko) 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치
KR102470606B1 (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 장치
US10937503B2 (en) Memory device and method of operating the same
US9892795B2 (en) Nonvolatile memory device and method of operating the nonvolatile memory device
KR102532563B1 (ko) 메모리 장치 및 그것의 동작방법
KR102229970B1 (ko) 불휘발성 메모리, 랜덤 액세스 메모리 및 메모리 컨트롤러를 포함하는 솔리드 스테이트 드라이브
US9953712B2 (en) Nonvolatile memory device and storage device including the nonvolatile memory device
KR102451154B1 (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 동작 방법
KR102127287B1 (ko) 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법
US20190259428A1 (en) Storage device and method of operating the same
KR102272248B1 (ko) 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US9406386B2 (en) Data storage device and operation method thereof
CN111273856A (zh) 控制器以及控制器的操作方法
KR20230020109A (ko) 리드 동작을 수행하는 메모리 장치 및 그것의 동작 방법
CN113535460A (zh) 数据存储装置及其操作方法
KR102606468B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치에 데이터를 프로그램 하는 프로그램 방법
US11693771B2 (en) Storage device for storing randomized data and operating method of the same
CN112447234A (zh) 存储器控制器及其操作方法
CN116804909A (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