KR20150003571A - 저장 장치, 그것의 쓰기 방법 및 읽기 방법 - Google Patents

저장 장치, 그것의 쓰기 방법 및 읽기 방법 Download PDF

Info

Publication number
KR20150003571A
KR20150003571A KR1020130076608A KR20130076608A KR20150003571A KR 20150003571 A KR20150003571 A KR 20150003571A KR 1020130076608 A KR1020130076608 A KR 1020130076608A KR 20130076608 A KR20130076608 A KR 20130076608A KR 20150003571 A KR20150003571 A KR 20150003571A
Authority
KR
South Korea
Prior art keywords
binary
data
page data
state
code
Prior art date
Application number
KR1020130076608A
Other languages
English (en)
Other versions
KR102068519B1 (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 KR1020130076608A priority Critical patent/KR102068519B1/ko
Priority to US14/297,093 priority patent/US9601205B2/en
Publication of KR20150003571A publication Critical patent/KR20150003571A/ko
Application granted granted Critical
Publication of KR102068519B1 publication Critical patent/KR102068519B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명에 따른 저장 장치는, 복수의 상태들 중 어느 하나로 프로그램 되는 메모리 셀들로 구성된 적어도 하나의 비휘발성 메모리 장치; 및 쓰기 동작시 상기 적어도 하나의 비휘발성 메모리 장치를 WOM(write-once memory)으로 이용하도록 하나의 워드라인에 연결된 메모리 셀들에 멀티-페이지 프로그램 동작을 수행하고, 읽기 동작시 싱글 레벨에 의하여 상기 멀티-페이지 중 어느 하나에 대한 페이지 읽기 동작을 수행하도록 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함한다.

Description

저장 장치, 그것의 쓰기 방법 및 읽기 방법{STORAGE DEVICE FOR ENHANCING READ PERFORMANCE, WRITING METHOD AND READING METHOD THEREOF}
본 발명의 읽기 성능을 향상시키는 저장 장치 및 그것의 쓰기 방법 및 읽기 방법에 관한 것이다.
반도체 메모리 장치는 일반적으로 DRAM, SRAM 등과 같은 휘발성 메모리 장치와 EEPROM, FRAM, PRAM, MRAM, 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구분할 수 있다. 휘발성 메모리 장치는 전원이 차단될 때 저장된 데이터를 잃지만, 비휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다. 특히, 플래시 메모리는 높은 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 갖는다. 따라서 플래시 메모리를 기반으로 하는 데이터 저장 장치가 광범위하게 사용되고 있다. 플래시 메모리를 기반으로 하는 데이터 저장 장치에는 기존의 하드 디스크를 대체하고 있는 솔리드 상태 드라이브(SSD), SD 카드나 MMC 등과 같은 메모리 카드 등이 있다.
본 발명의 목적은 읽기 성능을 향상시키는 저장 장치 및 그것의 쓰기 방법 및 읽기 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 쓰기 방법은: 쓰기 데이터를 복수의 페이지 데이터로 분할하는 단계; 상기 분할된 복수의 페이지 데이터를 서로 다른 바이너리 코드들을 이용하여 엔코딩하는 단계; 상기 엔코딩된 복수의 페이지 데이터 각각의 바이너리 값들을 상기 이용된 바이너리 코드에 대응하는 2개의 상태들로 맵핑하는 단계; 및 상기 맵핑된 복수의 페이지 데이터를 하나의 워드라인에 연결된 메모리 셀들에 프로그램하는 단계를 포함하고, 상기 맵핑된 상태들은 복수의 페이지 데이터 각각을 싱글 레벨로 읽기 가능하게 한다.
실시 예에 있어서, 상기 분할된 복수의 페이지들 각각에 대응하는 에러 정정 코드 값을 계산하는 단계; 및 상기 계산된 에러 정정 코드 값을 상기 분할된 복수의 페이지들 각각에 추가하는 단계를 더 포함한다.
실시 예에 있어서, 상기 메모리 셀들 각각은 복수의 상태들 중 어느 하나로 프로그램 되고, 상기 2개의 상태들 중 어느 하나는 상기 복수의 상태들 중 최하위 상태이고, 상기 2개의 상태들 중 다른 하나는 상기 복수의 상태들 중 상기 최하위 상태가 아닌 상태이다.
실시 예에 있어서, 상태들로 맵핑하는 단계는, 한 메모리 셀에 프로그램될 어느 한 페이지 데이터의 제 1 바이너리 값과 또 다른 페이지 데이터의 제 2 바이너리 값이 동일할 때, 상기 제 1 바이너리 값과 상기 제 2 바이너리 값들을 제 1 바이너리 값에 대응하는 제 1 상태와 상기 2 바이너리 값에 대응하는 제 2 상태 중 높은 상태로 맵핑하는 단계를 포함한다.
실시 예에 있어서, 상기 복수의 상태들은 소거 상태, 상기 소거 상태보다 높은 제 1 프로그램 상태, 상기 제 1 프로그램 상태보다 높은 제 2 프로그램 상태를 포함한다.
실시 예에 있어서, 상기 엔코딩하는 단계는, 제 1 바이너리 코드를 이용하여 "00"을 "000"으로, "01"을 "001"로, "10"을 "010"로 "11"을 "100"으로 제 1 엔코딩하는 단계; 및 제 2 바이너리 코드를 이용하여 "00"을 "111"로, "01"을 "110"으로, "10"을 "101"로, "11"을 "011"로 제 2 엔코딩하는 단계를 더 포함한다.
실시 예에 있어서, 상기 상태들을 맵핑하는 단계는, 상기 제 1 엔코딩된 페이지 데이터에서 바이너리 '0'을 상기 소거 상태로, 바이너리 '1'을 상기 제 2 프로그램 상태로 제 1 맵핑하는 단계; 및 상기 제 2 엔코딩된 페이지 데이터에서 바이너리 '0'을 상기 소거 상태로, 바이너리 '1'을 상기 제 1 프로그램 상태로 제 2 맵핑하는 단계를 더 포함한다.
실시 예에 있어서, 상기 프로그램 하는 단계는, 상기 복수의 페이지 데이터를 동시에 프로그램 하는 단계를 포함한다.
실시 예에 있어서, 상기 프로그램 하는 단계는, 상기 복수의 페이지 데이터를 사전에 결정된 순서로 따라 프로그램 하는 단계를 포함한다.
실시 예에 있어서, 상기 바이너리 코드들은 WOM(write-once memory) 코드들이다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 장치는 전체 혹은 일부를 WOM으로 이용한다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 읽기 방법은: 사전에 결정된 개수의 메모리 셀들로 구성된 코드 유닛마다 서로 다른 바이너리 코드들에 대응하는 멀티-비트 프로그래밍을 수행함으로써 하나의 워드라인에 연결된 메모리 셀들에 복수의 페이지 데이터가 저장되고, 상기 적어도 하나의 비휘발성 메모리 장치에서 적어도 하나로부터 싱글 레벨에 의하여 상기 워드라인에 연결된 메모리 셀들로부터 데이터를 읽는 단계; 상기 메모리 제어기에서 상기 읽혀진 데이터를 상기 바이너리 코드들 중에서 상기 싱글 레벨에 대응하는 바이너리 코드를 이용하여 디코딩하는 단계; 및 상기 메모리 제어기에서 상기 디코딩된 데이터를 상기 복수의 페이지 데이터 중 어느 하나로 출력하는 단계를 포함한다.
실시 예에 있어서, 상기 읽혀진 데이터를 상기 싱글 레벨에 대응하는 2개의 상태들로 디맵핑하는 단계를 더 포함한다.
실시 예에 있어서, 상기 읽혀진 데이터는 에러 정정 코드 값을 포함하고, 상기 디코딩된 데이터를 에러 정정 코드를 이용하여 에러 정정하는 단계를 더 포함한다.
실시 예에 있어서, 상기 코드 유닛은 3개의 메모리 셀들로 구성되고, 상기 3개의 메모리 셀들 각각은 소거 상태, 상기 소거 상태보다 높은 제 1 프로그램 상태, 상기 제 1 프로그램 상태보다 높은 제 2 프로 그램 상태 중 어느 하나로 프로그램 됨으로써 2개의 2-비트 프로그래밍 되고, 상기 복수의 페이지 데이터는 제 1 및 제 2 페이지 데이터를 포함한다.
실시 예에 있어서, 상기 제 1 프로그램 상태와 상기 제 2 프로그램 상태 사이의 제 1 읽기 전압을 근거로 하여 상기 제 1 페이지 데이터를 읽는 단계를 더 포함한다.
실시 예에 있어서, 상기 메모리 셀들로부터 데이터를 읽는 단계는, 상기 소거 상태와 상기 제 1 프로그램 상태 사이의 제 2 읽기 전압을 근거로 하여 제 2 페이지 데이터를 읽는 단계를 더 포함한다.
본 발명의 다른 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 읽기 방법은: 사전에 결정된 개수의 메모리 셀들로 구성된 코드 유닛마다 서로 다른 바이너리 코드들에 대응하는 멀티-비트 프로그래밍을 함으로써, 하나의 워드라인에 연결된 메모리 셀들에 복수의 페이지 데이터가 저장되고, 상기 적어도 하나의 비휘발성 메모리 장치에서 싱글 레벨들 각각에 의하여 복수의 페이지 데이터를 순차적으로 읽는 단계; 상기 메모리 제어기에서 상기 싱글 레벨들 각각에 대응하는 2개의 상태들을 이용하여 상기 읽혀진 페이지 데이터의 바이너리 값들을 순차적으로 디맵핑하는 단계; 상기 디맵핑된 복수의 페이지 데이터를 상기 바이너리 코드들 중 대응하는 바이너리 코드를 이용하여 순차적으로 디코딩하는 단계; 및 상기 디코딩된 복수의 페이지 데이터를 에러 정정 코드를 이용하여 순차적으로 에러 정정하는 단계를 포함한다.
본 발명의 실시 예에 따른 저장 장치는, 복수의 상태들 중 어느 하나로 프로그램 되는 메모리 셀들로 구성된 적어도 하나의 비휘발성 메모리 장치; 및 쓰기 동작시 상기 적어도 하나의 비휘발성 메모리 장치를 WOM(write-once memory)으로 이용하도록 하나의 워드라인에 연결된 메모리 셀들에 멀티-페이지 프로그램 동작을 수행하고, 읽기 동작시 싱글 레벨에 의하여 상기 멀티-페이지 중 어느 하나에 대한 페이지 읽기 동작을 수행하도록 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함한다.
실시 예에 있어서, 상기 메모리 제어기는, 상기 쓰기 동작시 쓰기 데이터의 에러 정정 코드 값을 발생하고, 상기 읽기 동작시 읽기 데이터의 에러 정정 코드를 이용하여 에러 정정하는 에러 정정 회로를 더 포함한다.
실시 예에 있어서, 상기 메모리 제어기는 코드 회로를 더 포함하고, 상기 코드 회로는, 상기 쓰기 동작시 쓰기 데이터를 바이너리 코드를 이용하여 엔코딩하는 바이너리 엔코더; 상기 읽기 동작시 읽기 데이터를 상기 바이너리 코드를 이용하여 디코딩하는 바이너리 디코더; 상기 엔코딩된 쓰기 데이터의 바이너리 값들을 상기 복수의 상태들 중에서 상기 싱글 레벨에 대응하는 2개의 상태들로 맵핑하는 상태 맵퍼; 및 상기 페이지 읽기 동작에 따라 읽혀진 데이터를 상기 2개의 상태들에 대응하는 바이너리 값들로 디맵핑하는 상태 디맵퍼를 포함하고, 상기 디맵핑된 데이터는 상기 읽기 데이터이다.
실시 예에 있어서, 상기 복수의 상태들 중 최하위 상태에 바이너리 '0'이 맵핑되고, 그 외의 상태들은 바이너리 '1'이 맵핑된다.
실시 예에 있어서, 상기 멀티-페이지 프로그램 동작은 복수의 메모리 셀들로 구성된 코드 유닛마다 멀티-비트 프로그래밍에 의해 수행된다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 장치는 상기 저장 장치의 구동에 필요한 코드 데이터를 저장한다.
상술한 바와 같이 본 발명에 따른 저장 장치는 멀티 레벨 셀들에 대하여 싱글 레벨에 의하여 페이지 읽기 동작을 수행함으로써, 읽기 성능을 향상시킬 수 잇다.
도 1은 본 발명을 개략적으로 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 저장 장치를 예시적으로 보여주는 블록도이다.
도 3은 도 2에 도시된 비휘발성 메모리 장치의 메모리 블록에 대한 실시 예를 보여주는 도면이다.
도 4는 도 1에 도시된 상태 맵퍼에서 수행되는 상태 맵핑 과정을 예시적으로 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 저장 장치의 쓰기 방법에 대한 제 1 실시 예를 보여주는 흐름이다.
도 6은 본 발명의 실시 예에 따른 저장 장치의 쓰기 방법에 대한 제 2 실시 예를 보여주는 흐름도이다.
도 7은 본 발명의 실시 예에 따른 저장 장치의 읽기 동작을 예시적으로 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 저장 장치의 읽기 방법에 대한 제 1 실시 예를 보여주는 흐름도이다.
도 9는 본 발명의 실시 예에 따른 저장 장치의 읽기 방법에 대한 제 2 실시 예를 보여주는 흐름도이다.
도 10은 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 프로그램 방법에 대한 개념을 설명하는 도면이다.
도 11은 3개의 메모리 셀들로 구성된 코드 유닛을 보여주는 도면이다.
도 12는 코드 유닛마다 수행되는 2개의 서로 다른 2 비트 프로그래밍을 예시적으로 보여주는 도면이다.
도 13은 도 12에 도시된 코딩 및 맵핑 방식에 따른 프로그램 동작에 대한 실시 예를 예시적으로 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따라 코드 유닛마다 싱글 레벨 읽기 동작을 수행하는 것을 설명하기 위한 도면이다.
도 15는 도 12에 도시된 코딩 및 맵핑 방식에 따른 읽기 동작에 대한 실시 예를 예시적으로 보여주는 도면이다.
도 16은 본 발명의 실시 예에 따른 VNAND의 어느 하나의 블록을 보여주는 도면이다.
도 17a ~ 도 17b는 본 발명의 응용 예들을 보여주는 도면들이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
도 1은 본 발명을 개략적으로 설명하기 위한 도면이다. 도 1를 참조하면, 비휘발성 메모리 장치(NVM)는 전체 혹은 일부를 WOM(write-once memory)으로 사용하도록 멀티-페이지 프로그램 동작을 수행하고, 싱글 레벨로 한 페이지 읽기 동작을 수행하도록 구현될 것이다. 여기서 WOM는 데이터를 저장하면 소거 동작 없이 사용하는 메모리이다. 본 발명의 멀티-페이지 프로그램 동작은 하나의 워드라인(WL)에 연결된 메모리 셀들(MLCs)에 복수의 페이지들을 저장하고, 복수의 페이지들 각각은 싱글 레벨에 의하여 읽기 동작을 가능하도록 만들 것이다. 여기서 메모리 셀들 각각은 한 비트 초과하는 데이터를 저장하는 멀티-레벨 셀(MLC; multi-level cell)이다.
본 발명의 비휘발성 메모리 장치(NVM)는 한 비트를 초과하는 데이터를 저장하는 멀티 레벨 셀들(MLCs)로 구성됨에도 불구하고, 단 한 번의 읽기 동작으로 한 페이지 데이터를 출력할 수 있다. 따라서, 본 발명은 빠른 읽기 속도를 요구하는 랜덤 읽기 성능을 향상시킬 수 있다.
비휘발성 메모리 장치(NVM)는 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND;VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다. 또한, 비휘발성 메모리 장치(NVM)는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다. 아래에서는 설명의 편의를 위하여 비휘발성 메모리 장치(NVM)이 낸드 플래시 메모리 장치라고 하겠다.
도 2는 본 발명의 실시 예에 따른 저장 장치(10)를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 저장 장치(10)는 적어도 하나의 비휘발성 메모리 장치(100) 및 그것을 제어하는 메모리 제어기(200)를 포함한다.
비휘발성 메모리 장치(100)는 데이터를 저장하는 메모리 셀들로 구성된 복수의 메모리 블록들을 포함한다. 또한, 비휘발성 메모리 장치(100)는 옵션적으로 외부로부터 고전압(Vpp)을 제공받도록 구현될 수 있다.
메모리 제어기(200)는 적어도 하나의 채널을 통하여 비휘발성 메모리 장치(100)에 연결된다. 메모리 제어기(200)는 적어도 하나의 프로세서(210), 버퍼 메모리(220), 에러 정정 회로(230), 코드 회로(240), 결합 인터페이스(250) 및 메모리 인터페이스(260)를 포함한다.
적어도 하나의 프로세서(210)는 저장 장치(10)의 전반적인 동작을 제어하도록 구현될 것이다.
버퍼 메모리(220)는 프로세서(210)의 처리 동작에 필요한 데이터를 임시로 저장하도록 구현될 것이다. 또한, 버퍼 메모리(220)는 쓰기 동작시 외부로부터 입력된 데이터(이하, "쓰기 데이터")를 비휘발성 메모리 장치(100)에 프로그램 하기 위하여 임시로 저장하거나, 읽기 동작시 비휘발성 메모리 장치(100)로부터 읽혀진 데이터(이하, "읽기 데이터")를 외부로 출력하기 위하여 임시로 저장하도록 구현될 수 있다.
에러 정정 회로(230)는 ECC(error correction code) 엔코더(232) 및 ECC 디코더(234)를 포함한다. ECC 엔코더(232)는 버퍼 메모리(230)로부터 쓰기 데이터를 입력 받고, 에러 정정 코드를 이용하여 쓰기 데이터에 대응하는 에러 정정 코드 값을 계산하고, 에러 정정 코드 값을 포함한 쓰기 데이터를 코드 회로(240)로 출력한다. ECC 디코더(234)는 코드 회로(240)로부터 에러 정정 코드 값을 포함한 읽기 데이터를 입력 받고, 에러 정정 코드를 이용하여 읽기 데이터의 에러를 정정할 것이다.
또한, 도시되지 않았지만 저장 장치(10)는 메모리 제어기(200)를 구동하는 데 필요한 코드 데이터를 저장하는 코드 메모리를 더 포함할 수 있다. 코드 메모리는 비휘발성 메모리 장치(예를 들어, PRAM, MRAM 등)로 구현될 수 있다. 다른 실시 예에 있어서, 코드 메모리는 비휘발성 메모리 장치(100)의 일부를 이용할 수도 있다.
코드 회로(240)는 비휘발성 메모리 장치(100)의 전체 혹은 일부를 WOM(write once memory)로 사용하도록 쓰기 데이터/읽기 데이터를 바이너리 코드(binary code)를 이용하여 변조(modulation)/복조(demodulation)할 수 있다. 여기서 WOM은 데이터를 저장하면 소거되지 않는 메모리이다. 여기서, 바이너리 코드는 하나의 워드라인에 연결된 메모리 셀들(다른 말로, 페이지)에 페이지 데이터를 여러 번 저장할 수 있도록 변조하는 코드이다. 실시 예에 있어서, 바이너리 코드는 WOM 코드(혹은, multiwrite binary WOM code) 일 수 있다.
특히, 코드 회로(240)는 싱글 레벨(single level)로 한 페이지 읽기 동작을 수행할 수 있도록 에러 정정 코드 값을 포함한 쓰기 데이터를 바이너리 코드(binary code)를 이용하여 코딩하거나, 싱글 레벨에 의한 한 페이지 읽기 동작에서 읽혀진 데이터를 바이너리 코드를 이용하여 디코딩할 수 있다. 여기서 디코딩된 읽혀진 데이터는 에러 정정 코드 값을 포함한 읽기 데이터이다.
코드 회로(240)는 바이너리 엔코더(242), 바이너리 디코더(244), 상태 맵퍼(246) 및 상태 디맵퍼(248)를 포함할 수 있다.
바이너리 엔코더(242)는 ECC 엔코더(232)로부터 에러 정정 코드 값을 포함하는 쓰기 데이터를 입력 받고, 입력된 쓰기 데이터를 바이너리 코드를 이용하여 코딩할 수 있다. 실시 예에 있어서, 입력된 쓰기 데이터는 한 페이지의 데이터일 수 있다.
바이너리 디코더(244)는 상태 디맵퍼(248)로부터 에러 정정 코드 값을 포함하는 읽기 데이터를 입력 받고, 입력된 읽기 데이터를 바이너리 코드를 이용하여 디코딩할 수 있다. 실시 예에 있어서, 디코딩된 데이터는 한 페이지의 데이터일 수 있다.
상태 맵퍼(246)는 바이너리 엔코더(242)로부터 코딩된 쓰기 데이터를쓰여질 페이지에 적합한 상태들(states)로 맵핑할 수 있다. 여기서 쓰여질 페이지는 쓰기 동작시 하나의 워드라인에 연결된 메모리 셀들에 저장할 수 있는 복수의 페이지들 중에서 선택된 페이지이다. 여기서 한 워드라인에 관련된 복수의 페이지들 각각은 서로 다른 바이너리 코드 값에 의해 코딩된 쓰기 데이터를 저장할 것이다. 다른 말로, 상태 맵퍼(246)는 페이지 데이터를 저장하는 셀들의 상태들을 페이지 정보를 근거로 하여 결정할 수 있다.
상태 디맵퍼(248)는 하나의 워드라인에 관련된 복수의 페이지들 중 어느 하나의 페이지를 싱글 레벨로 읽기 동작을 수행함으로써 읽혀진 읽기 데이터를 읽혀진 페이지에 적합한 상태들로 디맵핑할 수 있다.
한편, 도 2에 도시된 코드 회로(240)는 에러 정정 회로(230)의 뒷단에 배치되었다. 하지만 본 발명이 반드시 여기에 제한되지 않을 것이다. 본 발명의 코드 회로는 에러 정정 회로(230)의 앞 단에 배치될 수도 있다.
결합 인터페이스(250)는 외부의 장치(호스트)와 인터페이스 기능을 제공할 수 있다. 실시 예에 있어서, 결합 인터페이스(250)는 USB, SCSI, ESDI, SATA, SATAe, SAS, PCI, PCIe, MMC, IDE, MIPI, PPN 등과 다양한 인터페이스들 중 적어도 하나로 구현될 수 있다. 결합 인터페이스(250)는 쓰기 동작시 외부로부터 쓰기 데이터를 입력 받고, 입력된 데이터를 버퍼 메모리(230)로 전송하고, 읽기 동작시 에러 정정된 읽기 데이터를 버퍼 메모리(230)로부터 입력 받는다.
메모리 인터페이스(260)는 비휘발성 메모리 장치(100)와 인터페이스 기능을 제공할 수 있다. 메모리 인터페이스(260)는 쓰기 동작시 코드 회로(240)로부터 쓰여질 페이지 데이터를 입력 받고, 읽기 동작시 비휘발성 메모리 장치(100)로부터 읽혀진 페이지 데이터를 입력 받는다.
본 발명의 실시 예에 따른 저장 장치(10)는 바이너리 코드를 이용하여 소거 동작 없이 데이터를 메모리 셀들에 여러 번 저장하도록 함으로써, 소거 동작을 늦추거나 수행하지 않을 수 있다. 그 결과로써, 본 발명은 소거 동작에 따른 메모리 셀들의 열화를 늦추거나 줄일 수 있다.
일반적인 저장 장치는 멀티 레벨 셀들(MLCs; multi level cells)에 저장된 한 페이지 데이터를 읽기 위해서 평균적으로 1.5회(2 비트-MLC: 1.5회, 3-비트 MLC: 2.3회, 4-비트 MLC: 3.75회)의 읽기 동작을 수행해야만 한다. 반면에, 본 발명의 실시 예에 따른 저장 장치(10)는 바이너리 코드를 이용하여 페이지 데이터를 저장함으로써 싱글 레벨에 의하여 페이지 데이터를 읽을 수 있다. 따라서, 본 발명의 저장 장치(10)는 종래의 그것과 비교하여 읽기 성능을 크게 향상시킬 수 있다.
도 3은 도 2에 도시된 비휘발성 메모리 장치(100)의 메모리 블록에 대한 실시 예를 보여주는 도면이다. 도 2를 참조하면, 메모리 블록은 낸드 플래시 메모리 구조이다. 메모리 블록은 워드라인들(WL1 ~ WLm, m은 2 이상의 정수)과 비트라인들(BL1 ~ BLn, n은 2 이상의 정수) 사이의 배치된 복수의 메모리 셀들로 구성된다. 또한, 메모리 블록은, 비트라인들(BL1 ~ BLn) 각각에 연결된 스트링(ST)을 포함한다. 스트링(ST)은, 도 2에 도시된 바와 같이, 비트라인과 공통 선택 라인(CSL) 사이에 직렬 연결된 적어도 하나의 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1 ~ MCm, m은 2 이상의 정수), 적어도 하나의 접지 선택 트랜지스터(GST)로 구성된다.
하나의 워드라인(예를 들어, WLm-1)에 연결된 메모리 셀들을 페이지라고 불린다. 본 발명의 실시 예에 따른 페이지는 k-1(여기서 k는 3 이상의 정수)개의 페이지 데이터를 저장할 수 있다. 실시 예에 있어서, k는 하나의 메모리 셀에 구현 가능한 문턱 전압 상태들의 개수의 최대값 이하일 수 있다. 각 페이지 데이터는 서로 다른 바이너리 코드 값에 따라 코딩 및 상태 맵핑 될 것이다. 예를 들어, 제 1 페이지 데이터는 제 1 바이너리 코드(Code 1)에 따라 코딩 및 상태 맵핑 될 것이고, 제 2 페이지 데이터는 제 2 바이너리 코드(Code 2)에 따라 코딩 및 상태 맵핑 될 것이며, 제 k-1 페이지 데이터는 제 k-1 바이너리 코드(Code k-1)에 따라 코딩 및 상태 맵핑 될 것이다.
본 발명의 실시 예에 따른 페이지는 서로 다른 바이너리 코드에 대응하는 복수의 페이지 데이터를 저장할 수 있다.
도 4는 도 1에 도시된 상태 맵퍼(246)에서 수행되는 상태 맵핑 과정을 예시적으로 설명하기 위한 도면이다. 도 4에 도시된 바와 같이, 메모리 셀은 데이터를 저장하기 위한 k개의 상태들(S1 ~ Sk) 중 어느 하나로 프로그램된다고 가정하겠다.
제 1 바이너리 코드(Code 1)에 의해 코딩된 제 1 페이지 데이터의 상태 맵핑은, 제 1 상태(S1)와 제 k 상태(Sk)를 이용할 것이다. 예를 들어, 제 1 페이지 데이터의 바이너리 '0'은 제 1 상태(S1), 즉 최하위 상태로 맵핑 될 것이고, 제 1 페이지 데이터의 바이너리 '1'은 제 k 상태(Sk), 즉 최상위 상태로 맵핑 될 것이다.
제 2 바이너리 코드(Code 2)에 의해 코딩된 제 2 페이지 데이터의 상태 맵핑은, 제 1 상태(S1)와 제 k-1 상태(Sk-1)를 이용할 것이다. 예를 들어, 제 2 페이지 데이터의 바이너리 '0'은 제 1 상태(S1), 즉 최하위 상태로 맵핑 될 것이고, 제 2 페이지 데이터의 바이너리 '1'은 제 k-1 상태(Sk-1)로 맵핑 될 것이다. 여기서 제 k-1 상태(Sk-1)는 최상위 상태(Sk) 보다 낮은 상태이다.
실시 예에 있어서, 제 2 페이지 데이터의 바이너리 '1'은 다른 페이지 데이터의 상태 맵핑을 고려하여 제 k 상태(Sk)로 맵핑 될 수도 있다. 예를 들어, 제 1 페이지 데이터의 바이너리 '1'이 저장된 메모리 셀에 제 2 페이지 데이터의 바이너리 '1'을 저장하고자 할 때, 제 2 페이지 데이터의 바이너리 '1'은 제 k 상태(Sk)로 맵핑 될 것이다. 이는 메모리 셀에 저장된 제 1 페이지 데이터의 바이너리 '1'과 제 2 페이지 데이터의 바이너리 '1'를 모두 복원하기 위함이다.
제 k-1 바이너리 코드(Code k-1)에 의해 코딩된 제 k-1 페이지 데이터의 상태 맵핑은, 제 1 상태(S1)와 제 2 상태(S2)를 이용할 것이다. 예를 들어, 제 k-1 페이지 데이터의 바이너리 '0'은 제 1 상태(S1), 즉 최하위 상태로 맵핑 될 것이고, 제 k-1 페이지 데이터의 바이너리 '1'은 제 2 상태(S2)로 맵핑 될 것이다.
실시 예에 있어서, 제 k-1 페이지 데이터의 바이너리 '1'은 다른 페이지 데이터의 상태 맵핑을 고려하여 제 3 상태(S3) 내지 제 k 상태(Sk) 중 어느 하나로 맵핑 될 수도 있다. 예를 들어, 제 1 페이지 데이터의 바이너리 '1'이 저장된 메모리 셀에 제 k-1 페이지 데이터의 바이너리 '1'을 저장하고자 할 때, 제 k-1 페이지 데이터의 바이너리 '1'은 제 k 상태(Sk)로 맵핑 될 것이다. 이는 메모리 셀에 저장된 제 1 페이지 데이터의 바이너리 '1'과 제 k-1 페이지 데이터의 바이너리 '1'를 모두 복원하기 위함이다.
한편, 도 3에서는 최하위 상태(S1)가 바이너리 '0'으로 맵핑되고, 그 외의 상태들(S2 ~ Sk)이 바이너리 '1'로 맵핑되었으나, 본 발명이 반드시 여기에 제한될 필요는 없다. 본 발명에서는 최하위 상태(S1)가 바이너리 '1'로 맵핑되고, 그 외의 상태들(S2 ~ Sk)이 바이너리 '0'로 맵핑 될 수도 있다.
본 발명의 실시 예에 따른 각 페이지 데이터 상태 맵핑은 싱글 레벨(single level)로 각 페이지 데이터를 판별할 수 있도록 구현될 것이다.
도 5는 본 발명의 실시 예에 따른 저장 장치의 쓰기 방법에 대한 제 1 실시 예를 보여주는 흐름이다. 도 1 내지 도 5를 참조하면, 저장 장치의 쓰기 방법은 다음과 같다. 아래에서는 설명의 편의를 위하여 두 페이지 데이터의 프로그램 방법에 대하여 설명하도록 하겠다.
코드 회로(240, 도 2 참조)의 바이너리 엔코더(242, 도 2 참조)는 제 1 바이너리 코드(Code 1)를 이용하여 제 1 페이지 데이터를 엔코딩한다(S110). 여기서 제 1 페이지 데이터는 에러 정정 코드 값을 포함할 수 있다. 코드 회로(240)의 상태 맵퍼(246)는 엔코딩된 제 1 페이지 데이터의 바이너리 값들을 대응하는 2개의 상태들(제 1 상태(S1, 도 4 참조) 및 제 2 상태(Sk, 도 4 참조))로 맵핑할 것이다(S120). 여기서 제 2 상태(Sk)는 도 4에 도시된 바와 같이, 최상위 상태일 수 있다. 비휘발성 메모리 장치(100, 도 2 참조)는 메모리 제어기(200, 도 2 참조)로부터 맵핑된 제 1 페이지 데이터를 입력 받고, 맵핑된 제 1 페이지 데이터를 프로그램할 것이다(S130).
코드 회로(240)의 바이너리 엔코더(242)는 제 2 바이너리 코드(Code 2)를 이용하여 제 2 페이지 데이터를 엔코딩한다(S140). 코드 회로(240)의 상태 맵퍼(246)는 엔코딩된 제 2 페이지 데이터의 바이너리 값들을 대응하는 제 1 상태(S1) 및 제 3 상태(Sk-1, 도 4 참조)로 맵핑할 것이다(S150). 여기서 제 3 상태(Sk)는 도 4에 도시된 바와 같이, 제 2 상태(Sk)보다 낮은 상태일 수 있다. 비휘발성 메모리 장치(100)는 메모리 제어기(200)로부터 맵핑된 제 2 페이지 데이터를 입력 받고, 맵핑된 제 2 페이지 데이터를 프로그램할 것이다(S160).
본 발명의 실시 예에 따른 저장 장치의 쓰기 방법은, 페이지 데이터를 바이너리 코드로 엔코딩하고, 엔코딩된 페이지 데이터의 바이너리 값들을 사전에 결정된 상태들로 맵핑하고, 맵핑된 페이지 데이터를 프로그램할 것이다.
한편, 도 5에서는 맵핑된 제 1 페이지 데이터를 프로그램 한 뒤, 맵핑된 제 2 페이지 데이터를 프로그램하였다. 하지만, 본 발명이 반드시 여기에 제한되지 않을 것이다. 본 발명의 프로그램 방법은 복수의 맵핑된 페이지 데이터를 한번에 프로그램하도록 구현될 수 있다. 이 경우 프로그램 방법은, 스테이트 맵핑을 제외하고는 일반적인 프로그램 방법과 동일할 수 있다.
도 6은 본 발명의 실시 예에 따른 저장 장치의 쓰기 방법에 대한 제 2 실시 예를 보여주는 흐름도이다. 도 1 내지 도 4, 및 도 6를 참조하면, 저장 장치의 쓰기 방법은 다음과 같다.
메모리 제어기(200, 도 2 참조)는 비휘발성 메모리 장치(100, 도 2 참조)에 프로그램될 쓰기 데이터를 구분하여 복수의 페이지 데이터를 발생할 것이다(S210). 여기서 복수의 페이지 데이터 각각은 에러 정정 코드 값을 포함한 페이지 데이터일 수 있다.
코드 회로(240, 도 2 참조)의 바이너리 엔코더(242, 도 2 참조)는 복수의 페이지 데이터 각각에 대응하는 바이너리 코드를 이용하여 엔코딩을 수행할 것이다(S220). 코드 회로(240)의 상태 맵퍼(246, 도 2 참조)는 도 3에 도시된 바와 같이, 엔코딩된 복수의 페이지 데이터의 바이너리 값들을 대응하는 상태들로 맵핑할 것이다(S230). 비휘발성 메모리 장치(100)는 맵핑된 복수의 페이지 데이터에 대응하는 프로그램 데이터를 입력 받고, 입력된 프로그램 데이터를 프로그램할 것이다. 즉, 맵핑된 복수의 페이지 데이터가 동시에 프로그램될 것이다(S240).
본 발명의 실시 예에 따른 저장 장치의 쓰기 방법은, 복수의 페이지 데이터를 바이너리 코딩하고, 코딩된 복수의 페이지 데이터의 바이너리 값들을 대응하는 상태들로 맵핑하고, 맵핑된 복수의 페이지 데이터를 한꺼번에 프로그램할 것이다.
도 7은 본 발명의 실시 예에 따른 저장 장치의 읽기 동작을 예시적으로 보여주는 도면이다. 설명의 편의를 위하여, 도 4에 도시된 바와 같이 페이지 데이터가 맵핑되고, 그에 따라 제 1 페이지 및 제 k-1 페이지 데이터가 프로그램되었다고 가정하겠다. 도 1 내지 도 4 및 도 7을 참조하면, 제 1 읽기 레벨(R1)을 이용하여 제 1 페이지 데이터 읽기 동작이 수행되고, 제 2 읽기 레벨(R2)을 이용하여 제 2 페이지 데이터 읽기 동작이 수행되고, 제 k-1 읽기 레벨(Rk-1)을 이용하여 제 k-1 페이지 데이터 읽기 동작이 수행된다. 여기서, 읽기 레벨들(R1 ~ Rk-1)은 읽혀질 페이지에 따라 결정될 것이다.
본 발명의 실시 예에 따른 저장 장치의 읽기 동작은 싱글 레벨을 이용하여 페이지 데이터를 읽을 수 있다.
도 8은 본 발명의 실시 예에 따른 저장 장치의 읽기 방법에 대한 제 1 실시 예를 보여주는 흐름도이다. 도 1 내지 도 4, 도 7 및 도 8을 참조하면, 저장 장치의 읽기 방법은 다음과 같다. 여기서 읽기 동작은 한 페이지에 대한 것이다.
비휘발성 메모리 장치(100, 도 2 참조)에서 읽혀진 페이지에 대응하는 싱글 레벨로 페이지 데이터가 읽혀 진다(S310). 읽혀진 데이터는 메모리 제어기(200, 도 2 참조)의 메모리 인터페이스(260, 도 2 참조)를 통하여 코드 회로(240, 도 2 참조)의 상태 디맵퍼(248, 도 2 참조)에 입력된다. 상태 디맵퍼(248)는 싱글 레벨에 대응하는 상태들을 이용함으로써 읽혀진 페이지 데이터의 바이너리 값들을 디맵핑할 것이다(S320). 코드 회로(240)의 디코더(244, 도 2 참조)는 싱글 레벨에 대응하는 바이너리 코드를 이용하여 디맵핑된 페이지 데이터를 디코딩할 것이다(S330). 에러 정정 회로(230, 도 2 참조)의 ECC 디코더(232)는 디코딩된 페이지 데이터를 에러 정정 코드를 이용하여 에러 정정할 것이다(S340). 이로써 페이지 데이터에 대한 읽기 동작이 완료될 것이다.
본 발명의 실시 예에 따른 저장 장치의 읽기 동작은, 싱글 레벨로 페이지 데이터를 읽고, 읽혀진 페이지 데이터에 대응한 바이너리 값들을 디맵핑하고, 디맵핑된 페이지 데이터를 바이너리 코드를 이용하여 디코딩할 것이다.
도 8에 도시된 읽기 방법은 랜덤 읽기(random read) 동작에 적용 가능하다. 한편, 본 발명의 저장 장치의 읽기 방법은 시퀀셜 읽기(sequential read) 동작에도 적용할 수 있다.
도 9는 본 발명의 실시 예에 따른 저장 장치의 읽기 방법에 대한 제 2 실시 예를 보여주는 흐름도이다. 도 1 내지 도 4, 도 7 및 도 9를 참조하면, 저장 장치의 읽기 방법은 다음과 같다. 여기서 읽기 동작은 하나의 워드라인에 대응하는 복수의 페이지들에 대한 것이다.
비휘발성 메모리 장치(100, 도 2 참조)는 도 7에 도시된 바와 같이 싱글 레벨들(R1, R2, ..., Rk-1) 각각에 의하여 복수의 페이지 데이터를 순차적으로 읽는다(S410). 순차적으로 읽혀진 페이지 데이터는 메모리 제어기(200, 도 2 참조)의 메모리 인터페이스(260, 도 2 참조)를 통하여 코드 회로(240, 도 2 참조)의 상태 디맵퍼(248, 도 2 참조)에 순차적으로 입력될 것이다. 상태 디맵퍼(248)는 각각의 싱글 레벨에 대응하는 상태들을 이용함으로써 각각의 읽혀진 페이지 데이터의 바이너리 값들을 순차적으로 디맵핑할 것이다(S420). 코드 회로(240)의 디코더(244, 도 2 참조)는 각각의 싱글 레벨에 대응하는 바이너리 코드를 이용하여 각각의 디맵핑된 페이지 데이터를 순차적으로 디코딩할 것이다(S430). 에러 정정 회로(230, 도 2 참조)의 ECC 디코더(232)는 각각의 디코딩된 페이지 데이터를 에러 정정 코드를 이용하여 순차적으로 에러 정정할 것이다(S440). 이로써 모든 페이지 데이터에 대한 읽기 동작이 완료될 것이다.
본 발명의 실시 예에 따른 저장 장치는, 각각의 페이지 데이터를 순차적으로 읽고, 각각의 읽혀진 페이지 데이터의 바이너리 값들을 순차적으로 디맵핑하고, 각각의 디맵핑된 페이지 데이터를 각각의 바이너리 코드를 이용하여 순차적으로 디코딩함으로써, 시퀀셜 읽기 동작(혹은, 파이프라인 읽기 동작)을 수행할 수 있다.
상술 된 본 발명의 저장 장치의 데이터 변조 프로그램 방법은, 비휘발성 메모리 장치 관점에서 보면, 사전에 결정된 메모리 셀들마다 사전에 결정된 비트 프로그래밍을 여러 번 수행한다고 볼 수 있다.
도 10은 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 프로그램 방법에 대한 개념을 설명하는 도면이다. 도 10에 도시된 바와 같이, 메모리 셀들(C1 ~C3i) 각각은 소거 상태(E) 및 프로그램 상태들(P1 ~ Pk-1, k는 3이상의 정수) 중 어느 하나로 프로그램될 것이다. 도 10를 참조하면, 하나의 워드라인(WL)에 연속적으로 연결된 복수의 셀들(예를 들어, C1, C2, ..., Ci, i는 3 이상의 정수) 마다, 즉 코드 유닛(Code Unit) 마다 k-1개의 j-비트 프로그래밍들(다른 말로, (k-1)*j/i-bit MLC Programming)이 수행될 것이다. 여기서 j는 i보다 작은 정수이다. 여기서 j-비트 프로그래밍들 각각은 서로 다른 코딩 방식에 따라 수행되고, 워드라인(WL)에 저장되는 복수의 페이지들 각각에 대응할 것이다.
3-상태 실시 예
본 발명은 코드 유닛마다 서로 다른 코딩 방식에 따른 j-비트 프로그래밍을 여러 번 한다. 아래에서는 설명의 편의를 위하여, 본 발명의 코드 유닛이 3개의 메모리 셀들로 구성되고, 메모리 셀들 각각은 3개의 상태들 중 어느 하나로 프로그램 되고, 3개의 메모리 셀들마다 2개의 2 비트 프로그래밍(1.33-bit MLC Programming)을 한다고 가정하겠다.
도 11은 3개의 메모리 셀들로 구성된 코드 유닛을 보여주는 도면이다. 도 11을 참조하면, 메모리 셀들(C1, C2, C3) 각각은 소거 상태(E), 제 1 프로그램 상태(P1), 및 제 2 프로그램 상태(P3) 중 어느 하나로 프로그램될 것이다. 예를 들어, 도 10에 도시된 바와 같이, 제 1 메모리 셀(C1)은 제 1 프로그램 상태(P1)으로 프로그램되고, 제 2 메모리 셀(C2)은 제 2 프로그램 상태(P2)로 프로그램되고, 제 3 메모리 셀(C3)은 소거 상태(E)로 프로그램될 수 있다. 본 발명은 코드 유닛을 구성하는 3개의 메모리 셀들(C1, C2, C3)의 상태들을 바이너리 코드에 따라 디코딩함으로써 코드 유닛에 어떤 정보(information)가 저장되었는 지를 읽어낼 수 있다.
도 12는 코드 유닛마다 수행되는 2개의 서로 다른 2 비트 프로그래밍을 예시적으로 보여주는 도면이다. 도 10 내지 도 12를 참조하면, 첫번째 2-비트 프로그래밍은 제 1 WOM 코드에 의해 정보가 코딩되고, 코딩된 데이터의 바이너리 '0'은 소거 상태(E)로 맵핑되고, 코딩된 데이터의 바이너리 '1'은 제 2 프로그램 상태(P2)로 맵핑 될 것이다. 제 1 WOM 코드에 의하면, "00"는 "000"으로 엔코딩되고, "01"은 "001"로 엔코딩되고, "10"은 "010"으로 엔코딩되고, "11"는 "100"으로 엔코딩될 것이다. 따라서, 첫번째 2-비트 프로그래밍은 코드 유닛을 구성하는 메모리 셀들(C1, C2, C3)을 소거 상태(E) 혹은 제 2 프로그램 상태(P2)로 프로그램함으로써 2-비트 정보를 저장할 수 있다.
두번째 2-비트 프로그래밍은 제 2 WOM 코드에 의해 정보가 코딩되고, 코딩된 데이터의 바이너리 '0'은 소거 상태(E)로 맵핑되고, 코딩된 데이터의 바이너리 '1'은 제 1 프로그램 상태(P1)로 맵핑 될 것이다. 제 2 WOM 코드에 의하면, "00"는 "111"로 엔코딩되고, "01"은 "110"로 엔코딩되고, "10"은 "101"로 엔코딩되고, "11"는 "011"로 엔코딩될 것이다. 따라서, 두번째 2-비트 프로그래밍은 코드 유닛을 구성하는 메모리 셀들(C1, C2, C3)을 소거 상태(E) 혹은 제 1 프로그램 상태(P1)로 프로그램함으로써 2-비트 정보를 저장할 수 있다.
실시 예에 있어서, 코드 유닛마다 첫번째 2-비트 프로그래밍이 완료된 후, 두번째 2-비트 프로그램이 시작될 수 있다.
다른 실시 예에 있어서, 코드 유닛마다 첫번째 2-비트 프로그래밍 및 두번째 2-비트 프로그래밍이 동시에 진행될 수 있다.
도 13은 도 12에 도시된 코딩 및 맵핑 방식에 따른 프로그램 동작에 대한 실시 예를 예시적으로 보여주는 도면이다. 도 13에서는 설명의 편의를 위하여 프로그램될 제 1 및 제 2 페이지 데이터가 16 비트 데이터이다.
프로그램될 제 1 페이지 데이터가 "0000100101111011"이라면, 코드 회로(242, 도 2 참조)는 제 1 페이지 데이터를 도 11에 도시된 제 1 WOM 코드를 이용하여 엔코딩한 뒤, 엔코딩된 24 비트의 제 1 페이지 데이터를 소거 상태(E)와 제 2 프로그램 상태(P2)를 이용하여 "E-E-E-E-E-E-E-P2-E-E-E-P2-E-E-P2-P2-E-E-E-P2-E-P2-E-E"로 맵핑할 것이다.
또한, 프로그램될 제 2 페이지 데이터가 "0111100011010100"이라면, 코드 회로(242)는 제 2 페이지 데이터를 도 11에 도시된 제 2 WOM 코드를 이용하여 엔코딩한 뒤, 엔코딩된 24 비트의 제 2 페이지 데이터를 소거 상태(E), 제 1 프로그램 상태(P1), 및 제 2 프로그램 상태(P2)를 이용하여 "P1-P1-E-E-E-P1-E-P2-E-P1-P1-P2-E-P1-P2-P2-E-E-E-P2-E-P2-E-E"로 맵핑할 것이다. 여기서 제 1 페이지 데이터의 맵핑에서 제 2 프로그램 상태(P2)로 맵핑된 메모리 셀은, 제 2 페이지 데이터의 맵핑에서 제 2 프로그램 상태(P2)를 유지할 것이다.
따라서, 워드라인(WL)에 연결된 24 개의 메모리 셀들(1 ~ 24)에 제 1 및 제 2 페이지 데이터를 프로그램하면, 최종적으로 메모리 셀들의 상태들은 "P1-P1-E-E-E-P1-E-P2-E-P1-P1-P2-E-P1-P2-P2-E-E-E-P2-E-P2-E-E"가 될 것이다.
다른 말로, 24개의 메모리 셀들(1 ~24)을 "P1-P1-E-E-E-P1-E-P2-E-P1-P1-P2-E-P1-P2-P2-E-E-E-P2-E-P2-E-E" 상태들로 프로그램 시키면, 24개의 메모리 셀들(1 ~24)에는 "0000100101111011"의 제 1 페이지 데이터 및 "0111100011010100"의 제 2 페이지 데이터가 저장될 것이다.
도 14는 본 발명의 실시 예에 따라 코드 유닛마다 싱글 레벨 읽기 동작을 수행하는 것을 설명하기 위한 도면이다. 도 12 및 도 13에서 설명된 바와 같이, 코드 유닛 마다 제 1 및 제 2 페이지 데이터의 2 비트 데이터가 프로그램될 것이다. 도 14를 참조하면, 제 1 페이지 데이터 읽기 동작은 제 1 프로그램 상태(P1)과 제 2 프로그램 상태(P2) 사이의 제 1 읽기 전압(R1)을 근거로 하여 수행되고, 제 2 페이지 데이터 읽기 동작은 소거 상태(E)와 제 1 프로그램 상태(P1) 사이의 제 2 읽기 전압(R2)을 근거로 하여 수행될 것이다.
도 15는 도 12에 도시된 코딩 및 맵핑 방식에 따른 읽기 동작에 대한 실시 예를 예시적으로 보여주는 도면이다. 도 15에서는 설명의 편의를 위하여 24개의 메모리 셀들(1 ~ 24)이 "P1-P1-E-E-E-P1-E-P2-E-P1-P1-P2-E-P1-P2-P2-E-E-E-P2-E-P2-E-E" 상태들로 프로그램 되었다고 가정하겠다.
제 1 페이지 데이터 읽기 동작은 다음과 같다. 제 1 읽기 전압(R1)에 의하여 24개의 메모리 셀들(1 ~ 24)에 대한 제 1 페이지 읽기 동작을 수행하면, 비휘발성 메모리 장치(100)에서 읽혀진 24 비트의 데이터는 "000000010001001100010100"이 될 것이다. 24 비트의 읽혀진 제 1 페이지 데이터는 코드 회로(240, 도 2 참조)에서 제 1 WOM 코드을 이용함으로써 "0000100101111011"로 디코딩 될 것이다. 여기서 16 비트의 디코딩된 "0000100101111011"는 읽혀진 제 1 페이지 데이터가 될 것이다.
제 2 페이지 데이터 읽기 동작은 다음과 같다. 제 2 읽기 전압(R2)에 의하여 24개의 메모리 셀들(1 ~ 24)에 대한 제 2 페이지 읽기 동작을 수행하면, 비휘발성 메모리 장치(100)에서 읽혀진 24 비트의 데이터는 "110001010111011100010100"이 될 것이다. 24 비트의 읽혀진 제 2 페이지 데이터는 코드 회로(240)에서 제 2 WOM 코드를 이용함으로써 "0111100011010011"로 디코딩 될 것이다. 여기서 16 비트의 디코딩된 "0111100011010011"는 읽혀진 제 2 페이지 데이터가 될 것이다.
본 발명의 실시 예에 따른 읽기 동작은 싱글 레벨로 페이지 데이터 읽기 동작을 수행할 수 있다.
한편, 본 발명의 비휘발성 메모리 장치는 수직형 낸드 플래시 메모리(VNAND)일 수 있다.
도 16은 본 발명의 실시 예에 따른 VNAND의 어느 하나의 블록을 보여주는 도면이다. 도 16을 참조하면, 기판 위에 4개의 서브 블록들이 형성된다. 각각의 서브 블록들은 기판 위에 워드라인 컷들 사이에 적어도 하나의 접지 선택 라인(GSL), 복수의 워드라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL)이 판 형태로 적층됨으로써 형성된다. 여기서 적어도 하나의 스트링 선택 라인(SSL)은 스트링 선택 라인 컷으로 분리된다. 여기서 각각의 워드라인 컷들은, 도시되지 않았지만 공통 소스 라인(Common Source Line: CSL)을 포함한다. 실시 예에 있어서, 각각의 워드라인 컷에 포함된 공통 소스 라인(CSL)은 공통으로 연결된다. 비트라인에 연결된 필라가 적어도 하나의 접지 선택 라인(GSL), 복수의 워드라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL)을 관통함으로써, 스트링이 형성된다.
도 16에서는 워드라인 컷들 사이의 대상을 서브 블록으로 도시하였는데, 본 발명이 반드시 여기에 제한되지 않는다. 본 발명의 서브 블록은 워드라인 컷과 스트링 선택 라인 컷 사이의 대상을 서브 블록으로 명명할 수 있다.
본 발명의 실시 예에 따른 블록은 두 개의 워드라인들이 하나로 병합된 구조, 다른 말로 워드라인 병합 구조(merged wordline structure)로 구현될 수 있다.
도 17a, 도 17b, 도 17c, 도 17d는 본 발명이 적용되는 응용 예들이다.
본 발명은 SSD(solid state drive)에 적용 가능하다.
도 17a은 본 발명의 실시 예에 따른 SSD를 예시적으로 보여주는 블록도이다. 도 17a을 참조하면, SSD(1000)는 복수의 비휘발성 메모리 장치들(1100) 및 SSD 제어기(1200)를 포함한다. SSD(1000)은 도 1 내지 도 15에서 설명된 바와 같이 WOM(write-once memory)을 위하여 멀티 페이지 프로그램 동작을 수행하고, 싱글 레벨에 의한 한 페이지 읽기 동작을 수행하도록 구현될 것이다.
비휘발성 메모리 장치들(1100)은 옵션적으로 외부 고전압(Vpp)을 제공받도록 구현될 수 있다. SSD 제어기(1200)는 복수의 채널들(CH1~CH4)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. SSD 제어기(1200)는 적어도 하나의 프로세서(1210), 버퍼 메모리(1220), 에러 정정 회로(1230), 호스트 인터페이스(1250) 및 비휘발성 메모리 인터페이스(1260)를 포함한다. SSD 제어기(1200)는 도 2에 도시된 메모리 제어기(200)와 동일한 구성 및 기능을 수행하도록 구현될 수 있다.
본 발명의 실시 예에 따른 SSD(1000)는 멀티 페이지 프로그램 동작으로 구현된 WOM이므로 셀당 저장되는 비트의 수가 늘어날 뿐 아니라, 싱글 레벨로 페이지 읽기 동작을 수행함으로써 읽기 성능도 크게 향상시킬 수 있다.
본 발명은 eMMC(embedded multimedia card, moviNAND, iNAND)에도 적용 가능하다.
도 17b은 본 발명의 실시 예에 따른 eMMC를 예시적으로 보여주는 블록도이다. 도 17b을 참조하면, eMMC(2000)는 적어도 하나의 낸드 플래시 메모리 장치(2100) 및 제어기(2200)를 포함할 수 있다.
낸드 플래시 메모리 장치(2100)는 SDR(single data rate) 낸드 혹은 DDR(double data rate) 낸드일 수 있다. 메모리 제어기(2200)는 복수의 채널들을 통하여 낸드 플래시 메모리 장치(2100)에 연결된다. 제어기(2200)는 적어도 하나의 제어기 코어(2210), 호스트 인터페이스(2250) 및 낸드 인터페이스(2260)를 포함한다. 적어도 하나의 제어기 코어(2210)는 eMMC(2000)의 전반적인 동작을 제어한다. 호스트 인터페이스(2250)는 제어기(2210)와 호스트의 인터페이싱을 수행한다. 낸드 인터페이스(2260)는 낸드 플래시 메모리 장치(2100)와 제어기(2200)의 인터페이싱을 수행한다. 실시 예에 있어서, 호스트 인터페이스(2250)는 병렬 인터페이스(예를 들어, MMC 인터페이스)일 수 있다. 다른 실시 예에 있어서, eMMC(2000)의 호스트 인터페이스(2250)는 직렬 인터페이스(예를 들어, UHS-II, UFS 인터페이스)일 수 있다. 본 발명의 제어기(2200)는 도 1에 도시된 메모리 제어기(200)로 구현될 수 있다.
eMMC(2000)는 호스트로부터 전원 전압들(Vcc, Vccq)을 제공받는다. 여기서, 제 1 전원 전압(Vcc, 예를 들어 3.3V)은 낸드 플래시 메모리 장치(2100) 및 낸드 인터페이스(2230)에 제공되고, 제 2 전원 전압(Vccq, 예를 들어 1.8V/3.3V)은 제어기(2200)에 제공된다. 실시 예에 있어서, eMMC(2000)는 외부 고전압(Vpp)을 옵션적으로 제공받을 수 있다.
본 발명의 실시 예에 따른 eMMC(2000)는 WOM으로 사용함으로써 데이터의 신뢰성을 향상시킬 수 있다.
본 발명은 UFS(uiversal flash storage)에도 적용 가능하다.
도 17c은 본 발명의 실시 예에 따른 UFS 시스템을 예시적으로 보여주는 블록도이다. 도 17c을 참조하면, UFS 시스템(3000)은 UFS 호스트(3100), UFS 장치들(3200, 3300), 임베디드 UFS 장치(3300), 착탈형 UFS 카드(3400)를 포함할 수 있다. UFS 호스트(3100)는 모바일 장치의 어플리케이션 프로세서일 수 있다. UFS 호스트(3100), UFS 장치들(3200, 3300), 임베디드 UFS 장치(3300), 및 착탈형 UFS 카드(3400) 각각은 UFS 프로토콜에 의하여 외부의 장치들과 통신할 수 있다. UFS 장치들(3200, 3300), 임베디드 UFS 장치(3300), 및 착탈형 UFS 카드(3400) 중 적어도 하나는 도 2에 도시된 저장 장치(10)로 구현될 수 있다.
한편, 임베디드 UFS 장치(3300)와 착탈형 UFS 카드(3400)는 UFS 프로토콜이 아닌 다른 프로토콜에 의해 통신할 수 있다. UFS 호스트(3100)와 착탈형 UFS 카드(3400)는 다양한 카드 프로토콜(예를 들어, UFDs, MMC,SD(secure digital), mini SD, Micro SD 등)에 의해 통신할 수 있다.
본 발명은 모바일 장치에도 적용 가능하다.
도 17d는 본 발명의 실시 예에 따른 모바일 장치(4000)를 예시적으로 보여주는 블록도이다. 도 17d를 참조하면, 모바일 장치(4000)는 어플리케이션 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 저장 장치(4400), 및 모바일 램(4500)를 포함한다.
어플리케이션 프로세서(4100)는 모바일 장치(4000)의 전반적인 동작을 제어한다. 통신 모듈(4200)은 외부와의 유선/무선 통신을 제어하도록 구현될 것이다. 디스플레이/터치 모듈(4300)은 어플리케이션 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 것이다. 저장 장치(4400)는 사용자의 데이터를 저장하도록 구현될 것이다. 저장 장치(4400)는 eMMC, SSD, UFS 장치일 수 있다. 저장 장치(4400)는 도 2에서 설명된 저장 장치(10)로 구현될 것이다. 모바일 램(4500)은 모바일 장치(4000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다.
본 발명의 실시 예에 따른 모바일 장치(4000)는 읽기 동작의 성능을 향상시키는 저장 장치(4400)를 구비함으로써 시스템적인 성능 향상을 꾀할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 실시 예에 있어서, 본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10: 저장 장치
100: 비휘발성 메모리 장치
200: 메모리 제어기
210: 프로세서
220: 버퍼 메모리
230: 에러 정정 회로
232: ECC 엔코더
234: ECC 디코더
240: 코드 회로
242: 바이너리 엔코더
244: 바이너리 디코더
246: 상태 맵퍼
248: 상태 디맵퍼
250: 결합 인터페이스
260: 메모리 인터페이스
WOM: Write-Once Memory

Claims (24)

  1. 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 쓰기 방법에 있어서:
    쓰기 데이터를 복수의 페이지 데이터로 분할하는 단계;
    상기 분할된 복수의 페이지 데이터를 서로 다른 바이너리 코드들을 이용하여 엔코딩하는 단계;
    상기 엔코딩된 복수의 페이지 데이터 각각의 바이너리 값들을 상기 이용된 바이너리 코드에 대응하는 2개의 상태들로 맵핑하는 단계; 및
    상기 맵핑된 복수의 페이지 데이터를 하나의 워드라인에 연결된 메모리 셀들에 프로그램하는 단계를 포함하고,
    상기 맵핑된 상태들은 상기 복수의 페이지 데이터 각각을 싱글 레벨로 읽기 가능하게 하는 쓰기 방법.
  2. 제 1 항에 있어서,
    상기 분할된 복수의 페이지들 각각에 대응하는 에러 정정 코드 값을 계산하는 단계; 및
    상기 계산된 에러 정정 코드 값을 상기 분할된 복수의 페이지들 각각에 추가하는 단계를 더 포함하는 쓰기 방법.
  3. 제 1 항에 있어서,
    상기 메모리 셀들 각각은 복수의 상태들 중 어느 하나로 프로그램 되고,
    상기 2개의 상태들 중 어느 하나는 상기 복수의 상태들 중 최하위 상태이고,
    상기 2개의 상태들 중 다른 하나는 상기 복수의 상태들 중 상기 최하위 상태가 아닌 상태인 쓰기 방법.
  4. 제 3 항에 있어서,
    상기 상태들로 맵핑하는 단계는,
    한 메모리 셀에 프로그램될 어느 한 페이지 데이터의 제 1 바이너리 값과 또 다른 페이지 데이터의 제 2 바이너리 값이 동일할 때, 상기 제 1 바이너리 값과 상기 제 2 바이너리 값들을 제 1 바이너리 값에 대응하는 제 1 상태와 상기 2 바이너리 값에 대응하는 제 2 상태 중 높은 상태로 맵핑하는 단계를 포함하는 쓰기 방법.
  5. 제 3 항에 있어서,
    상기 복수의 상태들은 소거 상태, 상기 소거 상태보다 높은 제 1 프로그램 상태, 상기 제 1 프로그램 상태보다 높은 제 2 프로그램 상태를 포함하는 쓰기 방법.
  6. 제 5 항에 있어서,
    상기 엔코딩하는 단계는,
    제 1 바이너리 코드를 이용하여 "00"을 "000"으로, "01"을 "001"로, "10"을 "010"로 "11"을 "100"으로 제 1 엔코딩하는 단계; 및
    제 2 바이너리 코드를 이용하여 "00"을 "111"로, "01"을 "110"으로, "10"을 "101"로, "11"을 "011"로 제 2 엔코딩하는 단계를 더 포함하는 쓰기 방법.
  7. 제 6 항에 있어서,
    상기 상태들을 맵핑하는 단계는,
    상기 제 1 엔코딩된 페이지 데이터에서 바이너리 '0'을 상기 소거 상태로, 바이너리 '1'을 상기 제 2 프로그램 상태로 제 1 맵핑하는 단계; 및
    상기 제 2 엔코딩된 페이지 데이터에서 바이너리 '0'을 상기 소거 상태로, 바이너리 '1'을 상기 제 1 프로그램 상태로 제 2 맵핑하는 단계를 더 포함하는 쓰기 방법.
  8. 제 1 항에 있어서,
    상기 프로그램 하는 단계는,
    상기 복수의 페이지 데이터를 동시에 프로그램 하는 단계를 포함하는 쓰기 방법.
  9. 제 1 항에 있어서,
    상기 프로그램 하는 단계는,
    상기 복수의 페이지 데이터를 사전에 결정된 순서로 따라 프로그램 하는 단계를 포함하는 쓰기 방법.
  10. 제 1 항에 있어서,
    상기 바이너리 코드들은 WOM(write-once memory) 코드들인 쓰기 방법.
  11. 제 10 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리 장치는 전체 혹은 일부를 WOM으로 이용하는 쓰기 방법.
  12. 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 읽기 방법에 있어서:
    사전에 결정된 개수의 메모리 셀들로 구성된 코드 유닛마다 서로 다른 바이너리 코드들에 대응하는 멀티-비트 프로그래밍을 수행함으로써 하나의 워드라인에 연결된 메모리 셀들에 복수의 페이지 데이터가 저장되고,
    상기 적어도 하나의 비휘발성 메모리 장치에서 적어도 하나로부터 싱글 레벨에 의하여 상기 워드라인에 연결된 메모리 셀들로부터 데이터를 읽는 단계;
    상기 메모리 제어기에서 상기 읽혀진 데이터를 상기 바이너리 코드들 중에서 상기 싱글 레벨에 대응하는 바이너리 코드를 이용하여 디코딩하는 단계; 및
    상기 메모리 제어기에서 상기 디코딩된 데이터를 상기 복수의 페이지 데이터 중 어느 하나로 출력하는 단계를 포함하는 읽기 방법.
  13. 제 12 항에 있어서,
    상기 읽혀진 데이터를 상기 싱글 레벨에 대응하는 2개의 상태들로 디맵핑하는 단계를 더 포함하는 읽기 방법.
  14. 제 12 항에 있어서,
    상기 읽혀진 데이터는 에러 정정 코드 값을 포함하고, 상기 디코딩된 데이터를 에러 정정 코드를 이용하여 에러 정정하는 단계를 더 포함하는 읽기 방법.
  15. 제 12 항에 있어서,
    상기 코드 유닛은 3개의 메모리 셀들로 구성되고,
    상기 3개의 메모리 셀들 각각은 소거 상태, 상기 소거 상태보다 높은 제 1 프로그램 상태, 상기 제 1 프로그램 상태보다 높은 제 2 프로 그램 상태 중 어느 하나로 프로그램 됨으로써 2개의 2-비트 프로그래밍 되고,
    상기 복수의 페이지 데이터는 제 1 및 제 2 페이지 데이터를 포함하는 읽기 방법.
  16. 제 15 항에 있어서,
    상기 제 1 프로그램 상태와 상기 제 2 프로그램 상태 사이의 제 1 읽기 전압을 근거로 하여 상기 제 1 페이지 데이터를 읽는 단계를 더 포함하는 읽기 방법.
  17. 제 15 항에 있어서,
    상기 메모리 셀들로부터 데이터를 읽는 단계는,
    상기 소거 상태와 상기 제 1 프로그램 상태 사이의 제 2 읽기 전압을 근거로 하여 제 2 페이지 데이터를 읽는 단계를 더 포함하는 읽기 방법.
  18. 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 읽기 방법에 있어서:
    사전에 결정된 개수의 메모리 셀들로 구성된 코드 유닛마다 서로 다른 바이너리 코드들에 대응하는 멀티-비트 프로그래밍을 함으로써, 하나의 워드라인에 연결된 메모리 셀들에 복수의 페이지 데이터가 저장되고,
    상기 적어도 하나의 비휘발성 메모리 장치에서 싱글 레벨들 각각에 의하여 복수의 페이지 데이터를 순차적으로 읽는 단계;
    상기 메모리 제어기에서 상기 싱글 레벨들 각각에 대응하는 2개의 상태들을 이용하여 상기 읽혀진 페이지 데이터의 바이너리 값들을 순차적으로 디맵핑하는 단계;
    상기 디맵핑된 복수의 페이지 데이터를 상기 바이너리 코드들 중 대응하는 바이너리 코드를 이용하여 순차적으로 디코딩하는 단계; 및
    상기 디코딩된 복수의 페이지 데이터를 에러 정정 코드를 이용하여 순차적으로 에러 정정하는 단계를 포함하는 읽기 방법.
  19. 복수의 상태들 중 어느 하나로 프로그램 되는 메모리 셀들로 구성된 적어도 하나의 비휘발성 메모리 장치; 및
    쓰기 동작시 상기 적어도 하나의 비휘발성 메모리 장치를 WOM(write-once memory)으로 이용하도록 하나의 워드라인에 연결된 메모리 셀들에 멀티-페이지 프로그램 동작을 수행하고, 읽기 동작시 싱글 레벨에 의하여 상기 멀티-페이지 중 어느 하나에 대한 페이지 읽기 동작을 수행하도록 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치.
  20. 제 19 항에 있어서,
    상기 메모리 제어기는,
    상기 쓰기 동작시 쓰기 데이터의 에러 정정 코드 값을 발생하고, 상기 읽기 동작시 읽기 데이터의 에러 정정 코드를 이용하여 에러 정정하는 에러 정정 회로를 더 포함하는 저장 장치.
  21. 제 19 항에 있어서,
    상기 메모리 제어기는 코드 회로를 더 포함하고,
    상기 코드 회로는,
    상기 쓰기 동작시 쓰기 데이터를 바이너리 코드를 이용하여 엔코딩하는 바이너리 엔코더;
    상기 읽기 동작시 읽기 데이터를 상기 바이너리 코드를 이용하여 디코딩하는 바이너리 디코더;
    상기 엔코딩된 쓰기 데이터의 바이너리 값들을 상기 복수의 상태들 중에서 상기 싱글 레벨에 대응하는 2개의 상태들로 맵핑하는 상태 맵퍼; 및
    상기 페이지 읽기 동작에 따라 읽혀진 데이터를 상기 2개의 상태들에 대응하는 바이너리 값들로 디맵핑하는 상태 디맵퍼를 포함하고,
    상기 디맵핑된 데이터는 상기 읽기 데이터인 저장 장치.
  22. 제 21 항에 있어서,
    상기 복수의 상태들 중 최하위 상태에 바이너리 '0'이 맵핑되고,
    그 외의 상태들은 바이너리 '1'이 맵핑되는 저장 장치.
  23. 제 19 항에 있어서,
    상기 멀티-페이지 프로그램 동작은 복수의 메모리 셀들로 구성된 코드 유닛마다 멀티-비트 프로그래밍에 의해 수행되는 저장 장치.
  24. 제 19 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리 장치는 상기 저장 장치의 구동에 필요한 코드 데이터를 저장하는 저장 장치.
KR1020130076608A 2013-07-01 2013-07-01 저장 장치, 그것의 쓰기 방법 및 읽기 방법 KR102068519B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130076608A KR102068519B1 (ko) 2013-07-01 2013-07-01 저장 장치, 그것의 쓰기 방법 및 읽기 방법
US14/297,093 US9601205B2 (en) 2013-07-01 2014-06-05 Storage device and method of writing and reading the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130076608A KR102068519B1 (ko) 2013-07-01 2013-07-01 저장 장치, 그것의 쓰기 방법 및 읽기 방법

Publications (2)

Publication Number Publication Date
KR20150003571A true KR20150003571A (ko) 2015-01-09
KR102068519B1 KR102068519B1 (ko) 2020-01-21

Family

ID=52116814

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130076608A KR102068519B1 (ko) 2013-07-01 2013-07-01 저장 장치, 그것의 쓰기 방법 및 읽기 방법

Country Status (2)

Country Link
US (1) US9601205B2 (ko)
KR (1) KR102068519B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10026473B2 (en) 2015-11-04 2018-07-17 Samsung Electronics Co., Ltd. Non-volatile memory device for selectively performing recovery operation and method of operating the same

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI536386B (zh) * 2015-02-16 2016-06-01 群聯電子股份有限公司 記憶體程式化方法、記憶體控制電路單元與記憶體儲存裝置
US10007573B2 (en) * 2015-04-27 2018-06-26 Invensas Corporation Preferred state encoding in non-volatile memories
US9772899B2 (en) * 2015-05-04 2017-09-26 Texas Instruments Incorporated Error correction code management of write-once memory codes
US9837145B2 (en) * 2015-08-28 2017-12-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-level flash storage device with minimal read latency
KR20180021324A (ko) 2016-08-19 2018-03-02 삼성전자주식회사 저장 장치 및 그것의 동작 방법
KR20180086816A (ko) * 2017-01-23 2018-08-01 에스케이하이닉스 주식회사 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
JP2018160056A (ja) * 2017-03-22 2018-10-11 東芝メモリ株式会社 メモリコントローラ、メモリシステムおよび制御方法
US10733047B2 (en) * 2018-09-28 2020-08-04 Sandisk Technologies Llc Hard and soft bit data from single read
CN109542801B (zh) * 2018-11-02 2023-03-14 上海百功半导体有限公司 基于qlc nand闪存的写操作配置方法、存储控制器及存储设备
TWI691962B (zh) * 2019-01-23 2020-04-21 群聯電子股份有限公司 解碼方法、記憶體控制電路單元與記憶體儲存裝置
WO2020170039A1 (en) * 2019-02-20 2020-08-27 Marvell Asia Pte, Ltd. High density fractional bit solid state drives using coded set partitions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080101279A (ko) * 2007-05-16 2008-11-21 삼성전자주식회사 메모리 셀 기입/독출 방법 및 페이지 버퍼
KR20090099757A (ko) * 2008-03-18 2009-09-23 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
KR20100010664A (ko) * 2008-07-23 2010-02-02 삼성전자주식회사 메모리 장치 및 메모리 데이터 프로그래밍 방법

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4050617B2 (ja) 2000-12-15 2008-02-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Womコードに応じてデータが記憶されるメモリ位置を具備するデータ処理装置
WO2002050840A2 (en) 2000-12-20 2002-06-27 Koninklijke Philips Electronics N.V. Data processing device with a write once memory (wom)
US20050213393A1 (en) 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate
KR101165867B1 (ko) 2004-03-19 2012-07-13 메르크 파텐트 게엠베하 변형 부가닌 단백질, 그 세포독소 및 이의 생산방법과 용도
US8055979B2 (en) 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US20080168215A1 (en) 2007-01-05 2008-07-10 Anxiao Jiang Storing Information in a Memory
US8014196B2 (en) 2008-08-28 2011-09-06 Agere Systems Inc. Reduced-power programming of multi-level cell (MLC) memory
KR101602316B1 (ko) 2009-02-09 2016-03-22 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR101519626B1 (ko) 2009-02-27 2015-05-14 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR101824227B1 (ko) 2009-08-07 2018-02-05 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
US8176234B2 (en) 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
US8176235B2 (en) 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
KR20110092090A (ko) 2010-02-08 2011-08-17 삼성전자주식회사 불 휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
KR101736251B1 (ko) 2010-03-04 2017-05-17 삼성전자주식회사 메모리 시스템
JP2012048791A (ja) 2010-08-27 2012-03-08 Toshiba Corp 多値不揮発性半導体メモリシステム
US8780620B2 (en) 2010-09-20 2014-07-15 The Texas A&M University Information representation and coding for nonvolatile memories
KR20120119779A (ko) 2011-04-22 2012-10-31 삼성전자주식회사 불휘발성 메모리 장치
KR20130087936A (ko) * 2012-01-30 2013-08-07 삼성전자주식회사 메모리 장치, 메모리 시스템 및 이의 프로그램 방법
US20130343125A1 (en) * 2012-06-22 2013-12-26 Mosaid Technologies Incorporated Apparatus and methods for carrying out operations in a non-volatile memory cell having multiple memory states
US9236136B2 (en) * 2012-12-14 2016-01-12 Intel Corporation Lower page read for multi-level cell memory
US9195587B2 (en) * 2013-03-07 2015-11-24 Sandisk Technologies Inc. Enhanced dynamic read process with single-level cell segmentation
US9607696B2 (en) * 2013-04-25 2017-03-28 Technion Research And Development Foundation Ltd. Minimal maximum-level programming

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080101279A (ko) * 2007-05-16 2008-11-21 삼성전자주식회사 메모리 셀 기입/독출 방법 및 페이지 버퍼
KR20090099757A (ko) * 2008-03-18 2009-09-23 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
KR20100010664A (ko) * 2008-07-23 2010-02-02 삼성전자주식회사 메모리 장치 및 메모리 데이터 프로그래밍 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10026473B2 (en) 2015-11-04 2018-07-17 Samsung Electronics Co., Ltd. Non-volatile memory device for selectively performing recovery operation and method of operating the same

Also Published As

Publication number Publication date
KR102068519B1 (ko) 2020-01-21
US9601205B2 (en) 2017-03-21
US20150006791A1 (en) 2015-01-01

Similar Documents

Publication Publication Date Title
KR102068519B1 (ko) 저장 장치, 그것의 쓰기 방법 및 읽기 방법
CN110097913B (zh) 存储器控制器及其操作方法
KR102117919B1 (ko) 저장 장치 및 그것의 프로그램 방법
US9818485B2 (en) Nonvolatle memory device and memory system having the same, and related memory management, erase and programming methods
US9613711B2 (en) Storage device and method of reading a storage device in which reliability verification operation is selectively omitted
US9875793B2 (en) Storage and programming method thereof
CN107093465B (zh) 包括电压搜索单元的数据存储器装置
TWI483255B (zh) 具改善讀取可靠度之包含多位元記憶胞的快閃記憶體裝置
US20160240257A1 (en) Storage device and a write method thereof
US9343158B2 (en) Methods of programming multi-level cell nonvolatile memory devices and devices so operating
US9281068B2 (en) Nonvolatile memory and related reprogramming method
US20160064083A1 (en) Nonvolatile memory device and method of programming the same
KR102248835B1 (ko) 불 휘발성 메모리 장치 및 그것의 동작 방법
JP2016506590A (ja) データストレージシステムのための対数尤度比及び一括対数尤度比生成
US20160104540A1 (en) Non-volatile memory device and operating method thereof
CN109949839A (zh) 存储器控制器及存储器控制器的操作方法
US20130318419A1 (en) Flash memory system including read counter logic
TW201911306A (zh) 記憶體裝置及其操作方法
KR101691097B1 (ko) 홀수의 매트들을 구비한 비휘발성 메모리 장치, 그것의 블록 설정 방법, 그것을 포함하는 메모리 시스템
CN115775581A (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