KR20140030517A - 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 시스템 - Google Patents

메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 시스템 Download PDF

Info

Publication number
KR20140030517A
KR20140030517A KR1020120096267A KR20120096267A KR20140030517A KR 20140030517 A KR20140030517 A KR 20140030517A KR 1020120096267 A KR1020120096267 A KR 1020120096267A KR 20120096267 A KR20120096267 A KR 20120096267A KR 20140030517 A KR20140030517 A KR 20140030517A
Authority
KR
South Korea
Prior art keywords
mapping data
data
mapping
mlcs
memory area
Prior art date
Application number
KR1020120096267A
Other languages
English (en)
Other versions
KR101934517B1 (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 KR1020120096267A priority Critical patent/KR101934517B1/ko
Priority to US14/014,511 priority patent/US9672147B2/en
Publication of KR20140030517A publication Critical patent/KR20140030517A/ko
Application granted granted Critical
Publication of KR101934517B1 publication Critical patent/KR101934517B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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

MLC(multi level cell)들을 포함하는 메모리 영역을 포함하는 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러의 동작 방법은 액세스될 상기 메모리 영역의 어드레스와 상기 메모리 영역에 프로그램될 데이터를 수신하는 단계와, 상기 어드레스에 기초하여 상기 메모리 영역에 대한 액세스 히스토리 정보를 분석하는 단계와, 상기 분석의 결과에 기초하여, 상기 데이터에 대응되는 제1매핑 데이터를 생성하거나 상기 데이터와 상기 MLC들에 이전에 프로그램된 이전 매핑 데이터에 기초하여 제2매핑 데이터를 생성하는 단계와, 상기 제1매핑 데이터와 상기 제2매핑 데이터 중에서 어느 하나를 포함하는 프로그램 명령을 상기 불휘발성 메모리 장치로 전송하는 단계를 포함한다.

Description

메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 시스템 {METHOD FOR OPERATING MEMORY CONTROLLER AND SYSTEM HAVING THE SAME}
본 발명의 개념에 따른 실시 예는 코딩(coding) 기술에 관한 것으로, 특히 이레이즈(erase) 회수를 감소시켜 내구성(endurance)을 개선하기 위해 메모리 영역에 프로그램된 데이터를 이레이즈하지 않고 새로운 데이터를 상기 메모리 영역에 오버라이트(overwrite)할 수 있는 방법과 상기 방법을 수행할 수 있는 시스템에 관한 것이다.
불휘발성 메모리 장치들은 다양한 제품들, 예컨대 이동 전화기들, 스마트폰들, 디지털 카메라들, 및 PDA들(personal digital assistants)에 널리 사용된다.
상기 불휘발성 메모리 장치들 중에서, 플래시(flash) 메모리 셀은 그 안에 저장되는 비트(bit)의 수에 따라 SLC(single level cell)와 MLC(multi level cell)로 분류된다.
상기 플래시 메모리 셀은 새로운 데이터를 저장하기 위해서 이미 저장된 데이터를 지우는 동작, 예컨대 이레이즈(erase) 동작을 수행한다.
상기 플래시 메모리 셀에 데이터를 프로그램하는 동작과 상기 데이터를 이레이즈하는 동작이 반복적으로 수행됨에 따라, 상기 플래시 메모리 셀의 수명은 감소한다.
본 발명이 이루고자 하는 기술적인 과제는 플래시 메모리 장치의 수명을 증가시키기 위해, 상기 플래시 메모리 장치의 메모리 영역에 이미 프로그램된 데이터를 이레이즈하지 않고 새로운 데이터를 상기 메모리 영역에 체계적으로 오버라이트할 수 방법과 상기 방법을 수행할 수 있는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따른 MLC(multi level cell)들을 포함하는 메모리 영역을 포함하는 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러의 동작 방법은 액세스될 상기 메모리 영역의 어드레스와 상기 메모리 영역에 프로그램될 데이터를 수신하는 단계와, 상기 어드레스에 기초하여 상기 메모리 영역에 대한 액세스 히스토리 정보를 분석하는 단계와, 상기 분석의 결과에 기초하여, 상기 데이터에 대응되는 제1매핑 데이터를 생성하거나 상기 데이터와 상기 MLC들에 이전에 프로그램된 이전 매핑 데이터에 기초하여 제2매핑 데이터를 생성하는 단계와, 상기 제1매핑 데이터와 상기 제2매핑 데이터 중에서 어느 하나를 포함하는 프로그램 명령을 상기 불휘발성 메모리 장치로 전송하는 단계를 포함한다.
상기 제1매핑 데이터를 생성하기 위해 필요한 상기 데이터의 비트 수와 상기 제2매핑 데이터를 생성하기 위해 필요한 상기 데이터의 비트 수는 서로 다르다.
상기 프로그램 명령은 (i) 상기 제1매핑 데이터를 상기 MLC들에 프로그램하기 위한 명령과, (ⅱ) 상기 이전 매핑 데이터를 이레이즈하지 않고 상기 제2매핑 데이터를 상기 MLC들에 오버라이트하기 위한 명령과, (ⅲ) 상기 이전 매핑 데이터를 이레이즈하고 상기 제1매핑 데이터를 상기 MLC들에 프로그램하기 위한 명령 중의 어느 하나이다.
상기 이전 매핑 데이터는 상기 분석의 결과에 기초하여 상기 MLC들로부터 리드된 데이터이다.
실시 예에 따라 상기 메모리 컨트롤러의 동작 방법은 상기 MLC들 각각에 저장하려는 데이터의 양을 나타내는 비트 정보에 기초하여 서로 다른 매핑 알고리즘들 중에서 어느 하나의 알고리즘을 선택하는 단계를 더 포함하며, 상기 제1매핑 데이터 또는 상기 제2매핑 데이터는 선택된 매핑 알고리즘에 따라 생성된다.
다른 실시 예에 따라 상기 메모리 컨트롤러의 동작 방법은 상기 불휘발성 메모리 장치의 프로그램/이레이즈 회수와 기준 회수를 비교하는 단계를 더 포함하며, 상기 프로그램/이레이즈 회수가 상기 기준 회수보다 클 때, 상기 분석하는 단계, 상기 생성하는 단계, 및 상기 전송하는 단계가 순차적으로 수행된다.
본 발명의 실시 예에 따른 시스템은 MLC(multi level cell)들을 포함하는 메모리 영역과 상기 메모리 영역에 대한 액세스를 제어하는 액세스 제어 회로를 포함하는 불휘발성 메모리 장치와, 메모리 컨트롤러를 포함한다.
상기 메모리 컨트롤러는 액세스될 상기 메모리 영역의 어드레스와 상기 메모리 영역에 프로그램될 데이터를 수신하고, 수신된 어드레스에 기초하여 상기 메모리 영역에 대한 액세스 히스토리 정보를 분석하고, 상기 분석의 결과에 기초하여, 상기 데이터에 대응되는 제1매핑 데이터를 생성하거나 상기 데이터와 상기 MLC들에 이전에 프로그램된 이전 매핑 데이터에 기초하여 제2매핑 데이터를 생성하고, 상기 제1매핑 데이터와 상기 제2매핑 데이터 중에서 어느 하나를 포함하는 프로그램 명령을 상기 불휘발성 메모리 장치로 전송한다.
상기 액세스 제어 회로는 상기 프로그램 명령에 기초하여, 상기 제1매핑 데이터를 상기 MLC들에 프로그램하는 동작, 상기 이전 매핑 데이터를 이레이즈하지 않고 상기 제2매핑 데이터를 상기 MLC들에 오버라이트하는 동작, 및 상기 이전 매핑 데이터를 이레이즈하고 상기 제1매핑 데이터를 상기 MLC들에 프로그램하는 동작 중에서 어느 하나를 실행한다.
상기 제1매핑 데이터를 생성하기 위해 필요한 상기 데이터의 비트 수와 상기 제2매핑 데이터를 생성하기 위해 필요한 상기 데이터의 비트 수는 서로 다르다.
상기 메모리 컨트롤러는 상기 액세스 히스토리 정보를 저장하는 제1메모리와, 상기 제1매핑 데이터와 상기 제2매핑 데이터를 저장하는 제2메모리와, 상기 수신된 어드레스에 기초하여 상기 액세스 히스토리 정보를 분석하고, 상기 분석의 결과에 기초하여 상기 제1매핑 데이터와 상기 제2매핑 데이터 중에서 어느 하나를 생성하고, 상기 어느 하나를 포함하는 상기 프로그램 명령을 생성하는 마이크로프로세서를 포함한다.
상기 메모리 컨트롤러는 서로 다른 매핑 알고리즘들을 수행하기 위한 프로그램 코드를 저장하는 제3메모리를 더 포함하며, 상기 마이크로프로세서는 상기 MLC들 각각에 저장하려는 데이터의 양을 나타내는 비트 정보에 기초하여 상기 제3메모리에 저장된 상기 매핑 알고리즘들 중에서 어느 하나의 알고리즘을 선택하고, 선택된 알고리즘에 기초하여 상기 제1매핑 데이터 또는 상기 제2매핑 데이터를 선택한다.
상기 시스템은 스마트카드, SD카드, MMC, 또는 플래시 메모리 드라이브일 수 있다. 상기 시스템은 솔리드 스테이트 드라이브(solid state drive)일 수 있다.
본 발명의 실시 예에 따른 방법과 장치는 메모리 블록에 포함된 메모리 영역, 예컨대 페이지에 이미 프로그램된 데이터를 이레이즈하지 않고 상기 메모리 영역에 새로운 데이터를 한 번 더 프로그램함으로써 상기 메모리 블록에 대한 이레이즈 회수를 감소시킴으로써 상기 장치의 내구성(endurance) 및/또는 수명을 증가시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 불휘발성 메모리 장치의 블록도를 나타낸다.
도 3은 도 1에 도시된 액세스 히스토리 테이블에 어드레스별로 저장된 액세스 히스토리 정보를 나타낸다.
도 4는 2-비트 멀티-레벨 셀의 문턱 전압 상태들을 나타낸다.
도 5부터 도 20은 본 발명의 실시 예들에 따른 데이터 매핑 방법들을 설명하기 위한 개념도들이다.
도 21은 본 발명의 실시 예들 각각에 따른 2-비트 멀티-레벨 셀에 대한 채널 용량을 나타낸다.
도 22는 도 1에 도시된 시스템의 동작의 일 실시 예를 설명하기 위한 플로우차트이다.
도 23은 도 1에 도시된 시스템의 동작의 다른 실시 예를 설명하기 위한 플로우차트이다.
도 24는 본 발명의 실시 예에 따른 데이터 코딩 방법을 설명하기 위한 플로우차트이다.
도 25는 본 발명의 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 26은 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 27은 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서에 기재된 다양한 코딩(coding) 방법들, 즉, 새로운 데이터에 대응되는 매핑 데이터를 MLC(multi-level cell)들에 프로그램하기 위해, 상기 MLC들에 이전에 프로그램된 이전 매핑 데이터를 이레이즈하지 않고 상기 MLC들에 상기 매핑 데이터를 오버라이트하는 코딩 방법들은 메모리 컨트롤러 또는 불휘발성 메모리 장치에서 수행될 수 있다.
본 명세서에서는 상기 다양한 코딩 방법들 중에서 적어도 하나의 방법이 상기 메모리 컨트롤러에서 수행되는 경우를 설명하나 상기 코딩 방법들이 수행되는 장치가 메모리 컨트롤러로 한정되는 것은 아니다.
도 1은 본 발명의 일 실시 예에 따른 시스템의 블록도를 나타낸다.
도 1을 참조하면, 시스템(100)은 호스트(110), 메모리 컨트롤러(130), 및 불휘발성 메모리 장치(150)를 포함한다.
시스템(100)은 PC(personal computer), 서버(server), 또는 휴대용 장치 (portable device)로 구현될 수 있다.
상기 휴대용 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰 (smartphone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), e-북(e-book), 또는 USB 플래시 드라이브(Universal Serial Bus flash drive)로 구현될 수 있다.
메모리 컨트롤러(130)와 통신하기 위해, 호스트(110)는 메모리 컨트롤러 (130)로 다양한 제어 신호들을 전송할 수 있다. 예컨대, 호스트(110)는 불휘발성 메모리 장치(150)의 메모리 어레이(151)의 메모리 영역(151-1)에 포함된 MLC들을 액세스하기 위해 액세스 요청(access request)를 메모리 컨트롤러(130)로 전송할 수 있다. 상기 액세스 요청은 상기 제어 신호들 및/또는 데이터를 포함할 수 있다.
여기서, 액세스는 메모리 영역(151-1)에 데이터를 라이트하는 라이트 동작 (write operation), 메모리 영역(151-1)에 저장된 데이터를 리드하는 리드(read) 동작, 메모리 영역(151-1)에 저장된 데이터를 이레이즈하는 이레이즈(erase) 동작, 또는 오버라이팅 동작을 포함한다.
상기 오버라이팅 동작은 어드레스에 대응되는 메모리 영역에 대한 프로그램 동작 후, 상기 메모리 영역에 대한 이레이즈 동작을 수행하지 않고 새로운 데이터를 상기 대상 메모리 영역에 오버라이트하는 것을 의미한다.
메모리 컨트롤러(130)는, 호스트(110)로부터 출력된 다양한 제어 신호들에 응답하여, 호스트(110)와 통신하거나 불휘발성 메모리 장치(150)와 통신할 수 있다.
도 1에는 호스트(110)와 메모리 컨트롤러(130)가 서로 분리된 형태로 도시되었으나, 실시 예에 따라, 메모리 컨트롤러(130)는 호스트(110)의 내부에 구현될 수도 있다. 이 경우, 호스트(110)는 멀티-코어 프로세서로 구현될 수 있다.
MLC들이 구현된 메모리 영역(151-1)을 포함하는 불휘발성 메모리 장치(150)의 동작을 제어하는 메모리 컨트롤러(130)는 액세스될 메모리 영역(151-1)의 어드레스(ADD1)와 메모리 영역(151-1)에 프로그램될 데이터(WDATA1 또는 WDATA2)를 수신하고, 수신된 어드레스(ADD1)에 기초하여 메모리 영역(151-1)에 대한 액세스 히스토리 정보(AHI)를 분석한다. 액세스 히스토리 정보(AHI)는 액세스 히스토리 테이블(137)에 저장된다.
상기 분석의 결과에 기초하여, 메모리 컨트롤러(130)는 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)를 생성(또는 검색)하고, 어드레스(ADD1)와 제1매핑 데이터(MDATA1)를 포함하는 프로그램 명령을 불휘발성 메모리 장치(150)로 전송할 수 있다.
또한, 상기 분석의 결과에 기초하여, 메모리 컨트롤러(130)는 메모리 영역 (151-1)에 이전에 프로그램된 이전 매핑 데이터를 리드하고, 제2데이터(WDATA2)와 상기 이전 매핑 데이터에 기초하여 제2매핑 데이터(MDATA2)를 생성(또는 검색)하고, 어드레스(ADD1)와 제2매핑 데이터(MDATA2)를 포함하는 프로그램 명령을 불휘발성 메모리 장치(150)로 전송할 수 있다.
여기서, 제1데이터(WDATA1)의 비트 수와 제2데이터(WDATA2)의 비트 수는 서로 다를 수 있다.
불휘발성 메모리 장치(150)의 액세스 제어 회로(153)는, 상기 프로그램 명령에 기초하여, (i) 제1매핑 데이터(MDATA1)를 상기 MLC들에 프로그램하거나, (ⅱ) 상기 MLC들에 저장된 상기 이전 매핑 데이터를 이레이즈하지 않고 상기 MLC들에 제2매핑 데이터(MDATA2)를 오버라이트하거나, (ⅲ) 상기 이전 매핑 데이터를 이레이즈하고 제1매핑 데이터(MDATA1)를 상기 MLC들에 프로그램할 수 있다.
메모리 컨트롤러(130)는 호스트 인터페이스(131), 마이크로프로세서(133), 프로그램 ROM(read only memory; 135), 액세스 히스토리 테이블(137), 매핑 테이블 (139), 데이터 버퍼(141), 에러 정정 코드 엔진(error correction code(ECC) engine; 143), 및 NAND 인터페이스(145)를 포함한다. 이때, 각 테이블(137과 139)은 불휘발성 메모리 장치에 저장될 수 있다.
호스트 인터페이스(131)는 호스트(110)로부터 출력된 어드레스(ADD1)를 마이크로프로세서(133)로 전송하고, 호스트(110)로부터 출력된 데이터(WDATA1 또는 WDATA2)를 데이터 버퍼(141)로 전송한다.
마이크로프로세서(133)는 구성 요소들(components; 131, 135, 137, 139, 141, 143, 및 145) 중에서 적어도 하나의 동작을 제어할 수 있다.
프로그램 ROM(135)은 메모리 컨트롤러(130)의 동작에 필요한 프로그램들과, 본 발명에 따른 다양한 코딩 방법들 중에서 적어도 하나의 코딩 방법에 관련된 프로그램을 저장할 수 있다. 프로그램 ROM(135)에 저장된 각 프로그램은 마이크로프로세서(133)의 제어에 따라 실행될 수 있다.
도 3은 도 1에 도시된 액세스 히스토리 테이블에 어드레스별로 저장된 액세스 히스토리 정보를 나타낸다. 도 3에 도시된 바와 같이, 액세스 히스토리 테이블 (137)은 어드레스별(ADD1~ADDx; x는 자연수)로 액세스 히스토리 정보(AHI)를 저장한다.
예컨대, 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 데이터 또는 매핑 데이터가 한 번도 프로그램되지 않았을 때, 마이크로프로세서(133)의 제어에 따라 액세스 히스토리 정보(AHI)는 "0"로 설정된다.
어드레스(ADD1)에 대응되는 메모리 영역(151-1)이 이레이즈된 후, 메모리 영역(151-1)에, 본 발명의 실시 예에 따른 코딩 방법에 따라 데이터 또는 매핑 데이터가 첫 번째로 프로그램되었을 때, 마이크로프로세서(133)의 제어에 따라 액세스 히스토리 정보(AHI)는 "0"으로부터 "1"로 변경된다.
그 후, 새로운 데이터 또는 새로운 매핑 데이터가 메모리 영역(151-1)에 두 번째로 프로그램되었을 때, 마이크로프로세서(133)의 제어에 따라 액세스 히스토리 정보(AHI)는 "1"로부터 "2"로 변경된다.
계속하여, 어드레스(ADD1)에 대응되는 메모리 영역(151-1)이 이레이즈된 후, 새로운 데이터 또는 새로운 매핑 데이터가 메모리 영역(151-1)에 첫 번째로 프로그램되었을 때, 마이크로프로세서(133)의 제어에 따라 액세스 히스토리 정보(AHI)는 "2"로부터 "1"로 변경된다.
다시 도 1을 참조하여 제1데이터(WDATA1)에 대응되는 제1매핑 데이터 (MDATA1)가 메모리 영역(151-1)에 프로그램되는 과정을 설명하면 다음과 같다.
마이크로프로세서(133)는 어드레스(ADD1)에 기초하여 액세스 히스토리 테이블(137)에 저장된 액세스 히스토리 정보(AHI)를 리드한다.
마이크로프로세서(133)는 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 저장될 제1데이터(WDATA)를 데이터 버퍼(141)로부터 리드한다.
어드레스(ADD1)에 기초하여 마이크로프로세서(133)는 제1데이터(WDATA)에 대응하는 제1매핑 데이터(MDATA1)를 매핑 테이블(139)로부터 검색하고, 어드레스 (ADD1)와 제1매핑 데이터(MDATA1)를 포함하는 프로그램 명령을 데이터 버퍼(141)와 NAND 인터페이스(145)를 통하여 불휘발성 메모리 장치(150)로 전송한다.
매핑 테이블(139)에는 본 명세서에 기재된 각 코딩 방법을 수행하기 위해 필요한 복수의 매핑 데이터가 저장된다.
불휘발성 메모리 장치(150)는 상기 프로그램 명령에 따라 제1매핑 데이터 (MDATA1)를 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램한다.
계속하여, 제2데이터(WDATA2)에 대응되는 제2매핑 데이터(MDATA2)가 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 오버라이트되는 과정은 도 5부터 도 20을 참조하여 상세히 설명될 것이다. 매핑 데이터는 코드워드(codeword)라고도 불릴 수 있다.
도 2는 도 1에 도시된 불휘발성 메모리 장치의 블록도를 나타낸다.
도 1과 도 2를 참조하면, 불휘발성 메모리 장치(150)는 메모리 어레이(151)와 액세스 제어 회로(153)를 포함한다. 메모리 어레이(151)는 2차원 형태로 구현되거나 또는 3차원 형태로 구현된 메모리 어레이들 중에서 어느 하나일 수 있다.
메모리 어레이(151)는 메모리 블록들(BLOCK#1~BLOCK#T; T는 자연수)을 포함한다. 메모리 블록들(BLOCK#1~BLOCK#T) 각각은 페이지들(pages; PAGE#1~PAGE#S; S는 자연수)을 포함한다. 상기 페이지들 각각은 MLC들을 포함한다.
프로그램 동작과 리드 동작은 페이지 단위로 수행될 수 있고, 이레이즈 동작은 메모리 블록 단위로 수행될 수 있다.
액세스 제어 회로(153)는, 메모리 컨트롤러(130)의 제어에 따라, 메모리 어레이(151)에 대한 액세스, 예컨대 프로그램 동작, 리드 동작, 이레이즈 동작, 또는 오버라이팅 동작을 제어할 수 있다.
액세스 제어 회로(153)는 컨트롤 로직 회로(153-1), 전압 발생기(153-2), 로우 디코더(153-3), 컬럼 디코더(153-4), 페이지 버퍼 및 감지 증폭기 블록(153-5), Y-게이팅 회로(153-6), 및 입출력 블록(153-7)을 포함한다.
컨트롤 로직 회로(153-1)는 각 구성 요소(153-2, 153-3, 153-4, 및 153-5)의 동작을 제어한다.
컨트롤 로직 회로(153-1)는, 입출력 블록(153-7)을 통하여 입력된 어드레스 (ADD1)에 따라, 로우 디코더(153-3)를 제어하기 위한 제어 신호(예컨대, 로우 어드레스를 포함)와 컬럼 디코더(153-4)를 제어하기 위한 제어 신호(예컨대, 컬럼 어드레스를 포함)를 생성할 수 있다.
컨트롤 로직 회로(153-1)의 제어에 따라, 전압 발생기(153-2)는 상기 액세스에 필요한 전압들을 생성한다.
컨트롤 로직 회로(153-1)의 제어에 따라, 로우 디코더(153-3)는 전압 발생기 (153-2)에 의해 생성된 전압들을 메모리 어레이(151)에 구현된 워드 라인들과 제어 라인들로 공급한다.
컨트롤 로직 회로(153-1)의 제어에 따라, 컬럼 디코더(153-4)는 메모리 어레이(151)에 구현된 비트 라인들을 선택하기 위한 선택 신호들을 생성한다.
프로그램 동작 동안, 페이지 버퍼 및 감지 증폭기 블록(153-5)은 프로그램 데이터를 로우 디코더(153-3)와 컬럼 디코더(153-4)에 의해 선택된 메모리 영역, 예컨대 페이지로 전송한다.
리드 동작 동안, 페이지 버퍼 및 감지 증폭기 블록(153-5)은 로우 디코더 (153-3)와 컬럼 디코더(153-4)에 의해 선택된 메모리 영역, 예컨대 페이지로부터 출력된 리드 데이터를 감지 증폭한다.
Y-게이팅 회로(153-6)는, 컬럼 디코더(153-4)에 의해 생성된 선택 신호들에 기초하여, 페이지 버퍼 및 감지 증폭기 블록(153-5)과 입출력 블록(153-7)의 접속을 제어한다.
따라서, 프로그램 동작 동안, 입출력 블록(153-7)을 통하여 입력된 제1매핑 데이터(MDATA1) 또는 제2매핑 데이터(MDATA2)는 액세스 제어 회로(153)의 제어에 따라 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램될 수 있다.
메모리 컨트롤러(130)로부터 출력된 프로그램 명령에 따라 액세스 제어 회로 (153)는 다음 3가지 프로그램 동작 중에서 어느 하나를 수행할 수 있다. 마이크로프로세서(133)는 어드레스에 대응되는 액세스 히스토리 정보(AHI)에 따라 상기 프로그램 명령의 종류를 결정될 수 있다.
(i) 상기 어드레스에 대응되는 액세스 히스토리 정보(AHI)가 "0"일 때, 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)를 상기 어드레스에 대응되는 메모리 영역에 프로그램하는 동작(이하, "제1라이팅(First Writing)"이라 한다),
(ⅱ) 상기 어드레스에 대응되는 액세스 히스토리 정보(AHI)가 "1"일 때, 상기 메모리 영역에 이미 프로그램된 매핑 데이터(예컨대, 제1매핑 데이터(MDATA1))를 이레이즈하지 않고 제2데이터(WDATA2)에 대응되는 제2매핑 데이터(MDATA2)를 상기 메모리 영역에 오버라이트하는 동작(이하, "제2라이팅(Second Writing)"이라 한다),
(ⅲ) 상기 어드레스에 대응되는 액세스 히스토리 정보(AHI)가 "2"일 때, 상기 메모리 영역에 이미 프로그램된 매핑 데이터(예컨대, 제2매핑 데이터(MDATA2))를 이레이즈하고 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)를 상기 메모리 영역에 프로그램하는 동작(이하, "정상 라이팅(Normal Writing)"이라 한다).
도 4는 2-비트 멀티-레벨 셀의 문턱 전압 상태들을 나타낸다.
도 4는 문턱 전압(threshold voltage)에 대한 멀티-레벨 셀들의 산포 (distribution)를 나타낸다. 도 4에 도시된 바와 같이, 멀티-레벨 셀(multi-level cell(MLC))이 m-비트 MLC일때, 문턱 전압 상태들(또는 간단히 "상태들(states)")은 2m개이다.
q=2m일 때, MLC별로 {0, 1, 2, ..., (q-1)} 상태들이 존재한다. 따라서, 2-비트 MLC는 문턱 전압에 따라 4개의 상태들, 예컨대 "상태 0(state 0)", "상태 1", "상태 2", 및 "상태 3"를 갖는다.
도 4에 도시된 바와 같이, 데이터 "0"에 따라 MLC는 이레이즈 상태(E) 또는 상태 0을 갖고, 데이터 "1"에 따라 MLC는 P1 상태 또는 상태 1을 갖고, 데이터 "2"에 따라 MLC는 P2 상태 또는 상태 2를 갖고, 데이터 "3"에 따라 MLC는 P3 상태 또는 상태 3을 갖는다고 가정한다. 따라서, "0"은 데이터 0 또는 상태 0을 의미할 수 있고, "3"은 데이터 3 또는 상태 3을 의미한다.
예컨대, 2진수(binary)를 기준으로, 데이터 "0"은 "00"을 의미하고, 데이터 "1"은 "01"을 의미하고, 데이터 "2"는 "10"을 의미하고, 데이터 "3"은 "11"을 의미할 수도 있다.
도 5부터 도 20은 본 발명의 실시 예들에 따른 데이터 매핑 방법들을 설명하기 위한 개념도들이다.
R1과 R2 각각은 채널 용량(channel capacity), 즉 이론적으로 하나의 MLC에 저장가능한 최대 데이터의 양을 나타낸다. 여기서, R1은 상기 MLC에 데이터를 첫 번째로 프로그램할 때(또는 제1라이팅)의 채널 용량을 나타내고, R2는 상기 MLC를 이레이즈하지 않고 데이터를 두 번째로 프로그램할 때(또는 제2라이팅)의 채널 용량을 나타낸다.
m-비트 MLC에 적용가능한 6가지의 매핑 알고리즘들 또는 코딩 방법들은 도 5부터 도 20을 참조하여 상세히 설명된다. 상기 매핑 알고리즘들 또는 코딩 방법들 각각은 더티 페이퍼 코딩 이론(dirty paper coding(DPC) theory)을 기반으로 한다.
도 5는 제1매핑 알고리즘 또는 제1코딩 방법을 설명하기 위한 도면이다.
각 채널 용량(R1과 R2)은 수학식 1에 따라 결정된다.
[수학식 1]
Figure pat00001
여기서, n은 매핑 데이터(또는 코드워드)를 저장하기 위한 MLC의 개수, 즉 코드워드(codeword)의 길이(length)를 나타내고, q(=2m)는 상태들의 개수를 나타낸다.
제1매핑 알고리즘에 따른 매핑 데이터 그룹의 개수 또는 경우들의 수(number of cases)은 수학식 2와 같이 표현될 수 있다.
[수학식 2]
<qn-1, 2>
여기서, 첫 번째 항(term), 즉 qn-1은 제1라이팅(First Writing)에서 사용될 제1매핑 데이터 그룹(MG1)에 포함된 매핑 데이터의 개수를 나타내고, 두 번째 항, 즉 2는 제2라이팅에서 사용될 제2매핑 데이터 그룹의 개수(또는 경우들의 수)를 나타낸다. 이때, 각 제2매핑 데이터 그룹은 적어도 하나의 매핑 데이터를 포함한다.
도 5에 도시된 바와 같이, 제1매핑 데이터 그룹(MG1)에서 MLC들 각각에 대한 (q-1) 상태는 제외된다. 예컨대, n=3이고 q=4일 때, (q-1)(q-1)(q-1), 즉 "333"은 제1매핑 데이터 그룹(MG1)에서 제외된다.
이레이즈 상태를 0으로 가정하고 프로그램 상태를 1로 가정하면, 제2라이팅 (Second Writing)에서 데이터 "0"을 데이터 "1"로 변경하는 것은 가능하지만, 데이터 "1"을 데이터 "0"으로 변경하는 것은 불가능하기 때문에, 제1매핑 데이터 그룹 (MG1)에서 "333"은 제외된다.
제1데이터(WDATA1)를 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램하는 제1라이팅(First Writing)과, 제2데이터(WDATA2)를 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램하는 제2라이팅(Second Writing)은 도 1부터 도 5를 참조하여 상세히 설명된다.
설명의 편의를 위해, n은 3이고 q는 4라고 가정하면, 수학식 1에 따라 <63, 2>이 결정된다.
제1라이팅(First Writing)이 3개의 2-비트 MLC들을 포함하는 메모리 영역 (151-1)에 대해 수행될 때, 마이크로프로세서(133)는, 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI=0)에 기초하여, 제1매핑 데이터 그룹(MG1)에 포함된 63개의 매핑 데이터(000~332) 중에서 제1데이터(WDATA1)에 대응되는 제1매핑 데이터 (MDATA1)를 매핑 테이블(139)로부터 검색한다.
마이크로프로세서(133)는 어드레스(ADD1)와 검색된 제1매핑 데이터(MDATA1)를 포함하는 제1프로그램 명령을 데이터 버퍼(141)와 NAND 인터페이스(145)를 통하여 불휘발성 메모리 장치(150)의 액세스 제어 회로(153)로 전송한다.
이때, 마이크로프로세서(133)는 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI)를 0으로부터 1로 변경할 수 있다.
상기 제1프로그램 명령에 기초하여, 액세스 제어 회로(153)는 어드레스 (ADD1)에 대응하는 메모리 영역(151-1)에 제1매핑 데이터(MDATA1)를 프로그램한다.
제1매핑 데이터 그룹(MG1)에 포함된 매핑 데이터의 개수가 63개일 때 제1데이터(WDATA1)는 5-비트 데이터일 수 있고, 제2매핑 데이터 그룹의 개수가 2일 때 제2데이터(WDATA2)는 1-비트 데이터일 수 있다.
제2라이팅(Second Writing)이 3개의 2-비트 MLC들을 포함하는 메모리 영역 (151-1)에 대해 수행될 때, 마이크로프로세서(133)는, 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI=1)에 기초하여, 어드레스(ADD1)에 대응하는 메모리 영역 (151-1)에 프로그램된 제1매핑 데이터(MDATA1)를 불휘발성 메모리 장치(150)로부터 리드한다.
마이크로프로세서(133)는 제2데이터(WDATA2)와 제1매핑 데이터(MDATA1)에 기초하여 제1매핑 데이터(MDATA1)를 그대로 유지할지 아니면 제2매핑 데이터(MDATA2)를 선택할지를 결정한다.
예컨대, 경우 1-1(CASE1-1)과 같이, 제2데이터(WDATA2)가 제1메시지(A1), 예컨대 "0"일 때, 마이크로프로세서(133)는 제1매핑 데이터(MDATA1)를 그대로 유지하기로 결정한다. 본 명세서에 기재된 메시지(message)는 적어도 하나의 비트를 포함하는 데이터를 의미한다.
그러나, 경우 1-2(CASE1-2)와 같이, 제2데이터(WDATA2)가 제2메시지(B1), 예컨대 "1일 때, 마이크로프로세서(133)는, 제1매핑 데이터(MDATA1)를 제2매핑 데이터(MDATA2=333)로 변경하기 위해, 어드레스(ADD1)와 제2매핑 데이터(MDATA2=333)를 포함하는 제2프로그램 명령을 데이터 버퍼(141)와 NAND 인터페이스(145)를 통하여 불휘발성 메모리 장치(150)의 액세스 제어 회로(153)로 전송한다.
이때, 마이크로프로세서(133)는 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI)를 1로부터 2로 변경할 수 있다.
제2프로그램 명령에 기초하여, 액세스 제어 회로(153)는 어드레스(ADD1)에 대응하는 메모리 영역(151-1)에 제2매핑 데이터(MDATA2=333)를 오버라이트한다.
경우 1-1(CASE1-1)과 같이, 제1라이팅(First Writing)에서 메모리 영역 (151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 제2데이터(WDATA2), 즉 제1메시지 (A1)에 따라 그대로 유지된다.
그러나, 경우 1-2(CASE1-2)와 같이, 제1라이팅(First Writing)에서 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 제2데이터(WDATA2), 즉 제2메시지(B1)에 따라 제2매핑 데이터(MDATA2)로 대체된다. 이때, 제2매핑 데이터 (MDATA2)는 "(q-1)(q-1)(q-1)" 즉 "333"이다. 따라서, 각 MLC의 상태는 가장 높은 상태로 이동한다.
정상 라이팅(Normal Writing)이 3개의 2-비트 MLC들을 포함하는 이레이즈된 메모리 영역(151-1)에 대해 수행될 때, 마이크로프로세서(133)는, 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI=2)에 기초하여, 63개의 매핑 데이터(000~332) 중에서 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)를 매핑 테이블(139)로부터 검색하고, 어드레스(ADD1)와 검색된 제1매핑 데이터(MDATA1)를 포함하는 제3프로그램 명령을 데이터 버퍼(141)와 NAND 인터페이스(145)를 통하여 불휘발성 메모리 장치(150)의 액세스 제어 회로(153)로 전송한다.
이때, 마이크로프로세서(133)는 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI)를 2로부터 1로 변경할 수 있다.
상기 제3프로그램 명령에 기초하여, 액세스 제어 회로(153)는 어드레스 (ADD1)에 대응하는 메모리 영역(151-1)에 프로그램된 제2매핑 데이터(MDATA2)를 이레이즈하고, 메모리 영역(151-1)에 새로운 제1매핑 데이터(MDATA1)를 프로그램한다.
실시 예에 따라, 액세스 히스토리 정보(AHI)는 해당하는 프로그램 동작이 완료된 후, 마이크로프로세서(133)의 제어하에 새로운 값으로 변경될 수 있다. 상기 프로그램 동작의 완료 여부는 마이크로프로세서(133)와 액세스 제어 회로(153)의 통신 결과, 예컨대 핸드세이킹(handshaking)에 기초하여 결정될 수 있다.
도 6은 제2매핑 알고리즘 또는 제2코딩 방법을 설명하기 위한 도면이다.
R1과 R2는 수학식 3에 따라 결정된다.
[수학식 3]
Figure pat00002
제2매핑 알고리즘에 따른 경우들의 수는 수학식 4와 같이 표현될 수 있다.
[수학식 4]
<qn-(n+1), 3>
여기서, 첫 번째 항(term), 즉 qn-(n+1)은 제1라이팅에서 사용될 제1매핑 데이터 그룹(MG2)에 포함된 매핑 데이터의 개수를 나타내고, 두 번째 항, 즉 3은 제2라이팅에서 사용될 제2매핑 데이터 그룹의 개수(또는 경우들의 수)를 나타낸다.
제1매핑 데이터 그룹(MG2)에 포함된 qn개의 매핑 데이터 중에서 (n+1)개는 제외된다.
MLC들 각각에 대한 (q-1) 상태, 예컨대, n=3이고 q=4일 때, (q-1)(q-1)(q-1), 즉 "333"은 제1매핑 데이터 그룹(MG2)에서 제외된다.
또한, MLC들 각각에 대한 상태들 중에서 하나만 (q-2) 상태이고 나머지는 모두 (q-1) 상태, 예컨대, n=3이고 q=4일 때, (q-2)(q-1)(q-1), (q-1)(q-2)(q-1), 및 (q-1)(q-1)(q-2), 즉 "233", "323", 및 "332"는 제1매핑 데이터 그룹(MG2)에서 제외된다.
제1데이터(WDATA1)를 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램하는 제1라이팅(First Writing), 제2데이터(WDATA2)를 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 오버라이팅하는 제2라이팅(Second Writing), 및 정상 라이팅은 도 1부터 도 4, 및 도 6을 참조하여 상세히 설명된다.
n은 3이고 q는 4라고 가정하면, 수학식 4에 따라 <60, 3>이 결정된다.
제1라이팅(First Writing)이 3개의 2-비트 MLC들을 포함하는 메모리 영역 (151-1)에 대해 수행될 때, 마이크로프로세서(133)는, 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI=0)에 기초하여, 60개의 매핑 데이터(000~331) 중에서 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)를 매핑 테이블(139)로부터 검색하고, 어드레스(ADD1)와 검색된 제1매핑 데이터(MDATA1)를 포함하는 제1프로그램 명령을 데이터 버퍼(141)와 NAND 인터페이스(145)를 통하여 불휘발성 메모리 장치 (150)의 액세스 제어 회로(153)로 전송한다.
이때, 마이크로프로세서(133)는 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI)를 0으로부터 1로 변경할 수 있다.
상기 제1프로그램 명령에 기초하여, 액세스 제어 회로(153)는 어드레스 (ADD1)에 대응하는 메모리 영역(151-1)에 제1매핑 데이터(MDATA1)를 프로그램한다.
제2라이팅(Second Writing)이 3개의 2-비트 MLC들을 포함하는 메모리 영역 (151-1)에 대해 수행될 때, 마이크로프로세서(133)는, 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI=1)에 기초하여, 어드레스(ADD1)에 대응하는 메모리 영역 (151-1)에 프로그램된 제1매핑 데이터(MDATA1)를 불휘발성 메모리 장치(150)로부터 리드한다.
마이크로프로세서(133)는 제2데이터(WDATA2)와 제1매핑 데이터(MDATA1)에 기초하여 제1매핑 데이터(MDATA1)를 그대로 유지할지 아니면 제2매핑 데이터(MDATA2)를 출력할지를 결정한다.
예컨대, 제2데이터(WDATA2)가 제1메시지(A2)일 때, 마이크로프로세서(133)는 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)를 그대로 유지하기로 결정한다.
그러나, 제2데이터(WDATA2)가 제2메시지(B2) 또는 제3메시지(C2)일 때, 마이크로프로세서(133)는 제2매핑 데이터(MDATA2)를 선택하고, 어드레스(ADD1)와 제2매핑 데이터(MDATA2)를 포함하는 제2프로그램 명령을 데이터 버퍼(141)와 NAND 인터페이스(145)를 통하여 불휘발성 메모리 장치(150)의 액세스 제어 회로(153)로 전송한다.
이때, 마이크로프로세서(133)는 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI)를 1로부터 2로 변경할 수 있다.
제2프로그램 명령에 기초하여, 액세스 제어 회로(153)는 어드레스(ADD1)에 대응하는 메모리 영역(151-1)에 제2매핑 데이터(MDATA2)를 오버라이트한다.
경우 2-1(CASE2-1)과 같이, 제2데이터(WDATA2)가 제1메시지(A2)일 때, 제1라이팅(First Writing)에서 메모리 영역(151-1)에 프로그램된 제1매핑 데이터 (MDATA1)는 그대로 유지된다.
경우 2-2(CASE2-2)와 같이, 제2데이터(WDATA2)가 제2메시지(B2)일 때, 제1라이팅(First Writing)에서 메모리 영역(151-1)에 프로그램된 제1매핑 데이터 (MDATA1)는 제2매핑 데이터(MDATA2)로 대체된다.
이때, 제2매핑 데이터(MDATA2)는 3개의 MLC들 중에서 하나만 (q-2) 상태이고 나머지는 모두 (q-1) 상태, 예컨대, (q-2)(q-1)(q-1), (q-1)(q-2)(q-1), 및 (q-1)(q-1)(q-2), 즉 "233", "323", 및 "332" 중에서 어느 하나이다.
그러나, 경우 2-3(CASE2-3)와 같이, 제2데이터(WDATA2)가 제3메시지(C2)일 때, 제1라이팅(First Writing)에서 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 제2매핑 데이터(MDATA2)로 대체된다.
이때, 제2매핑 데이터(MDATA2)는 3개의 MLC들 각각이 (q-1) 상태, 예컨대, (q-1)(q-1)(q-1), 즉 "333"이다.
정상 라이팅(Normal Writing)이 3개의 2-비트 MLC들을 포함하는 이레이즈된메모리 영역(151-1)에 대해 수행될 때, 마이크로프로세서(133)는, 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI=2)에 기초하여, 63개의 매핑 데이터 (000~331) 중에서 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)를 매핑 테이블(139)로부터 검색하고, 어드레스(ADD1)와 검색된 제1매핑 데이터(MDATA1)를 포함하는 제3프로그램 명령을 데이터 버퍼(141)와 NAND 인터페이스(145)를 통하여 불휘발성 메모리 장치(150)의 액세스 제어 회로 (153)로 전송한다.
이때, 마이크로프로세서(133)는 어드레스(ADD1)에 대응되는 액세스 히스토리 정보(AHI)를 2로부터 1로 변경할 수 있다.
상기 제3프로그램 명령에 기초하여, 액세스 제어 회로(153)는 어드레스 (ADD1)에 대응하는 메모리 영역(151-1)에 프로그램된 제2매핑 데이터(MDATA2)를 이레이즈하고, 메모리 영역(151-1)에 새로운 제1매핑 데이터(MDATA1)를 프로그램한다.
도 7부터 도 13은 제3매핑 알고리즘 또는 제3코딩 방법을 설명하기 위한 도면이다.
R1과 R2는 수학식 5에 따라 결정된다.
[수학식 5]
Figure pat00003
제2매핑 알고리즘에 따른 경우들의 수는 수학식 6과 같이 표현될 수 있다.
[수학식 6]
<2n+n-1, q(q-1)n-1-(q-2)n-1> n이 4 이상일 때,
<2n+n-1, q(q-1)n-1-(q-2)n-1-2> n이 2 또는 3일 때,
수학식 6에서, 첫 번째 항(term), 즉 (2n+n-1)은 제1라이팅에서 사용될 제1매핑 데이터 그룹(MG3)에 포함된 매핑 데이터의 개수를 나타낸다. n이 4 이상 일 때, 두 번째 항, 즉 {q(q-1)n-1-(q-2)n-1}은 제2라이팅에서 사용될 제2매핑 데이터 그룹의 개수(또는 경우의 수)를 나타낸다.
n이 2 또는 3일 때, 그룹핑하는 특성상 경우들이 겹치기 때문에, 두 번째 항, 즉 {q(q-1)n-1-(q-2)n-1-2}는 제2라이팅에서 사용될 제2매핑 데이터 그룹의 개수(또는 경우의 수)를 나타낸다.
제1매핑 데이터 그룹(MG3)은 (i) n개의 MLC들 각각이 0 상태를 갖는 매핑 데이터, (ⅱ) (n-1)개 이하의 MLC(들)가 1 상태를 갖고 나머지 MLC들 각각이 0 상태를 갖는 매핑 데이터, 및 (ⅲ) 하나의 MLC만 2 상태를 갖고 나머지 셀들 각각은 0 상태를 갖는 매핑 데이터를 포함한다.
n은 3이고 q는 4라고 가정하면, 수학식 6에 따라 <10, 30>이 결정된다.
제1매핑 데이터 그룹(MG3)은 10개의 매핑 데이터, 즉 (i)에 따라 결정된 매핑 데이터 (000), (ⅱ)에 따라 결정된 매핑 데이터(001, 010, 100, 011, 101, 및 110), 및 (ⅲ)에 따라 결정된 매핑 데이터(002, 020, 및 200)를 포함한다.
제2데이터(WDATA2)를 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램하는 제2라이팅은 도 7부터 도 13을 참조하여 상세히 설명된다.
도 7의 경우 3-1(CASE3-1)과 같이, 제1라이팅(First Writing)에서 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 제2데이터(WDATA2)에 따라 그대로 유지된다.
도 7의 경우 3-2(CASE3-2)와 같이, 제1라이팅(First Writing)에서 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 제2데이터(WDATA2)에 따라 제2매핑 데이터(MDATA2)로 대체된다.
경우 3-2(CASE3-2)에 도시된 바와 같이, 제2매핑 데이터 그룹들은 MLC들 각각이 0 상태와 1 상태를 포함하지 않고 2 상태 이상 (q-1) 상태 이하를 포함한다. 예컨대, 제2매핑 데이터 그룹들(M2~M9)에 포함된 매핑 데이터(222, ..., 332, 및 333)는 0 상태와 1 상태를 절대로 포함하지 않는다. 제2데이터(WDATA2)가 나타내는 메시지에 따라 8개의 매핑 매핑 데이터(222, ..., 332, 및 333) 중에서 어느 하나가 제2매핑 데이터(MDATA2)로서 선택될 수 있다.
도 8의 경우 3-3(CASE3-3)과 같이, 제2매핑 데이터 그룹들(M10~M18)에 포함된 각 매핑 데이터는 0 상태를 포함하지 않고 적어도 하나의 1 상태를 포함한다.
각 제2매핑 데이터 그룹(M10~M18)에 포함된 복수의 매핑 데이터는 동일한 메시지를 나타내는 매핑 데이터 세트 또는 코드워드 세트이다.
각 제2매핑 데이터 그룹(M10~M18)이 쌍을 이루는 매핑 데이터(A와 (K-A))를 포함할 때, 매핑 데이터(K)는 2 상태부터 (q-1) 상태 사이에서 하나의 상태로만 이루어진 데이터로서 매핑 데이터(A)의 MLC들 중에서 가장 높은 상태를 포함하는 데이터이다.
예컨대, 매핑 데이터(A)가 "312"이기 때문에, K가 "333"일 때, (K-A)는 333-312, 즉 "021"이다. 또한, 매핑 데이터(A)가 "131"일 때, (K-A)는 "202"이다.
제2데이터(WDATA2)의 메시지에 따라, 제2매핑 데이터 그룹(M10)에 포함된 매핑 데이터(312 또는 021) 중에서 어느 하나가 제2매핑 데이터(MDATA2)로 선택될 수 있다.
그러나, 도 8의 경우 3-3(CASE3-3)에 따라 생성된 매핑 데이터(A)와 도 10의 경우 3-5(CASE3-5)와 도 11의 경우(CASE3-6)에 따라 생성된 매핑 데이터(A)가 중복될 때, 매핑 데이터(A)는 도 10의 경우 3-5(CASE3-5)와 도 11의 경우 3-6(CASE3-6)에 도시된 제2매핑 데이터 그룹에 속하는 것으로 정한다.
도 9의 경우 3-4(CASE3-4)에 도시된 바와 같이, 제2매핑 데이터 그룹들(M19와 M20) 각각에 포함된 매핑 데이터(또는 코드워드)는 하나만 0을 포함하고 0이 아닌 값들 중에서 적어도 하나가 (q-1)이다.
각 제2매핑 데이터 그룹(M19와 M20)에 포함된 복수의 매핑 데이터는 동일한 메시지를 나타내는 매핑 데이터 세트 또는 코드워드 세트이다.
예컨대, 제2데이터(WDATA2)의 메시지에 따라, 제2매핑 데이터 그룹(M19)에 포함된 매핑 데이터(023, 302, 및 230) 중에서 어느 하나는 제2매핑 데이터 (MDATA2)로 선택될 수 있다.
각 매핑 데이터(023, 302, 및 230)는 순환 시프트(circular shift) 연산을 통해 생성된다. 즉, 매핑 데이터(023)가 비트-단위(bitwise)로 순환 시프트하면 매핑 데이터(302)가 된다.
그러나, 도 10의 경우 3-5(CASE3-5)에 해당하면서 다음의 조건을 만족하는 매핑 데이터는 경우 3-4(CASE3-4)에서 제외한다. 즉, 매핑 데이터가 하나의 0을 포함하고 나머지 모두가 (q-1)일 때, 예컨대 "033", "303", 및 "330"일 때, 상기 매핑 데이터는 경우 3-4(CASE3-4)에서 제외한다.
도 10의 경우 3-5(CASE3-5)에 도시된 바와 같이, 제2매핑 데이터 그룹들(M21~M26)에 포함된 각 매핑 데이터(A)는 1과 2만을 포함한다.
각 제2매핑 데이터 그룹(M21~M26)에 포함된 복수의 매핑 데이터(A와 B)는 동일한 메시지를 나타내는 매핑 데이터 세트 또는 코드워드 세트이다.
각 제2매핑 데이터 그룹(M21~M26)의 매핑 데이터(A)에 포함된 1을 (q-1)로 치환하고 2를 0으로 치환하면, 매핑 데이터(B)가 생성된다. 예컨대, q가 4일 때, 매핑 데이터(211)에 포함된 2가 0으로 치환되고 1이 3으로 치환되면, 매핑 데이터 (B=033)가 생성된다. 다른 예로서, 매핑 데이터(212)에서 1이 3으로 치환되고 2가 0으로 치환되면, 매핑 데이터(300)가 생성된다.
또한, 도 11의 경우 3-6(CASE3-6)를 참조하면, 제2매핑 데이터 그룹들 (M27~M29)에 포함된 각 매핑 데이터(133, 331, 및 313)에서 1은 하나이고 나머지는 모두 3이다. 각 제2매핑 데이터 그룹(M28과 M30)의 매핑 데이터(A)에 포함된 1을 (q-1)로 치환하고 두 번째 값 3을 1로 치환하고, 나머지 값들을 0으로 치환하면, 매핑 데이터(B)가 생성된다.
각 제2매핑 데이터 그룹(M27과 M29)에 포함된 복수의 매핑 데이터는 동일한 메시지를 나타내는 매핑 데이터 세트 또는 코드워드 세트이다.
예컨대, q가 4일 때, 매핑 데이터(133)에서 첫 번째 값 1이 3으로 치환되고, 두 번째 값 3이 1로 치환되고, 세 번째 값 3이 0으로 치환되면, 매핑 데이터(310)가 생성된다.
그러나, 매핑 데이터가 331일 때, 매핑 데이터(133)에 적용된 규칙과 함께 순환 시프트 동작이 적용된다. 즉, 331에서 세 번째 값 1이 3으로 변경되고, 첫 번째 값 3이 1로 변경되고, 두 번째 값 3이 0으로 변경되면, 매핑 데이터(331)와 쌍을 이루는 매핑 데이터(103)가 생성된다. 또한, 313에서 두 번째 값 1이 3으로 변경되고 세 번째 값 3은 1로 변경되고 첫 번째 값 3이 0으로 변경되면, 매핑 데이터 (313)와 쌍을 이루는 매핑 데이터(031)가 생성된다.
n이 3일 때, 도 9의 경우 3-4(CASE3-4)에 포함된 매핑 데이터와 도 11의 경우 3-6(CASE3-6)에 포함된 매핑 데이터가 중복될 있다. 이 경우, 중복되는 매핑 데이터에 대해서는 경우 3-6(CASE3-6)가 적용된다.
또한, n이 2일 때, 상기 n이 너무 작아서 도 11의 경우 3-6(CASE3-6)에 포함된 매핑 데이터와 도 12의 경우 3-7(CASE3-7)에 포함된 매핑 데이터를 결합하여 매핑 데이터 세트를 만든다. 예컨대, q가 4일 때, 경우 3-6(CASE3-6)에 해당하는 매핑 데이터(13과 31)는 경우 3-7(CASE3-7)에 해당하는 매핑 데이터(11)와 함께 동일한 메시지를 지시하는 매핑 데이터 세트이다.
따라서, n이 2 또는 3인 경우, 제2라이팅에서 사용될 제2매핑 데이터 그룹의 개수(또는 경우의 수)는 2개 감소하여 수학식 6에 표현된 바와 같이 {q(q-1)n-1-(q-2)n-1-2}가 된다.
도 12의 경우 3-7(CASE3-7)에 도시된 바와 같이, 제2매핑 데이터 그룹(M30)은 다음과 같은 모든 매핑 데이터를 포함한다.
(i) "111"과 같이 1만 포함하는 매핑 데이터,
(ⅱ) "032"와 같이, 하나의 (q-1), (q-1) 다음 값으로서 2, 및 2 다음 값으로서 0을 포함하는 매핑 데이터,
(ⅲ) (ⅱ)에 따라 결정된 매핑 데이터를 순화 시프트하여 생성된 매핑 데이터.
경우 3-7(CASE3-7)에 도시된 바와 같이, 제2매핑 데이터 그룹(M30)에 포함된 복수의 매핑 데이터는 동일한 메시지를 나타내는 매핑 데이터 세트 또는 코드워드 세트이다.
n=2일 때, 제2매핑 데이터 그룹은 복수의 매핑 데이터(11, 31, 및 13)를 포함한다.
도 13은 도 7부터 도 12를 참조하여 설명된 제2매핑 데이터 그룹들에 포함된 복수의 매핑 데이터를 나타낸다.
도 7부터 도 12를 참조하여 설명한 바와 같이, 제1라이팅(First Writing) 동안, 제1매핑 데이터 그룹(MG3)에 포함된 10개의 매핑 데이터 중에서 어느 하나는 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)로서 선택되고, 선택된 제1매핑 데이터(MDATA1)는 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램된다.
제2라이팅(Second Writing) 동안, 30개의 제2매핑 데이터 그룹들(M1~M30) 중에서 어느 하나에 포함된 적어도 하나의 매핑 데이터 중에서 어느 하나는 제2데이터(WDATA2), 예컨대 메시지(A3부터 Y3 중에서 어느 하나)와 제1매핑 데이터 (MDATA1)에 기초하여 제2매핑 데이터(MDATA2)로서 선택된다. 따라서 선택된 제2매핑 데이터(MDATA2)는 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 오버라이트된다.
예컨대, 제2데이터(WDATA2)의 메시지가 A3일 때, 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 그대로 유지된다. 제2데이터(WDATA2)의 메시지가 D3일 때, 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 제2매핑 데이터 그룹에 포함된 복수의 매핑 데이터(312와 021) 중에서 어느 하나로 오버라이트 된다.
도 14는 제4매핑 알고리즘 또는 제4코딩 방법을 설명하기 위한 도면이다.
R1과 R2는 수학식 7에 따라 결정된다.
[수학식 7]
Figure pat00004
제4매핑 알고리즘에 따른 경우들의 수는 수학식 8과 같이 표현될 수 있다.
[수학식 8]
<mn, (q-m+1)n>
여기서, 첫 번째 항(term), 즉 mn은 제1번째 라이팅에 사용될 제1매핑 데이터 그룹(MG4)에 포함된 매핑 데이터의 개수를 나타내고, 두 번째 항, 즉 (q-m+1)n은 제2라이팅에서 사용될 제2매핑 데이터 그룹의 개수 또는 경우들의 수를 나타낸다.
제1매핑 데이터 그룹(MG4)에 포함된 각 매핑 데이터의 각 값은 0, 1, ..., (m-1)이다. 따라서, m=2일 때, 상기 각 매핑 데이터의 각 값은 0 또는 1이다.
n=3이고 q=4일 때, 수학식 8에 따라 <8, 27>이 결정된다.
제2데이터(WDATA2)와 제1매핑 데이터(MDATA1)의 조합에 따라, 메모리 영역 (151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 그대로 유지되거나 제2매핑 데이터(MDATA2)로 오버라이트될 수 있다.
각 제2매핑 데이터(MDATA2)에 포함된 값들 각각은 (m-1), m, ..., (q-1)이다. 예컨대, 제1매핑 데이터(111)는 제2데이터(WDATA2)에 따라 제2매핑 데이터 (112)로 오버라이트될 수 있다.
경우 4-1(CASE4-1)에 도시된 바와 같이, 제2데이터(WDATA2)가 메시지 A4일 때, 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 그대로 유지된다.
경우 4-2(CASE4-2)에 도시된 바와 같이, 제2데이터(WDATA2)가 메시지 B4, 메시지 C4, 또는 메시지 D4일 때, 제1매핑 데이터(MDATA1)는 "112", "113", 또는 "121"로 오버라이트된다.
도 15와 16은 제5매핑 알고리즘 또는 제5코딩 방법을 설명하기 위한 도면이다.
R1과 R2는 수학식 9에 따라 결정된다.
[수학식 9]
Figure pat00005
제5매핑 알고리즘에 따른 경우들의 수는 수학식 10과 같이 표현될 수 있다.
[수학식 10]
<2n-1, q(q-)n-1>
여기서, 첫 번째 항(term), 즉 2n-1은 제1라이팅에 사용될 제1매핑 데이터 그룹(MG5)에 포함된 매핑 데이터의 개수를 나타내고, 두 번째 항, 즉 q(q-)n-1은 제2라이팅에서 사용될 제2매핑 데이터 그룹의 개수 또는 경우들의 수를 나타낸다.
제1매핑 데이터 그룹(MG5)은 (i) 모든 값들이 모두 0인 매핑 데이터(000), (ii) 모든 값들 중에서 (n-1)개 이하만 1이고 나머지 값들이 모두 0인 복수의 매핑 데이터(001, 010, 100, 011, 101, 및 110)를 포함한다.
n=3이고 q=4일 때, 수학식 10에 따라 <7, 36>이 결정된다.
제2데이터(WDATA2)와 제1매핑 데이터(MDATA1)에 기초하여, 메모리 영역 (151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 그대로 유지되거나 제2매핑 데이터(MDATA2)를 오버라이트할 수 있다.
도 15의 경우 5-1(CASE5-1)에 도시된 바와 같이, 제2데이터(WDATA2)와 제1매핑 데이터(MDATA1)에 기초하여, 메모리 영역(151-1)에 프로그램된 제1매핑 데이터 (MDATA1)는 그대로 유지된다.
도 15의 경우 5-2(CASE5-2)에 도시된 바와 같이, 27개의 제2매핑 데이터 그룹들(M2~M28) 각각은 전혀 0을 포함하지 않는다.
도 16의 경우 5-3(CASE5-3)에 도시된 바와 같이, 8개의 제2매핑 데이터 그룹들(M29~M26) 각각에 포함된 매핑 데이터는 하나의 0과 0이 아닌 나머지 값들을 포함한다.
각 제2매핑 데이터 그룹(M29~M36)에 포함된 복수의 매핑 데이터는 동일한 메시지를 나타내는 매핑 데이터 세트 또는 코드워드 세트이다.
각 제2매핑 데이터 그룹(M29~M36)에 포함된 복수의 매핑 데이터는 비트 단위로 순환 시프트하여 생성된다.
도 17은 도 15와 도 16을 참조하여 설명된 제2매핑 데이터 그룹들에 포함된 복수의 매핑 데이터를 나타낸다.
도 15와 도 16을 참조하여 설명한 바와 같이, 제1라이팅(First Writing) 동안, 제1매핑 데이터 그룹(MG3)에 포함된 7개의 매핑 데이터 중에서 어느 하나는 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)로서 선택되고, 선택된 제1매핑 데이터(MDATA1)는 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램된다.
제2라이팅(Second Writing) 동안, 36개의 제2매핑 데이터 그룹들(M1~M36) 중에서 어느 하나에 포함된 적어도 하나의 매핑 데이터 중에서 어느 하나는 제2데이터(WDATA2), 예컨대 메시지(A5부터 K5 중에서 어느 하나)와 제1매핑 데이터 (MDATA1)에 기초하여 제2매핑 데이터(MDATA2)로서 선택된다. 따라서 선택된 제2매핑 데이터 (MDATA2)는 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 오버라이트된다.
예컨대, 제2데이터(WDATA2)가 메시지가 A5일 때, 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 그대로 유지된다. 제2데이터(WDATA2)가 메시지가 J5일 때, 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 제2매핑 데이터 그룹(J)에 포함된 매핑 데이터(111)로 오버라이트 된다.
제2데이터(WDATA2)가 메시지가 B5일 때, 메모리 영역(151-1)에 프로그램된 제1매핑 데이터(MDATA1)는 제2매핑 데이터 그룹(M29)에 포함된 복수의 매핑 데이터 (012, 201, 및 120) 중에서 어느 하나로 오버라이트 된다.
도 18과 도 19는 제6매핑 알고리즘 또는 제6코딩 방법을 설명하기 위한 도면이다.
R1과 R2는 수학식 11에 따라 결정된다.
[수학식 11]
Figure pat00006
제6매핑 알고리즘에 따른 경우들의 수는 수학식 12와 같이 표현될 수 있다.
[수학식 12]
<n+1, {qn+(q-1)n-1}2-1>
여기서, 첫 번째 항(term), 즉 n+1은 제1라이팅에 사용될 제1매핑 데이터 그룹(MG6)에 포함된 매핑 데이터의 개수를 나타내고, 두 번째 항, {qn+(q-1)n-1}2-1은 제2라이팅에서 사용될 제2매핑 데이터 그룹의 개수 또는 경우들의 수를 나타낸다.
제1매핑 데이터 그룹(MG6)은 (i) 모든 값들이 0인 매핑 데이터(000), (ii) 모든 값들 중에서 하나만 1인 복수의 매핑 데이터(001, 010, 및 100)를 포함한다.
n=3이고 q=4일 때, 수학식 12에 따라 <4, 45>이 결정된다.
4개의 매핑 데이터(000, 001, 010, 및 100) 중에서 어느 하나는 제1데이터 (WDATA1)에 대응되는 제1매핑 데이터(MDATA1)로서 선택된다.
도 18의 경우 6-1(CASE6-1)에 도시된 바와 같이, 26개의 제2매핑 데이터 그룹들(M1~M26) 각각에 포함된 매핑 데이터는 0을 전혀 포함하지 않는다. 모든 값이 1인 매핑 데이터(111)는 도 18의 경우 6-1(CASE6-1)에 포함되지 않고, 도 19의 경우 6-2(CASE6-2)에 포함된다.
도 19의 경우 6-2(CASE6-2)에 도시된 바와 같이, 26개의 제2매핑 데이터 그룹들(M27~M45) 각각에 포함된 각 매핑 데이터(A)는 적어도 하나의 0을 포함한다.
제2매핑 데이터 그룹들(M27~M45) 각각은 두 개의 매핑 데이터(A과 (K-A))를 포함한다. 여기서, 매핑 데이터(K)는 대응되는 매핑 데이터에 포함된 값들 중에서 최대값만으로 구성된 매핑 데이터를 의미한다.
예컨대, 제2매핑 데이터 그룹(M42)의 매핑 데이터(A)가 "032"일 때, 매핑 데이터(K)는 333이다. 따라서, 매핑 데이터(K-A=333-032)는 "301"이다.
그러나, 제2매핑 데이터 그룹(M43)의 매핑 데이터(A)가 "102"일 때, 매핑 데이터(K)는 "222"이다. 따라서, 매핑 데이터(K-A=222-102)는 "120"이다.
각 제2매핑 데이터 그룹(M27~M45)에 포함된 복수의 매핑 데이터는 동일한 메시지를 나타내는 매핑 데이터 세트 또는 코드워드 세트이다.
도 20은 도 18과 도 19를 참조하여 설명된 제2매핑 데이터 그룹들에 포함된 복수의 매핑 데이터를 나타낸다.
도 18과 도 19를 참조하여 설명한 바와 같이, 제1라이팅(First Writing) 동안, 제1매핑 데이터 그룹(MG6)에 포함된 4개의 매핑 데이터(000, 001, 010, 및 100) 중에서 어느 하나는 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)로서 선택되고, 선택된 제1매핑 데이터(MDATA1)는 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 프로그램된다.
제2라이팅(Second Writing) 동안, 45개의 제2매핑 데이터 그룹들(M1~M45) 중에서 어느 하나에 포함된 적어도 하나의 매핑 데이터 중에서 어느 하나는 제2데이터(WDATA2), 예컨대 메시지(A6부터 U6 중에서 어느 하나)와 제1매핑 데이터 (MDATA1)에 기초하여 제2매핑 데이터(MDATA2)로서 선택된다. 따라서 선택된 제2매핑 데이터(MDATA2)는 어드레스(ADD1)에 대응되는 메모리 영역(151-1)에 오버라이트된다.
예컨대, 제2데이터(WDATA2)가 메시지가 A6일 때, 제1매핑 데이터(MDATA1)는 제2매핑 데이터 그룹(M27)에 포함된 복수의 매핑 데이터(000과 111) 중에서 어느 하나로 오버라이트 된다.
도 21은 본 발명의 실시 예들 각각에 따른 2-비트 멀티-레벨 셀에 대한 채널 용량을 나타낸다.
도 21은 n=3이고, m=2일 때, 도 6부터 도 20을 참조하여 설명된 각 매핑 알고리즘에 따른 R1, R2, 및 R1+R2를 나타낸다. 도 21에 도시된 바와 같이, 매핑 알고리즘(또는 코딩 방법)의 번호가 증가할수록, R1은 감소하고 R2는 증가한다. 단, 매핑 알고리즘 4는 n에 따라 독립적이므로, 매핑 알고리즘의 번호에 따른 R1과 R2의 증감 영향과 관계가 없다.
도 22는 도 1에 도시된 시스템의 동작의 일 실시 예를 설명하기 위한 플로우차트이다.
도 1부터 도 22를 참조하면, 시스템(100)은, 불휘발성 메모리 장치(150)의 수명을 나타내는 정보에 따라, 정상 동작 모드와 오버라이트 모드 중에서 어느 하나를 선택적으로 수행할 수 있다.
상기 정상 동작 모드에서, 새로운 데이터를 메모리 영역에 프로그램할 때, 불휘발성 메모리 장치(150)는 상기 메모리 영역에 이미 프로그램된 데이터를 이레이즈한 후, 상기 메모리 영역에 상기 새로운 데이터를 프로그램하는 동작을 수행한다.
그러나, 상기 오버라이트 모드에서, 새로운 데이터를 메모리 영역에 프로그램할 때, 불휘발성 메모리 장치(150)는 상기 메모리 영역에 이미 프로그램된 데이터를 이레이즈하지 않고 상기 메모리 영역에 상기 새로운 데이터를 오버라이트하는 동작을 수행한다.
상기 수명을 나타내는 정보는 프로그램/이레이즈 사이클의 수, 문턱 전압에 대한 셀들의 산포를 나타내는 정보, 또는 ECC 엔진(143)에 의해 수행되는 에러 정정 동작의 결과에 따른 에러 정정 개수를 나타낼 수 있다. 예컨대, ECC 엔진(143)은 매핑 데이터(MDATA1 또는 MDATA2)를 불휘발성 메모리 장치(150)에 프로그램할 때 ECC 코드를 부가할 수 있다. 또한, 상기 ECC 코드를 이용하여, ECC 엔진(143)은 불휘발성 메모리 장치(150)로부터 리드된 매핑 데이터(MDATA1 또는 MDATA2)에 포함된 에러를 정정할 수 있다.
상기 수명을 나타내는 정보는 프로그램/이레이즈 사이클의 수가 기준 값 (REF)보다 작을 때(S110), 메모리 컨트롤러(130)의 제어에 따라 불휘발성 메모리 장치(150)는 정상 동작 모드로 동작한다(S120).
그러나, 상기 수명을 나타내는 정보는 프로그램/이레이즈 사이클의 수가 기준 값(REF)보다 클 때(S110), 메모리 컨트롤러(130)의 제어에 따라 불휘발성 메모리 장치(150)는 오버라이트 모드로 동작한다(S130). 불휘발성 메모리 장치(150)가 상기 오버라이트 모드로 동작함에 따라, 불휘발성 메모리 장치(150)의 수명이 연장될 수 있는 효과가 있다.
도 23은 도 1에 도시된 시스템의 동작의 다른 실시 예를 설명하기 위한 플로우차트이다.
메모리 컨트롤러(130)는 도 5부터 도 20을 참조하여 설명된 매핑 알고리즘들 중에서 적어도 하나를 수행할 수 있다. 이때, 상기 적어도 하나의 알고리즘을 수행하기 위한 프로그램 코드는 프로그램 ROM(135)에 저장될 수 있다. 또한, 상기 적어도 하나의 알고리즘에 따른 매핑 정보는 매핑 테이블(139)에 저장될 수 있다.
메모리 컨트롤러(130)가 도 5부터 도 20을 참조하여 설명된 매핑 알고리즘들 중에서 적어도 두 개를 수행할 수 있을 때, 호스트(110)는 채널 용량(R1)에 대응되는 비트 정보(BI)를 메모리 컨트롤러(130)의 호스트 인터페이스(131)로 전송할 수 있다.
마이크로프로세서(133)는 호스트 인터페이스(131)를 통하여 비트 정보(BI)를 수신하고(S210), 수신된 비트 정보(BI)에 따라 서로 다른 매핑 알고리즘들 중에서 어느 하나를 선택할 수 있다(S220).
선택된 매핑 알고리즘에 따라 마이크로프로세서(133)는 데이터(WDATA1 또는 WDATA2)에 기초하여 선택된 제1매핑 데이터(MDATA1) 또는 제2매핑 데이터 (MDATA2)를 불휘발성 메모리 장치(150)로 전송할 수 있다(S230).
도 24는 본 발명의 실시 예에 따른 데이터 코딩 방법을 설명하기 위한 플로우차트이다.
도 1과 도 24를 참조하면, 메모리 컨트롤러(130)는, 호스트(110)로부터 출력된 제1액세스 요청(PGR1)에 기초하여(S310), 제1데이터(WDATA1)에 대응되는 제1매핑 데이터(MDATA1)를 어드레스(ADD1)에 대응되는 메모리 영역(151-1)의 MLC들에 프로그램하기 위해 제1매핑 데이터(MDATA1)를 불휘발성 메모리 장치(150)로 전송한다 (S320). 이때 휘발성 메모리 장치(150)는 제1라이팅을 수행한다.
메모리 컨트롤러(130)는, 호스트(110)로부터 출력된 제2액세스 요청(PGR2)에 기초하여(S330), 메모리 영역(151-1)의 상기 MLC들에 저장된 제1매핑 데이터 (MDATA1)를 읽어온다(S340).
메모리 컨트롤러(130)는, 호스트(110)로부터 출력된 제2데이터(WDATA2)와 제1매핑 데이터(MDATA1)에 기초하여 선택된 제2매핑 데이터(MDATA2)를 불휘발성 메모리 장치(150)로 전송한다(S350).
불휘발성 메모리 장치(150)는 제1매핑 데이터(MDATA1)가 프로그램된 메모리 영역에 제2매핑 데이터(MDATA2)를 오버라이트한다(S360). 이때, 불휘발성 메모리 장치(150)는 제2라이팅을 수행한다.
도 25는 본 발명의 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 25를 참조하면, 시스템(200)은 메모리 컨트롤러(130), 불휘발성 메모리 장치(150), 및 프로세서(210)를 포함한다. 실시 예에 따라, 메모리 컨트롤러(130)는 프로세서(210)의 내부에 구현될 수 있다.
프로세서(210)의 제어에 따라 메모리 컨트롤러(130)는 불휘발성 메모리 장치 (150)의 액세스 동작, 예컨대 프로그램(program) 동작, 이레이즈(erase) 동작, 리드(read) 동작, 또는 오버라이트 동작을 제어할 수 있다.
불휘발성 메모리 장치(150)에 프로그램된 데이터는 프로세서(210) 및/또는 메모리 컨트롤러(130)의 제어에 따라 디스플레이(220)를 통하여 디스플레이될 수 있다.
입력 장치(230)는 프로세서(210)의 동작을 제어하기 위한 제어 신호 또는 프로세서(210)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
무선 송수신기(240)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(240)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(210)에서 처리될 수 있는 신호로 변경할 수 있다.
따라서, 프로세서(210)는 무선 송수신기(240)로부터 출력된 신호를 처리하고 처리된 신호를 메모리 컨트롤러(130) 또는 디스플레이(220)로 전송할 수 있다. 메모리 컨트롤러(130)는 프로세서(210)에 의하여 처리된 신호를 불휘발성 메모리 장치(150)에 프로그램할 수 있다.
또한, 무선 송수신기(240)는 프로세서(210)로부터 출력된 신호를 무선 신호로 변경하고, 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다.
프로세서(210)는 메모리 컨트롤러(130)로부터 출력된 데이터, 무선 송수신기 (240)로부터 출력된 데이터, 또는 입력 장치(230)로부터 출력된 데이터가 디스플레이(220)를 통하여 디스플레이될 수 있도록 디스플레이(220)의 동작을 제어할 수 있다.
각 구성 요소(130, 210, 220, 230, 및 240)는 버스(201)를 통하여 서로 통신할 수 있다.
도 26은 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 26에 도시된 시스템(300)은 메모리 카드(memory card) 또는 스마트 카드 (smart card)로 구현될 수 있다. 시스템(300)은 호스트(110)와 카드 시스템(310)을 포함한다.
카드 시스템(310)은 메모리 컨트롤러(130), 불휘발성 메모리 장치(150), 및 카드 인터페이스(311)를 포함한다.
메모리 컨트롤러(130)는 불휘발성 메모리 장치(150)와 카드 인터페이스(311) 사이에서 데이터의 교환을 제어할 수 있다.
실시 예에 따라, 카드 인터페이스(311)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(311)는 호스트(110)의 프로토콜에 따라 호스트(110)와 메모리 컨트롤러(130) 사이에서 데이터 교환을 인터페이스할 수 있다.
실시 예에 따라 카드 인터페이스(311)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스라 함은 호스트(110)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어, 또는 신호 전송 방식을 의미할 수 있다.
카드 시스템(310)이 호스트(110)의 호스트 인터페이스(113)에 접속될 때, 호스트 인터페이스(113)는 프로세서(111)의 제어에 따라 카드 인터페이스(311)와 메모리 컨트롤러(130)를 통하여 불휘발성 메모리 장치(150)와 데이터 통신을 수행할 수 있다.
이때, 호스트(110)는 PC(personal computer), 태블릿(tablet) PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 스마트폰, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스일 수 있다.
카드 시스템(310)은 플래시 메모리 드라이브, USB 메모리 드라이브, IC-USB 메모리 드라이브, 또는 메모리 스틱(memory stick)으로 구현될 수 있다.
도 27은 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 27을 참조하면, 시스템(400)은 SSD(solid state drive)와 같은 데이터 처리 장치로 구현될 수 있다.
시스템(400)은 호스트(110), 메모리 컨트롤러(130), 복수의 불휘발성 메모리 장치들(150), 예컨대 복수의 NAND 플래시 메모리 장치들, 버퍼 매니저(410), DRAM (dynamic ramdom access memory) 컨트롤러(420), 및 DRAM(430)을 포함한다.
메모리 컨트롤러(130)는 복수의 불휘발성 메모리 장치들(150) 각각의 액세스 동작을 제어할 수 있다.
버퍼 매니저(410)는 호스트(110), 메모리 컨트롤러(130), 및 메모리 컨트롤러(420) 사이에서 데이터의 전송을 제어할 수 있다. DRAM 메모리 컨트롤러(420)는 버퍼 매니저(410)와 DRAM(430) 사이에서 데이터의 전송을 제어할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 200, 300, 및 400; 시스템
110; 호스트
130; 메모리 컨트롤러
131; 호스트 인터페이스
133; 마이크로프로세서
135; 프로그램 ROM
137; 액세스 히스토리 테이블
139; 매핑 테이블
141; 데이터 버퍼
143; 에러 정정 코드 블록
145; NAND 인터페이스
150; 불휘발성 메모리 장치
151; 메모리 어레이
153; 액세스 제어 회로

Claims (10)

  1. MLC(multi level cell)들을 포함하는 메모리 영역을 포함하는 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러의 동작 방법에 있어서,
    액세스될 상기 메모리 영역의 어드레스와 상기 메모리 영역에 프로그램될 데이터를 수신하는 단계;
    상기 어드레스에 기초하여 상기 메모리 영역에 대한 액세스 히스토리 정보를 분석하는 단계;
    상기 분석의 결과에 기초하여, 상기 데이터에 대응되는 제1매핑 데이터를 생성하거나 상기 데이터와 상기 MLC들에 이전에 프로그램된 이전 매핑 데이터에 기초하여 제2매핑 데이터를 생성하는 단계; 및
    상기 제1매핑 데이터와 상기 제2매핑 데이터 중에서 어느 하나를 포함하는 프로그램 명령을 상기 불휘발성 메모리 장치로 전송하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  2. 제1항에 있어서,
    상기 제1매핑 데이터를 생성하기 위해 필요한 상기 데이터의 비트 수와 상기 제2매핑 데이터를 생성하기 위해 필요한 상기 데이터의 비트 수는 서로 다른 메모리 컨트롤러의 동작 방법.
  3. 제1항에 있어서, 상기 프로그램 명령은,
    (i) 상기 제1매핑 데이터를 상기 MLC들에 프로그램하기 위한 명령과,
    (ⅱ) 상기 이전 매핑 데이터를 이레이즈하지 않고 상기 제2매핑 데이터를 상기 MLC들에 오버라이트하기 위한 명령과,
    (ⅲ) 상기 이전 매핑 데이터를 이레이즈하고 상기 제1매핑 데이터를 상기 MLC들에 프로그램하기 위한 명령 중의 어느 하나인 메모리 컨트롤러의 동작 방법.
  4. 제1항에 있어서,
    상기 이전 매핑 데이터는 상기 분석의 결과에 기초하여 상기 MLC들로부터 리드된 메모리 컨트롤러의 동작 방법.
  5. 제1항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 MLC들 각각에 저장하려는 데이터의 양을 나타내는 비트 정보에 기초하여 서로 다른 매핑 알고리즘들 중에서 어느 하나의 알고리즘을 선택하는 단계를 더 포함하며,
    상기 제1매핑 데이터 또는 상기 제2매핑 데이터는 선택된 매핑 알고리즘에 따라 생성되는 메모리 컨트롤러의 동작 방법.
  6. 제1항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 불휘발성 메모리 장치의 프로그램/이레이즈 회수와 기준 회수를 비교하는 단계를 더 포함하며,
    상기 프로그램/이레이즈 회수가 상기 기준 회수보다 클 때, 상기 분석하는 단계, 상기 생성하는 단계, 및 상기 전송하는 단계가 순차적으로 수행되는 메모리 컨트롤러의 동작 방법.
  7. MLC(multi level cell)들을 포함하는 메모리 영역과 상기 메모리 영역에 대한 액세스를 제어하는 액세스 제어 회로를 포함하는 불휘발성 메모리 장치; 및
    액세스될 상기 메모리 영역의 어드레스와 상기 메모리 영역에 프로그램될 데이터를 수신하고, 수신된 어드레스에 기초하여 상기 메모리 영역에 대한 액세스 히스토리 정보를 분석하고, 상기 분석의 결과에 기초하여, 상기 데이터에 대응되는 제1매핑 데이터를 생성하거나 상기 데이터와 상기 MLC들에 이전에 프로그램된 이전 매핑 데이터에 기초하여 제2매핑 데이터를 생성하고, 상기 제1매핑 데이터와 상기 제2매핑 데이터 중에서 어느 하나를 포함하는 프로그램 명령을 상기 불휘발성 메모리 장치로 전송하는 메모리 컨트롤러를 포함하며,
    상기 액세스 제어 회로는,
    상기 프로그램 명령에 기초하여, 상기 제1매핑 데이터를 상기 MLC들에 프로그램하는 동작, 상기 이전 매핑 데이터를 이레이즈하지 않고 상기 제2매핑 데이터를 상기 MLC들에 오버라이트하는 동작, 및 상기 이전 매핑 데이터를 이레이즈하고 상기 제1매핑 데이터를 상기 MLC들에 프로그램하는 동작 중에서 어느 하나를 실행하는 시스템.
  8. 제7항에 있어서,
    상기 제1매핑 데이터를 생성하기 위해 필요한 상기 데이터의 비트 수와 상기 제2매핑 데이터를 생성하기 위해 필요한 상기 데이터의 비트 수는 서로 다른 시스템.
  9. 제7항에 있어서, 상기 메모리 컨트롤러는,
    상기 액세스 히스토리 정보를 저장하는 제1메모리;
    상기 제1매핑 데이터와 상기 제2매핑 데이터를 저장하는 제2메모리; 및
    상기 수신된 어드레스에 기초하여 상기 액세스 히스토리 정보를 분석하고, 상기 분석의 결과에 기초하여 상기 제1매핑 데이터와 상기 제2매핑 데이터 중에서 어느 하나를 생성하고, 상기 어느 하나를 포함하는 상기 프로그램 명령을 생성하는 마이크로프로세서를 포함하는 시스템.
  10. 제9항에 있어서, 상기 메모리 컨트롤러는,
    서로 다른 매핑 알고리즘들을 수행하기 위한 프로그램 코드를 저장하는 제3메모리를 더 포함하며,
    상기 마이크로프로세서는,
    상기 MLC들 각각에 저장하려는 데이터의 양을 나타내는 비트 정보에 기초하여 상기 제3메모리에 저장된 상기 매핑 알고리즘들 중에서 어느 하나의 알고리즘을 선택하고, 선택된 알고리즘에 기초하여 상기 제1매핑 데이터 또는 상기 제2매핑 데이터를 선택하는 시스템.
KR1020120096267A 2012-08-31 2012-08-31 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템 KR101934517B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120096267A KR101934517B1 (ko) 2012-08-31 2012-08-31 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템
US14/014,511 US9672147B2 (en) 2012-08-31 2013-08-30 Memory controller, method of operating memory controller, and system comprising memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120096267A KR101934517B1 (ko) 2012-08-31 2012-08-31 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템

Publications (2)

Publication Number Publication Date
KR20140030517A true KR20140030517A (ko) 2014-03-12
KR101934517B1 KR101934517B1 (ko) 2019-01-03

Family

ID=50189103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120096267A KR101934517B1 (ko) 2012-08-31 2012-08-31 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템

Country Status (2)

Country Link
US (1) US9672147B2 (ko)
KR (1) KR101934517B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102344834B1 (ko) 2014-09-24 2021-12-29 삼성전자주식회사 솔리드 스테이트 드라이브 및 이를 포함하는 컴퓨팅 시스템
CN104268096A (zh) * 2014-09-26 2015-01-07 西南科技大学 基于内存预分配和多点并写技术的大规模点云数据快速读取方法
US20170300249A1 (en) * 2016-04-15 2017-10-19 Western Digital Technologies, Inc. Validity tracking for garbage collection

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100521155B1 (ko) 2004-02-10 2005-10-12 삼성전자주식회사 플래시 메모리의 정보기록장치 및 그 방법
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
JP2007035163A (ja) 2005-07-27 2007-02-08 Matsushita Electric Ind Co Ltd 不揮発性半導体記憶装置及び信号処理システム
KR100859989B1 (ko) 2006-11-21 2008-09-25 한양대학교 산학협력단 플래시 메모리의 공간정보 관리장치 및 그 방법
KR20110087036A (ko) 2010-01-25 2011-08-02 삼성전자주식회사 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법
US9070427B2 (en) 2010-08-13 2015-06-30 Sandisk Technologies Inc. Data coding using divisions of memory cell states
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories

Also Published As

Publication number Publication date
US20140068160A1 (en) 2014-03-06
US9672147B2 (en) 2017-06-06
KR101934517B1 (ko) 2019-01-03

Similar Documents

Publication Publication Date Title
KR101371516B1 (ko) 플래시 메모리 장치의 동작 방법 및 그것을 포함하는 메모리 시스템
KR20050011409A (ko) 플래시 메모리 시스템 및 그 데이터 저장 방법
KR20170015757A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11682446B2 (en) Selective wordline scans based on a data state metric
US8751735B2 (en) Protection against data corruption for multi-level memory cell (MLC) flash memory
US11715538B2 (en) Memory system processing request based on inference and operating method of the same
EP3866015A1 (en) Storage device and operating method of memory controller
CN107133121A (zh) 数据存储装置及其操作方法
KR20160076668A (ko) 초기 문턱 전압 분포 변화를 보상할 수 있는 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템
US11755227B2 (en) Command batching for a memory sub-system
US20210334000A1 (en) Memory system, memory controller and memory device for configuring super blocks
KR20120129239A (ko) 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
CN108461107A (zh) 读阈值跟踪方法与装置
CN105094691A (zh) 一种数据操作的方法、设备和系统
US11429300B2 (en) Independent parallel plane access in a multi-plane memory device
CN109918019A (zh) 存储器系统及其操作方法
CN116954491A (zh) 用于存储控制器的操作方法和包括存储控制器的存储系统
US20130205073A1 (en) Memory device, memory system, and programming method thereof
KR101934517B1 (ko) 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템
CN111758085A (zh) 基于主机系统的工作负载识别存储装置的读取操作
US11275523B2 (en) Per cursor logical unit number sequencing
CN115641887A (zh) 闪存管理方法及闪存设备
US9460782B2 (en) Method of operating memory controller and devices including memory controller
CN113539342B (zh) 主动读取干扰缓解
US20240086344A1 (en) Input/output sequencer instruction set processing

Legal Events

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