KR100850515B1 - 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법 - Google Patents

멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법 Download PDF

Info

Publication number
KR100850515B1
KR100850515B1 KR1020070007527A KR20070007527A KR100850515B1 KR 100850515 B1 KR100850515 B1 KR 100850515B1 KR 1020070007527 A KR1020070007527 A KR 1020070007527A KR 20070007527 A KR20070007527 A KR 20070007527A KR 100850515 B1 KR100850515 B1 KR 100850515B1
Authority
KR
South Korea
Prior art keywords
memory
bit data
data
block
lower bit
Prior art date
Application number
KR1020070007527A
Other languages
English (en)
Other versions
KR20080069822A (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 KR1020070007527A priority Critical patent/KR100850515B1/ko
Priority to US11/796,978 priority patent/US7755950B2/en
Publication of KR20080069822A publication Critical patent/KR20080069822A/ko
Application granted granted Critical
Publication of KR100850515B1 publication Critical patent/KR100850515B1/ko

Links

Images

Classifications

    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Abstract

본 발명에 따른 멀티 레벨 셀 플래시 메모리의 프로그램 방법은: (a) 상기 플래시 메모리의 메모리 셀 어레이에서 사용자 블럭과 캐쉬 블럭을 구분하는 단계; (b) 상기 사용자 블럭의 페이지에 제 1 하위비트(LSB) 데이터를 프로그램하는 단계; 및 (c) 상기 (b) 단계 이후 상기 사용자 블럭의 페이지에 제 1 상위비트(MSB) 데이터를 프로그램하는 단계; (d) 상기 캐쉬 블럭의 페이지에 제 2 하위비트(LSB) 데이터를 프로그램하는 단계를 포함하되, 상기 캐쉬 블럭은 상기 플래시 메모리를 제어하는데 필요한 제어 데이터를 저장한다.
하위비트, 캐쉬 블럭

Description

멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및 그것의 프로그램 방법{MEMORY SYSTEM HAVING MULTL LEVEL CELL FLASH MEMORY AND PROGRAMMING METHOD THEREOF}
도 1은 종래의 메모리 시스템을 보여주는 도면이다.
도 2는 하나의 메모리 셀에 하위비트(LSB)와 상위비트(MSB), 즉 2 비트 데이터가 프로그램되는 과정을 보여준다.
도 3은 본 발명에 따른 메모리 시스템을 보여주고 있다.
도 4는 도 3에 도시된 캐쉬 블럭에 프로그램 하는 방법을 보여주고 있다.
도 5는 도 3에 도시된 사용자 블럭에 프로그램 하는 방법을 보여주고 있다.
도 6은 본 발명에 따른 또 다른 메모리 시스템을 보여주고 있다.
도 7은 도 6에 도시된 사용자 블럭에 프로그램 하는 방법을 보여주고 있다.
*도면의 주요부분에 대한 부호의 설명*
110.210,310: 호스트 120,220,320: 메모리 제어기
130,230,330: 플래시 메모리 221,321: 버퍼 메모리
222,322: 백업 메모리 231,331: 메모리 셀 어레이
232,332: 캐쉬 블럭 233,333: 사용자 블럭
323: 에러정정코드회로 324: 비교기
325: 폐일 위치 검출기 326: 리페어 회로
본 발명은 메모리 시스템에 관한 것으로, 좀 더 구체적으로 멀티 레벨 셀(MLC) 플래시 메모리를 갖는 메모리 시스템 및 그것의 프로그램 방법에 관한 것이다.
최근 들어 비휘발성 메모리를 사용하는 메모리 시스템들이 증가하고 있다. 예를 들면, MP3 플레이어, 디지털 카메라(Digital Camera), 휴대전화(Mobile Phone), 캠코더, 플래시 카드(flash card), 및 SSD(Solid State Disk) 등은 저장장치로 비휘발성 메모리를 사용하고 있다.
저장장치로 비휘발성 메모리를 사용하는 장치들이 증가하면서, 비휘발성 메모리의 용량도 급속히 증가하고 있다. 메모리 용량을 증가시키는 방법들 중 하나는 하나의 메모리 셀(cell)에 다수의 비트들을 저장하는 방식인 이른바 멀티 레벨 셀(MLC: Multi Level Cell) 방식이다.
도 1은 종래의 메모리 시스템(100)을 보여주는 도면이다. 도 1을 참조하면, 종래의 메모리 시스템(100)은 호스트(110), 메모리 제어기(120), 그리고 플래시 메모리(130)를 구비한다.
메모리 제어기(120)는 버퍼 메모리(121)를 포함한다. 플래시 메모리(130)는 셀 어레이(131) 및 페이지 버퍼(132)를 포함한다. 도 1에 도시되어 있지 않지만, 플래시 메모리(130)에는 디코더(decoder), 데이터 버퍼(data buffer), 그리고 제어 유닛(control unit)이 포함되어 있다.
메모리 제어기(120)는 호스트(110)로부터 입력되는 데이터(Data)와 쓰기 커맨드(Write Command)를 입력받고, 데이터(Data)가 셀 어레이(131)에 쓰여지도록 플래시 메모리(130)를 제어한다. 또한, 메모리 제어기(120)는 호스트(110)로부터 입력되는 읽기 커맨드(Read Command)에 따라, 셀 어레이(131)에 저장되어 있는 데이터가 읽혀지도록 플래시 메모리(130)를 제어한다.
버퍼 메모리(121)는 플래시 메모리(130)에 쓰여질 데이터 또는 플래시 메모리(130)로부터 읽은 데이터를 임시로 저장한다. 버퍼 메모리(121)는 메모리 제어기(120)의 제어에 의해 임시적 저장된 데이터를 호스트(110) 또는 플래시 메모리(130)로 전송한다.
플래시 메모리(130)의 셀 어레이(131)는 복수의 메모리 셀(Cell)로 구성된다. 메모리 셀은 비휘발성(Nonvolatile)으로서, 데이터를 저장한 후 전원이 꺼져도 데이터가 지워지지 않는다. 페이지 버퍼(132)는 셀 어레이(131)의 선택된 페이지(page)에 쓰여질 데이터 또는 선택된 페이지로부터 읽은 데이터를 저장하는 버퍼이다.
한편, 플래시 메모리(130)의 메모리 셀은 저장할 수 있는 데이터 비트 수에 따라 싱글 레벨 셀(SLC; Single Level Cell) 및 멀티 레벨 셀(MLC; Multi Level Cell)로 구분된다. 싱글 레벨 셀(SLC)은 한 비트 데이터(single bit data)를 저장하고, 멀티 레벨 셀(MLC)은 멀티 비트 데이터(multi bit data)를 저장할 수 있다.
먼저, 하나의 메모리 셀에 하나의 비트가 저장되는 싱글 레벨 셀(SLC: Single Level Cell)을 살펴본다. 싱글 레벨 셀(SLC)은 문턱 전압의 분포에 따라 2개의 상태(state)를 갖는다. 메모리 셀은 프로그램 후에, 데이터 1을 저장하거나 데이터 0을 저장한다. 여기에서, 데이터 1을 저장하는 메모리 셀은 소거 상태(erase state)에 있다고 하며, 데이터 0을 저장하는 메모리 셀은 프로그램 상태(program state)에 있다고 한다. 소거 상태의 셀은 온 셀(on cell), 프로그램 상태의 셀은 오프 셀(off cell)이라고도 한다.
플래시 메모리(130)는 페이지 단위로 프로그램 동작을 수행한다. 메모리 제어기(120)는 프로그램 동작 시, 내부의 버퍼 메모리(121)를 사용하여 페이지 단위로 데이터를 플래시 메모리(130)로 전송한다.
페이지 버퍼(132)는 버퍼 메모리(121)로부터 로드(load)된 데이터를 임시로 저장하며, 로드된 데이터를 선택된 페이지에 동시에 프로그램한다. 프로그램을 마친 다음에는, 데이터가 정확하게 프로그램되었는지를 검증하기 위한 프로그램 검증 동작이 수행된다.
프로그램 검증 결과, 프로그램 폐일(fail)이 발생하면 프로그램 전압을 증가해 가면서 다시 프로그램 동작 및 프로그램 검증 동작을 수행한다. 이런 방식으로 한 페이지 분량의 데이터에 대한 프로그램을 완료한 다음에, 다음 데이터를 수신하여 프로그램 동작을 수행한다.
다음으로, 하나의 메모리 셀에 멀티 비트 데이터(multi bit data)가 저장되는 멀티 레벨 셀(MLC; Multi Level Cell)을 살펴본다. 도 2는 하나의 메모리 셀에 하위비트(LSB: Least Significant Bit)와 상위비트(MSB: Most Significant Bit), 즉 2 비트 데이터가 프로그램되는 과정을 보여준다.
도 2를 참조하면, 메모리 셀은 문턱 전압 분포에 따라 4개의 상태(11, 01, 10, 00) 중 어느 하나를 갖도록 프로그램된다. 먼저, 하위비트(LSB)가 프로그램되는 과정은 위에서 설명한 싱글 레벨 셀(SLC)과 동일하다. 11 상태를 갖는 메모리 셀은 하위비트(LSB) 데이터에 따라 점선으로 도시된 상태(A)를 갖도록 프로그램된다.
다음으로, 메모리 제어기(120)는 상위비트(MSB)를 프로그램하기 위해 버퍼 메모리(121) 내에 있는 한 페이지 분량의 데이터를 플래시 메모리(130)로 전송한다. 도 2를 참조하면, 점선 상태(A)를 갖는 메모리 셀은 상위비트(MSB)에 따라 00 상태를 갖도록 프로그램(program1) 되거나, 10 상태를 갖도록 프로그램(program2) 된다. 한편, 11 상태를 갖는 메모리 셀은 상위비트(MSB)에 따라 11 상태를 유지하거나, 01 상태를 갖도록 프로그램(program3) 된다.
다시 도 1을 참조하면, 메모리 시스템(100)은 위와 같은 방법을 사용하여, 멀티 비트 데이터를 플래시 메모리(130)의 셀 어레이(131)에 프로그램한다. 즉, 하위비트(LSB)를 먼저 프로그램하고, 하위비트(LSB)가 프로그램되어 있는 메모리 셀에 상위비트(MSB)를 프로그램한다.
그러나 하위비트(LSB)가 프로그램되어 있는 메모리 셀에 상위비트(MSB)를 프로그램하는 과정에서, 프로그램 폐일(program fail)이 발생할 가능성이 있다. 상위비트(MSB)를 프로그램하다가 에러가 발생하는 경우에, 이미 프로그램되어 있는 하 위비트(LSB)에도 영향을 미칠 수 있다.
상위비트(MSB) 데이터는 프로그램 검증 동작이 완료될 때까지 메모리 제어기(120) 내의 버퍼 메모리(121)에 저장되어 있기 때문에, 데이터가 손상되어도 복구할 수 있다. 그러나 하위비트(LSB)는 버퍼 메모리(121)에 남아 있지 않기 때문에 복구할 수 있는 방법이 없다. 따라서 종래의 메모리 시스템은 멀티 비트 데이터를 프로그램하는 경우에, 원치 않게 하위비트(LSB) 데이터를 잃어 버릴 수 있다.
멀티 레벨 셀 낸드 플래시 메모리에서 특히 제어 데이터는 높은 수준의 데이터 무결성이 요구된다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로, 본 발명의 목적은 제어 데이터의 무결성을 개선하는 멀티 레벨 셀 플래시 메모리를 갖는 메모리 시스템 및 그것의 프로그램 방법을 제공하는데 있다.
본 발명에 따른 멀티 레벨 셀 플래시 메모리의 프로그램 방법은: (a) 상기 플래시 메모리의 메모리 셀 어레이에서 사용자 블럭과 캐쉬 블럭을 구분하는 단계; (b) 상기 사용자 블럭의 페이지에 제 1 하위비트(LSB) 데이터를 프로그램하는 단계; 및 (c) 상기 (b) 단계 이후 상기 사용자 블럭의 페이지에 제 1 상위비트(MSB) 데이터를 프로그램하는 단계; (d) 상기 캐쉬 블럭의 페이지에 제 2 하위비트(LSB) 데이터를 프로그램하는 단계를 포함하되, 상기 캐쉬 블럭은 상기 플래시 메모리를 제어하는데 필요한 제어 데이터를 저장한다.
실시예에 있어서, 상기 (b) 단계 이후 및 상기 (c) 단계 이전, 상기 제 1 하위비트 데이터를 백업해 두는 단계를 더 포함한다.
실시예에 있어서, 상기 (c) 단계 이후, 상기 사용자 블럭의 페이지의 프로그램 폐일을 검출하는 단계를 포함한다.
실시예에 있어서, 상기 프로그램 폐일이 검출되었다면, 상기 제 1 하위비트 데이터 및 상기 제 2 상위비트 데이터를 상기 사용자 블럭의 새로운 페이지에 재프로그램하는 단계를 더 포함한다.
실시예에 있어서, 상기 (d) 단계 이후, 상기 캐쉬 블럭의 페이지의 상기 프로그램 폐일이 검출하는 단계를 더 포함한다.
실시예에 있어서, 상기 프로그램 폐일이 검출되었다면, 상기 제 2 하위비트 데이터를 상기 캐쉬 블럭의 새로운 페이지에 재프로그램하는 단계를 더 포함한다.
실시예에 있어서, 상기 캐쉬 블럭은 상기 사용자 블럭에 저장된 데이터 중 사용 빈도가 높은 데이터를 저장할 수 있다.
실시예에 있어서, 상기 (c) 단계 이후, 상기 사용자 블럭의 페이지의 프로그램 폐일을 검출하는 단계가 더 포함된다.
실시예에 있어서, 상기 프로그램 폐일이 검출되었다면, 상기 제 1 하위비트 데이터가 복구된다.
실시예에 있어서, 상기 제 1 하위비트 데이터를 복구하는 방법은, (e) 상기 사용자 블럭의 페이지로부터 제 1 하위비트 데이터를 읽어오는 단계; (f) 상기 (e) 단계에서 읽어온 상기 제 1 하위비트 데이터가 에러정정코드(ECC)로 수정가능한가 판단하는 단계; 및 (g) 상기 (f) 단계에서 상기 제 1 하위비트 데이터가 상기 에러정정코드로 수정가능하다면, 상기 제 1 하위비트 데이터 및 상기 제 1 상위비트 데이터를 상기 사용자의 블럭의 새로운 페이지에 재프로그램하는 단계를 포함한다.
실시예에 있어서, 상기 (f) 단계에서 상기 제 1 하위비트 데이터가 상기 에러정정코드로 수정가능하지 않다면, 상기 제 1 상위비트 데이터를 이용하여 폐일이 난 위치를 검출하여 상기 제 1 하위비트 데이터를 복구하는 단계를 포함한다.
실시예에 있어서, 상기 에러정정코드는 상기 복구된 제 1 하위비트 데이터를 수정하는 단계를 더 포함한다.
실시예에 있어서, 상기 수정된 제 1 하위비트 데이터 및 상기 제 1 상위비트 데이터를 상기 사용자 블럭의 새로운 페이지에 재프로그램하는 단계를 포함한다.
실시예에 있어서, 상기 플래시 메모리는 낸드 플래시 메모리이다.
본 발명에 따른 메모리 시스템은: 호스트; 사용자 블럭 및 캐쉬 블럭을 갖는 메모리 셀 어레이를 포함하는 멀티 비트 셀 플래시 메모리; 및 상기 호스트로로부터 명령을 입력받아 상기 멀티 비트 셀 플래시 메모리를 제어하는 메모리 제어기를 포함하되, 상기 사용자 블럭은 제 1 하위비트 데이터로 프로그램된 후, 제 1 상위비트 데이터로 프로그램되고, 상기 캐쉬 블럭은 제 2 하위비트 데이터로 프로그램되며, 상기 멀티 비트 셀 플래시 메모리를 제어한다.
상기 메모리 시스템은 사용자 블럭을 프로그램할 때, 상기 제 1 하위비트 데이터를 백업해둔다.
실시예에 있어서, 상기 메모리 제어기는 상기 사용자 블럭에 프로그램된 상 기 제 1 하위비트 데이터를 백업하기 위한 백업 메모리를 더 포함한다.
실시예에 있어서, 상기 메모리 제어기는 상기 제 1 하위비트 데이터 및 상기 제 2 상위비트 데이터를 상기 사용자 블럭에 프로그램하기 위한 임시로 저장해 두는 버퍼 메모리를 포함한다.
실시예에 있어서, 상기 메모리 제어기는 상기 사용자 블럭에 상기 제 1 상위비트 데이터를 프로그램하기 전에 상기 프로그램된 상기 제 1 하위비트 데이터를 상기 백업 메모리에 저장시킨다.
실시예에 있어서, 상기 메모리 제어기는 상기 버퍼 메모리에 저장된 상기 제 1 상위비트 데이터를 상기 사용자 블럭에 프로그램한 뒤 프로그램 폐일이 발생하였는지 검출한다.
실시예에 있어서, 상기 프로그램 폐일이 발생했을 때, 상기 메모리 제어기는 상기 백업 메모리에 저장된 상기 제 1 하위비트 메모리와 상기 버퍼 메모리에 저장된 상기 제 1 상위비트 메모리를 상기 새로운 사용자 블럭에 재프로그램시킨다.
실시예에 있어서, 상기 캐쉬 블럭은 상기 사용자 블럭 중에 사용 빈도가 높은 데이터를 저장할 수 있다.
실시예에 있어서, 상기 메모리 제어기는, 상기 제 1 상위비트 데이터를 저장하는 버퍼 메모리; 상기 사용자 블럭의 상기 제 1 상위비트 데이터 프로그램시 폐일이 발생할 경우, 상기 사용자 블럭에 저장된 상기 제 1 하위비트 데이터를 백업시켜둔 백업 메모리; 및 상기 백업 메모리로부터 읽어온 상기 제 1 하위비트 데이터의 에러를 수정하여 상기 백업 메모리에 출력하는 에러정정코드(ECC)를 포함하 되, 상기 메모리 제어기는 상기 백업 메모리의 상기 수정된 제 1 하위비트 데이터 및 상기 버퍼 메모리의 상기 제 1 상위비트 데이터를 상기 새로운 사용자 블럭에 재프로그램한다.
실시예에 있어서, 상기 메모리 제어기는 상기 에러정정코드가 상기 제 1 하위비트 데이터를 수정하지 못할 때, 상기 제 1 하위비트 데이터를 복구하기 위하여, 상기 버퍼 메모리에 저장된 제 1 상위비트 데이터 및 상기 사용자 블럭에 저장된 상기 제 1 상위비트 데이터를 비교하는 비교기; 상기 비교기의 비교결과로부터 상기 프로그램 폐일이 위치를 검출하는 어드레스를 저장하는 폐일위치 검출기; 및 상기 검출된 폐일 위치에 따라 상기 제 1 하위비트 데이터를 복구하여 상기 백업 메모리에 저장하는 리페어 회로를 포함하되, 상기 메모리 제어기는 상기 백업 메모리에 저장된 상기 복구된 제 1 하위비트 데이터 및 상기 버퍼 메모리에 저장된 상기 제 1 상위비트 데이터를 상기 사용자 블럭의 새로운 페이지에 재프로그램한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시예를 첨부된 도면을 참조하여 설명한다.
도 3은 본 발명에 따른 메모리 시스템(200)을 보여주고 있다. 도 3을 참조하면, 메모리 시스템(200)은 호스트(210), 메모리 제어기(220) 및 플래시 메모리(230)를 포함하고 있다. 여기서, 플래시 메모리(230)는 하나의 메모리 셀에 멀티 비트 데이터를 저장할 수 있다. 본 발명의 메모리 시스템(200)의 경우, 캐쉬 블럭(232) 및 사용자 블럭(233)에 따라 프로그램 방법이 다르다. 캐쉬 블럭(232)의 경우 메모리 시스템(200)은 하위비트(LSB)만 프로그램한다. 사용자 블럭(233)의 경우, 메모리 시스템(200)은 하위비트(LSB)를 먼저 프로그램하고, 상위비트(MSB)를 나중에 프로그램한다. 캐쉬 블럭(232) 및 사용자 블럭(233)는 아래에서 자세하게 설명하도록 하겠다.
도 3에서 보았듯이, 메모리 제어기(220) 및 플래시 메모리(230)는 하나의 메모리 카드 내에 포함될 수 있다. 이러한 메모리 카드에는 MMC(Multi_Media Card), SD 카드, XD 카드, CF 카드, SIM 카드 등이 포함된다. 또한, 이러한 메모리 카드는 디지털 카메라, 휴대폰, MP3 플레이어, PMP 등과 같은 호스트(210)에 접속되어 사용된다.
메모리 제어기(220)는 호스트(210)로부터 커맨드(Command)를 입력받고, 입력된 커맨드에 따라 플래시 메모리(230)의 제반 동작(예를 들면, 쓰기 또는 읽기 동작)을 제어한다. 도 3을 참조하면, 메모리 제어기(220)는 버퍼 메모리(221)와 백업 메모리(222)를 포함한다.
버퍼 메모리(221)는 플래시 메모리(230)에 쓰여질 데이터 또는 플래시 메모리(230)로부터 읽은 데이터를 임시로 저장하는 데 사용된다. 버퍼 메모리(221)에 저장된 데이터는 메모리 제어기(220)의 제어에 의해 플래시 메모리(230) 또는 호스트(210) 전송된다. 버퍼 메모리(221)는 랜덤 액세스 메모리(RAM), 예를 들면, SRAM이나 DRAM 등으로 구현될 수 있다.
본 발명에 따른 메모리 시스템(200)은 메모리 제어기(220) 내에 백업 메모리(222)를 포함한다. 백업 메모리(222)는 플래시 메모리(230)에 멀티 비트 데이 터(multi bit data)를 프로그램하는 경우에 사용된다.
플래시 메모리(230)의 사용자 블럭(233)에서 하위비트(LSB)가 프로그램 된 후, 상위비트(MSB)가 프로그램 된다. 그러나 하위비트(LSB)가 이미 프로그램된 플래시 메모리(230)에 상위비트(MSB)를 프로그램 할 때, 하위비트 데이터(LSB)가 손상될 수 있다. 즉, 상위비트(MSB)를 프로그램하는 과정에서, 프로그램 폐일(fail)이 발생하면, 이미 쓰여진 하위비트(LSB)도 함께 잃게 된다. 이러한 문제를 해결하기 위하여 백업 메모리(222)는 상위비트(MSB)가 프로그램되기 전에, 플래시 메모리(230)에 저장된 하위비트(LSB)를 백업(backup)해 놓는다.
백업 메모리(222)는 버퍼 메모리(221)와 마찬가지로 랜덤 액세스 메모리(RAM)로 구현될 수 있다. 도 3에서, 버퍼 메모리(221)와 백업 메모리(222)는 별도의 메모리로 구분되어 있지만, 반드시 그럴 필요는 없다. 버퍼 메모리(221) 및 백업 메모리(222)는 하나의 메모리로 구현될 수 있다. 즉, 하나의 랜덤 액세스 메모리(RAM) 내에 데이터를 임시 저장하기 위한 버퍼 영역과 하위비트(LSB)를 백업하기 위한 백업 영역을 갖도록 구현될 수도 있다.
도 3을 다시 참조하면, 플래시 메모리(230)는 메모리 셀 어레이(231)를 포함하고 있다. 본 발명의 메모리 셀 어레이(231)는 캐쉬 블럭(232) 및 사용자 블럭(233)을 포함하고 있다.
캐쉬 블럭(232)은 단일-비트 데이터로만 프로그램된다. 캐쉬 블럭(232)은 플래시 메모리(230)의 제어 데이터(control data)를 저장하고 있다. 이러한 제어 데이터에는 FTL(Flash Translation layer)의 어드레스 매핑과 관련한 정보가 포함된 다.
여기서 FTL는 메모리에 대한 논리적 어드레스를 물리적 어드레스로 변환하도록 관리해주는 매핑(mapping) 기능, 예기치 못한 파워 드롭(power drop)에 대한 관리, 필요시 데이터 변환, 사용중 배드 블럭 관리 및 마모도 관리 기능을 수행한다. FTL은 프로그램 동작 시 로그 스킴(log scheme)을 적용하여 프리 블럭(free block)에서 로그 블럭(log block)을 할당하고 로그 블럭에 프로그램 동작하게 된다. 만약 로그 블럭이 없거나 프리 블럭이 없으면 프리 블럭 확보를 위하여 머지(merge)를 하게 된다. 여기서 머지는 데이터 블럭과 기존에 할당되어 있는 로그 블럭에서 최근 유효한 데이터만을 새로운 프리 블럭에 복사하여 데이터 블럭을 만든 뒤 복사 데이터가 있는 이전 데이터 블럭과 로그 블럭을 프리 블럭으로 만드는 것을 말한다. 이렇게 머지를 하여 프리 블럭이 확보되면 프리 블럭을 로그 블럭으로 할당한 다음 요청한 데이터나 소거 마크(rease mark)를 로그 블럭에 프로그램한다.
한편 캐쉬 블럭(232)은 사용빈도가 높은 사용자 데이터를 저장할 수도 있다. 따라서, 사용빈도가 높은 사용자 데이터의 무결성을 SLC 수준으로 높이게 된다. 여기서 사용 빈도가 높다는 것은 호스트로부터 소정의 회수 이상으로 억세스된다는 것을 의미한다.
캐쉬블럭은 일반적인 메모리 블럭이다. 이러한 메모리 블럭들은 복수의 페이지(예를 들면, 32 pages, 64 pages)로 구성된다. 여기서 각각의 페이지는 하나의 워드 라인(WL)을 공유하는 복수의 메모리 셀(예를 들면, 512Byte, 2K Byte)로 구성된다. 한편, 하나의 워드라인에 복수의 페이지들이 연결될 수도 있다. 낸드 플래시 메모리의 경우에, 소거 동작은 메모리 블럭 단위로 수행되며, 읽기 및 프로그램 동작은 페이지 단위로 수행된다.
한편, 각각의 메모리 셀은 멀티 비트 데이터(예를 들면, 2비트)를 저장할 수 있다. 즉, 도 2에서 설명한 바와 같이, 각각의 메모리 셀은 문턱 전압 분포에 따라 4개의 상태(state) 또는 레벨(level) 중 하나를 갖는다. 도 2를 참조하면, 각각의 메모리 셀은 프로그램 동작 후에, (11, 01, 10, 00) 상태 중 어느 하나를 갖는다. 여기에서, 하위비트(LSB)는 (1, 1, 0, 0)이고, 상위비트(MSB)는 (1, 0, 1, 0)이다.
사용자 블럭(233)도 역시 일반적인 메모리 블럭이다. 사용자 블럭(233)에서는 하위비트(LSB)가 프로그램된 후, 상위비트(MSB)가 프로그램된다. 메모리 제어기(210)는 메모리 셀 어레이(231)에서 어느 것이 캐쉬 블럭(232)이고 어느 것이 사용자 블럭(233)인지를 결정한다. 한편, 사용자 블럭(233)는 상위비트(MSB)를 먼저 프로그램하고 나중에 하위비트(LSB)를 프로그램할 수도 있다. 메모리 제어기(210)는 운영 도중 경우에 따라사 사용자 블럭(233) 중에서 사용빈도가 높은 데이터가 저장되어 있는 페이지(도시되지 않음)를 캐쉬블럭(232)으로 변경할 수 있다. 이렇게 변경하기 위하여 메모리 제어기(210)는 펌웨어(firmware:도시되지 않음)을 포함하고 있다.
사용자 블럭(233)에서 상위비트(MSB)가 프로그램되기 전에, 하위비트(LSB)는 백업 메모리(222)에 저장된다. 그 다음에, 상위비트(MSB)가 프로그램된다. 만약, 상위비트(MSB)가 셀 어레이(231)에 정상적으로 프로그램되었으면, 백업 메모리(222)에 저장되어 있는 하위비트(LSB)를 소거한다.
그러나 상위비트(MSB)가 정상적으로 프로그램되지 않고 셀 어레이(231)에 저장된 하위비트(LSB)가 손상될 수 있다. 이때 프로그램 폐일(fail)된 메모리 셀을 포함하는 페이지(page,도시되지 않음)을 배드 페이지(bad page)로 처리한다.
그 다음에, 백업 메모리(222)에 저장되어 있는 하위비트(LSB) 및 버퍼 메모리(223)에 저장되어 있는 상위비트(MSB)가 새로운 페이지에 재프로그램된다.
본 발명의 메모리 시스템(200)은 메모리 제어기(220) 내에 백업 메모리(222)를 가지고 있다. 또한 본 발명의 플래시 메모리(230)는 캐쉬 블럭(232) 및 사용자 블럭(233)을 포함하고 있다. 본 발명의 캐쉬 블럭(232)은 하위비트(LSB)만 프로그램된다. 이로써 캐쉬 블럭(232)은 SLC(single level cell) 수준의 데이터 무결성을 확보하게 된다. 한편, 본 발명의 사용자 블럭(233)은 멀티 비트 데이터를 프로그램하는 경우에 하위비트(LSB)의 손실을 방지 및 하위비트(LSB)를 안전하게 관리할 수 있다.
도 4는 도 3에 도시된 캐쉬 블럭(232)에 프로그램하는 방법을 보여주고 있다. 도 3 및 도 4를 참조하면, 캐쉬 블럭(232)에 프로그램하는 동작은 다음과 같다.
S110단계에서, 캐쉬 블럭(232)에 하위비트(LSB) 데이터가 프로그램된다. 메모리 제어기(220)는 플래시 메모리(200)를 제어하기 위한 제어 데이터를 생성한다. 여기서 제어 데이터는 메모리 제어기(220)의 펌웨어(도시되지 않음)에서 생성된다. 한편, 메모리 제어기(220)는 사용자 블럭(233)에서 사용빈도가 높은 데이터를 저장하고 있는 데이터를 읽어올 수도 있다.
생성된 데이터는 버퍼 메모리(221)에 저장된다. 메모리 제어기(220)는 버퍼 메모리(221)에 저장된 하위비트(LSB) 데이터를 캐쉬 블럭(232)의 해당 페이지에 프 로그램 시킨다.
S130 단계에서, 플래시 메모리(200)의 해당 페이지에 저장된 하위비트(LSB) 데이터가 프로그램 폐일이 났는지 판단한다. 만약 프로그램 폐일이 나지 않았다면, 프로그램은 완료된다. 만약 프로그램 폐일이 났다면, S150 단계가 동작된다. 이때 폐일이 발생한 페이지는 배드 페이지로 처리한다.
S150 단계에서, 메모리 제어기(220)는 버퍼 메모리(221)의 저장된 하위비트(LSB) 데이터를 새로운 페이지(도시되지 않음)에 프로그램한다. 그 후 플래시 메모리(200)의 새로운 페이지에 저장된 제어 데이터가 프로그램 폐일이 났는지 다시 확인한다. 본 발명의 캐쉬 블럭(232)의 프로그램 방법은 상술한 과정을 반복한다.
본 발명의 캐쉬 블럭(232)의 프로그램 방법은 하위비트(LSB)만 프로그램을 실한다. 따라서, 캐쉬 블럭(232)은 SLC 수준의 데이터 무결성을 확보하게 된다.
도 5는 도 3에 도시된 사용자 블럭(233)에 프로그램하는 방법을 보여주고 있다. 도 3 및 도 5를 참조하면, 사용자 블럭(233)의 프로그램 동작은 다음과 같다.
S210 단계에서, 사용자 블럭(233)에 하위비트(LSB) 데이터가 프로그램된다. 호스트(210)는 플래시 메모리(230)의 사용자 블럭(233)에 데이터를 프로그램시키려 명령 및 데이터를 메모리 제어기(220)에 전달한다. 메모리 제어기(220)는 해당하는 명령 및 데이터에 따라 플래시 메모리(230)를 제어한다. 우선 메모리 제어기(220)는 하위비트 블럭(LSBO)에 프로그램할 하위비트(LSB) 데이터를 버퍼 메모리(221)에 저장한다. 메모리 제어기(220)는 사용자 블럭(233)의 페이지에 하위비트(LSB) 데이터를 프로그램한다.
S215 단계에서, 백업 메모리(232)에 하위비트(LSB) 데이터가 백업된다. 데이터 무결성을 확보하기 위하여, 메모리 제어기(220)는 해당 페이지에 저장된 하위비트(LSB) 데이터를 읽어와 백업 메모리(232)에 저장한다.
S220 단계에서, 버퍼 메모리(231)에 상위비트(MSB) 데이터가 저장된다. S215 단계 이후, 메모리 제어기(220)는 페이지에 프로그램할 상위비트(MSB) 데이터를 버퍼 메모리(221)에 저장한다.
S225 단계에서, 메모리 제어기(220)는 버퍼 메모리(221)에 저장된 상위비트(MSB) 데이터를 사용자 블럭(233)의 페이지에 프로그램한다.
S230 단계에서, 상위비트(MSB) 데이터를 프로그램한 뒤, 플래시 메모리(230)는 프로그램 폐일이 되었는지 판단한다. 만일 프로그램 폐일이 없다면, 프로그램 동작은 종료된다. 여기서 프로그램 폐일이 났던 페이지는 배드 페이지로 처리된다.
S250 단계에서, 하지만, 프로그램 폐일이 되었다면 메모리 제어기(220)는 백업 메모리(222)에 저장된 하위비트(LSB) 데이터를 새로운 페이지에 프로그램하고, 버퍼 메모리(221)에 저장된 상위비트(MSB) 데이터도 이 새로운 페이지에 프로그램한다.
도 6는 본 발명에 또 다른 메모리 시스템(300)을 보여주고 있다. 도 6를 참조하면, 메모리 시스템(300)은 호스트(310), 메모리 제어기(320) 및 플래시 메모리(330)를 포함하고 있다.
메모리 제어기(320)는 호스트(310)로부터 커맨드(Command)를 입력받고, 입력된 커맨드에 따라 플래시 메모리(330)의 제반 동작(예를 들면, 쓰기 또는 읽기 동 작)을 제어한다. 도 6을 참조하면, 메모리 제어기(320)는 버퍼 메모리(321), 백업 메모리(322), ECC 회로(323), 비교기(324), 폐일 위치 검출기(325), 리페어 회로(326) 및 펌웨어 회로(327)를 포함한다.
버퍼 메모리(321)는 플래시 메모리(330)에 프로그램될 데이터 혹은 플래시 메모리(230)로부터 읽은 데이터를 임시로 저장하는데 사용된다. 버퍼 메모리(321)에 저장된 데이터는 메모리 제어기(320)의 제어에 의해 플래시 메모리(330) 또는 호스트(310)로 전송된다.
백업 메모리(322)는 사용자 블럭(333)의 MSB 프로그램 시에 폐일이 발생한 경우에, 하위비트(LSB) 데이터를 저장하는 데 사용된다. 하위비트(LSB) 데이터가 프로그램된 사용자 블럭(333)의 페이지(도시되지 않음)에 상위비트(MSB) 데이터를 쓰고자 할 때, 하위비트 데이터(LSB)가 손상될 수 있다. 즉, 상위비트(MSB) 데이터를 프로그램하는 과정에서, 프로그램 폐일(fail)이 발생하면, 이미 프로그램된 하위비트(LSB) 데이터도 함께 잃게 된다. 본 발명에 따른 메모리 시스템(300)은 손실된 하위비트(LSB) 데이터를 복구(repair)할 수 있다. 백업 메모리(322)는 복구된 하위비트(LSB) 데이터를 저장하는 데 사용된다.
버퍼 메모리(321)와 백업 메모리(322)는 별도의 메모리로 구분되어 있지만, 하나의 메모리로 합하여질 수 있다. 즉, 하나의 랜덤 액세스 메모리(RAM) 내에 버퍼 메모리와 백업 메모리가 모두 포함되도록 구현될 수도 있다.
ECC(Error Correction Code) 회로(323)는 소정의 비트 에러를 정정하기 위해 사용된다. 예를 들면, 4 비트/512 바이트 ECC 회로는 512 바이트 마다 4 비트의 에 러를 정정할 수 있다. 이 경우에는 512 바이트 중에서 4 비트 이하에서 에러가 발생한 경우에 손상된 데이터를 정정할 수 있다.
ECC 회로(323)는 사용자 블럭(333)의 상위비트(MSB) 프로그램 시에 폐일이 발생한 경우에, 손상된 하위비트(LSB) 데이터를 정정한다. 정정된 하위비트(LSB) 데이터는 백업 메모리(322)에 저장된다. 그러나 위의 예에서 4 비트 이상의 에러가 발생한 경우에는, ECC 회로(323)는 손상된 하위비트(LSB) 데이터를 정정할 수 없다. 본 발명에 따른 메모리 시스템(320)에 의하면, 이러한 하위비트(LSB) 데이터까지도 모두 복구(repair)할 수 있다.
비교기(324)는 사용자 블럭(333)의 상위비트(MSB) 프로그램 시에 폐일이 발생한 경우에, 사용자 블럭(333)으로부터 읽은 상위비트(MSB) 데이터(이하, 플래시 MSB)와 버퍼 메모리(321)에 저장된 상위비트(MSB) 데이터(이하, 버퍼 MSB)를 비교한다. 즉, 비교기(324)는 플래시 MSB와 버퍼 MSB를 한 비트씩 비교하고, 비교 결과를 폐일 위치 검출기(325)로 제공한다.
폐일 위치 검출기(325)는 비교기(324)로부터 비교 결과를 입력받고, 폐일 위치를 검출한다. 폐일 위치 검출기(325)는 폐일 위치에 해당하는 플래시 메모리(330)의 어드레스를 저장한다. 폐일 위치 검출기(325)는 폐일 위치를 리페어 회로(326)에 제공한다.
리페어 회로(326)는 폐일 위치에 해당하는 하위비트(LSB) 데이터를 복구한다. 상위비트(MSB) 프로그램 폐일 시에 손상된 하위비트(LSB) 데이터는 백업 메모리(322)에 저장된다. 여기에서, 손상된 하위비트(LSB) 데이터는 ECC 회로(323)에 의해서도 정정이 안된 데이터를 포함한다.
도 6를 다시 참조하면, 플래시 메모리(330)는 셀 어레이(331)를 포함하고 있다. 셀 어레이(331)는 하위비트(LSB) 데이터만 저장하는 캐쉬 블럭(331) 및 하위비트(LSB) 혹은 상위비트(MSB) 데이터를 저장하는 사용자 블럭(333)을 포함하고 있다.
본 발명의 메모리 시스템(300)은 사용자 블럭(333)의 상위비트(MSB) 프로그램 폐일 시에, 플래시 MSB와 버퍼 MSB를 비교함으로 폐일 위치를 검출하고, 폐일 위치에 존재하는 하위비트(LSB)데이터를 복구(repair)한다. 본 발명의 메모리 시스템(300)은 사용자 블럭(333)의 상위비트(MSB) 프로그램 폐일 시에만 하위비트(LSB) 데이터를 백업하고, 손상된 하위비트(LSB) 데이터를 복구한다.
따라서 도 6에 도시된 메모리 시스템(300)은 사용자 블럭(333)의 상위비트(MSB) 프로그램 전에 항상 하위(LSB) 데이터를 백업하지 않기 때문에, 도 3 및 도 5에 도시된 메모리 시스템(200)에 비해, 전체 프로그램 시간을 크게 줄일 수 있다.
또한, 도 6에 도시된 메모리 시스템(300)은 ECC 회로(323) 및 MSB 비교기(324)를 통해 손상된 LSB 데이터를 완전하게 복구할 수 있기 때문에, 데이터 신뢰성을 확보할 수 있다.
한편, 프로그램 폐일(fail)된 메모리 셀을 포함하는 메모리 블럭(block)은 배드 블럭(bad block)으로 처리된다. 그 다음에, 백업 메모리(322)에 저장되어 있는 하위비트(LSB)를 다른 메모리 블럭에 프로그램한다. 그리고 버퍼 메모리(321)에 저장되어 있는 상위비트(MSB)를 프로그램한다. 배드 블럭 처리 및 다른 메모리 블럭으로의 재 프로그램(reprogram) 동작은 도 3 및 도 4에서 설명한 방식과 동일하다.
도 7은 도 6에 도시된 사용자 블럭(333)에 프로그램하는 방법을 보여주고 있다. 도 6 및 도 7을 참조하면, 사용자 블럭(333)에 프로그램하는 방법은 다음과 같다.
S310단계에서, 메모리 제어기(320)는 사용자 블럭(333)의 해당하는 페이지에 하위비트(LSB) 데이터를 프로그램한다. 여기서 프로그램 검증 동작 및 정정 동작이 수행됨은 이 분야의 통상의 지식을 가진 자에게 자명한 것이다.
S320단계에서, 메모리 제어기(320)는 프로그램될 상위비트(MSB) 데이터를 버퍼 메모리(322)에 저장시킨다.
S325단계에서, 메모리 제어기(320)는 버퍼 메모리(322)에 저장된 상위비트(MSB) 데이터를 사용자 블럭(333)의 해당 페이지에 프로그램한다. 여기서 페이지는 물리적으로 하위비트가 프로그램된 페이지와 동일하다. 다만 상위비트 페이지와 하위비트 페이지는 물리적으로 동일하지만 어드레스는 차이가 있다. 이때, 메모리 제어기(320)는 호스트(310)로부터 논리적 블럭을 입력받아, 이를 물리적 블럭으로 변환하는 역할을 수행한다.
S330단계에서, 플래시 메모리(330)는 프로그램 폐일이 발생했는지 판단한다. 즉, 멀티 비트 데이터가 정상적으로 프로그램되었는지 판단한다. 만약 프로그램 폐일이 나지 않았다면, 프로그램 동작은 완료된다. 그러나 만일 프로그램 폐일이 발 생했다면, S341 단계가 진행된다.
S341 단계에서, 메모리 제어기(320)는 해당 페이지로부터 프로그램되었던 하위비트(LSB) 데이터를 읽어온다. 읽어온 하위비트(LSB) 데이터는 백업 메모리(322)에 저장된다.
S342 단계에서, ECC 회로(323)는 백업 메모리(322)에 저장된 하위비트(LSB) 데이터가 수정가능한지를 판단한다. 만일 하위비트(LSB) 데이터가 수정 가능하다면, 손실된 하위비트(LSB) 데이터를 정정하여 백업 메모리(322)에 저장한다. 그리고, S350 단계가 진행된다. 만일, 하위비트(LSB) 데이터를 정정할 수 없다면, S343 단계가 수행된다.
S343 단계에서, 비교기(324)는 사용자 블럭(333)으로부터 플래시 MSB와 버퍼 메모리(321)으로부터 버퍼 MSB를 입력받아 비교한다.
S344 단계에서, 폐일 위치 감지기(325)는 프로그램 폐일이 발생한 위치를 파악한다.
S345 단계에서, 리페어 회로(326)는 S344 단계에서 파악한 폐일 위치에 따라 하위비트(LSB) 데이터를 복구한다. 복구된 하위비트(LSB) 데이터는 백업 메모리(322)에 전달된다.
S346 단계에서, ECC 회로(323)는 최종적으로 백업 메모리(322)에 저장된 복구된 하위비트(LSB) 데이터에 에러가 있는지 판단하고, 에러가 있을 경우 정정한다.
S350 단계에서, 메모리 제어기(320)는 백업 메모리(331)에 저장된 하위비 트(LSB) 데이터 및 버퍼 메모리(322)에 저장된 상위비트(MSB) 데이터를 사용자 블럭(333) 내의 다른 메모리 블럭에 재프로그램하게 된다.
상술한 바와 같이 사용자 블럭(333)의 프로그램 동작은 MSB 프로그램 폐일 시에만 하위비트(LSB) 데이터를 백업되고, 손상된 하위비트(LSB) 데이터를 복구된다.
본 발명에 따른 메모리 시스템은 제어 데이터 및 사용자의 빈도가 높은 데이터에 대하여 하위비트(LSB)만을 프로그램하는 캐쉬 블럭을 포함하고 있다. 따라서 본 발명에 따른 메모리 시스템은 SLC 수준의 데이터 무결성을 확보하게 된다.
한편, 본 발명의 메모리 시스템은 상위비트(MSB) 데이터를 프로그램시 하위비트(LSB) 데이터를 백업시켜 두어 하위비트(LSB) 데이터가 손실되더라도 복구할 수 있는 사용자 블럭을 포함하고 있다. 종래의 MLC 플래시 메모리에 프로그램 동작시 발생되는 하위비트(LSB) 데이터가 손실되는 문제를 해결하게 된다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
상술한 바와 같이 본 발명에 따른 멀티 레벨 셀 플래시 메모리를 갖는 메모리 시스템 및 그것의 프로그램 방법은 하위비트(LSB)만 프로그램하는 캐쉬 블럭을 구비하여 제어 데이터의 데이터 무결성을 개선하게 되었다.
한편, 본 발명에 따른 멀티 레벨 셀 플래시 메모리를 갖는 메모리 시스템 및 그것의 프로그램 방법은 상위비트(MSB) 프로그램시 하위비트(LSB) 데이터를 백업해 놓은 백업 메모리를 구비하여, 하위비트(LSB) 데이터의 손상되는 문제를 해결하게 되었다.

Claims (24)

  1. 멀티 레벨 셀 플래시 메모리의 프로그램 방법에 있어서:
    (a) 상기 플래시 메모리의 메모리 셀 어레이에서 사용자 블럭과 캐쉬 블럭을 구분하는 단계;
    (b) 상기 사용자 블럭의 페이지에 제 1 하위비트(LSB) 데이터를 프로그램하는 단계; 및
    (c) 상기 (b) 단계 이후 상기 사용자 블럭의 페이지에 제 1 상위비트(MSB) 데이터를 프로그램하는 단계;
    (d) 상기 캐쉬 블럭의 페이지에 제 2 하위비트(LSB) 데이터를 프로그램하는 단계를 포함하되,
    상기 캐쉬 블럭은 상기 플래시 메모리를 제어하는데 필요한 제어 데이터를 저장하는 플래시 메모리의 프로그램 방법.
  2. 제 1 항에 있어서,
    상기 (b) 단계 이후 및 상기 (c) 단계 이전, 상기 제 1 하위비트 데이터를 백업해 두는 단계를 더 포함하는 플래시 메모리의 프로그램 방법.
  3. 제 2 항에 있어서,
    상기 (c) 단계 이후, 상기 사용자 블럭의 페이지의 프로그램 폐일을 검출하 는 단계를 포함하는 플래시 메모리의 프로그램 방법.
  4. 제 3 항에 있어서,
    상기 프로그램 폐일이 검출되었다면, 상기 제 1 하위비트 데이터 및 상기 제 2 상위비트 데이터를 상기 사용자 블럭의 새로운 페이지에 재프로그램하는 단계를 더 포함하는 플래시 메모리의 프로그램 방법.
  5. 제 1 항에 있어서,
    상기 (d) 단계 이후, 상기 캐쉬 블럭의 페이지의 상기 프로그램 폐일이 검출하는 단계를 더 포함하는 플래시 메모리의 프로그램 방법.
  6. 제 5 항에 있어서,
    상기 프로그램 폐일이 검출되었다면, 상기 제 2 하위비트 데이터를 상기 캐쉬 블럭의 새로운 페이지에 재프로그램하는 단계를 더 포함하는 플래시 메모리의 프로그램 방법.
  7. 제 1 항에 있어서,
    상기 캐쉬 블럭은 사용자 데이터 중 호스트로부터 소정의 회수 이상으로 억세스되는 데이터 저장하는 플래시 메모리의 프로그램 방법.
  8. 제 1 항에 있어서,
    상기 (c) 단계 이후, 상기 사용자 블럭의 페이지의 프로그램 폐일을 검출하는 단계를 포함하는 플래시 메모리의 프로그램 방법.
  9. 제 8 항에 있어서,
    상기 프로그램 폐일이 검출되었다면, 상기 제 1 하위비트 데이터를 복구하는 플래시 메모리의 프로그램 방법.
  10. 제 9 항에 있어서,
    상기 제 1 하위비트 데이터를 복구하는 방법은,
    (e) 상기 사용자 블럭의 페이지로부터 제 1 하위비트 데이터를 읽어오는 단계;
    (f) 상기 (e) 단계에서 읽어온 상기 제 1 하위비트 데이터가 에러정정코드(ECC)로 수정가능한가 판단하는 단계; 및
    (g) 상기 (f) 단계에서 상기 제 1 하위비트 데이터가 상기 에러정정코드로 수정가능하다면, 상기 제 1 하위비트 데이터 및 상기 제 1 상위비트 데이터를 상기 사용자의 블럭의 새로운 페이지에 재프로그램하는 단계를 포함하는 플래시 메모리의 프로그램 방법.
  11. 제 10 항에 있어서,
    상기 (f) 단계에서 상기 제 1 하위비트 데이터가 상기 에러정정코드로 수정가능하지 않다면, 상기 제 1 상위비트 데이터를 이용하여 폐일이 난 위치를 검출하여 상기 제 1 하위비트 데이터를 복구하는 단계를 포함하는 플래시 메모리의 프로그램 방법.
  12. 제 11 항에 있어서,
    상기 에러정정코드는 상기 복구된 제 1 하위비트 데이터를 수정하는 단계를 더 포함하는 플래시 메모리의 프로그램 방법.
  13. 제 12 항에 있어서,
    상기 수정된 제 1 하위비트 데이터 및 상기 제 1 상위비트 데이터를 상기 사용자 블럭의 새로운 페이지에 재프로그램하는 단계를 포함하는 플래시 메모리의 프로그램 방법.
  14. 제 1 항에 있어서,
    상기 플래시 메모리는 낸드 플래시 메모리인 플래시 메모리의 프로그램 방법.
  15. 호스트;
    사용자 블럭 및 캐쉬 블럭을 갖는 메모리 셀 어레이를 포함하는 멀티 비트 셀 플래시 메모리; 및
    상기 호스트로부터 명령을 입력받아 상기 멀티 비트 셀 플래시 메모리를 제어하는 메모리 제어기를 포함하되,
    상기 사용자 블럭은 제 1 하위비트 데이터로 프로그램된 후, 제 1 상위비트 데이터로 프로그램되고,
    상기 캐쉬 블럭은 제 2 하위비트 데이터로 프로그램되며, 상기 멀티 비트 셀 플래시 메모리를 제어하는 데이터가 저장되는 메모리 시스템
  16. 제 15 항에 있어서,
    상기 메모리 시스템은 사용자 블럭을 프로그램할 때, 상기 제 1 하위비트 데이터를 백업해두는 메모리 시스템.
  17. 제 16 항에 있어서,
    상기 메모리 제어기는 상기 사용자 블럭에 프로그램된 상기 제 1 하위비트 데이터를 백업하기 위한 백업 메모리를 더 포함하는 메모리 시스템.
  18. 제 17 항에 있어서,
    상기 메모리 제어기는 상기 제 1 하위비트 데이터 및 상기 제 2 상위비트 데이터를 상기 사용자 블럭에 프로그램하기 위한 임시로 저장해 두는 버퍼 메모리를 포함하는 메모리 시스템.
  19. 제 18 항에 있어서,
    상기 메모리 제어기는 상기 사용자 블럭에 상기 제 1 상위비트 데이터를 프로그램하기 전에 상기 프로그램된 상기 제 1 하위비트 데이터를 상기 백업 메모리에 저장시키는 메모리 시스템.
  20. 제 19 항에 있어서,
    상기 메모리 제어기는 상기 버퍼 메모리에 저장된 상기 제 1 상위비트 데이터를 상기 사용자 블럭에 프로그램한 뒤 프로그램 폐일이 발생하였는지 검출하는 메모리 시스템.
  21. 제 20 항에 있어서,
    상기 프로그램 폐일이 발생했을 때, 상기 메모리 제어기는 상기 백업 메모리에 저장된 상기 제 1 하위비트 메모리와 상기 버퍼 메모리에 저장된 상기 제 1 상위비트 메모리를 상기 새로운 사용자 블럭에 재프로그램시키는 메모리 시스템.
  22. 제 15 항에 있어서,
    상기 캐쉬 블럭은 사용자 데이터 중 호스트로부터 소정의 회수 이상으로 억세스되는 데이터를 저장하는 메모리 시스템.
  23. 제 15 항에 있어서,
    상기 메모리 제어기는,
    상기 제 1 상위비트 데이터를 저장하는 버퍼 메모리;
    상기 사용자 블럭의 상기 제 1 상위비트 데이터 프로그램시 폐일이 발생할 경우, 상기 사용자 블럭에 저장된 상기 제 1 하위비트 데이터를 백업시켜둔 백업 메모리; 및
    상기 백업 메모리로부터 읽어온 상기 제 1 하위비트 데이터의 에러를 수정하여 상기 백업 메모리에 출력하는 에러정정코드(ECC)를 포함하되,
    상기 메모리 제어기는 상기 백업 메모리의 상기 수정된 제 1 하위비트 데이터 및 상기 버퍼 메모리의 상기 제 1 상위비트 데이터를 상기 새로운 사용자 블럭에 재프로그램하는 메모리 시스템.
  24. 제 23 항에 있어서,
    상기 메모리 제어기는 상기 에러정정코드가 상기 제 1 하위비트 데이터를 수정하지 못할 때, 상기 제 1 하위비트 데이터를 복구하기 위하여,
    상기 버퍼 메모리에 저장된 제 1 상위비트 데이터 및 상기 사용자 블럭에 저장된 상기 제 1 상위비트 데이터를 비교하는 비교기;
    상기 비교기의 비교결과로부터 상기 프로그램 폐일이 위치를 검출하는 어드레스를 저장하는 폐일위치 검출기; 및
    상기 검출된 폐일 위치에 따라 상기 제 1 하위비트 데이터를 복구하여 상기 백업 메모리에 저장하는 리페어 회로를 포함하되,
    상기 메모리 제어기는 상기 백업 메모리에 저장된 상기 복구된 제 1 하위비트 데이터 및 상기 버퍼 메모리에 저장된 상기 제 1 상위비트 데이터를 상기 사용자 블럭의 새로운 페이지에 재프로그램하는 메모리 시스템.
KR1020070007527A 2007-01-24 2007-01-24 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법 KR100850515B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070007527A KR100850515B1 (ko) 2007-01-24 2007-01-24 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
US11/796,978 US7755950B2 (en) 2007-01-24 2007-04-30 Programming methods of memory systems having a multilevel cell flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070007527A KR100850515B1 (ko) 2007-01-24 2007-01-24 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법

Publications (2)

Publication Number Publication Date
KR20080069822A KR20080069822A (ko) 2008-07-29
KR100850515B1 true KR100850515B1 (ko) 2008-08-05

Family

ID=39642373

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070007527A KR100850515B1 (ko) 2007-01-24 2007-01-24 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법

Country Status (2)

Country Link
US (1) US7755950B2 (ko)
KR (1) KR100850515B1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027194B2 (en) 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
KR101495795B1 (ko) 2008-06-13 2015-02-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR100648285B1 (ko) * 2005-06-24 2006-11-23 삼성전자주식회사 멀티 레벨 셀 플래시 메모리의 액세스 방법 및 장치
KR101300821B1 (ko) 2007-07-04 2013-08-26 삼성전자주식회사 비휘발성 메모리의 데이터 손실을 방지하기 위한 장치 및방법
KR101411976B1 (ko) * 2007-07-09 2014-06-27 삼성전자주식회사 플래시 메모리 시스템 및 그것의 에러 정정 방법
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8060719B2 (en) 2008-05-28 2011-11-15 Micron Technology, Inc. Hybrid memory management
TWI403906B (zh) * 2008-09-17 2013-08-01 Silicon Motion Inc 快閃記憶裝置及其運作方法
KR101005120B1 (ko) * 2009-02-04 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 소자의 프로그램 방법
TWI420528B (zh) * 2009-03-11 2013-12-21 Silicon Motion Inc 用來增進一快閃記憶體的效能之方法以及相關之可攜式記憶裝置及其控制器
US8832353B2 (en) * 2009-04-07 2014-09-09 Sandisk Technologies Inc. Host stop-transmission handling
KR101594030B1 (ko) * 2009-05-13 2016-02-29 삼성전자주식회사 플래시 메모리 장치의 프로그램 방법
US8180981B2 (en) 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8307241B2 (en) * 2009-06-16 2012-11-06 Sandisk Technologies Inc. Data recovery in multi-level cell nonvolatile memory
US8880778B2 (en) * 2010-05-13 2014-11-04 Micron Technology, Inc. Memory buffer having accessible information after a program-fail
US8254167B2 (en) 2010-05-17 2012-08-28 Seagate Technologies Llc Joint encoding of logical pages in multi-page memory architecture
US8406051B2 (en) 2010-05-17 2013-03-26 Seagate Technology Llc Iterative demodulation and decoding for multi-page memory architecture
JP2012033001A (ja) * 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置および情報処理方法
KR101391352B1 (ko) * 2011-12-19 2014-05-07 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
KR101923157B1 (ko) * 2012-02-22 2018-11-28 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
KR20130128685A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR102006995B1 (ko) * 2012-11-22 2019-08-02 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
KR102002826B1 (ko) 2012-12-04 2019-07-23 삼성전자 주식회사 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법
KR101994672B1 (ko) 2012-12-04 2019-07-01 삼성전자 주식회사 저장 장치 및 저장 장치의 동작 방법
US9032271B2 (en) 2012-12-07 2015-05-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
US8913428B2 (en) 2013-01-25 2014-12-16 Sandisk Technologies Inc. Programming non-volatile storage system with multiple memory die
US9026757B2 (en) 2013-01-25 2015-05-05 Sandisk Technologies Inc. Non-volatile memory programming data preservation
KR102106959B1 (ko) 2013-02-21 2020-05-07 에프아이오 세미컨덕터 테크놀로지스, 엘엘씨 멀티 레벨 셀 비휘발성 메모리 시스템
CN104937577B (zh) * 2013-03-15 2018-11-30 慧与发展有限责任合伙企业 支持扩展写入的存储器模块控制器
US9037902B2 (en) 2013-03-15 2015-05-19 Sandisk Technologies Inc. Flash memory techniques for recovering from write interrupt resulting from voltage fault
US9251915B2 (en) * 2013-11-11 2016-02-02 Advantest Corporation Seamless fail analysis with memory efficient storage of fail lists
US9043537B1 (en) 2013-11-21 2015-05-26 Sandisk Technologies Inc. Update block programming order
US9477423B2 (en) * 2013-11-26 2016-10-25 Seagate Technology Llc Eliminating or reducing programming errors when programming flash memory cells
US9244631B2 (en) 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
KR102180595B1 (ko) 2014-02-06 2020-11-19 삼성전자주식회사 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 시스템
KR20150111692A (ko) * 2014-03-26 2015-10-06 삼성전자주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러를 포함하는 메모리 시스템
US8902652B1 (en) * 2014-05-13 2014-12-02 Sandisk Technologies Inc. Systems and methods for lower page writes
CN104503707B (zh) 2014-12-24 2018-03-06 华为技术有限公司 读取数据的方法以及装置
KR102530641B1 (ko) * 2018-03-21 2023-05-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN115495287B (zh) * 2022-11-16 2024-04-09 珠海妙存科技有限公司 一种mlc nand的备份数据方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6766325B1 (en) 1999-12-02 2004-07-20 Microsoft Corporation System and method for maintaining data for performing “what if” analysis
US20070150693A1 (en) * 2005-12-01 2007-06-28 Sony Corporation Memory apparatus and memory control method

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7424482B2 (en) * 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
US7336531B2 (en) 2004-06-25 2008-02-26 Micron Technology, Inc. Multiple level cell memory device with single bit per cell, re-mappable memory block
JP4336848B2 (ja) * 2004-11-10 2009-09-30 日本電気株式会社 マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式
US7308525B2 (en) 2005-01-10 2007-12-11 Sandisk Il Ltd. Method of managing a multi-bit cell flash memory with improved reliablility and performance

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6766325B1 (en) 1999-12-02 2004-07-20 Microsoft Corporation System and method for maintaining data for performing “what if” analysis
US6999970B2 (en) 1999-12-02 2006-02-14 Microsoft Corporation Write-back to cells
US7016912B2 (en) 1999-12-02 2006-03-21 Microsoft Corporation Write-back to cells
US20070150693A1 (en) * 2005-12-01 2007-06-28 Sony Corporation Memory apparatus and memory control method

Also Published As

Publication number Publication date
US7755950B2 (en) 2010-07-13
KR20080069822A (ko) 2008-07-29
US20080177934A1 (en) 2008-07-24

Similar Documents

Publication Publication Date Title
KR100850515B1 (ko) 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
KR100799688B1 (ko) 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법
KR100845526B1 (ko) 플래시 메모리를 포함한 메모리 시스템 및 그것의 프로그램방법
US9159441B2 (en) Method of operating memory device assuring reliability and memory system
CN107608628B (zh) 闪存控制器
KR100894809B1 (ko) 메모리 시스템 및 그것의 프로그램 방법
KR100902008B1 (ko) 메모리 셀에 멀티 비트 데이터를 저장하는 플래시 메모리를 포함한 메모리 시스템
US8345487B2 (en) Method of setting read voltage minimizing read data errors
US9229644B2 (en) Targeted copy of data relocation
US7881133B2 (en) Method of managing a flash memory and the flash memory
US8634240B2 (en) Non-volatile memory and method with accelerated post-write read to manage errors
US8271515B2 (en) System and method for providing copyback data integrity in a non-volatile memory system
US9213601B2 (en) Adaptive data re-compaction after post-write read verification operations
US8923045B2 (en) Multi-level cell (MLC) update with protected mode capability
KR100823170B1 (ko) 배드 블록을 싱글 레벨 셀 모드로 사용하는 메모리 시스템및 메모리 카드
US8122295B2 (en) Memory systems and methods of detecting distribution of unstable memory cells
US10762967B2 (en) Recovering from failure in programming a nonvolatile memory
KR20170037159A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10915395B2 (en) Read retry with targeted auto read calibrate
US9384839B2 (en) Write sequence providing write abort protection
US11749373B2 (en) Bad block management for memory sub-systems
US20170255523A1 (en) Non-volatile memory devices and controllers
WO2021011416A1 (en) Read voltage management based on write-to-read time difference
CN113272904A (zh) 存储器系统中的破坏性读取的管理
CN108154900B (zh) 一种缓解mlc闪存写干扰问题的方法

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
FPAY Annual fee payment

Payment date: 20130701

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170630

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180629

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190628

Year of fee payment: 12