KR20150015808A - 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 - Google Patents

불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20150015808A
KR20150015808A KR1020130091680A KR20130091680A KR20150015808A KR 20150015808 A KR20150015808 A KR 20150015808A KR 1020130091680 A KR1020130091680 A KR 1020130091680A KR 20130091680 A KR20130091680 A KR 20130091680A KR 20150015808 A KR20150015808 A KR 20150015808A
Authority
KR
South Korea
Prior art keywords
data
state
shaping
parity
error correction
Prior art date
Application number
KR1020130091680A
Other languages
English (en)
Other versions
KR102081081B1 (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 KR1020130091680A priority Critical patent/KR102081081B1/ko
Publication of KR20150015808A publication Critical patent/KR20150015808A/ko
Application granted granted Critical
Publication of KR102081081B1 publication Critical patent/KR102081081B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0661Format or protocol conversion 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 메모리 컨트롤러의 동작 방법에 관한 것으로, 본 발명에 따른 메모리 컨트롤러의 동작 방법은 외부 장치로부터 쓰기 요청 및 데이터를 수신하는 단계; 수신된 쓰기 요청에 응답하여, 에러 정정 동작 및 스테이트 쉐이핑 동작을 기반으로 수신된 데이터를 변환 데이터로 변환하는 단계; 및 변환 데이터를 불휘발성 메모리 장치로 전송하는 단계를 포함하고, 변환 데이터는 에러 정정 패리티 및 스테이트 쉐이핑 패리티를 포함하고, 스테이트 쉐이핑 동작은 스테이트 쉐이핑 패리티를 기반으로 수신된 데이터 중 미리 정해진 데이터 패턴을 감소시키는 동작이고,미리 정해진 데이터 패턴은 복수의 프로그램 상태들 각각에 매핑된 데이터 패턴들 중 적어도 하나이다.

Description

불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법{OPERATING METHOD FOR MEMORY CONTROLLER CONTROLLING NONVOLATILE MEMORY DEVICE}
본 발명은 반도체 메모리에 관한 것으로 더욱 상세하게는 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, sillicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화 인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억 장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile Memory Device) 및 불휘발성 메모리 장치(Nonvolatile Memory Device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (rd 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) 등이 있다.
최근 반도체 기술이 향상됨에 따라, 하나의 메모리 셀에 복수의 비트를 저장하는 멀티-레벨 셀(MLC; Multi-Level Cell)이 개발되고 있다. 하나의 메모리 셀이 복수의 프로그램 상태로 프로그램되기 때문에, 싱글 레벨 셀(SLC; Single-Level Cell)에 비하여 신뢰도가 떨어지고, 메모리 셀들의 열화가 발생할 수 있다.
본 발명의 목적은 랜더마이저(Randomizer), 스테이트 쉐이핑(state shaping), ECC 동작 등을 수행하여 향상된 신뢰성을 갖는 메모리 컨트롤러의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법은 외부 장치로부터 쓰기 요청 및 데이터를 수신하는 단계; 상기 수신된 쓰기 요청에 응답하여, 에러 정정 동작 및 스테이트 쉐이핑 동작을 기반으로 상기 수신된 데이터를 변환 데이터로 변환하는 단계; 및 상기 변환 데이터를 상기 불휘발성 메모리 장치로 전송하는 단계를 포함하고, 상기 변환 데이터는 에러 정정 패리티 및 스테이트 쉐이핑 패리티를 포함하고, 상기 스테이트 쉐이핑 동작은 상기 스테이트 쉐이핑 패리티를 기반으로 상기 수신된 데이터 중 미리 정해진 데이터 패턴을 감소시키는 동작이고, 상기 미리 정해진 데이터 패턴은 복수의 프로그램 상태들 각각에 매핑된 데이터 패턴들 중 적어도 하나이다.
실시 예로서, 상기 수신된 데이터를 변환 데이터로 변환하는 단계는 상기 수신된 데이터를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 스테이트 쉐이핑 패리티를 생성하는 단계; 상기 스테이트 쉐이핑된 데이터 및 상기 스테이트 쉐이핑 패리티의 에러 정정 패리티를 생성하는 단계를 포함한다.
실시 예로서, 상기 수신된 데이터를 변환 데이터로 변환하는 단계는 상기 수신된 데이터의 에러 정정 패리티를 생성하는 단계; 상기 수신된 데이터 및 상기 에러 정정 패리티를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 스테이트 쉐이핑 패리티를 생성하는 단계; 및 상기 생성된 스테이트 쉐이핑 패리티의 오류 정정 패리티를 생성하는 단계를 포함한다.
실시 예로서, 상기 수신된 데이터를 변환 데이터로 변환하는 단계는, 상기 수신된 데이터를 랜덤화하여 랜덤화된 데이터를 생성하는 단계; 상기 랜덤화된 데이터를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 상기 스테이트 쉐이핑 패리티를 생성하는 단계; 및 상기 스테이트 쉐이핑된 데이터 및 상기 스테이트 쉐이핑 패리티의 상기 에러 정정 패리티를 생성하는 단계를 포함한다.
실시 예로서, 상기 수신된 데이터를 변환 데이터로 변환하는 단계는, 상기 수신된 데이터의 오류 정정 코드를 생성하는 단계; 상기 수신된 데이터 및 상기 오류 정정 코드를 랜덤화하여 랜덤화된 데이터를 생성하는 단계; 상기 랜덤화된 데이터를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 스테이트 쉐이핑 패리티를 생성하는 단계; 및 상기 생성된 스테이트 쉐이핑 패리티의 오류 정정 코드를 생성하는 단계를 포함한다.
실시 예로서, 상기 수신된 데이터를 변환 데이터로 변환하는 단계는, 상기 수신된 데이터를 랜덤화하여 랜덤화된 데이터를 생성하는 단계; 상기 랜덤화된 데이터의 오류 정정 코드를 생성하는 단계; 상기 랜덤화된 데이터 및 상기 랜덤화된 데이터의 오류 정정 코드를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 상기 스테이트 쉐이핑 패리티를 생성하는 단계; 및 상기 스테이트 쉐이핑 패리티의 오류 정정 코드를 생성하는 단계를 포함한다.
실시 예로서, 상기 수신된 데이터는 복수의 페이지들을 포함하고, 상기 수신된 데이터를 변환 데이터로 변환하는 단계는 상기 복수의 페이지들을 선택적으로 스테이트 쉐이핑하는 단계; 및 상기 복수의 페이지들 중 스테이트 쉐이핑되지 않은 페이지들을 랜덤화하는 단계를 포함한다.
실시 예로서, 상기 수신된 데이터는 복수의 페이지들을 포함하고, 상기 복수의 페이지들 각각은 스페어 영역을 포함하고, 상기 스페어 영역은 상기 에러 정정 패리티 및 상기 스테이트 쉐이핑 패리티를 포함하고, 상기 수신된 데이터를 변환 데이터로 변환하는 단계는 상기 복수의 페이지들 각각의 스페어 영역의 용량을 조절하는 단계를 포함한다.
실시 예로서, 상기 수신된 데이터를 변환 데이터로 변환하는 단계는 상기 수신된 데이터를 스테이트 쉐이핑하는 단계; 상기 미리 정해진 데이터 패턴이 상기 스테이트 쉐이핑된 데이터에 기준치 이상 포함되는지 판별하는 단계; 및 상기 판별 결과를 기반으로 상기 수신된 데이터 및 상기 스테이트 쉐이핑된 데이터 중 어느 하나를 기반으로 변환 데이터를 생성하는 단계를 포함한다.
실시 예로서, 상기 외부 장치로부터 읽기 요청을 수신하는 단계; 상기 읽기 요청에 응답하여, 상기 불휘발성 메모리 장치로부터 상기 변환 데이터를 수신하는 단계; 상기 에러 정정 패리티를 기반으로 상기 변환 데이터의 에러 정정을 수행하고, 상기 스테이트 쉐이핑 패리티를 기반으로 상기 변환 데이터를 스테이트 쉐이핑 역변환하여 상기 데이터를 생성하는 단계; 및 상기 생성된 데이터를 상기 외부 장치로 전송하는 단계를 더 포함한다.
본 발명에 따르면, 불휘발성 메모리 컨트롤러는 데이터에 대하여 랜덤화, 스테이트 쉐이핑, 및 ECC 동작을 수행한다. 따라서, 불휘발성 메모리 시스템의 신뢰성이 향상된다.
도 1은 본 발명의 제 1 실시 예에 따른 불휘발성 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 컨트롤러를 보여주는 블록도이다.
도 3은 도 2에 도시된 메모리 컨트롤러의 동작을 보여주는 순서도이다.
도 4a 및 도 4b는 도 2에 도시된 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 5a 및 도 5b는 도 2에 도시된 스테이트 쉐이핑 엔진을 상세하게 보여주는 블록도이다.
도 6a 및 도 6b는 본 발명의 제 2 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 7a 및 도 7b는 본 발명의 제 3 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 8a 및 도 8b는 본 발명의 제 4 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 9는 본 발명의 제 5 실시 예에 따른 메모리 컨트롤러를 보여주는 블록도이다.
도 10a 및 도 10b는 도 9에 도시된 메모리 컨트롤러의 동작을 설명하기 위한 블록도들이다.
도 11a 및 도 11b는 본 발명의 제 6 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 12a 및 도 12b는 본 발명의 제 7 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 13은 불휘발성 메모리 셀들의 문턱 전압 산포를 보여주는 도면이다.
도 14 내지 도 17은 본 발명의 실시 예에 따른 데이터 필드를 예시적으로 보여주는 도면들이다.
이하에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세하게 설명하기 위하여 본 발명의 실시 예들을 첨부된 도면들을 참조하여 설명하기로 한다.
본 발명의 실시 예에 따른 메모리 컨트롤러는 외부 장치(예를 들어, 호스트, 응용 프로세서(AP; Application Processor) 등)로부터 수신된 데이터에 대하여 랜덤마이징, 스테이트 쉐이핑, 및 ECC 동작을 수행할 수 있다. 따라서, 향상된 신뢰성을 갖는 불휘발성 메모리 시스템이 제공된다.
도 1은 본 발명의 제 1 실시 예에 따른 불휘발성 메모리 시스템을 보여주는 블록도이다. 도 1을 참조하면, 불휘발성 메모리 시스템(100)은 메모리 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함한다. 메모리 컨트롤러(110)는 외부 장치(예를 들어, 호스트, 응용 프로세서(AP; Application Processor) 등)로부터 읽기/쓰기 요청(REQ) 및 데이터(DATA)를 수신한다. 메모리 컨트롤러(110)는 수신된 읽기/쓰기 요청(REQ)에 응답하여, 불휘발성 메모리 장치(120)로 커맨드(CMD)를 전송할 수 있다. 메모리 컨트롤러(110)는 수신된 읽기/쓰기 요청(REQ)에 응답하여, 변환 데이터(DATA_t)를 불휘발성 메모리 장치(120)로 전송하거나, 불휘발성 메모리 장치(120)로부터 변환 데이터(DATA_t)를 수신할 수 있다. 예시적으로, 변환 데이터(DATA_t)는 데이터의 신뢰성을 향상시키기 위한 에러 정정 코드 및 메모리 셀의 열화를 감소시키기 위해 생성된 스테이트 쉐이핑 데이터를 포함한다.
메모리 컨트롤러(110)는 에러 정정 코드 엔진(111) 및 스테이트 쉐이핑 엔진(112)를 포함한다. 에러 정정 코드 엔진(111)는 불휘발성 메모리 장치(120)에 저장된 변환 데이터(DATA_t)의 에러를 검출 및 정정하기 위한 에러 정정 코드를 생성할 수 있다.
스테이트 쉐이핑 엔진(112)는 메모리 셀의 열화를 방지하기 위하여, 열화가 발생하기 쉬운 프로그램 상태에 대응하는 데이터의 개수를 감소시킬 수 있다. 스테이트 쉐이핑 엔진(112)은 스테이트 쉐이핑 동작을 기반을 스테이트 쉐이핑 데이터(DATA_s)를 생성할 수 있다.
예시적으로, 메모리 컨트롤러(110)는 에러 정정 코드 엔진(111) 및 스테이트 쉐이핑 엔진(112)의 동작을 통해 변환 데이터(DATA_t)를 생성할 수 있다. 예시적으로, 스테이트 쉐이핑은 데이터(DATA) 중 미리 정해진 데이터 패턴을 감소시키는 동작일 수 있다. 미리 정해진 데이터 패턴은 복수의 프로그램 상태들 각각과 매핑된 복수의 데이터 패턴들 중 적어도 하나일 수 있다. 메모리 컨트롤러(110)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
불휘발성 메모리 장치(120)는 메모리 컨트롤러(110)로부터 커맨드(CMD)를 수신하고, 수신된 커맨드(CMD)에 대응하는 동작을 수행할 수 있다. 예를 들어, 수신된 커맨드(CMD)가 읽기 커맨드인 경우, 불휘발성 메모리 장치(120)는 저장된 변환 데이터(DATA_t)를 메모리 컨트롤러(120)로 전송할 수 있다. 수신된 커맨드(CMD)가 쓰기 커맨드인 경우, 불휘발성 메모리 장치(120)는 수신된 변환 데이터(DATA_t)를 저장할 수 있다. 예시적으로, 불휘발성 메모리 장치(120)는 낸드 플래시 메모리를 기반으로 제공될 수 있다. 여기에서, 불휘발성 메모리 장치(120)는 낸드 플래시 메모리 이외에도, 노어 플래시 메모리, PRAM, RRAM, MRAM, DRAM, SDRAM 등과 같은 다양한 반도체 메모리를 기반으로 구현될 수 있다.
도 2는 도 1에 도시된 메모리 컨트롤러를 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 메모리 컨트롤러(110)는 에러 정정 코드 엔진(111), 스테이트 쉐이핑 엔진(112), CPU(113), 램(114), 호스트 인터페이스(115), 및 플래시 인터페이스(116)를 포함한다.
에러 정정 코드 엔진(111)는 ECC 동작을 수행하여 외부 장치로부터 수신된 데이터(DATA)에 대응하는 에러 정정 코드를 생성할 수 있다. 또는, 에러 정정 코드 엔진(111)은 ECC 동작을 수행하여 스테이트 쉐이핑 데이터(DATA_s)에 대응하는 에러 정정 코드를 생성할 수 있다. 에러 정정 코드 엔진(111)는 에러 정정 코드를 기반으로 불휘발성 메모리 장치(120)로부터 독출된 변환 데이터(DATA_t)의 에러를 검출하고, 정정할 수 있다.
스테이트 쉐이핑 엔진(112)는 수신된 데이터(DATA)에 대하여 열화되기 쉬운 프로그램 상태에 해당하는 데이터 패턴의 개수를 감소시킬 수 있다. 예를 들어, 불휘발성 메모리 장치(120)가 3비트의 멀티 레벨 셀들을 포함하는 경우, 불휘발성 메모리 장치(120)에 포함된 메모리 셀들은 소거 상태 및 제 1 내지 제 7 프로그램 상태 중 어느 하나의 상태로 프로그램될 수 있다. 이 때, 제 7 프로그램 상태의 문턱 전압이 가장 높을 것이다. 스테이트 쉐이핑 엔진(112)는 제 7 프로그램 상태에 해당되는 데이터의 개수를 감소시킴으로서 제 7 프로그램 상태로 프로그램되는 메모리 셀들의 개수를 감소시킬 수 있다. 예시적으로, 스테이트 쉐이핑 엔진(112)는 비트-스테이트 매핑(bit-state mapping) 정보를 기반으로, 스테이트 쉐이핑 동작을 수행할 수 있다. 스테이트 쉐이핑 엔진(112)는 도 5를 참조하여 더욱 상세하게 설명된다.
CPU(113)는 메모리 컨트롤러(110)의 제반 동작을 제어할 수 있다. 램(114)은 외부 장치 및 불휘발성 메모리 장치(120) 간 속도 차이를 보상하기 위한 버퍼 메모리일 수 있다. 램(114)은 CPU(113)의 동작 메모리일 수 있다. 호스트 인터페이스(115)는 외부 장치 및 메모리 컨트롤러(110) 간 전송 채널을 제공한다. 플래시 인터페이스(116)는 메모리 컨트롤러(110) 및 불휘발성 메모리 장치(120) 간 전송 채널을 제공한다.
도 3은 도 2에 도시된 메모리 컨트롤러의 동작을 보여주는 순서도이다. 예시적으로, 도 3을 참조하여 불휘발성 메모리 시스템의 쓰기 동작을 기반으로 메모리 컨트롤러(110)의 동작이 설명된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 2 및 도 3을 참조하면, S110 단계에서, 메모리 컨트롤러(110)는 외부 장치로부터 데이터(DATA)를 수신할 수 있다.
S120 단계에서, 메모리 컨트롤러(110)는 수신된 데이터(DATA)에 대하여 ECC 및 스테이트 쉐이핑 동작을 수행할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 수신된 데이터(DATA)에 대하여 스테이트 쉐이핑 동작을 수행할 수 있다. 메모리 컨트롤러는 스테이트 쉐이핑된 데이터의 에러 정정 코드(ECC)의 패리티 비트들(patiry)를 생성할 수 있다. 예시적으로, 메모리 컨트롤러(110)는 스테이트 쉐이핑 엔진(112) 및 에러 정정 코드 엔진(111)의 동작을 통해 변환 데이터(DATA_t)를 생성할 수 있다. S120 단계의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
S130 단계에서, 메모리 컨트롤러(110)는 ECC 및 스테이트 쉐이핑된 데이터(DATA_t)를 불휘발성 메모리 장치(120)로 전송할 수 있다. 예시적으로, 불휘발성 메모리 장치(120)는 수신된 데이터(DATA_t)를 저장할 수 있다.
상술된 본 발명의 실시 예에 따르면, 메모리 컨트롤러(110)는 스테이트 쉐이핑 및 ECC 동작을 통해 데이터 및 불휘발성 메모리 셀들의 신뢰성을 향상시킬 수 있다.
도 4a 및 도 4b는 도 2에 도시된 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다. 예시적으로, 도 4a를 참조하여 메모리 컨트롤러(110)의 쓰기 동작이 설명되고, 도 4b를 참조하여 메모리 컨트롤러(110)의 읽기 동작이 설명된다. 간결한 설명을 위하여 메모리 컨트롤러의 동작을 설명하는데 불필요한 구성요소들은 생략된다. 도 2 및 도 4a를 참조하면, 쓰기 동작의 경우, 메모리 컨트롤러(110)는 외부 장치로부터 데이터(DATA)를 수신한다. 스테이트 쉐이핑 엔진(112)는 수신된 데이터(DATA)에 대하여 스테이트 쉐이핑 동작을 수행하여 스테이트 쉐이핑 데이터(DATA_s)를 생성한다. 이 후, 에러 정정 코드 엔진(111)은 스테이트 쉐이핑 데이터(DATA_s)에 대하여 ECC 동작을 수행하여 변환 데이터(DATA_t)를 출력한다.예시적으로, 변환 데이터(DATA_t)는 스테이트 쉐이핑 데이터(DATA_s) 및 에러 정정 코드를 포함할 수 있다. 메모리 컨트롤러(110)는 상술된 동작을 기반으로 수신된 데이터(DATA)를 변환 데이터(DATA_t)로 변환할 수 있다.
다음으로, 도 4b를 참조하면, 읽기 동작의 경우 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 저장된 변환 데이터(DATA_t)를 수신한다. 에러 정정 코드 엔진(111)는 수신된 변환 데이터(DATA_t)의 에러를 검출하고 정정하는 동작을 수행하여 스테이트 쉐이핑 데이터(DATA_s)를 출력한다. 스테이트 쉐이핑 엔진(112)는 스테이트 쉐이핑 데이터(DATA_s)를 역변환하여 데이터(DATA)를 생성한다. 스테이트 쉐이핑 엔진(112)는 도 5를 참조하여 더욱 상세하게 설명된다.
상술된 본 발명의 실시 예에 따르면, 메모리 컨트롤러(110)는 수신된 데이터(DATA)의 ECC 및 스테이트 쉐이핑 동작을 수행하여 변환 데이터(DATA_t)를 생성한다. 불휘발성 메모리 장치(120)는 변환 데이터(DATA_t)를 저장하기 때문에, 메모리 셀의 열화가 감소하고, 데이터의 신뢰성이 향상된다. 따라서, 향상된 신뢰성을 갖는 불휘발성 메모리 시스템이 제공된다.
도 5a 및 도 5b는 도 2에 도시된 스테이트 쉐이핑 엔진을 상세하게 보여주는 블록도이다. 간결한 설명을 위하여 쓰기 및 읽기 동작들을 구분하여 스테이트 쉐이핑 엔진(112)를 설명하기로 한다. 도 5a 및 도 5b를 참조하면, 스테이트 쉐이핑 엔진(112)는 인버스 신드롬 생성기(112a), 비터비 검출기(112b), 배타적 논리합 연산기(112c), 및 신드롬 생성기(112d)를 포함한다.
먼저, 쓰기 동작시 스테이트 쉐이핑 엔진(112)는 데이터(DATA)를 수신한다. 인버스 신드롬 생성기(112a)는 역변환 변수(H-1)를 생성하고, 생성된 역변환 변수(H-1) 및 데이터(DATA)를 기반으로 연산을 수행한다. 연산 결과는 비터비 검출기(112b) 및 배타적 논리합 연신기(112c)로 전송된다.
비터비 검출기(112b)는 비터비 알고리즘(viterbi algorithm)을 기반으로 스테이트 쉐이핑 시퀀스(Z)를 생성한다. 생성된 스테이트 쉐이핑 시퀀스(Z)는 배타적 논리합 연산기(112c)로 전송된다.
배타적 논리합 연산기(112c)는 인버스 신드롬 생성기(112a)의 연산 결과 및 스테이트 쉐이핑 시퀀스(Z)에 대하여 배타적 논리합 연산을 수행한다. 배타적 논리합 연산기(112c)의 연산 결과는 스테이트 쉐이핑 데이터(DATA_s) 일 것이다. 스테이트 쉐이핑 데이터(DATA_s)는 특정 프로그램 상태(예를 들어, 열화가 쉬운 프로그램 상태)에 대응하는 데이터 개수가 데이터(DATA)의 그것보다 적을 것이다. 즉, 불휘발성 메모리 장치(120)가 스테이트 쉐이핑 데이터(DATA_s, 또는 변환 데이터(DATA_t))를 저장함으로써, 불휘발성 메모리 장치(120)에 포함된 메모리 셀들의 열화가 감소한다.
다음으로, 읽기 동작시, 스테이트 쉐이핑 엔진(112)는 에러 정정 코드 엔진(111)으로부터 스테이트 쉐이핑 데이터(DATA_s)를 수신한다. 신드롬 발생기(112d)는 변수(H)를 생성하고, 생성된 변수(H) 및 스테이트 쉐이핑 데이터(DATA_s)의 연산을 통해 데이터(DATA)를 출력할 수 있다.
상술된 본 발명의 실시 예에 따르면, 메모리 컨트롤러(110)는 ECC 및 스테이트 쉐이핑 동작을 기반으로 변환 데이터(DATA_t)를 생성한다. 불휘발성 메모리 장치(120)가 변환 데이터(DATA_t)를 저장함으로써, 메모리 셀의 열화가 감소하고, 데이터의 신뢰성이 향상된다. 따라서, 향상된 신뢰성을 갖는 불휘발성 메모리 시스템이 제공된다.
도 6a 및 도 6b는 본 발명의 제 2 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다. 도 6a 및 도 6b를 참조하면, 메모리 컨트롤러(210)는 제 1 및 제 2 에러 정정 코드 엔진(211a, 211b), 스테이트 쉐이핑 엔진(212), 로직 회로(217), 및 램(214)을 포함한다. 메모리 컨트롤러(210)는 도 2의 메모리 컨트롤러(110)와 비교하여 로직 회로(217)를 더 포함한다. 이하에서, 메모리 컨트롤러(210) 및 도 2의 메모리 컨트롤러(110)의 차이점이 중점적으로 설명된다.
쓰기 동작의 경우, 스테이트 쉐이핑 엔진(212)은 외부 장치로부터 수신된 데이터(DATA)에 대하여 스테이트 쉐이핑 동작을 수행하여 스테이트 쉐이핑 데이터(DATA_s)를 출력한다. 스테이트 쉐이핑 데이터(DATA_s)는 제 1 에러 정정 코드 엔진(211a)로 전송된다.
제 1 에러 정정 코드 엔진(211a)은 스테이트 쉐이핑 데이터(DATA_s)에 대하여 ECC 동작을 수행하여 변환 데이터(DATA_t)를 출력한다. 제 2 에러 정정 코드 엔진(211b)은 수신된 데이터(DATA, 다시 말해서, 스테이트 쉐이핑되지 않은 데이터)에 대하여 ECC 동작을 수행한다.
로직 회로(217)는 데이터(DATA) 및 스테이트 쉐이핑된 데이터(DATA_s)를 수신할 수 있다. 로직 회로(217)는 수신된 데이터(DATA) 및 스테이트 쉐이핑된 데이터(DATA_s)를 비교하고, 비교 결과를 기반으로 다중화부(218, MUX)를 제어할 수 있다. 예를 들어, 스테이트 쉐이핑부(211)는 데이터(DATA)의 최상위 페이지(MSB)에 대하여 데이터 "1"이 감소되도록 스테이트 쉐이핑 동작을 수행할 수 있다. 이 때, 데이터 "1"이 데이터(DATA)의 최상위 페이지(MSB)에 기준치이상 포함된 경우, 로직 회로(217)는 제 2 에러 정정 코드 엔진(211b)의 출력(예를 들어, 스테이트 쉐이핑되지 않은 데이터 및 그것의 에러 정정 코드)이 불휘발성 메모리 장치(220)로 전송되도록 다중화부(218)를 제어할 수 있다. 데이터 "1"이 데이터(DATA)의 최상위 페이지(MSB)에 기준치 이상 포함되지 않은 경우, 로직 회로(217)는 제 1 에러 정정 코드 엔진(211b)의 출력(예를 들어, 스테이트 쉐이핑된 데이터 및 그것의 에러 정정 코드)이 불휘발성 메모리 장치(220)로 전송되도록 다중화부(218)를 제어할 수 있다.
예시적으로, 로직 회로(217)는 선택 정보(SEL)를 램(214)에 저장할 수 있다. 선택 정보(SEL)는 다중화부(218)의 제어 정보를 가리킨다. 예시적으로, 선택 정보(SEL)는 변환 데이터(DATA_t)에 포함되어 불휘발성 메모리 장치(220)에 저장될 수 있다.
계속해서 도 6을 참조하면, 읽기 동작의 경우, 불휘발성 메모리 장치(220)에 저장된 변환 데이터(DATA_t)는 역다중화부(219)로 전송된다. 이 때, 로직 회로(217)는 램(214)에 저장된 선택 정보(SEL)를 기반으로 변환 데이터(DATA_t)가 제 1 및 제 2 에러 정정 코드 엔진(211a, 211b) 중 어느 하나로 전송되도록 역 다중화부(217)를 제어할 수 있다. 역 다중화부(217)는 로직 회로(217)의 제어에 따라 제 1 및 제 2 에러 정정 코드 엔진(211a, 211b) 중 어느 하나로 변환 데이터(DATA_t)를 전송한다.
제 1 에러 정정 코드 엔진(211a)는 수신된 변환 데이터(DATA_t)의 오류를 정정하여 스테이트 쉐이핑 엔진(212)로 전송한다. 스테이트 쉐이핑 엔진(212)은 스테이트 쉐이핑 역동작을 수행하여 데이터(DATA)를 출력한다. 제 2 에러 정정 코드 엔진(211b)는 수신된 변환 데이터(DATA_t)의 오류를 정정하여 데이터(DATA)를 출력한다.
즉, 선택 정보(SEL)를 기반으로 로직 회로(217)은 역 다중화부(219)를 제어함으로써, 스테이트 쉐이핑 엔진(212)의 역변환 동작을 선택적으로 생략할 수 있다.
예시적으로, 로직 회로(217)는 하드웨어 또는 소프트웨어로 구현될 수 있다. 또는 로직 회로(217)의 기능은 펌웨어 형태로 구현되고, 메모리 컨트롤러의 CPU(113, 도 2 참조)에 의해 구동될 수 있다.
상술된 본 발명의 다른 실시 예에 따르면, 로직 회로(217)는 스테이트 쉐이핑된 데이터(DATA_s)를 참조하여, 스테이트 쉐이핑 동작을 선택적으로 수행하여 변환 데이터를 생성할 수 있다. 즉, 스테이트 쉐이핑 동작의 효과가 미비할 경우, 스테이트 쉐이핑 동작을 생략하여 증가된 용량의 에러 정정 코드의 패리티를 생성할 수 있다. 따라서, 향상된 신뢰성을 갖는 불휘발성 메모리 장치가 제공된다.
도 7a 및 도 7b는 본 발명의 제 3 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다. 도 7a 및 도 7b를 참조하면, 불휘발성 메모리 시스템(300)은 메모리 컨트롤러(310) 및 불휘발성 메모리 장치(320)를 포함한다. 메모리 컨트롤러(310)는 제 1 및 제 2 에러 정정 코드 엔진(311a, 311b) 및 스테이트 쉐이핑 엔진(312)를 포함한다. 도 6에 도시된 메모리 컨트롤러(310)는 도 4의 메모리 컨트롤러(110)와 비교하여 제 2 에러 정정 코드 엔진(311b)를 더 포함한다.
메모리 컨트롤러(310)는 외부 장치로부터 데이터(DATA)를 수신하고, 제 1 에러 정정 코드 엔진(311a)의 동작을 기반으로 데이터(DATA)의 에러 정정 코드를 생성할 것이다. 이 후, 스테이트 쉐이핑 엔진(312)는 에러 정정 코드 및 데이터(DATA)에 대하여 스테이트 쉐이핑 동작을 수행한다. 스테이트 쉐이핑 엔진(312)는 변환 데이터(DATA_t) 및 스테이트 쉐이핑 패리티(P)를 출력한다.
제 2 에러 정정 코드 엔진(311b)는 스테이트 쉐이핑 패리티(P)에 대한 ECC 동작을 수행할 수 있다. 예를 들어, 제 2 에러 정정 코드 엔진(311b)은 스테이트 쉐이핑 패리티(P)의 에러 정정 코드를 생성하여 불휘발성 메모리 장치(220)로 전송한다.
불휘발성 메모리 장치(320)는 변환 데이터(DATA_t)를 수신하고, 수신된 변환 데이터(DATA_t)를 저장할 수 있다. 예시적으로, 불휘발성 메모리 장치(320)는 수신된 스테이트 쉐이핑 패리티(P)의 에러 정정 코드를 변환 데이터(DATA_t)와 함께 저장할 수 있다.
다음으로, 읽기 동작시, 메모리 컨트롤러(310)는 불휘발성 메모리 장치(320)로부터 변환 데이터(DATA_t)를 수신할 수 있다. 제 2 에러 정정 코드 엔진(311b)는 불휘발성 메모리 장치(220)로부터 수신된 변환 데이터(DATA_t)를 기반으로 에러 정정 동작을 수행하여 스테이트 쉐이핑 페리티 비트(Z)를 출력할 수 있다. 스테이트 쉐이핑 엔진(312)는 스테이트 쉐이핑 페리티 비트(Z)를 기반으로 수신된 변환 데이터(DATA_t)를 역변환하여 데이터(DATA)를 출력할 수 있다. 제 1 에러 정정 코드 엔진(311a)는 에러 정정 동작을 수행하여 에러가 정정된 데이터(DATA)를 출력할 수 있다.
스테이트 쉐이핑 동작을 수행한 후, ECC 동작을 수행하는 도 4의 메모리 컨트롤러(110)와 달리, 도 7의 메모리 컨트롤러(310)는 먼저 ECC 동작을 수행한 후, 스테이트 쉐이핑 동작을 수행한다. 이 때, 제 2 에러 정정 코드 엔진(311b)는 스테이트 쉐이핑 엔진(312)의 동작에 의해 생성된 스테이트 쉐이핑 패리티(P)의 에러 코드 생성 및 에러 정정 동작을 수행한다.
상술된 본 발명의 다른 실시 예에 따르면, 메모리 컨트롤러(310)는 ECC 동작 및 스테이트 쉐이핑 동작을 기반으로 변환 데이터(DATA_t)를 생성한다. 불휘발성 메모리 장치(320)가 변환 데이터(DATA_t)를 저장함으로써 메모리 셀의 열화가 감소하고, 데이터의 신뢰성이 향상된다. 따라서, 향상된 신뢰성을 갖는 불휘발성 메모리 시스템이 제공된다.
도 8a 및 도 8b는 본 발명의 제 4 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다. 도 8a 및 도 8b를 참조하면, 메모리 컨트롤러(410)는 스테이트 쉐이핑 엔진(412), 램(414), 로직 회로(417), 다중화부(418), 및 제 1 내지 제 n 인터리빙 엔진들(41a_1~41a_n)을 포함한다. 도 8a 및 도 8b의 메모리 컨트롤러(410)는 도 6a 및 도 6b의 메모리 컨트롤러(210)와 비교하여 제 1 내지 제 n 인터리빙 엔진들(41a_1~41a_n)을 더 포함한다. 이하에서, 메모리 컨트롤러(410) 및 메모리 컨트롤러(210)의 차이점이 중점적으로 설명된다.
제 1 내지 제 n 인터리빙 엔진들(41a_1~41a_n)은 데이터(DATA)를 수신하고, 수신된 데이터(DATA)에 대하여 인터리빙을 수행한다. 제 1 내지 제 n 인터리빙 엔진들(41a_1~41a_n)의 출력들은 스테이트 쉐이핑 엔진(412)로 전송된다.
스테이트 쉐이핑 엔진(412)은 데이터(DATA) 및 제 1 내지 제 n 인터리빙 엔진들(41a_1~41a_n)의 출력들 각각에 대하여 스테이트 쉐이핑 동작을 수행한다.
로직 회로(417)는 스테이트 쉐이핑 엔진(412)의 출력들(다시 말해서, 제 1 내지 제 n 인터리빙 엔진들(41a_1~41a_n)의 출력들 각각에 대하여 스테이트 쉐이핑된 결과 값들)을 비교하고, 비교 결과를 기반으로 다중화부(418)를 제어할 수 있다. 예를 들어, 스테이트 쉐이핑 엔진(412)은 인터리빙 데이터들의 최상위 비트(MSB)에 포함된 데이터들이 데이터 "1"의 개수가 감소되도록 스테이트 쉐이핑 동작을 수행할 수 있다. 이 때, 로직 회로(417)는 제 1 내지 제 n 인터리빙 엔진들(41a_1~41a_n)의 출력들 각각에 대하여 스테이트 쉐이핑된 결과 값들 중 최상위 비트(MSB)에 데이터 "1"이 가장 적게 포함된 결과 값을 선택할 수 있다. 로직 회로(417)는 변환 데이터(DATA_t)로서 선택된 결과값이 출력되도록 다중화부(418)를 제어할 것이다. 예시적으로, 선택 정보(SEL)는 램(414)에 저장될 수 있다. 또는 선택 정보(SEL)는 불휘발성 메모리 장치(420)에 변환 데이터(DATA_t)와 함께 저장될 수 있다.
다음으로, 읽기 동작시, 스테이트 쉐이핑 엔진(412)은 불휘발성 메모리 장치(420)로부터 변환 데이터(DATA_t)를 수신하고, 수신된 변환 데이터(DATA_t)에 대하여 역변환을 수행할 수 있다. 이 때, 로직 회로(417)는 선택 정보(SEL)를 기반으로 제 1 및 제 n 인터리빙 엔진들(41a_1~41a_n) 중 어느 하나가 역 인터리빙 동작을 수행하여 데이터(DATA)를 출력하도록 역 다중화부(419) 및 다중화부(418)를 제어할 것이다.
예시적으로, 스테이트 쉐이핑 엔진(412)의 스테이트 쉐이핑 효과는 입력 데이터의 패턴에 따라 달라질 수 있다. 즉, 복수의 인터리빙 엔진들(41a_1~41a_n)의 인터리빙 동작을 통해 입력 패턴을 변화시킴으로써 스테이트 쉐이핑 엔진(412)의 동작 효과를 극대화할 수 있을 것이다.
상술된 본 발명의 제 4 실시 예에 따르면, 메모리 컨트롤러(410)는 수신된 데이터(DATA)에 대하여 복수의 인터리빙 엔진들을 통해 인터리빙 동작을 수행하고, 인터리빙된 데이터들 중 어느 하나에 대하여 스테이트 쉐이핑 동작을 수행한다. 이 때, 스테이트 쉐이핑된 데이터들을 비교하여 가장 효율적인 인터리빙 엔진을 선택함으로써, 불휘발성 메모리 장치의 데이터 신뢰성이 향상된다.
도 9은 본 발명의 제 5 실시 예에 따른 메모리 컨트롤러를 보여주는 블록도이다. 도 9을 참조하면, 메모리 컨트롤러(510)는 에러 정정 코드 엔진(511), 스테이트 쉐이핑 엔진(512), CPU(513), 램(514), 호스트 인터페이스(515), 플래시 인터페이스(516), 및 랜덤마이징 엔진(517)를 포함한다. 에러 정정 코드 엔진(511), 스테이트 쉐이핑 엔진(512), CPU513), 램(514), 호스트 인터페이스(515), 및 플래시 인터페이스(516)는 도 2를 참조하여 설명되었으므로 상세한 설명은 생략된다. 도 9의 메모리 컨트롤러(510)는 도 2의 메모리 컨트롤러(110)와 비교하여 랜덤마이징 엔진(517)를 더 포함한다.
랜덤마이징 엔진(517)는 데이터(DATA)의 패턴, 즉 데이터 "1" 및 데이터 "0"이 확률적으로 일정하게 유지될 수 있도록 데이터(DATA)를 변환시키는 기능을 수행한다. 다시 말해서, 랜덤마이징 엔진(517)는 데이터(DATA)에 해당되는 프로그램 상태들이 각각 유사한 비율이 되도록 데이터(DATA)를 변환시킨다. 이로 인해, 불휘발성 메모리 장치(520)의 신뢰성이 향상될 수 있다.
메모리 컨트롤러(510)는 램덤마이징 엔진(517), 에러 정정 코드 엔진(511), 및 스테이트 쉐이핑 엔진(512)의 동작들을 기반으로 데이터(DATA)를 변환하여 변환 데이터(DATA_t)를 출력한다. 메모리 컨트롤러(510)의 동작은 이하의 도면들을 참조하여 상세하게 설명된다.
도 10a 및 도 10b는 도 9에 도시된 메모리 컨트롤러의 동작을 설명하기 위한 블록도들이다. 간결한 설명을 위하여, 불휘발성 메모리 시스템의 읽기 및 쓰기 동작을 서로 구분하여 설명하기로 한다. 또한, 각각의 구성 요소들의 동작은 도 4a 내지 도 9을 참조하여 설명되었으므로, 구성 요소들 각각의 상세한 설명은 생략된다.
도 10a 및 도 10b를 참조하면, 메모리 컨트롤러(510)는 외부 장치로부터 데이터(DATA)를 수신한다. 랜덤마이징 엔진(517)는 수신된 데이터(DATA)의 랜덤화 동작을 수행한다. 이 후, 스테이트 쉐이핑 엔진(512)는 랜덤화된 데이터(DATA_r)의 스테이트 쉐이핑 동작을 수행한다. 이 후, 에러 정정 코드 엔진(311)는 스테이트 쉐이핑 데이터(DATA_s)의 에러 정정 코드의 패리티를 생성하여 변환 데이터(DATA_t)를 출력한다. 불휘발성 메모리 장치(320)는 변환 데이터(DATA_t)를 저장한다. 즉, 메모리 컨트롤러(310)는 랜덤화, 스테이트 쉐이핑, 및 에러 정정 코드 생성 순으로 동작을 수행하여 데이터(DATA)를 변환 데이터(DATA_t)로 변환하여 출력할 것이다.
예시적으로, 변환 데이터(DATA_t)는 데이터의 신뢰성을 향상시키기 위한 에러 정정 코드 및 메모리 셀의 열화를 감소시키는 스테이트 쉐이핑된 데이터를 포함한다. 따라서, 불휘발성 메모리 장치(520)가 변환 데이터(DATA_t)를 저장함으로써, 데이터의 신뢰성이 향상되고, 메모리 셀들의 열화가 감소된다.
다음으로, 읽기 동작시, 메모리 컨트롤러(510)는 불휘발성 메모리 장치(520)로부터 변환 데이터(DATA_t)를 수신한다. 에러 정정 코드 엔진(511)는 수신된 변환 데이터(DATA_t)의 에러 정정 동작을 수행하여, 변환 데이터(DATA_t)에 포함된 에러를 정정한다. 스테이트 쉐이핑 엔진(312)는 에러가 정정된 변환 데이터(DATA_t)를 역변환하여, 랜덤화된 데이터를 출력한다. 랜덤마이징 엔진(317)는 랜덤화된 데이터를 역변환하여 데이터(DATA)를 출력한다. 즉, 메모리 컨트롤러(310)는 에러 정정, 스테이트 쉐이핑 역변환, 및 랜덤화 역변환 순으로 동작을 수행하여 변환 데이터(DATA_t)를 데이터(DATA)로 변환하여 출력할 것이다.
도 11a 및 도 11b는 본 발명의 데 6 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다. 도 12a 및 도 12b는 본 발명의 제 7 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다. 먼저, 도 11a 및 도 11b를 참조하면, 불휘발성 메모리 시스템(600)은 메모리 컨트롤러(610) 및 불휘발성 메모리 장치(620)를 포함한다. 메모리 컨트롤러(600)는 제 1 및 제 2 에러 정정 코드 엔진(611a, 611b), 스테이트 쉐이핑 엔진(612), 및 랜덤마이징 엔진(617)를 포함한다. 도 11a 및 도 11b의 메모리 컨트롤러(600)는 도 7a 및 도 7b의 메모리 컨트롤러(300)와 비교하여, 랜덤마이징 엔진(617)를 더 포함한다. 이하에서, 도 11 및 도 12의 메모리 컨트롤러(600)와 도 7의 메모리 컨트롤러(300)의 차이점이 중점적으로 설명된다.
메모리 컨트롤러(610)는 메모리 컨트롤러(310, 도 7a 및 도 7b 참조)와 비교하여, 랜덤화 동작을 더 수행한다. 이 때, 쓰기 동작시, 메모리 컨트롤러(610)는 제 1 에러 정정 코드 엔진(611a)로부터 출력되는 에러 정정 코드 및 데이터(DATA)에 대하여 랜덤화 동작을 수행한다. 이 후, 동작은 도 7의 메모리 컨트롤러(310)의 동작과 동일하다.
다음으로, 읽기 동작시, 랜덤마이징 엔진(617)는 스테이트 쉐이핑 엔진(612)에 의해 역변환된 데이터에 대하여 랜덤화 역변환 동작을 수행한다. 나머지 구성 요소들의 동작은 도 7a 및 도 7b의 메모리 컨트롤러(310)의 동작과 동일하다.
다음으로, 도 12a 및 도 12b를 참조하면, 메모리 컨트롤러(710)는 제 1 및 제 2 에러 정정 코드 엔진(711a, 711b), 스테이트 쉐이핑 엔진(712), 및 랜덤마이징 엔진(717)을 포함한다.
메모리 컨트롤러(710)는 도 11a의 메모리 컨트롤러(610)와 달리 제 1 에러 정정 코드 엔진(711a)의 동작 이전에 랜덤마이징 엔진(717)의 랜덤화 동작을 먼저 수행한다. 이 후, 나머지 동작은 도 7의 메모리 컨트롤러(310)의 동작과 동일하다.
읽기 동작시, 메모리 컨트롤러(710)는 도 7의 메모리 컨트롤러(310)와 동일하게 동작한다. 다만, 메모리 컨트롤러(710)는 제 1 에러 정정 코드 엔진(711a)의 동작 이후에, 랜덤마이징 엔진(717)의 랜덤화 역변환 동작을 수행한다.
예시적으로, 스테이트 쉐이핑의 효과(예를 들어, 열화될 가능성이 높은 프로그램 상태에 대응하는 데이터 개수 감소)를 최대화하기 위하여, 불휘발성 메모리 시스템의 쓰기 동작시, 랜덤마이징 엔진(717)의 랜덤화 동작은 스테이트 쉐이핑 엔진(712)의 스테이트 쉐이핑 동작 이전에 수행될 것이다. 마찬가지로, 읽기 동작시, 랜덤마이징 엔진(717)의 랜덤화 역변환 동작은 스테이트 쉐이핑 엔진(712)의 스테이트 쉐이핑 역변환 동작 이후에 수행될 것이다.
도 10a 내지 도 12b를 참조하여 설명된 바와 같이 메모리 컨트롤러는 랜덤화, 에러 정정 코드 생성, 및 스테이트 쉐이핑 동작을 수행하여 변환 데이터를 생성하고, 변환 데이터의 스테이트 쉐이핑 역변환, 에러 정정, 및 랜덤화 역변환 동작을 수행하여 데이터를 생성할 수 있다. 따라서, 향상된 신뢰성을 갖는 불휘발성 메모리 시스템이 제공된다.
도 13은 불휘발성 메모리 장치에 포함된 메모리 셀들의 문턱 전압 산포를 보여주는 도면이다. 간결한 설명을 위하여, 메모리 셀들은 각각 3-bit의 TLC(Triple Level Cell)인 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
도 11을 참조하면, 메모리 셀들은 각각 소거 상태(E) 및 제 1 내지 제 7 프로그램 상태(P1~P7) 중 어느 하나의 상태로 프로그램될 수 있다. 이 때, 높은 문턱 전압을 갖는 프로그램 상태로 프로그램하기 위해서는 메모리 셀에 인가되는 프로그램 전압이 높아질 것이다. 다시 말해서, 높은 문턱 전압을 갖는 프로그램 상태로 프로그램될 경우, 메모리 셀의 열화가 발생할 가능성이 높을 것이다.
도 14 내지 도 17은 본 발명의 실시 예에 따른 데이터 필드를 예시적으로 보여주는 도면들이다. 먼저 도 14, 및 도 15을 참조하면, 불휘발성 메모리 장치로 전송될 변환 데이터(DATA_t)는 LSB, CSB, 및 MSB 페이지들을 포함할 수 있다. 각각의 페이지들은 데이터 영역 및 스페어 영역(Data area, Spare area)을 포함한다. 데이터 영역(Data)은 사용자 데이터를 포함한다. 스페어 영역(Spare area)은 스테이트 쉐이핑 패리티(SS parity) 및 에러 정정 코드의 패리티(ECC parity)를 포함한다.
E P1 P2 P3 P4 P5 P6 P7
LSB 1 0 0 0 0 1 1 1
CSB 1 1 0 0 1 1 0 0
MSB 1 1 1 0 0 0 0 1
E P1 P2 P3 P4 P5 P6 P7
Randomizing 12.5% 12.5% 12.5% 12.5% 12.5% 12.5% 12.5% 12.5%
state shaping
(CASE 1)
11.43% 13.41% 11.43% 13.41% 15.75% 13.41% 11.43% 9.73%
state shaping
(CASE 2)
12.42% 14.58% 12.42% 12.42% 14.58% 12.42% 10.58% 10.58%
표 1은 복수의 프로그램 상태들 및 데이터의 비트들의 관계를 보여주는 표이다. 표 2는 메모리 컨트롤러(610)의 동작에 따라 복수의 프로그램 상태들에 대응하는 메모리 셀들의 개수를 비율적으로 보여주는 표이다.
표 1 및 표 2를 참조하면, 메모리 컨트롤러(610)는 도 1 내지 도 12b를 참조하여 설명된 방법을 기반으로 변환 데이터(DATA_t)를 생성할 수 있다. 예를 들어, 복수의 프로그램 상태들 및 데이터 비트의 대응관계는 표 1에 도시된 바와 같을 수 있다. 이 경우, 제 7 프로그램 상태(P7)가 메모리 셀의 열화를 발생시키는 프로그램 상태라 가정하면, 메모리 컨트롤러(610)는 제 7 프로그램 상태(P7)에 대응하는 "데이터 101"의 개수를 감소시킬 것이다. 즉, LSB 페이지의 데이터들 중 "데이터 1"을 감소시키고, CSB 페이지의 데이터들 중 "데이터 0"을 감소시키고, MSB 페이지의 데이터들 중 "데이터 1"을 감소시킬 것이다. 이 경우의 복수의 프로그램 상태들(E, P1~P7)의 비율은 표 2의 CASE 1과 같을 것이다.
예시적으로, 메모리 컨트롤러(610)는 각각의 페이지에 대하여 선택적으로, 스테이트 쉐이핑 동작을 수행할 수 있다. 예를 들어, 메모리 컨트롤러(310)는 제 7 프로그램 상태(P7)에 해당되는 "데이터 101"를 감소시키기 위해 LSB 및 CSB 페이지들의 데이터에 대하여 스테이트 쉐이핑 동작을 수행할 수 있다. 이 경우, 메모리 컨트롤러(310)는 LSB 페이지의 데이터들 중 "데이터 1"을 감소시키고, CSB 페이지의 데이터들 중 "데이터 0"을 감소시키고, MSB 페이지의 데이터는 스테이트 쉐이핑 동작을 수행하지 않을 것이다. 이 경우의 복수의 프로그램 상태들(E, P1~P7)의 비율은 표 2의 CASE 2와 같을 것이다.
예시적으로, 메모리 컨트롤러(610)는 스테이트 쉐이핑 동작을 수행하지 않은 MSB 페이지에 대하여 선택적으로 랜덤화 동작을 더 수행할 수 있다.
도 16 및 도 17를 참조하면, 메모리 셀들은 4-bit의 QLC(Quadruple Level Cell)일 수 있다. 이 때, 데이터(DATA)는 LSB, CSB1, CSB2, 및 MSB 페이지들을 포함할 수 있다. 복수의 페이지들 각각은 데이터 영역 및 스페어 영역(data area, spare area)를 포함할 수 있다. 데이터 영역(data area)은 사용자 데이터를 포함한다. 스페어 영역은 스테이트 쉐이핑 패리티(SS parity) 및 에러 정정 코드의 패리티(ECC parity)를 포함한다.
메모리 컨트롤러(310)는 복수의 페이지들 각각에 대하여 스테이트 쉐이핑 패리티(SS parity) 및 에러 정정 코드(ECC code)의 용량을 선택적으로 조절할 수 있다. 예를 들어, 도 14에 도시된 바와 같이, LSB 페이지의 스테이트 쉐이핑 패리티의 용량을 에러 정정 코드의 용량보다 크게 조절할 수 있다. 또는 LSB 페이지의 스테이트 쉐이핑 패리티의 용량을 CSB1 페이지의 스테이트 쉐이핑 패리티의 용량보다 크게 조절할 수 있다. 또는 LSB 페이지의 에러 정정 코드의 용량을 CSB1 페이지의 에러 정정 코드의 용량보다 작게 설정할 수 있다. 또는 도 17에 도시된 바와 같이, 복수의 페이지들의 스테이트 쉐이핑 페리티 비트의 용량은 동일하게 하되, 에러 정정 코드의 용량은 선택적으로 조절할 수 있다.
상술된 용량 조절 방법은 는 각 페이지의 신뢰성을 기반으로 판단될 수 있다. 예를 들어, LSB 페이지는 CSB1, CSB2, 및 MSB 페이지들보다 높은 신뢰성을 가질 수 있다. 즉, LSB 페이지의 에러 정정 코드 용량을 다른 페이지들보다 작게 조절하더라도, LSB 페이지의 데이터 신뢰성은 유지될 수 있다.
상술된 본 발명의 실시 예에 따르면, 불휘발성 메모리 시스템은 에러 정정, 랜덤화, 및 스테이트 쉐이핑 동작을 수행하여, 데이터의 신뢰성을 향상시키고, 메모리 셀의 열화를 방지한다. 이 때, 스테이트 쉐이핑의 효과(예를 들어, 열화될 가능성이 높은 프로그램 상태에 대응하는 데이터 개수 감소)를 최대화하기 위하여, 불휘발성 메모리 시스템의 쓰기 동작시, 메모리 컨트롤러는 스테이트 쉐이핑 동작 이전에 랜덤화 동작을 수행하고, 읽기 동작시, 스테이트 쉐이핑 역변환 동작 이후에 랜덤화 역변환 동작을 수행한다. 따라서, 향상된 신뢰성을 갖는 불휘발성 메모리 시스템이 제공된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100 : 불휘발성 메모리 시스템
110 : 메모리 컨트롤러
111 : 에러 정정 코드 엔진
112 : 스테이트 쉐이핑 엔진
120 : 불휘발성 메모리 장치
317 : 랜덤화 엔진
41a_1~41a_n : 제 1 내지 제 n 인터리빙 엔진

Claims (10)

  1. 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법에 있어서,
    외부 장치로부터 쓰기 요청 및 데이터를 수신하는 단계;
    상기 수신된 쓰기 요청에 응답하여, 에러 정정 동작 및 스테이트 쉐이핑 동작을 기반으로 상기 수신된 데이터를 변환 데이터로 변환하는 단계; 및
    상기 변환 데이터를 상기 불휘발성 메모리 장치로 전송하는 단계를 포함하고,
    상기 변환 데이터는 에러 정정 패리티 및 스테이트 쉐이핑 패리티를 포함하고,
    상기 스테이트 쉐이핑 동작은 상기 스테이트 쉐이핑 패리티를 기반으로 상기 수신된 데이터 중 미리 정해진 데이터 패턴을 감소시키는 동작이고,
    상기 미리 정해진 데이터 패턴은 복수의 프로그램 상태들 각각에 매핑된 데이터 패턴들 중 적어도 하나인 동작 방법.
  2. 제 1 항에 있어서,
    상기 수신된 데이터를 변환 데이터로 변환하는 단계는
    상기 수신된 데이터를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 스테이트 쉐이핑 패리티를 생성하는 단계;
    상기 스테이트 쉐이핑된 데이터 및 상기 스테이트 쉐이핑 패리티의 에러 정정 패리티를 생성하는 단계를 포함하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 수신된 데이터를 변환 데이터로 변환하는 단계는
    상기 수신된 데이터의 에러 정정 패리티를 생성하는 단계;
    상기 수신된 데이터 및 상기 에러 정정 패리티를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 스테이트 쉐이핑 패리티를 생성하는 단계; 및
    상기 생성된 스테이트 쉐이핑 패리티의 오류 정정 패리티를 생성하는 단계를 포함하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 수신된 데이터를 변환 데이터로 변환하는 단계는,
    상기 수신된 데이터를 랜덤화하여 랜덤화된 데이터를 생성하는 단계;
    상기 랜덤화된 데이터를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 상기 스테이트 쉐이핑 패리티를 생성하는 단계; 및
    상기 스테이트 쉐이핑된 데이터 및 상기 스테이트 쉐이핑 패리티의 상기 에러 정정 패리티를 생성하는 단계를 포함하는 동작 방법.
  5. 제 1 항에 있어서,
    상기 수신된 데이터를 변환 데이터로 변환하는 단계는,
    상기 수신된 데이터의 오류 정정 코드를 생성하는 단계;
    상기 수신된 데이터 및 상기 오류 정정 코드를 랜덤화하여 랜덤화된 데이터를 생성하는 단계;
    상기 랜덤화된 데이터를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 스테이트 쉐이핑 패리티를 생성하는 단계; 및
    상기 생성된 스테이트 쉐이핑 패리티의 오류 정정 코드를 생성하는 단계를 포함하는 동작 방법.
  6. 제 1 항에 있어서,
    상기 수신된 데이터를 변환 데이터로 변환하는 단계는,
    상기 수신된 데이터를 랜덤화하여 랜덤화된 데이터를 생성하는 단계;
    상기 랜덤화된 데이터의 오류 정정 코드를 생성하는 단계;
    상기 랜덤화된 데이터 및 상기 랜덤화된 데이터의 오류 정정 코드를 스테이트 쉐이핑하여 스테이트 쉐이핑된 데이터 및 상기 스테이트 쉐이핑 패리티를 생성하는 단계; 및
    상기 스테이트 쉐이핑 패리티의 오류 정정 코드를 생성하는 단계를 포함하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 수신된 데이터는 복수의 페이지들을 포함하고,
    상기 수신된 데이터를 변환 데이터로 변환하는 단계는
    상기 복수의 페이지들을 선택적으로 스테이트 쉐이핑하는 단계; 및
    상기 복수의 페이지들 중 스테이트 쉐이핑되지 않은 페이지들을 랜덤화하는 단계를 포함하는 동작 방법.
  8. 제 1 항에 있어서,
    상기 수신된 데이터는 복수의 페이지들을 포함하고, 상기 복수의 페이지들 각각은 스페어 영역을 포함하고, 상기 스페어 영역은 상기 에러 정정 패리티 및 상기 스테이트 쉐이핑 패리티를 포함하고,
    상기 수신된 데이터를 변환 데이터로 변환하는 단계는
    상기 복수의 페이지들 각각의 스페어 영역의 용량을 조절하는 단계를 포함하는 동작 방법.
  9. 제 1 항에 있어서,
    상기 수신된 데이터를 변환 데이터로 변환하는 단계는
    상기 수신된 데이터를 스테이트 쉐이핑하는 단계;
    상기 미리 정해진 데이터 패턴이 상기 스테이트 쉐이핑된 데이터에 기준치 이상 포함되는지 판별하는 단계; 및
    상기 판별 결과를 기반으로 상기 수신된 데이터 및 상기 스테이트 쉐이핑된 데이터 중 어느 하나를 기반으로 변환 데이터를 생성하는 단계를 포함하는 동작 방법.
  10. 제 1 항에 있어서,
    상기 외부 장치로부터 읽기 요청을 수신하는 단계;
    상기 읽기 요청에 응답하여, 상기 불휘발성 메모리 장치로부터 상기 변환 데이터를 수신하는 단계;
    상기 에러 정정 패리티를 기반으로 상기 변환 데이터의 에러 정정을 수행하고, 상기 스테이트 쉐이핑 패리티를 기반으로 상기 변환 데이터를 스테이트 쉐이핑 역변환하여 상기 데이터를 생성하는 단계; 및
    상기 생성된 데이터를 상기 외부 장치로 전송하는 단계를 더 포함하는 동작 방법.
KR1020130091680A 2013-08-01 2013-08-01 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 KR102081081B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130091680A KR102081081B1 (ko) 2013-08-01 2013-08-01 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130091680A KR102081081B1 (ko) 2013-08-01 2013-08-01 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150015808A true KR20150015808A (ko) 2015-02-11
KR102081081B1 KR102081081B1 (ko) 2020-02-25

Family

ID=52572969

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130091680A KR102081081B1 (ko) 2013-08-01 2013-08-01 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법

Country Status (1)

Country Link
KR (1) KR102081081B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160111594A (ko) * 2015-03-16 2016-09-27 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
CN110148434A (zh) * 2018-02-13 2019-08-20 三星电子株式会社 半导体存储器件、存储系统和操作半导体存储器件的方法
US11150987B2 (en) 2019-11-22 2021-10-19 Samsung Electronics Co., Ltd. Methods of controlling operation of nonvolatile memory devices and data converters for performing the same
US11372551B2 (en) 2019-08-01 2022-06-28 Samsung Electronics Co., Ltd. Memory controllers for performing state shaping operation, memory systems including the memory controllers, and methods of operating the same

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100097961A (ko) * 2009-02-27 2010-09-06 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR20110087036A (ko) * 2010-01-25 2011-08-02 삼성전자주식회사 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법
KR20110125892A (ko) * 2010-05-14 2011-11-22 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100097961A (ko) * 2009-02-27 2010-09-06 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR20110087036A (ko) * 2010-01-25 2011-08-02 삼성전자주식회사 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법
KR20110125892A (ko) * 2010-05-14 2011-11-22 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160111594A (ko) * 2015-03-16 2016-09-27 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
CN110148434A (zh) * 2018-02-13 2019-08-20 三星电子株式会社 半导体存储器件、存储系统和操作半导体存储器件的方法
CN110148434B (zh) * 2018-02-13 2024-03-08 三星电子株式会社 半导体存储器件、存储系统和操作半导体存储器件的方法
US11372551B2 (en) 2019-08-01 2022-06-28 Samsung Electronics Co., Ltd. Memory controllers for performing state shaping operation, memory systems including the memory controllers, and methods of operating the same
US11150987B2 (en) 2019-11-22 2021-10-19 Samsung Electronics Co., Ltd. Methods of controlling operation of nonvolatile memory devices and data converters for performing the same

Also Published As

Publication number Publication date
KR102081081B1 (ko) 2020-02-25

Similar Documents

Publication Publication Date Title
US20200118620A1 (en) Adaptive processing for read threshold voltage calibration
US20170097868A1 (en) Data storage device and operating method thereof
US9015554B2 (en) Management of non-valid decision patterns of a soft read retry operation
US9639419B2 (en) Read voltage level estimating method, memory storage device and memory control circuit unit
US20090177931A1 (en) Memory device and error control codes decoding method
US9424126B2 (en) Memory controller
US10679707B2 (en) Voltage adjusting method, memory controlling circuit unit and memory storage device
US20160070507A1 (en) Memory system and method of controlling memory device
US9761326B2 (en) Memory system and memory control method
US9405624B2 (en) On-die error detection and correction during multi-step programming
US10204701B2 (en) Non-volatile memory device and read threshold voltage adjustment method for the same
US10445002B2 (en) Data accessing method, memory controlling circuit unit and memory storage device
US9841916B2 (en) Memory system for controlling semiconductor memory devices through plurality of channels
US20170168893A1 (en) Data reading method, memory control circuit unit and memory storage apparatus
US20150254134A1 (en) Memory controller, memory system, and memory control method
US9043672B2 (en) Memory controller, storage device, and memory control method
KR102081081B1 (ko) 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법
CN110858128A (zh) 数据存储装置及其共享控制器中存储器的方法
US9703628B2 (en) Memory device and system including the same
JP2018160064A (ja) メモリコントローラ、メモリシステムおよび制御方法
US10872667B2 (en) Decoding method, memory controlling circuit unit and memory storage device
US11003527B2 (en) Decoding method and device utilizing flash channel characteristic and data storage system
US9570162B2 (en) Data read method for flash memory
US20180166148A1 (en) Control method for memory device and memory controller
US20210306010A1 (en) Decoding method, memory storage device, and memory controlling circuit unit

Legal Events

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