KR100755718B1 - 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법 - Google Patents

멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법 Download PDF

Info

Publication number
KR100755718B1
KR100755718B1 KR1020060084877A KR20060084877A KR100755718B1 KR 100755718 B1 KR100755718 B1 KR 100755718B1 KR 1020060084877 A KR1020060084877 A KR 1020060084877A KR 20060084877 A KR20060084877 A KR 20060084877A KR 100755718 B1 KR100755718 B1 KR 100755718B1
Authority
KR
South Korea
Prior art keywords
page
data
bad block
cell
buffer
Prior art date
Application number
KR1020060084877A
Other languages
English (en)
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 KR1020060084877A priority Critical patent/KR100755718B1/ko
Priority to US11/742,604 priority patent/US7721147B2/en
Priority to CNA200710149127XA priority patent/CN101140805A/zh
Application granted granted Critical
Publication of KR100755718B1 publication Critical patent/KR100755718B1/ko

Links

Images

Classifications

    • 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/06Auxiliary circuits, e.g. for writing into 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/08Address circuits; Decoders; Word-line control circuits
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Abstract

멀티 레벨 셀(Multi Level Cell 이하, MLC라 한다) 플래시 메모리에서 런-타임(Run-time) 배드 블록(Bad Block) 처리를 위한 장치 및 방법 이 제공된다. MLC 플래시 메모리에서 런-타임 배드 블록 처리를 위한 장치는 셀(Cell)의 최하위비트(Least Significant Bit 이하, LSB라 한다)에 프로그램 되는 데이터가 임시 저장되는 버퍼를 할당하는 버퍼 할당 모듈, 할당된 버퍼에 상기 셀의 최하위비트 페이지에 프로그램 되는 데이터를 복사하는 데이터 복사 모듈 및 상기 셀의 페이지에 프로그램 에러 발생 시 프리 블록(Free Block)에 상기 복사된 데이터를 프로그램하는 배드 블록 관리 모듈을 포함한다.
플래시 메모리, 멜티 레벨 셀, MLC(Multi Level Cell), 최상위비트(Most Significant Bit ; MSB), 최하위비트(Least Significant Bit ; LSB), 런-타임 배드 블록(Run-time bad block)

Description

멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치 및 방법 {Apparatus and method for managing run-time bad block in MLC flash memory}
도 1은 종래 기술의 플래쉬 메모리의 구성을 도시한 블록도이다.
도 2는 본 발명의 실시예에 따른 MLC 플래시 메모리에서 런-타임 배드 블록 처리를 위한 장치의 구성을 도시한 블록도이다.
도 3a 내지 도 3b는 2-레벨 페이지 분할 방식의 MLC 플래시 메모리에서 '1, 0' 상태로 프로그램 시, 셀의 상태 전이를 도시한 도면이다.
도 4a 내지 도 4b는 2-레벨 페이지 분할 방식의 MLC 플래시 메모리에서 '0, 0' 상태로 프로그램 시, 셀의 상태 전이를 도시한 도면이다.
도 5a 내지 도 5b는 2-레벨 페이지 분할 방식의 MLC 플래시 메모리에서 '0, 1' 상태로 프로그램 시, 셀의 상태 전이를 도시한 도면이다.
도 6은 본 발명의 실시예에 따른 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법을 도시한 흐름도이다.
<도면의 주요 부분에 관한 부호의 설명>
201a, 201b : 버퍼
202 : 버퍼 할당 모듈
203 : 데이터 복사 모듈
204 : 배드 블록 관리 모듈
205 : 데이터 버퍼
206 : 데이터 프로그램 모듈
본 발명은 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치 및 방법에 관한 것으로서, 더욱 상세하게는 페이지 분할(Page-Split)방식의 MLC 플래시 메모리에서 프로그램 에러가 발생하는 경우, 배드 블록 처리시에 동일 셀에 속한 페이지들간의 간섭을 최소화하여 에러가 발생하지 않은 페이지의 데이터 손상을 방지하고 동일 페이지의 부분 프로그램 허용 횟수(Number Of Partial program, 이하 NOP라 한다)를 고려함으로써 데이터의 신뢰성을 보장하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치 및 방법에 관한 것이다.
최근 플래시 메모리가 휴대폰, PDA, MP3 플레이어, 네비게이션, 디지털 카메라와 같은 이동 디지털 기기에서 폭 넓게 사용되고 있으며, 시장은 지속적으로 플래시 메모리의 저가격, 고용량을 요구하고 있다.
현재 널리 사용되고 있는 플래시 메모리는 한 개의 셀 당 1비트의 정보를 담을 수 있는 싱글 레벨 셀(Single Level Cell 이하, SLC라 한다) 낸드(이하, NAND라 한다) 플래시 메모리이지만, 가격과 용량측면에서 SLC NAND 플래시 메모리보다 우수한, 한 개의 셀 당 여러 비트의 정보를 담을 수 있는 MLC NAND 플래시 메모리의 사용량이 점차 증가하고 있다.
예를 들어 SLC 플래시 메모리에서는 한 개의 셀이 '1' 또는 '0'의 정보를 표현할 수 있으며, 2-레벨 MLC 플래시 메모리에서는 한 개의 셀이 '00, 01, 10, 11'의 정보를 표현할 수 있게 된다.
또한, MLC 플래시 메모리는 셀의 여러 비트 정보를 비트 분할(Bit Split) 방식과 페이지 분할(Page-Split)방식으로 표현 할 수 있다.
비트 분할 방식의 MLC 플래시 메모리는 한 개의 셀로 동일 페이지내 여러 개의 비트 정보를 나타낼 수 있고, 페이지 분할 방식의 MLC 플래시 메모리는 한 개의 셀로 여러 개의 페이지의 비트 정보를 나타낼 수 있다.
한편, 플래시 메모리는 삭제(Erase) 동작과 프로그램(Program) 동작에 의해서 셀 상태를 변경할 수 있으며, 이때 셀 상태가 변경되지 못하면 에러가 발생하게 된다.
참고로, 본 발명에서 사용하는 프로그램이라는 용어는, MLC 플래시 메모리에서 셀에 표현되는 비트 정보의 변경, 즉 '0'을 '1'로 또는 '1'을 '0'으로 변경하는 것을 의미하며, 삭제 에러 또는 프로그램 에러 여부는 플래시 메모리의 상태 레지스터를 읽음으로써 파악할 수 있다.
상술한 에러가 발생한 경우, 페이지 분할 방식의 MLC 플래시 메모리는 셀에 속한 특정 페이지를 프로그램 함으로써, 동일 셀에 속한 다른 페이지가 영향을 받을 수 있다.
도 1은 종래 기술의 플래쉬 메모리의 구성을 도시한 블록도이다.
플래시 메모리는 유져 파티션(User Partition)(110)과 유져 파티션(110)에서 발생된 배드 블록(111)을 대체할 예약 파티션(Reserved Partition)(120)으로 구분할 수 있으며, 유져 파티션(110)의 특정 블록에서 배드 블록(111c)이 발생했을 경우, 해당 배드 블록(111c)을 예약 파티션(120)의 프리 블록으로 대체시키는 블록 관리 모듈(130) 및 데이터를 저장하는 데이터 버퍼(140)로 구성될 수 있다.
예를 들어 셀에 2비트 정보를 담을 수 있는 페이지 분할 방식의 MLC의 경우, 페이지 4N+0(111a)과 페이지 4N+2(111c)는 동일 셀에 속하므로 페이지 4N+2(111c)를 프로그램 할 때, 프로그램 에러가 발생한다면 페이지 4N+0(111a)의 데이터가 손상 될 수 있다.
이러한 프로그램 에러로 인해 에러가 발행한 블록은 런-타임 배드 블록이 된다.
참고로, 페이지 4N+0(111a)를 셀에서 LSB 페이지라 부르며, 페이지 4N+2(111c)를 셀에서 MSB 페이지라 부른다.
또한 MLC 플래시 메모리의 경우, NOP가 1회로 제한되고 블록내에 페이지 프로그램 순서를 작은 페이지 번호부터 큰 페이지 번호로 수행해야 한다.
한편, 배드 블록은 프로그램 에러 또는 삭제 에러에 의해서 발생될 수 있다.
만약 도 1에 도시된 유져 파티션(110)에 프로그램 에러로 인한 배드 블록(111)이 발생하면, 블록 관리 모듈(130)은 예약 파티션(120)에서 사용되지 않는 프리 블록(121)을 선택하고, 배드 블록(111)의 모든 데이터를 페이지 단위로 프리 블록(121)으로 복사한다.
배드 블록(111)의 프로그램 에러가 발생한 페이지(111c)를 복사할 때는 페이지 복사를 수행한 이후에 추가적으로 데이터 버퍼(140)에 저장된 해당 데이터를 프리 블록(121)으로 복사 한다.
즉, 프리 블록(121)내에 동일 페이지를 두 번 복사하는 경우가 발생하는 것이다.
페이지 분할 방식의 MLC 플래시 메모리는 한 개의 셀로 여러 개의 페이지를 나타낼 수 있기 때문에 셀에 속한 특정 페이지를 프로그램 함으로써, 셀에 속한 다른 페이지가 영향을 받을 수 있으며, MLC 플래시 메모리의 경우 NOP가 '1'로 제한되어 데이터의 신뢰성을 보장받을 수 없는 문제가 있었다.
본 발명은 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치 및 방법을 통하여 배드 블록 처리 시 동일 셀에 속한 페이지들간의 간섭을 최소화하여 에러가 발생하지 않은 페이지의 데이터 손상을 방지하고 NOP를 고려함으로써 데이터의 신뢰성을 보장받아 정상적으로 배드 블록 처리를 하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, MLC 플래시 메모리에서 런-타임 배드 블록 처리를 위한 장치는 셀(Cell)의 최하위비트(Least Significant Bit 이하, LSB라 한 다)에 프로그램 되는 데이터가 임시 저장되는 버퍼를 할당하는 버퍼 할당 모듈, 할당된 버퍼에 상기 셀의 최하위비트 페이지에 프로그램 되는 데이터를 복사하는 데이터 복사 모듈 및 상기 셀의 페이지에 프로그램 에러 발생 시 프리 블록(Free Block)에 상기 복사된 데이터를 프로그램하는 배드 블록 관리 모듈을 포함한다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 MLC 플래시 메모리에서 런-타임 배드 블록 처리를 위한 방법은 셀의 최하위비트 페이지에 프로그램 되는 데이터가 임시 저장되는 버퍼를 할당하는 버퍼 할당 단계, 상기 할당된 버퍼에 상기 셀의 최하위비트 페이지에 프로그램 되는 데이터를 복사하는 데이터 복사 단계 및 상기 셀의 페이지에 프로그램 에러 발생 시 프리 블록에 상기 복사된 데이터를 프로그램하는 배드 블록 관리 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의한 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치 및 방법을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다.
이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다.
이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다.
컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단 계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다.
또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다.
예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 2는 본 발명의 실시예에 따른 MLC 플래시 메모리에서 런-타임 배드 블록 처리를 위한 장치의 구성을 도시한 블록도이다.
MLC 플래시 메모리에서 런-타임 배드 블록 처리를 위한 장치(200)는 셀의 LSB에 해당하는 페이지에 프로그램 되는 데이터가 임시 저장되는 버퍼(201a, 201b), 그 버퍼(201a, 201b)를 할당하는 버퍼 할당 모듈(202), 상기 할당된 버퍼에 상기 셀의 최하위비트 페이지에 프로그램 되는 데이터를 복사하는 데이터 복사 모듈(203), 셀의 페이지에 프로그램 에러 발생시 배드 블록에 대응하는 프리 블록에 상기 복사된 데이터를 프로그램하는 배드 블록 관리 모듈(204), 상기 셀의 페이지에 프로그램 할 데이터를 저장하는 데이터 버퍼 (205) 및 상기 데이터 버퍼(205)에 저장된 데이터를 페이지에 프로그램 하는 데이터 프로그램 모듈(206)을 포함한다.
본 발명의 실시예에서 사용되는 '~모듈'이라는 용어는 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 구성요소를 의미하며, '~모듈'은 어떤 역할들을 수행한다.
그렇지만 '~모듈'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다.
'~모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.
따라서, 일 예로서 '~모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~모듈'들로 결합되거나 추가적인 구성요소들과 '~모듈'들로 더 분리될 수 있다.
버퍼 할당 모듈(202)은 셀의 LSB에 해당하는 페이지에 프로그램 되는 데이터가 임시 저장되는 버퍼(201a, 201b)를 할당한다.
이때 버퍼 할당 모듈(202)은 페이지에 프로그램 되는 데이터 셋트(Set)가 완료될 때까지 해당 버퍼(201a, 201b)를 유지한다.
여기에서 '데이터 셋트'는 데이터의 시작과 끝을 의미하는 것으로서 예를 들어, 하나의 데이터가 3개의 페이지에 걸쳐 프로그램 된다면 이 3개의 페이지가 하나의 데이터 셋트가 되는 것이다.
또한 버퍼 할당 모듈(202)이 셀의 LSB에 해당하는 페이지에 프로그램 될 데이터를 버퍼(201a, 201b)에 임시 저장하는 이유는, 일반적으로 MLC 플래시 메모리의 프로그램 수행 시, 셀의 LSB에서 MSB로 처리되기 때문에 LSB에 데이터를 프로그램하는 도중 에러가 발생한다고 하여도 LSB가 손상되는 가능성은 적다.
그러나 셀의 LSB에 데이터를 프로그램하고 이어서 MSB에 데이터를 프로그램 하는 도중 에러가 발생한다면 동일한 셀에 존재하는 LSB의 데이터까지 손상을 줄 수 있기 때문에 셀의 LSB에 해당하는 페이지에 프로그램 될 데이터를 버퍼(201a, 201b)에 임시 저장한다.
도 3a 내지 도 5b를 통해 2-레벨 페이지 분할 방식의 MLC 플래시 메모리에서 페이지 에러 발생 시 동일 셀에 속한 페이지들간의 간섭을 설명하도록 한다.
이때 LSB, MSB의 초기 비트는 각각 '1'이고 동일 셀에 속한다고 가정한다.
도 3a 내지 도 3b는 2-레벨 페이지 분할 방식의 MLC 플래시 메모리에서 '1, 0' 상태로 프로그램 시, 셀의 상태 전이를 도시한 도면이다.
MSB : LSB = (1, 1) 상태에서 MSB : LSB = (1, 0)이 되기 위해서는 LSB에만 프로그램을 해주면 되고, LSB에 프로그램 하는 도중 에러가 발생한다 하더라도 다른 블록에 처음부터 다시 프로그램 하면 되기 때문에 LSB의 데이터 손상은 발생하지 않게 된다.
도 4a 내지 도 4b는 2-레벨 페이지 분할 방식의 MLC 플래시 메모리에서 '0, 0' 상태로 프로그램 시, 셀의 상태 전이를 도시한 도면이다.
MSB : LSB = (1, 1) 상태에서 MSB : LSB = (0, 0)으로 프로그램 될 때 중간 상태인 MSB : LSB = (1, 0) 상태가 된다.
만일 MSB : LSB = (1, 0)상태에서 마지막 상태인 MSB : LSB = (0, 0)로 진행되지 못하고 MSB : LSB = (1, 0)인 상태로 중단하게 되면 프로그램 에러가 발생하게 된다.
이 경우는 LSB의 프로그램 처리는 성공하였으나 MSB의 프로그램 도중 에러가 발생한 것으로 생각할 수 있으며, MSB의 프로그램 에러로 인하여 LSB의 초기 상태는 '1'이었으나, '0'으로 손상되는 경우가 발생한다.
도 5a 내지 도 5b는 2-레벨 페이지 분할 방식의 MLC 플래시 메모리에서 '0, 1' 상태로 프로그램 시, 셀의 상태 전이를 도시한 도면이다.
MSB : LSB = (1, 1) 상태에서 MSB : LSB = (0, 1)으로 프로그램 될 때 중간 상태인 MSB : LSB = (1, 0), MSB : LSB = (0, 0) 상태가 된다.
만일 MSB : LSB = (1, 0), MSB : LSB = (0, 0) 상태에서 마지막 상태인 MSB : LSB = (0, 1)로 진행되지 못하고 MSB : LSB = (1, 0) 또는 MSB : LSB = (0, 0)인 상태로 중단되면 프로그램 에러가 발생하게 된다.
이때 마지막 상태인 MSB : LSB = (0, 1)를 프로그램하는 도중 프로그램 에러가 발생하여 MSB : LSB = (1, 0) 또는 MSB : LSB = (0, 0)인 상태로 중단되면 LSB는 프로그램 에러로 인하여 초기 상태는 '1'이었으나 '0'으로 손상되는 경우가 발 생하며, MSB 역시 초기 상태는 '1'이었으나 '0'으로 손상되는 경우가 발생하게 된다.
상술한 바와 같이 LSB가 손상되는 경우를 위하여 버퍼 할당 모듈(202)은 셀의 LSB에 해당하는 페이지에 프로그램 되는 데이터가 임시 저장되는 버퍼(201a, 201b)를 할당하는 것이다.
데이터 복사 모듈(203)은 프로그램 되는 페이지가 상기 셀의 LSB에 해당하면 상기 버퍼 할당 모듈(202)을 통해 할당된 버퍼(201a, 201b)에 데이터를 복사한다.
배드 블록 관리 모듈(204)은 페이지에 대한 프로그램 에러 여부를 체크하여 에러 발생 시 배드 블록에 대응하는 프리 블록을 할당 받고 할당 받은 프리 블록에 페이지를 복사하기 위하여 인덱스를 초기화한다.
그리고 배드 블록 관리 모듈(204)은 셀의 페이지에 프로그램 에러 발생 시 배드 블록에 대응하는 프리 블록에 데이터 복사 모듈(203)을 통해 버퍼(201a, 201b)에 복사된 데이터를 프로그램 한다.
또한 배드 블록 관리 모듈(204)은 배드 블록에 포함된 페이지가 LSB 또는 MSB인지를 체크하고, 도 5를 통해 설명한 MSB의 데이터가 손상된 경우, 즉 에러가 발생한 페이지가 MSB에 해당될 경우 프로그램 에러가 발생한 페이지의 데이터를 데이터 버퍼(205)에서 참조하여 프리 블록에 프로그램 한다.
MLC의 NOP 횟수는 SLC의 NOP 횟수와는 다르게 1회를 허용하게 되어있으므로 MLC의 NOP를 고려하여 종래의 기술처럼 에러가 발생한 페이지의 데이터를 직접 복사하지 않고 해당 데이터를 저장하고 있는 데이터 버퍼(205)를 참조하여 에러가 발 생한 페이지의 데이터를 프리 블록에 복사하는 것이다.
도 6은 본 발명의 실시예에 따른 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법을 도시한 흐름도이며, 설명의 편의를 위해 도 2에 도시된 장치를 참조하도록 한다.
참고로, MSB와 LSB의 데이터가 모두 손상되었고, 도시된 플래시 메모리는 유져 파티션(User Partition)(210)과 유져 파티션(210)에서 발생된 배드 블록(211)을 대체할 예약 파티션(Reserved Partition)(220)으로 구분되며 페이지 4N+0(211a)과 페이지 4N+2(211c), 그리고 4N+1(211b)과 페이지 4N+3(211d)는 동일 셀에 속한다고 가정한다.
또한 페이지 4N+0(211a)과 페이지 4N+1(211b)은 LSB, 페이지 4N+2(211c)와 페이지 4N+3(211d)은 MSB이고, 페이지 4N+2(211c)에서 에러가 발생했다고 가정하며, 도 6에서 사용하는 'N = M / 4'이고 N과 M은 임의의 양의 정수이다.
버퍼 할당 모듈(202)은 셀의 LSB에 속하는 페이지를 위한 버퍼(201a, 201b)를 각각 할당한다(S601).
S601 후, 데이터 프로그램 모듈(206)은 데이터 버퍼(205)에 저장된 데이터를 페이지 M에 프로그램 한다(S602).
S602 후, 데이터 복사 모듈(203)은 페이지 M이 4N+0, 즉 셀의 LSB인지를 체크하고(S603), 체크결과 4N+0이면 데이터 버퍼(205)에 존재하는 해당 데이터를 버퍼로 복사한다(S604).
S603 후, 데이터 복사 모듈(203)은 페이지 M이 4N+1, 즉 셀의 LSB인지를 체 크하고(S605) 체크결과 4N+1이면 데이터 버퍼(205)에 존재하는 해당 데이터를 버퍼로 복사한다(S606).
S606 후, 배드 블록 관리 모듈(204)은 페이지 M에 대한 프로그램 에러 여부를 체크한다(S607).
S607 후, 프로그램 에러가 없으면 배드 블록 처리는 종료되며 만일 프로그램 에러가 있으면 배드 블록 관리 모듈(204)을 통해 예약 파티션(210)으로부터 한 개의 프리 블록(211)을 할당 받는다(S608).
S608 후, 배드 블록 관리 모듈(204)은 페이지 복사를 위한 인덱스 i 를 0으로 초기화 한다(S609).
S609 후, 배드 블록 관리 모듈(204)은 페이지 M이 4N+2이고, 페이지 i 가 4N+0인지를 체크하고(S610), 체크결과 맞다면 버퍼1(201a)에 저장된 데이터를 프리 블록(221)의 페이지 i 로 프로그램 한다(S611).
S611 후, 배드 블록 관리 모듈(204)은 페이지 M이 4N+3이고, 페이지 i 가 4N+1인지를 체크하고(S612), 체크결과 맞다면 버퍼2(201b)에 저장된 데이터를 프리 블록(221)의 페이지 i 로 프로그램 한다(S613).
S613 후 배드 블록 관리 모듈(204)은 페이지 i 가 페이지 M인지를 체크하고(S614), 체크결과 맞다면 데이터 버퍼(202)에 저장된 데이터를 프리 블록(221)의 페이지 i 로 프로그램 한 후(S615) 배드 블록 처리를 종료한다.
만일 S611, S613, S615 경우가 아니면 배드 블록 관리 모듈(204)은 배드 블록(210)의 페이지 i 를 프리 블록(220)의 페이지 i 로 복사한다(S616).
S616 후, 배드 블록 관리 모듈(204)은 페이지 i 가 블록의 마지막 페이지인지를 체크하고(S617) 체크결과 마지막 페이지가 아니면 i 를 하나 증가시킨 후 S610를 수행한다(S618).
만일 S617 결과 페이지 i 가 블록의 마지막 페이지이면 배드 블록 처리를 종료한다.
이상과 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치 및 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
배드 블록 처리 시 동일 셀에 속한 페이지들간의 간섭을 최소화하여 에러가 발생하지 않은 페이지의 데이터 손상을 방지하고 NOP를 고려함으로써 데이터의 신뢰성을 보장받아 정상적으로 배드 블록 처리를 하는 장점이 있다.

Claims (15)

  1. 셀의 최하위비트 페이지에 프로그램 되는 데이터가 임시 저장되는 버퍼를 할당하는 버퍼 할당 모듈;
    상기 할당된 버퍼에 상기 셀의 최하위비트 페이지에 프로그램 되는 데이터를 복사하는 데이터 복사 모듈; 및
    상기 셀의 페이지에 프로그램 에러 발생 시 프리 블록에 상기 복사된 데이터를 프로그램하는 배드 블록 관리 모듈을 포함하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치.
  2. 제 1항에 있어서,
    상기 셀의 페이지에 프로그램 할 데이터를 저장하는 데이터 버퍼를 더 포함하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치.
  3. 제 1항에 있어서,
    상기 배드 블록 관리 모듈은 페이지에 대한 프로그램 에러 여부를 체크하여 에러 발생 시 프리 블록을 할당 받는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치.
  4. 제 1항에 있어서,
    상기 배드 블록 관리 모듈은 페이지 복사를 위한 인덱스를 초기화하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치.
  5. 제 1항에 있어서,
    상기 배드 블록 관리 모듈은 배드 블록에 포함된 페이지가 LSB 또는 MSB인지를 체크하여 데이터를 프로그램 하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치.
  6. 제 2항에 있어서,
    상기 배드 블록 관리 모듈은 상기 프로그램 에러가 발생한 페이지의 데이터를 상기 데이터 버퍼에서 참조하여 상기 프리 블록에 복사하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치.
  7. 제 6항에 있어서,
    상기 프로그램 에러가 발생한 페이지는 상기 셀의 최상위비트에 해당되는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치.
  8. 제 1항에 있어서,
    상기 버퍼 할당 모듈은 프로그램 되는 데이터 셋트(Set)가 완료될 때까지 상기 버퍼를 유지하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 장치.
  9. 셀의 최하위비트 페이지에 프로그램 되는 데이터가 임시 저장되는 버퍼를 할당하는 버퍼 할당 단계;
    상기 할당된 버퍼에 상기 셀의 최하위비트 페이지에 프로그램 되는 데이터를 복사하는 데이터 복사 단계; 및
    상기 셀의 페이지에 프로그램 에러 발생 시 프리 블록에 상기 복사된 데이터를 프로그램하는 배드 블록 관리 단계를 포함하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법.
  10. 제 9항에 있어서,
    상기 배드 블록 관리 단계는 페이지에 대한 프로그램 에러 여부를 체크하여 에러 발생 시 프리 블록을 할당 받는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법.
  11. 제 9항에 있어서,
    상기 배드 블록 관리 단계는 페이지 복사를 위한 인덱스를 초기화하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법.
  12. 제 9항에 있어서,
    상기 배드 블록 관리 단계는 배드 블록에 포함된 페이지가 LSB 또는 MSB인지 를 체크하여 데이터를 프로그램 하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법.
  13. 제 9항에 있어서,
    상기 배드 블록 관리 단계는 상기 프로그램 에러가 발생한 페이지의 데이터를 데이터 버퍼에서 참조하여 상기 프리 블록에 복사하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법.
  14. 제 13항에 있어서,
    상기 프로그램 에러가 발생한 페이지는 상기 셀의 최상위비트에 해당되는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법.
  15. 제 9항에 있어서,
    상기 버퍼 할당 단계는 프로그램 되는 데이터 셋트가 완료될 때까지 상기 버퍼를 유지하는 MLC 플래시 메모리에서 런-타임 배드 블록 관리를 위한 방법.
KR1020060084877A 2006-09-04 2006-09-04 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법 KR100755718B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060084877A KR100755718B1 (ko) 2006-09-04 2006-09-04 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법
US11/742,604 US7721147B2 (en) 2006-09-04 2007-05-01 Method and apparatus for managing bad run-time block in MLC flash memory
CNA200710149127XA CN101140805A (zh) 2006-09-04 2007-09-04 在多层单元闪存中管理坏运行时间块的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060084877A KR100755718B1 (ko) 2006-09-04 2006-09-04 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법

Publications (1)

Publication Number Publication Date
KR100755718B1 true KR100755718B1 (ko) 2007-09-05

Family

ID=38736577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060084877A KR100755718B1 (ko) 2006-09-04 2006-09-04 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법

Country Status (3)

Country Link
US (1) US7721147B2 (ko)
KR (1) KR100755718B1 (ko)
CN (1) CN101140805A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100783988B1 (ko) 2006-10-31 2007-12-07 주식회사 하이닉스반도체 플래시 메모리 장치 및 동작방법
KR101041837B1 (ko) 2010-04-09 2011-06-17 (주)다윈텍 파일저장 제어장치 및 방법
US9158622B2 (en) 2012-06-01 2015-10-13 Samsung Electronics Co. Ltd. Storage device including non-volatile memory device and repair method
KR20160055723A (ko) * 2013-07-31 2016-05-18 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 버저닝된 메모리 구현

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7852654B2 (en) * 2006-12-28 2010-12-14 Hynix Semiconductor Inc. Semiconductor memory device, and multi-chip package and method of operating the same
US8156392B2 (en) * 2008-04-05 2012-04-10 Fusion-Io, Inc. Apparatus, system, and method for bad block remapping
US20100332922A1 (en) * 2009-06-30 2010-12-30 Mediatek Inc. Method for managing device and solid state disk drive utilizing the same
CN101944386B (zh) * 2009-07-03 2013-11-13 群联电子股份有限公司 识别闪速存储器中错误数据的控制电路及存储系统与方法
CN103065678B (zh) * 2011-10-21 2016-01-13 点序科技股份有限公司 闪速存储器装置及其数据储存方法
KR102102171B1 (ko) * 2013-04-05 2020-05-29 삼성전자 주식회사 멀티 레벨 셀 메모리 시스템
US9142324B2 (en) 2013-09-03 2015-09-22 Sandisk Technologies Inc. Bad block reconfiguration in nonvolatile memory
US9477423B2 (en) 2013-11-26 2016-10-25 Seagate Technology Llc Eliminating or reducing programming errors when programming flash memory cells
CN106959822B (zh) * 2013-12-27 2020-02-07 威盛电子股份有限公司 数据储存装置及其数据写入方法
US9971515B2 (en) * 2016-09-13 2018-05-15 Western Digital Technologies, Inc. Incremental background media scan

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040087245A (ko) * 2003-04-04 2004-10-13 삼성전자주식회사 플래시 메모리의 오류블록 관리방법 및 장치
KR20050009045A (ko) * 2003-07-15 2005-01-24 주식회사 레인콤 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
WO2005114670A1 (en) 2004-05-13 2005-12-01 Sandisk Corporation Pipelined data relocation and improved chip architectures
KR20060023427A (ko) * 2004-09-09 2006-03-14 삼성전자주식회사 카피백 프로그램 동작 중에 에러를 검출하는 낸드 플래시메모리 장치 및 에러 검출 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0617363B1 (en) * 1989-04-13 2000-01-26 SanDisk Corporation Defective cell substitution in EEprom array
US5535328A (en) * 1989-04-13 1996-07-09 Sandisk Corporation Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells
US5473753A (en) * 1992-10-30 1995-12-05 Intel Corporation Method of managing defects in flash disk memories
KR19990055972A (ko) 1997-12-29 1999-07-15 윤종용 블록 재할당 기능을 갖는 플래시 메모리 이용 보조기억장치 및 그 방법
US6260156B1 (en) * 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US20080071973A1 (en) * 2000-01-06 2008-03-20 Chow David Q Electronic data flash card with various flash memory cells
US7702831B2 (en) * 2000-01-06 2010-04-20 Super Talent Electronics, Inc. Flash memory controller for electronic data flash card
JP4323707B2 (ja) 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
ITMI20022669A1 (it) * 2002-12-18 2004-06-19 Simicroelectronics S R L Struttura e metodo di rilevamento errori in un dispositivo
KR100543447B1 (ko) 2003-04-03 2006-01-23 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
US20080082736A1 (en) * 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
US7352618B2 (en) * 2004-12-15 2008-04-01 Samsung Electronics Co., Ltd. Multi-level cell memory device and associated read method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040087245A (ko) * 2003-04-04 2004-10-13 삼성전자주식회사 플래시 메모리의 오류블록 관리방법 및 장치
KR20050009045A (ko) * 2003-07-15 2005-01-24 주식회사 레인콤 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
WO2005114670A1 (en) 2004-05-13 2005-12-01 Sandisk Corporation Pipelined data relocation and improved chip architectures
KR20060023427A (ko) * 2004-09-09 2006-03-14 삼성전자주식회사 카피백 프로그램 동작 중에 에러를 검출하는 낸드 플래시메모리 장치 및 에러 검출 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100783988B1 (ko) 2006-10-31 2007-12-07 주식회사 하이닉스반도체 플래시 메모리 장치 및 동작방법
KR101041837B1 (ko) 2010-04-09 2011-06-17 (주)다윈텍 파일저장 제어장치 및 방법
US9158622B2 (en) 2012-06-01 2015-10-13 Samsung Electronics Co. Ltd. Storage device including non-volatile memory device and repair method
KR20160055723A (ko) * 2013-07-31 2016-05-18 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 버저닝된 메모리 구현
KR102031606B1 (ko) 2013-07-31 2019-10-14 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 버저닝된 메모리 구현

Also Published As

Publication number Publication date
US7721147B2 (en) 2010-05-18
CN101140805A (zh) 2008-03-12
US20080059835A1 (en) 2008-03-06

Similar Documents

Publication Publication Date Title
KR100755718B1 (ko) 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법
US9280420B2 (en) Memory systems and block copy methods thereof
US9117530B2 (en) Preserving data from adjacent word lines while programming binary non-volatile storage elements
US7984232B2 (en) Memory system
US8743604B2 (en) Nonvolatile memory devices having improved read reliability
US11127471B2 (en) Read retry threshold voltage selection
TWI446350B (zh) 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器
US8266368B2 (en) Memory controller, memory system, and control method for memory system
KR101544607B1 (ko) 메모리 장치 및 그 프로그램 방법
US9348694B1 (en) Detecting and managing bad columns
US9563508B2 (en) Memory management method, memory control circuit unit and memory storage apparatus
US10126953B2 (en) Memory management method for buffer memory, and memory control circuit unit and memory storage device using the same
KR20100137128A (ko) 비휘발성 메모리 장치의 프로그램 방법, 비휘발성 메모리 장치 및 비휘발성 메모리 시스템
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
US8832527B2 (en) Method of storing system data, and memory controller and memory storage apparatus using the same
US9383929B2 (en) Data storing method and memory controller and memory storage device using the same
US7945723B2 (en) Apparatus and method of managing mapping table of non-volatile memory
US20060143368A1 (en) Method for using a multi-bit cell flash device in a system not designed for the device
US8094495B2 (en) Nonvolatile memory device
US7970984B2 (en) Method for using a multi-bit cell flash device in a system not designed for the device
KR101270685B1 (ko) 비휘발성 메모리의 데이터 처리 장치 및 방법
US9786388B1 (en) Detecting and managing bad columns
US7719893B2 (en) Nonvolatile memory and apparatus and method for deciding data validity for the same
CN113066517A (zh) 存储器系统及其操作方法
US11221946B2 (en) Data arrangement method, memory storage device and memory control circuit unit

Legal Events

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

Payment date: 20120802

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130731

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140731

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160801

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180731

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190731

Year of fee payment: 13