KR20100094241A - 예비 블록을 포함하지 않는 불휘발성 메모리 장치 - Google Patents

예비 블록을 포함하지 않는 불휘발성 메모리 장치 Download PDF

Info

Publication number
KR20100094241A
KR20100094241A KR1020090013570A KR20090013570A KR20100094241A KR 20100094241 A KR20100094241 A KR 20100094241A KR 1020090013570 A KR1020090013570 A KR 1020090013570A KR 20090013570 A KR20090013570 A KR 20090013570A KR 20100094241 A KR20100094241 A KR 20100094241A
Authority
KR
South Korea
Prior art keywords
block
free
data
blocks
memory
Prior art date
Application number
KR1020090013570A
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 KR1020090013570A priority Critical patent/KR20100094241A/ko
Priority to US12/656,718 priority patent/US20100211820A1/en
Publication of KR20100094241A publication Critical patent/KR20100094241A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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/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/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
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/81Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout using a hierarchical redundancy scheme
    • 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/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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

Abstract

본 발명은 예비 블록을 포함하지 않는 불휘발성 메모리 장치에 관한 것이다. 본 발명에 따른 불휘발성 메모리 장치는 사용자 데이터를 저장하기 위한 제 1 메모리 영역 및 제 1 메모리 영역 이외의 제 2 메모리 영역을 포함하고, 제 2 메모리 영역은 예비 블록을 포함하지 않는다.

Description

예비 블록을 포함하지 않는 불휘발성 메모리 장치{NONVOLATILE MEMORY DEVICE NOT INCLUDING RESERVED BLOCKS}
본 발명은 불휘발성 메모리 장치에 관한 것으로, 더욱 상세하게는 예비 블록(reserved blocks)을 포함하지 않는 불휘발성 메모리 장치에 관한 것이다.
반도체 메모리 장치는 데이터를 저장하기 위해 사용된다. 반도체 메모리 장치는 크게 휘발성(volatile) 메모리 장치와 비휘발성(nonvolatile) 메모리 장치로 구분된다. 휘발성 메모리 장치에 저장된 데이터는 전원 공급이 중단되면 소멸된다. 반면에, 비휘발성 메모리 장치에 저장된 데이터는 전원 공급이 중단된 경우에도 유지된다.
비휘발성 메모리 장치의 일종으로 플래시 메모리가 있다. 최근 디지털 카메라, MP3 플레이어, 핸드폰, PDA 등과 같은 휴대용 전자 장치가 많이 사용되고 있다. 이러한 휴대용 전자 장치에는 플래시 메모리가 주로 사용되고 있다. 이는 플래시 메모리가 저전력 및 고집적 등의 특성을 갖는 불휘발성 소자이기 때문이다.
플래시 메모리는 메모리 셀 어레이를 포함하고, 메모리 셀 어레이는 복수의 메모리 블록으로 구성된다. 플래시 메모리의 메모리 블록에는 결함이 생길 수 있 다. 결함이 있는 블록은 배드 블록(bad block)으로 불린다. 배드 블록은 다양한 원인에 의해 발생할 수 있다. 예시적으로, 열 페일(column fail), 간섭 문제(disturbance), 마모(wear-out) 등에 의해 배드 블록이 발생될 수 있다.
배드 블록에는 데이터가 저장될 수 없기 때문에 배드 블록은 정상 블록으로 교체되어야 한다. 따라서, 플래시 메모리에는 배드 블록을 교체하기 위한 예비 블록(reserved block)이 구비된다. 예비 영역은 배드 블록이 발생한 경우에 사용된다. 따라서 예비 영역은 배드 블록이 발생하지 않는 경우에 사용자에 의해 인식되지 않는다. 그러므로 배드 블록이 발생하지 않는다면, 플래시 메모리의 사용가능한 메모리 셀 어레이의 면적이 낭비된다.
본 발명은 상술한 기술적 과제를 해결하기 위해 제안된 것으로, 본 발명의 목적은 예비 블록을 포함하지 않는 불휘발성 메모리 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치는 사용자 데이터를 저장하기 위한 제 1 메모리 영역 및 상기 제 1 메모리 영역 이외의 제 2 메모리 영역을 포함하되, 상기 제 2 메모리 영역은 예비 블록을 포함하지 않는다.
실시 예로서, 상기 제 1 메모리 영역은 복수의 데이터 블록을 포함하고, 상기 제 2 메모리 영역은 데이터 블록에 결함이 발생한 경우에 대체하기 위한 적어도 하나의 자유 블록을 포함하고, 상기 자유 블록은 예비 블록을 대신한다.
실시 예로서, 상기 제 2 메모리 영역은 제 1 자유 블록에 결함이 발생한 경우에, 상기 제 1 자유 블록을 대체할 수 있는 제 2 자유 블록을 포함한다.
실시 예로서, 상기 제 2 메모리 영역은 데이터 블록을 갱신하기 위한 적어도 하나의 로그 블록을 더 포함하고, 상기 로그 블록에 결함이 발생한 경우에 상기 자유 블록으로 대체된다.
실시 예로서, 상기 자유 블록은 상기 복수의 데이터 블록이 모두 사용된 경우에 사용자 데이터를 저장한다.
실시 예로서, 상기 데이터 블록 또는 상기 로그 블록의 병합 동작을 통해, 상기 자유 블록의 개수는 일정하게 유지된다.
실시 예로서, 상기 데이터 블록의 대체 동작이 수행되고 난 후에, 상기 데이터 블록 또는 상기 로그 블록의 병합 동작이 수행되는 경우에, 상기 자유 블록의 개수는 적어도 두 개로 유지된다.
실시 예로서, 상기 데이터 블록 또는 상기 로그 블록의 병합 동작이 수행되고 난 후에, 상기 데이터 블록의 대체 동작이 수행되는 경우에, 상기 자유 블록의 개수는 적어도 하나로 유지된다.
실시 예로서, 상기 데이터 블록 또는 상기 로그 블록의 병합 동작은 자유 블록의 개수를 체크하여, 자유 블록의 개수가 기준개수 미만일 경우에 수행된다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치는 예비 블록을 포함하지 않으므로 사용 가능한 메모리 셀 어레이의 면적을 증가할 수 있다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예들을 첨부된 도면을 참조하여 설명한다.
도 1은 본 발명의 실시 예에 따른 플래시 메모리를 보여주는 블록도이다. 도 1을 참조하면, 플래시 메모리(100)는 메모리 셀 어레이(Memory Cell Array)(110),어드레스 디코더(Address Decoder)(120), 데이터 입출력 회로(Data input output circuit)(130), 그리고 컨트롤 로직(Control Logic)(140)을 포함한다.
어드레스 디코더(120)는 워드 라인들(WL)을 통하여 메모리 셀 어레이(110)에 연결된다. 어드레스 디코더(120)는 컨트롤 로직(Control Logic)(140)에 의하여 제어된다. 어드레스 디코더(120)는 외부로부터 어드레스(ADDR)를 전달받는다. 예시적으로 어드레스(ADDR)는 행 어드레스(row address)와 열 어드레스(column address)를 포함한다.
어드레스 디코더(120)는 행 어드레스를 디코딩하여 워드 라인들(WL)을 선택한다. 어드레스 디코더(120)는 열 어드레스를 디코딩하여 데이터 입출력 회로(130)에 전달하고, 데이터 입출력 회로(130)는 디코딩된 열 어드레스에 응답하여 비트 라인들(BL)을 선택한다.
데이터 입출력 회로(Data input/output circuit)(130)는 컨트롤 로직(120)의 제어에 따른다. 데이터 입출력 회로(130)는 비트 라인들(BL)을 통하여 메모리 셀 어레이(110)에 연결된다. 데이터 입출력 회로(130)는 외부로부터 데이터(DATA)를 전달받는다. 데이터 입출력 회로(130)는 전달받은 데이터를 메모리 셀 어레이(110)에 저장한다. 또한, 데이터 입출력 회로(130)는 메모리 셀 어레이(110)에 저장된 데이터(DATA)를 읽는다. 데이터 입출력 회로(130)는 읽은 데이터를 외부에 전달한다.
컨트롤 로직(Control Logic)(140)은 외부의 제어 신호에 따라 동작한다. 컨트롤 로직(140)은 데이터 입출력 회로(130)와 어드레스 디코더(120)를 제어한다.
메모리 셀 어레이(110)는 워드 라인들을 통하여 어드레스 디코더(120)에 연결된다. 메모리 셀 어레이(110)는 비트 라인들을 통하여 데이터 입출력 회로(130)에 연결된다. 메모리 셀 어레이(110)는 복수의 메모리 블록을 포함한다. 메모리 블록은 복수의 메모리 셀들을 포함한다. 이하 도 2에서는 일반적인 메모리 셀 어레이의 구조를 상세히 설명한다.
도 2는 일반적인 플래시 메모리의 메모리 셀 어레이의 구조를 나타낸다.
메모리 셀 어레이(140)는 예비 블록(reserved block), 자유 블록(free block), 로그 블록(log block), 데이터 블록(data block)을 포함한다. 메모리 셀 어레이(140)는 예비 영역(Reserved Area)과 쓰기 가능 영역(Writable Area)을 포함한다. 쓰기 가능 영역(Writable Area)은 자유 블록(free block), 로그 블록(log block) 그리고 데이터 블록(data block)을 포함한다. 예비 영역(Reserved Area)은 예비 블록(reserved block)을 포함한다.
여기서 '데이터 블록'은 일반 데이터를 저장하는 블록을 가리킨다. '로그 블록'은 데이터 블록을 수정하고자 할 경우에 할당되어 수정 내용을 기록하는 용도로 활용되는 블록을 가리킨다. '자유 블록'은 로그 블록 또는 데이터 블록으로 할당될 수 있는 블록을 가리킨다. '예비 블록'은 플래시 메모리(100)의 메모리 블록에 결함이 생긴 경우에 해당 블록을 대체하기 위한 블록을 가리킨다.
플래시 메모리(100)의 메모리 블록에는 결함이 생길 수 있다. 결함이 있는 블록은 배드 블록(bad block)으로 불린다. 배드 블록은 다양한 원인에 의해 발생할 수 있다. 예시적으로, 열 페일(column fail), 간섭 문제(disturbance), 마모(wear-out) 등에 의해 배드 블록이 발생될 수 있다.
배드 블록에는 데이터가 저장될 수 없기 때문에 배드 블록은 정상 블록으로 교체되어야 한다. 따라서, 플래시 메모리에는 배드 블록을 교체하기 위한 예비 블록(reserved block)이 구비된다. 예비 블록들은 메모리 셀 어레이의 일정 비율을 차지하도록 설정된다. 예시적으로, 예비 블록들은 메모리 셀 어레이의 약 5 퍼센트를 차지할 수 있다.
사용자는 데이터의 저장을 위해 쓰기 가능 영역(Writable Area)만을 사용할 수 있다. 즉, 배드 블록이 발생하지 않는 한, 예비 블록은 사용자에 의해 인식되지 않는다. 따라서 배드 블록이 발생하지 않거나, 배드 블록들의 개수가 예비 블록들의 개수보다 적은 경우, 예비 블록들 중 일부는 사용되지 않는다. 이 경우에 메모리 셀 어레이의 메모리 블록은 사용되지 않는 예비 블록들만큼 낭비된다. 상술한 문제점을 해결하기 위하여, 도 3에서는 예비 블록을 포함하지 않는 메모리 셀 어레이가 제안된다.
도 3은 본 발명의 실시 예에 따른 메모리 셀 어레이의 구조를 나타낸다.
메모리 셀 어레이(300)는 제 1 메모리 영역(1st Memory Area)과 제 2 메모리 영역(2nd Memory Area)을 포함한다. 제 1 메모리 영역은 데이터 블록(data block)을 포함한다. 제 2 메모리 영역은 로그 블록(log block)과 자유 블록(free block)을 포함한다. 도 3의 메모리 셀 어레이(300)는 도 2의 메모리 셀 어레이(200)와 달리 예비 블록을 포함하지 않는다.
여기서 '데이터 블록'은 일반 데이터를 저장하는 블록을 가리킨다. '로그 블록'은 데이터 블록이 수정된 경우에 수정된 데이터를 저장하는 블록을 가리킨다. '자유 블록'은 로그 블록 또는 데이터 블록으로 할당될 수 있는 블록을 가리킨다. 또한 '자유 블록'은 메모리 블록에 결함이 발생한 경우에 이를 대체하는 블록을 가리킨다.
도 2를 참조하면, 도 2의 메모리 셀 어레이(200)와 달리 도 3의 메모리 셀 어레이(300)는 예비 영역을 별도로 할당하지 않는다. 따라서 메모리 셀 어레이(300)는 쓰기 가능 영역(Writable Area)을 최대한 확보할 수 있다. 즉, 메모리 셀 어레이(300)의 저장용량이 증대된다.
본 발명에 따른 메모리 셀 어레이(300)는 예비 블록을 포함하지 않기 때문에, 배드 블록이 발생한 경우에 자유 블록이 해당 배드 블록을 대체한다. 도 2의 자유 블록과는 달리, 본 발명에 따른 자유 블록은 배드 블록이 발생한 경우에 이를 대체하는 동작을 추가적으로 수행한다. 이하에서는 메모리 블록에 결함이 발생한 경우, 자유 블록이 배드 블록을 대체하는 방법이 상세히 설명된다.
도 4는 본 발명의 실시 예에 따른 제 1 메모리 영역(1st Memory Area)에 배 드 블록이 발생한 경우에 배드 블록의 처리 방법을 나타낸다. 도 4(a)는 데이터 블록이 배드 블록으로 판별된 경우의 배드 블록의 처리 방법을 나타낸다. 도 4(b)는 대체가 이루어지고 난 후의 메모리 셀 어레이를 나타낸다.
도 4(a)를 참조하면, 메모리 셀 어레이(400)는 자유 블록들(410~419)과 데이터 블록들(420~429)을 포함한다. 예시적으로, 도 4(a)는 데이터 블록(429)이 배드 블록인 경우이다. 배드 블록은 빗금으로 도시된다. 배드 블록의 판별은 데이터를 저장하기 전, 블록 소거(erase) 동작 이후의 결과에 의하여 판별된다.
데이터 블록(429)이 배드 블록인 경우, 데이터 블록(429)은 자유 블록으로 대체된다. 즉, 데이터 블록(429)에 저장될 데이터는 자유 블록(410)에 저장된다. 그 이후 자유 블록(410)은 데이터 블록으로 변환된다. 이러한 변환은 논리 주소와 물리 주소 사이의 대응관계를 갱신함으로써 수행된다.
대응 관계의 갱신은 플래시 변환 계층(FTL, Flash Translation Layer)의 어드레스 맵핑 테이블의 갱신에 의해 수행된다. 즉, 플래시 변환 계층은 배드 블록(429)에 대응하는 논리 어드레스가 자유 블록(410)의 물리 어드레스에 대응되도록 맵핑한다.
도 4(b)는 대체가 이루어지고 난 후의 메모리 셀 어레이를 나타낸다. 배드 블록으로 판별된 데이터 블록(429)은 자유 블록(410)으로 대체된다. 먼저 배드 블록(429)에 저장될 데이터는 자유 블록(410)에 저장된다. 이후 맵핑 테이블의 갱신에 의하여 자유 블록(410)은 데이터 블록으로 변환된다.
상술한 방법에 의하여, 제 1 메모리 영역의 데이터 블록에 결함이 발생한 경 우에 메모리 셀 어레이(400)는 배드 블록을 안전하게 처리할 수 있다. 별도의 예비 블록이 필요하지 않기 때문에, 메모리 셀 어레이(400)는 쓰기 가능한 메모리 블록을 최대한 확보 할 수 있다.
도 5는 본 발명의 다른 실시 예에 따른 제 2 메모리 영역(2nd Memory Area)의 자유 블록에 배드 블록이 발생한 경우에 배드 블록의 처리방법을 나타낸다. 도 5(a)는 메모리 셀 어레이(500)의 자유 블록이 배드 블록으로 판별된 경우의 처리 방법을 나타낸다. 도 5(b)는 대체가 이루어지고 난 후의 메모리 셀 어레이(500)를 나타낸다.
도 5(a)를 참조하면, 메모리 셀 어레이(500)는 로그 블록들(510~519), 자유 블록들(520~529) 그리고 데이터 블록들을 포함한다. 자유 블록(520)은 배드 블록으로 판별된 블록이다. 배드 블록은 빗금으로 도시되어있다. 배드 블록의 판별은 데이터를 저장하기 전, 블록 소거(erase) 동작 이후의 결과에 의하여 판별된다.
배드 블록으로 판별된 자유 블록(520)은 자유 블록(521)으로 대체된다. 먼저, 배드 블록(520)에 저장될 데이터가 자유 블록(521)에 저장된다. 이후 플래시 변환 계층의 어드레스 맵핑 테이블이 갱신된다. 즉, 플래시 변환 계층은 배드 블록(520)에 대응하는 논리 어드레스가 자유 블록(521)의 물리 어드레스에 대응되도록 맵핑한다. 따라서, 외부(예를 들어 호스트)로부터 저장된 데이터에 대한 액세스 요청이 있는 경우, 플래시 변환 계층은 맵핑 테이블을 참조하여 자유 블록(521)의 물리 어드레스를 플래시 메모리에 제공한다.
도 5(b)를 참조하면, 도 5(b)는 대체가 이루어지고 난 후의 메모리 셀 어레 이를 나타낸다. 배드 블록(520)은 자유 블록(521)으로 대체된다. 즉, 배드 블록(520)에 저장될 데이터는 자유 블록(521)에 저장된다. 이후 맵핑 테이블이 갱신에 의하여, 자유 블록(521)은 데이터 블록으로 변환된다.
상술한 방법에 의하여, 자유 블록이 배드 블록으로 판별된 경우, 자유 블록에 저장될 데이터는 다른 자유 블록에 안전하게 저장될 수 있다. 메모리 셀 어레이(500)는 별도의 예비 블록을 필요로 하지 않기 때문에, 메모리 셀 어레이(500)는 사용가능한 메모리 블록을 최대한 확보할 수 있다.
한편, 도 5의 실시 예는 예시적인 것으로 이는 다양하게 응용될 수 있다. 예를 들어, 제 2 메모리 영역의 로그 블록이 결함이 있는 블록으로 판별된 경우에도 해당 로그 블록은 자유 블록과 교체될 수 있다.
도 6은 본 발명의 또 다른 실시 예에 따른 제 2 메모리 영역(2nd Memory Area)의 자유 블록에 배드 블록이 발생한 경우에 배드 블록의 처리방법을 나타내는 도면이다. 도 6(a)는 마지막 자유 블록이 배드 블록인 경우에 병합(merge)에 의하여 자유 블록을 생성하는 것을 나타낸다. 도 6(b)는 병합에 의하여 생성된 자유 블록으로 배드 블록을 대체하는 것을 나타낸다. 도 6(c)는 병합과 대체가 이루어지고 난 후의 메모리 셀 어레이를 나타낸다.
도 6(a)를 참조하면, 메모리 셀 어레이(600)는 로그 블록들(611~619), 자유 블록(620) 및 데이터 블록들(621~629)을 포함한다. 자유 블록(620)은 사용되지 않은 마지막 자유 블록이다. 즉, 메모리 셀 어레이(600)는 하나의 자유 블록(620)만을 포함한다. 또한, 자유 블록(620)은 배드 블록으로 판별된다. 배드 블록은 빗금 으로 도시되어 있다.
자유 블록(620)이 배드 블록으로 판별된 경우, 배드 블록을 대체하기 위한 다른 자유 블록이 필요하다. 자유 블록은 로그 블록들(611~619)과 데이터 블록들(621~629)의 병합에 의하여 생성될 수 있다. 자유 블록을 생성하기 위한 병합 방법에는 교환 병합(swich merge), 복사 병합(copy merge) 그리고 단순 병합(simple merge)이 있다.
교환 병합은 로그 블록과 데이터 블록의 페이지(page) 배열 순서가 동일한 경우 수행되는 블록 병합 방법이다. 데이터 블록의 모든 페이지들이 모두 한 번만 갱신되었기 때문이다. 이 경우, 로그 블록의 페이지들은 모두 유효 페이지(vaild page)이고 데이터 블록의 페이지들은 모두 무효 페이지(invalid page)이다.
교환 병합에서는 로그 블록은 데이터 블록으로 변환되고, 원래의 데이터 블록을 지우기 가능 블록으로 변환된다. 지우기 가능 블록은 자유 블록으로 변환된다. 교환 병합에서의 블록의 병합은 플래시 변환 계층에서의 맵핑 테이블의 갱신에 의하여 수행된다. 따라서 교환 병합은 유효 페이지 수집을 위한 별도의 자유 블록을 필요로 하지 않는다.
복사 병합은 로그 블록에 존재하는 페이지들(pages)이 한번 씩 갱신된 경우에 로그 블록의 비어 있는 페이지들을 데이터 블록의 해당 페이지들로 채움으로써 로그 블록을 데이터 블록으로 변환시키는 방법이다. 이 경우, 복사 병합은 기존의 데이터 블록의 유효 페이지(valid page)들을 로그 블록의 자유 페이지(free page)들에 복사함으로써 이루어진다. 따라서 복사 병합은 유효 페이지 수집을 위한 별도 의 자유 블록을 필요로 하지 않는다.
다시 도 6(a)를 참조하면, 메모리 셀 어레이(600)는 배드 블록으로 판별된 자유 블록(600)을 제외한 별도의 자유 블록을 포함하지 않는다. 따라서 배드 블록(600)을 대체하기 위한 자유 블록을 생성하기 위하여, 교환 병합 및 복사 병합이 수행될 수 있다.
예시적으로, 도 6(a)는 자유 블록(620)이 배드 블록이고, 로그 블록(612)과 데이터 블록(622) 사이에 교환 병합이 수행되는 경우를 나타낸다. 교환 병합에 의하여 로그 블록(612)은 데이터 블록으로 변환된다. 교환 병합에 의하여 데이터 블록 (622)은 자유 블록으로 변환된다.
도 6(b)를 참조하면, 병합에 의하여 생성된 자유 블록(622)은 배드 블록(620)을 대체한다. 대체에 의하여 배드 블록(620)은 자유 블록(622)으로 대체된다. 배드 블록(620)에 저장될 데이터는 자유 블록(622)에 저장된다. 그 이후, 플래시 변환 계층은 배드 블록(620)에 대응하는 논리 어드레스를 자유 블록(622)에 대응하도록 맵핑한다. 따라서 외부로부터(예를 들어 호스트) 저장된 데이터에 대한 액세스 요청이 있는 경우, 플래시 변환 계층은 어드레스 맵핑 테이블을 참조하여 자유 블록(622)의 물리 어드레스를 플래시 메모리에 제공한다.
도 6(c)를 참조하면, 도 6(c)는 병합과 대체가 이루어지고 난 후의 메모리 셀 어레이를 나타낸다. 교환 병합에 의하여 자유 블록(622)이 생성된다. 대체에 의하여 배드 블록(620)이 자유 블록(622)과 대체된다. 따라서 배드 블록(620)에 저장될 데이터는 자유 블록(622)에 저장된다.
상술한 방법에 의하여, 하나의 자유 블록을 제외한 제 2 메모리 영역이 모두 사용되고, 해당 자유 블록이 배드 블록으로 판별된 경우에 해당 배드 블록은 안전하게 처리된다. 메모리 셀 어레이(600)는 예비 블록을 포함하지 않기 때문에, 메모리 셀 어레이(600)는 사용 가능한 메모리 블록을 최대한 확보할 수 있다.
도 7은 본 발명의 다른 실시 예에 따른 자유 블록의 개수를 두 개로 유지하는 배드 블록의 처리 방법을 나타낸다. 도 7(a)는 배드 블록을 자유 블록으로 대체하는 것을 설명한다. 도 7(b)는 자유 블록을 이용하여 병합이 수행되는 과정을 설명한다. 도 7(c)는 병합이 수행되는 과정에서의 메모리 블록의 변환를 설명한다. 도 7(d)는 대체와 병합이 수행되고 난 후의 메모리 셀 어레이를 나타낸다.
도 7(a)를 참조하면, 메모리 셀 어레이(700)는 데이터 블록들(720~722)을 포함한다. 메모리 셀 어레이는 로그 블록들(711~717)을 포함한다. 메모리 셀 어레이는 두 개의 자유 블록(718,719)들을 포함한다.
로그 블록(717)에 데이터를 저장하려고 할 때에 로그 블록(717)은 배드 블록인 것으로 판별된다. 배드 블록인지의 여부는 데이터를 소거한 후 그 결과에 의하여 판별된다. 배드 블록은 빗금으로 표시되어있다.
로그 블록(717)이 배드 블록으로 판별된 경우, 배드 블록(717)은 자유 블록 (718)과 대체된다. 즉, 로그 블록(717)이 배드 블록으로 판별되면, 배드 블록(717)에 저장될 데이터는 자유 블록(718)에 저장된다. 이 후 플래시 변환 계층은 배드 블록(717)에 대응하는 논리 주소를 자유 블록(718)의 물리 주소에 맵핑한다.
한편, 자유 블록(718)이 대체 과정에서 사용되었기 때문에 남아 있는 자유 블록의 개수는 하나이다. 자유 블록의 개수를 적어도 두 개 이상으로 유지하기 위해서, 자유 블록이 생성되어야 한다. 자유 블록은 병합에 의하여 생성될 수 있다.도 6을 참조하면, 교환 병합과 복사 병합은 유효 페이지를 수집하기 위한 자유 블록을 필요로 하지 않는다. 따라서 교환 병합과 복사 병합의 경우에, 병합에 의하여 자유 블록의 개수는 쉽게 두 개를 유지할 수 있다. 따라서 이하에서는 단순 병합에 의하여 자유 블록의 개수를 유지하는 방법이 설명된다.
도 7(b)를 참조하면, 로그 블록과 데이터 블록의 병합은 각각의 유효 페이지들이 자유 블록에 복사됨으로써 수행된다. 이를 단순 병합(simple page)이라 한다. 단순 병합은 로그 블록의 페이지와 해당 데이터 블록의 페이지의 배열이 일치하지 않는 경우에 수행된다. 따라서 단순 병합이 수행되기 위해서는 유효 페이지를 수집하기 위한 적어도 하나의 자유 블록이 필요하다.
먼저 데이터 블록과 이에 대응하는 로그 블록들 사이에서 병합 가능한 블록들이 존재하는지 여부가 검출(detect)된다. 도 7(b)는 로그 블록(712)와 데이터 블록(722)가 단순 병합 가능한 경우를 나타낸다. 이 후, 로그 블록(712)의 유효한 페이지(valid page)와 데이터 블록(722)의 유효한 페이지(valid page)가 자유 블록 (719)에 복사된다. 병합에 의하여 로그 블록(712)와 데이터 블록(722)는 지우기 가능 상태가 된다. 지우기 가능 상태 블록들은 지우기 동작에 의하여 데이터가 소거된다.
도 7(c)를 참조하면, 플래시 변환 계층의 맵핑 테이블의 갱신에 의하여 병합에 사용된 블록들은 다른 블록들로 변환된다. 맵핑 테이블의 갱신에 의하여 유효 페이지의 데이터가 저장된 자유 블록(719)은 데이터 블록으로 변환된다. 데이터가 소거된 로그 블록(712) 및 데이터 블록(721)은 맵핑 테이블의 갱신에 의하여 자유 블록으로 변환된다.
도 7(d)를 참조하면, 메모리 셀 어레이(700)의 자유 블록의 개수는 두 개로 유지된다. 상술한 대체 및 병합 방법을 요약하면, 먼저 대체에 의하여 배드 블록 (717)에 저장하려는 데이터는 자유 블록(718)에 저장된다. 이후 맵핑 테이블의 갱신에 의하여 자유 블록(718)은 데이터 블록(718)으로 변환된다. 병합 및 맵핑 테이블의 갱신에 의하여 자유 블록(719)은 데이터 블록으로 변환된다. 병합 및 맵핑 테이블의 갱신에 의하여, 로그 블록(712) 및 데이터 블록(721)은 자유블록으로 변환된다.
자유 블록의 개수를 살펴보면, 대체 동작 및 병합 동작을 수행하기 전에 자유 블록의 개수는 두 개이다. 먼저, 대체 동작에 의하여 하나의 자유 블록이 사용된다. 자유 블록의 개수를 두 개로 유지하기 위하여, 병합 동작이 수행되어야 한다. 따라서 로그 블록, 데이터 블록 및 자유 블록 사이에 병합 동작이 수행된다. 병합 동작에 의하여, 하나의 자유 블록이 사용된다. 또한 병합 동작에 의하여 로그 블록 및 데이터 블록이 자유 블록이 된다. 결과적으로 자유 블록의 개수는 두 개로 유지된다.
상술한 방법에 의하여, 메모리 셀 어레이(700)는 배드 블록이 발생한 경우에 자유 블록으로 배드 블록을 대체한다. 따라서 메모리 셀 어레이(700)는 별도의 예비 블록을 필요로 하지 않는다. 또한, 자유 블록의 개수를 두 개 이상으로 유지함 으로써, 배드 블록이 발생한 경우에 대체 동작과 이후의 단순 병합 동작이 원활히 수행된다.
한편, 본 발명에 따른 실시 예에 있어서, 적정한 자유 블록의 개수는 기준개수라 칭해진다. 기준 개수는 필요에 따라 다양하게 정의될 수 있다. 도 7을 참조하면, 도 7은 기준 개수가 두 개인 경우를 나타낸다. 그러나 본 발명에 따른 실시 예에 있어서, 기준 개수는 적어도 두 개 이상인 경우를 포함한다. 예를 들어, 두 개의 블록이 연속하여 배드 블록으로 판별된 경우, 자유 블록은 최소 세 개 이상이 필요할 수 있다. 따라서 기준 개수는 필요에 따라 다양하게 변경될 수 있다.
한편, 도 7에서 도시된 병합 동작은 플래시 메모리가 입출력 동작을 수행하지 않는 동안에 수행될 수 있다. 플래시 메모리가 입출력 동작을 수행하지 않는 시간은 백그라운드 시간(background time)으로 정의된다. 파일 시스템으로부터 일정 시간 동안 입출력 요청이 없는 경우, 백그라운드 시간으로 판정될 수 있다. 파일 시스템으로부터 입출력 요청이 있는 경우, 백그라운드 시간은 중단된다. 병합 동작이 백그라운드 시간에 수행됨으로써, 병합에 걸리는 시간이 단축될 수 있다.
도 8는 본 발명의 다른 실시 예에 따른 자유 블록의 개수를 한 개로 유지하는 배드 블록의 처리 방법을 나타낸다. 도 8(a)는 로그 블록이 배드 블록으로 판별된 경우에 단순 병합이 수행되는 것을 나타낸다. 도 8(b)는 병합이 수행되는 과정에서 메모리 블록의 변환 및 대체를 설명하는 도면이다. 도 8(c)는 병합 및 대체가 수행된 후의 메모리 셀 어레이의 상태를 나타낸다.
도 8(a)를 참조하면, 메모리 셀 어레이(800)는 로그 블록(811~818), 하나의 자유 블록(819) 그리고 데이터 블록(820~829)을 포함한다. 데이터는 로그 블록 (818)에 저장되려 한다. 본 발명에 따른 실시 예에 있어서, 도 8(a)는 로그 블록(818)이 배드 블록으로 판별된 경우를 나타낸다. 배드 블록의 판별은 블록의 소거 후에 그 결과에 의하여 판별될 수 있다. 배드 블록은 빗금으로 표시되어 있다.
로그 블록(818)이 배드 블록으로 판별되면, 데이터 블록과 이에 대응하는 로그 블록들 사이에서 병합가능한 블록이 존재하는지 여부가 검출(detect)된다. 도 8(a)는 로그 블록(812)와 데이터 블록(821)이 단순 병합 가능하다고 가정한다. 단순 병합은 데이터 블록의 유효한 페이지들과 로그 블록의 유효한 페이지들을 자유 블록에 복사함으로써 수행된다.
먼저 데이터 블록(821)의 유효 페이지들 및 로그 블록(812)의 유효 페이지들이 자유 블록(819)에 복사된다. 따라서 데이터 블록(821) 및 로그 블록(812)은 지우기 가능 상태가 된다. 지우기 가능 상태 블록들은 소거 동작에 의하여 데이터가 소거된다.
도 8(b)를 참조하면, 플래시 변환 계층의 맵핑 테이블의 갱신에 의하여 병합에 사용된 블록들이 다른 블록들로 변환된다. 이후 배드 블록은 병합에 의하여 생성된 자유 블록으로 대체된다.
먼저, 맵핑 테이블의 갱신에 의하여, 유효 페이지가 저장된 자유 블록 (819)은 데이터 블록으로 변환된다. 맵핑 테이블의 갱신에 의하여, 로그 블록(812) 및 데이터 블록(821)은 자유 블록으로 변환된다.
이후, 대체에 의하여 배드 블록(818)은 병합 동작에 의하여 생성된 자유 블 록과 대체된다. 본 발명에 따른 실시 예에 있어서, 배드 블록(818)은 자유 블록(812)로 대체된다. 즉, 배드 블록(818)에 저장될 데이터는 자유 블록(812)에 저장된다. 이 후 플래시 변환 계층은 배드 블록(818)에 대응하는 논리 주소를 자유 블록(812)의 물리 주소에 맵핑되도록 한다.
도 8(c)를 참조하면, 병합 및 대체가 수행된 후에 자유 블록의 개수는 한 개로 유지된다. 상술한 병합 및 대체 방법을 요약하면, 병합 동작에 의하여 자유 블록(819)는 유효 페이지를 저장한다. 이 후 맵핑 테이블의 갱신에 의하여, 자유 블록(819)은 데이터 블록으로 변환된다. 병합 동작에 의하여 로그 블록(812) 및 데이터 블록(821)은 지우기 가능 상태가 된다. 이후 소거 동작 및 맵핑 테이블의 갱신에 의하여 로그 블록(812) 및 데이터 블록(821)은 자유 블록들로 변환된다. 병합 동작 이후에는 대체 동작이 수행된다. 대체 동작에 의하여, 배드 블록(818)은 자유 블록(812)로 대체된다.
자유 블록의 기준 개수를 살펴보면, 병합 동작 및 대체 동작이 수행되기 전에 자유 블록의 개수는 한 개이다. 로그 블록이 배드 블록으로 판별되면, 단순 병합이 수행된다. 해당 자유 블록은 단순 병합 과정에서 사용된다. 단순 병합에 의하여 하나의 데이터 블록 및 하나의 로그 블록이 자유 블록들로 변환된다. 이후 대체동작에 의하여, 병합에 의하여 생성된 하나의 자유 블록이 배드 블록을 대체한다.따라서, 자유 블록의 개수는 한 개로 유지된다.
상술한 방법에 의하여, 메모리 셀 어레이(800)는 별도의 예비 블록 없이 배드 블록을 자유 블록으로 대체할 수 있다. 또한, 자유 블록의 개수를 한 개로 유지 함으로써, 배드 블록이 발생한 경우에 단순 병합 동작과 이후의 대체 동작이 원활히 수행된다.
한편, 본 발명에 따른 실시 예에 있어서, 자유 블록의 기준 개수는 한 개인 경우를 가정하였다. 그러나 본 발명에 있어서 기준 개수는 상황에 따라 다양하게 변경될 수 있다. 예시적으로 배드 블록이 연속하여 두 개가 발생한 경우에는 자유 블록은 적어도 두 개가 필요할 수 있다. 이 경우 기준 개수는 적어도 두 개 이상이다.
도 9는 도 7에 도시된 병합 과정을 설명하기 위한 순서도이다.
S110 단계에서는, 자유 블록(free block)의 개수가 계산된다. 병합 동작의 수행 여부는 판단된 자유 블록의 개수와 기준 개수를 비교하여 결정된다. 자유 블록의 개수가 기준 개수 미만인지의 여부는 S120 단계에서 진행된다.
S120 단계에서는, 자유 블록의 개수와 기준 개수를 비교하여 병합 동작의 수행 여부가 결정된다. 자유 블록의 개수가 기준 개수보다 많은 경우에 병합은 수행되지 않는다. 그러나 자유 블록의 개수가 기준 개수보다 적은 경우, 기준 개수 이상의 자유 블록을 유지하기 위하여 병합 동작이 수행된다. 병합 동작은 S130 단계에서 진행된다.
S130 단계에서는, 자유 블록의 개수를 기준 개수 이상으로 유지하기 위하여 병합 동작이 수행된다. 자유 블록의 개수가 기준 개수보다 한 개가 적은 경우, 병합은 적어도 한번 수행된다. 자유 블록의 개수가 기준 개수보다 두 개가 적은 경우, 병합은 적어도 두 번 수행된다.
한편, 본 단계에 있어서 병합 방법은 단순 병합, 교환 병합 그리고 복사 병합을 포함한다. 단순 병합의 경우, 로그 블록과 데이터 블록의 유효 페이지들이 자유 블록에 저장된다. 로그 블록과 데이터 블록은 지우기 가능 상태가 된다. 병합에 사용된 블록들은 맵핑 테이블의 갱신에 의하여 다른 블록들로 변환된다. 이는 S130 단계에서 진행된다.
S140 단계에서는, 맵핑 테이블이 갱신된다. 단순 병합의 경우, 플래시 변환 계층은 맵핑 테이블을 갱신하여 유효 페이지들이 저장된 자유 블록을 데이터 블록으로 변환시킨다. 병합에 사용된 로그 블록 및 데이터 블록은 자유 블록으로 변환된다.
상술한 단계들에 의하여, 메모리 셀 어레이는 기준 개수 이상의 자유 블록을 포함한다. 따라서, 배드 블록이 발생한 경우, 대체 및 병합 동작이 원활히 수행된다. 따라서 메모리 셀 어레이는 예비 블록 없이 배드 블록을 처리할 수 있다.
도 10은 도 1에 도시된 플래시 메모리를 포함하는 메모리 시스템을 보여주는 블록도이다. 본 발명의 실시 예에 따른 메모리 시스템(1300)은 불휘발성 메모리 장치(1330) 및 컨트롤러(1310)를 포함한다.
컨트롤러(1310)는 호스트(Host) 및 불휘발성 메모리 장치(1330)에 연결된다. 컨트롤러(1310)는 불휘발성 메모리 장치(1330)로부터 읽은 데이터를 호스트(Host)에 전달하고, 호스트(Host)로부터 전달되는 데이터를 불휘발성 메모리 장치(1330)에 저장한다.
컨트롤러(1310)는 램, 프로세싱 유닛, 호스트 인터페이스, 그리고 메모리 인 터페이스와 같은 잘 알려진 구성 요소들을 포함할 것이다. 램은 프로세싱 유닛의 동작 메모리로서 이용될 것이다. 프로세싱 유닛은 컨트롤러(1310)의 제반 동작을 제어할 것이다. 호스트 인터페이스는 호스트(Host) 및 컨트롤러(1310) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 것이다. 예시적으로, 컨트롤러(1310)는 USB, MMC, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI, 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(호스트)와 통신하도록 구성될 것이다. 메모리 인터페이스는 불휘발성 메모리 장치(1330)와 인터페이싱할 것이다. 컨트롤러(1310)는 오류 정정 블록을 추가적으로 포함할 수 있다. 오류 정정 블록은 불휘발성 메모리 장치(1330)로부터 읽어진 데이터의 오류를 검출하고, 정정할 것이다.
불휘발성 메모리 장치(1330)는 데이터를 저장하기 위한 메모리 셀 어레이, 메모리 셀 어레이에 데이터를 기입 및 독출하기 위한 읽기/쓰기 회로, 외부로부터 전달되는 어드레스를 디코딩하여 읽기/쓰기 회로에 전달하는 어드레스 디코더, 불휘발성 메모리 장치(1330)의 제반 동작을 제어하기 위한 제어 로직 등을 포함할 것이다.
컨트롤러(1310) 및 불휘발성 메모리 장치(1330)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(1310) 및 불휘발성 메모리 장치(1330)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 것이다. 예를 들면, 컨트롤러(1310) 및 불휘발성 메모리 장치(1330)는 하나의 반도체 장치로 집적되어 PC 카 드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM/SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD), 유니버설 플래시 기억장치(UFS) 등을 구성할 것이다.
다른 예로서, 컨트롤러(1310) 및 불휘발성 메모리 장치(1330)는 하나의 반도체 장치로 집적되어 반도체 디스크/드라이브(SSD, Solid State Disk/Drive)를 구성할 것이다. 메모리 시스템(1300)이 반도체 디스크(SSD)로 이용되는 경우, 메모리 시스템(1300)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선될 것이다.
다른 예로서, 메모리 시스템(1300)은 PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 디지털 뮤직 플레이어(digital music player), 또는 정보를 무선 환경에서 송수신할 수 있는 장치들에 적용될 것이다.
다른 예로서, 불휘발성 메모리 장치(1330) 또는 메모리 시스템(1300)은 다양한 형태들의 패키지로 실장 될 수 있다. 예를 들면, 불휘발성 메모리 장치(1330) 또는 메모리 시스템(1300)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 것이다.
도 11은 도 10에 도시된 메모리 시스템(1300)을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다. 도 11을 참조하면, 컴퓨팅 시스템(1000)은 중앙처리장치(1100), 랜덤 액세스 메모리(1200), 그리고 메모리 시스템(1300)를 포함한다.
메모리 시스템(1300)은 플래시 메모리를 포함할 수 있다. 플래시 메모리는 복수의 메모리 셀을 포함한다. 메모리 셀들의 집합은 메모리 셀 어레이(memory cell array)로 불린다. 메모리 셀 어레이는 복수의 메모리 블록들(memory blocks)로 구성된다. 각각의 메모리 블록은 복수의 페이지들(pages)로 구성된다. 각각의 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀들로 구성된다.
플래시 메모리는 읽기(read) 동작 및 쓰기(program) 동작의 단위와 소거(erase) 동작의 단위가 다르다. 즉, 플래시 메모리는 페이지 단위로 읽기 동작 및 쓰기 동작을 수행한다. 플래시 메모리는 메모리 블록 단위로 소거 동작을 수행한다. 또한 플래시 메모리(1300)는 다른 반도체 메모리와 달리 덮어쓰기(overwrite)를 지원하지 않는다. 따라서 플래시 메모리(1300)는 쓰기 동작 전에 소거 동작을 수행한다.
플래시 메모리의 이와 같은 특성으로 인해, 플래시 메모리(1300)를 하드디스크처럼 사용하기 위해서는, 읽기, 쓰기, 및 소거 동작에 대한 별도의 관리가 필요하다. 플래시 변환 계층(FTL; Flash Translation Layer)은 이러한 목적으로 사용된다. 플래시 변환 계층(FTL)은 랜덤 액세스 메모리(1200)상에서 구동된다.
한편 메모리 시스템(1300)이 반도체 디스크 장치(SSD)로 장착되는 경우, 컴퓨팅 시스템(1000)의 부팅 속도가 획기적으로 빨라질 수 있다. 도면에 도시되지 않았지만, 본 발명에 따른 시스템은 응용 칩셋(Application Chipset), 카메라 이미지 프로세서(Camera Image Processor) 등을 더 포함할 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
도 1은 본 발명의 실시 예에 따른 플래시 메모리를 보여주는 블록도이다.
도 2는 일반적인 플래시 메모리의 메모리 셀 어레이의 구조를 나타낸다.
도 3은 본 발명의 실시 예에 따른 메모리 셀 어레이의 구조를 나타낸다.
도 4(a)는 데이터 블록이 배드 블록으로 판별된 경우의 배드 블록의 처리 방법을 나타낸다.
도 4(b)는 대체가 이루어지고 난 후의 메모리 셀 어레이를 나타낸다.
도 5(a)는 메모리 셀 어레이의 자유 블록이 배드 블록으로 판별된 경우의 처리 방법을 나타낸다.
도 5(b)는 대체가 이루어지고 난 후의 메모리 셀 어레이를 나타낸다.
도 6(a)는 마지막 자유 블록이 배드 블록인 경우에 병합(merge)에 의하여 자유 블록을 생성하는 것을 나타낸다.
도 6(b)는 병합에 의하여 생성된 자유 블록으로 배드 블록을 대체하는 것을 나타낸다.
도 6(c)는 병합과 대체가 이루어지고 난 후의 메모리 셀 어레이를 나타낸다.
도 7(a)는 배드 블록을 자유 블록으로 대체하는 것을 설명한다.
도 7(b)는 자유 블록을 이용하여 병합이 수행되는 과정을 설명한다.
도 7(c)는 병합이 수행되는 과정에서의 메모리 블록의 변환를 설명한다.
도 7(d)는 대체와 병합이 수행되고 난 후의 메모리 셀 어레이를 나타낸다.
도 8(a)는 로그 블록이 배드 블록으로 판별된 경우에 단순 병합이 수행되는 것을 나타낸다.
도 8(b)는 병합이 수행되는 과정에서 메모리 블록의 변환 및 대체를 설명하는 도면이다.
도 8(c)는 병합 및 대체가 수행된 후의 메모리 셀 어레이의 상태를 나타낸다.
도 9는 도 7에 도시된 병합 과정을 설명하기 위한 순서도이다.
도 10은 도 1에 도시된 플래시 메모리를 포함하는 메모리 시스템을 보여주는 블록도이다.
도 11은 도 10에 도시된 메모리 시스템(1300)을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.

Claims (9)

  1. 사용자 데이터를 저장하기 위한 제 1 메모리 영역; 및
    상기 제 1 메모리 영역 이외의 제 2 메모리 영역을 포함하되,
    상기 제 2 메모리 영역은 예비 블록을 포함하지 않는 불휘발성 메모리 장치.
  2. 제 1 항에 있어서,
    상기 제 1 메모리 영역은 복수의 데이터 블록을 포함하고;
    상기 제 2 메모리 영역은 데이터 블록에 결함이 발생한 경우에 대체하기 위한 적어도 하나의 자유 블록을 포함하고, 상기 자유 블록은 예비 블록을 대신하는 불휘발성 메모리 장치.
  3. 제 2 항에 있어서,
    상기 제 2 메모리 영역은 제 1 자유 블록에 결함이 발생한 경우에, 상기 제 1 자유 블록을 대체할 수 있는 제 2 자유 블록을 포함하는 불휘발성 메모리 장치.
  4. 제 2 항에 있어서,
    상기 제 2 메모리 영역은 데이터 블록을 갱신하기 위한 적어도 하나의 로그 블록을 더 포함하고, 상기 로그 블록에 결함이 발생한 경우에 상기 자유 블록으로 대체되는 불휘발성 메모리 장치.
  5. 제 2 항에 있어서,
    상기 자유 블록은 상기 복수의 데이터 블록이 모두 사용된 경우에 사용자 데이터를 저장할 수 있는 불휘발성 메모리 장치.
  6. 제 5 항에 있어서,
    상기 데이터 블록 또는 상기 로그 블록의 병합 동작을 통해, 상기 자유 블록의 개수는 일정하게 유지되는 불휘발성 메모리 장치.
  7. 제 6 항에 있어서,
    상기 데이터 블록의 대체 동작이 수행되고 난 후에, 상기 데이터 블록 또는 상기 로그 블록의 병합 동작이 수행되는 경우에, 상기 자유 블록의 개수는 적어도 두 개로 유지되는 불휘발성 메모리 장치.
  8. 제 6 항에 있어서,
    상기 데이터 블록 또는 상기 로그 블록의 병합 동작이 수행되고 난 후에, 상기 데이터 블록의 대체 동작이 수행되는 경우에, 상기 자유 블록의 개수는 적어도 하나로 유지되는 불휘발성 메모리 장치.
  9. 제 7항에 있어서,
    상기 데이터 블록 또는 상기 로그 블록의 병합 동작은 자유 블록의 개수를 체크하여, 자유 블록의 개수가 기준개수 미만일 경우에 수행되는 불휘발성 메모리 장치.
KR1020090013570A 2009-02-18 2009-02-18 예비 블록을 포함하지 않는 불휘발성 메모리 장치 KR20100094241A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090013570A KR20100094241A (ko) 2009-02-18 2009-02-18 예비 블록을 포함하지 않는 불휘발성 메모리 장치
US12/656,718 US20100211820A1 (en) 2009-02-18 2010-02-16 Method of managing non-volatile memory device and memory system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090013570A KR20100094241A (ko) 2009-02-18 2009-02-18 예비 블록을 포함하지 않는 불휘발성 메모리 장치

Publications (1)

Publication Number Publication Date
KR20100094241A true KR20100094241A (ko) 2010-08-26

Family

ID=42560925

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090013570A KR20100094241A (ko) 2009-02-18 2009-02-18 예비 블록을 포함하지 않는 불휘발성 메모리 장치

Country Status (2)

Country Link
US (1) US20100211820A1 (ko)
KR (1) KR20100094241A (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110289349A1 (en) * 2010-05-24 2011-11-24 Cisco Technology, Inc. System and Method for Monitoring and Repairing Memory
US9502139B1 (en) * 2012-12-18 2016-11-22 Intel Corporation Fine grained online remapping to handle memory errors
KR102002901B1 (ko) * 2013-01-28 2019-07-23 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 이의 제어 방법
KR20140142035A (ko) * 2013-06-03 2014-12-11 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작방법
US9208074B2 (en) * 2013-08-30 2015-12-08 Silicon Motion, Inc. Updating address mapping in sub-intervals in a flash memory data storage device
KR20150033859A (ko) * 2013-09-25 2015-04-02 삼성전자주식회사 반도체 메모리 장치 및 메모리 시스템
CN104615550B (zh) * 2015-01-27 2019-01-18 华为技术有限公司 一种存储设备坏块的处理方法、装置及存储设备
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
KR20190052754A (ko) * 2017-11-09 2019-05-17 삼성전자주식회사 적응적 온-다이 에러 체크 및 정정을 위한 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
TWI664528B (zh) * 2018-06-06 2019-07-01 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
CN110609795B (zh) * 2018-06-14 2022-11-22 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US10795604B2 (en) * 2018-07-23 2020-10-06 Western Digital Technologies, Inc. Reporting available physical storage space of non-volatile memory array
FR3089317A1 (fr) * 2018-12-03 2020-06-05 Stmicroelectronics (Rousset) Sas Procédé de gestion de l’espace mémoire d’un dispositif de mémoire et système correspondant
US10891077B2 (en) * 2018-12-26 2021-01-12 Macronix International Co., Ltd. Flash memory device and controlling method thereof
CN113485948B (zh) * 2021-06-29 2023-11-14 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51127626A (en) * 1975-04-30 1976-11-06 Hitachi Ltd Information processor
US4475194A (en) * 1982-03-30 1984-10-02 International Business Machines Corporation Dynamic replacement of defective memory words
KR0152914B1 (ko) * 1995-04-21 1998-12-01 문정환 반도체 메모리장치
KR100308173B1 (ko) * 1996-02-29 2001-11-02 가나이 쓰도무 부분불량메모리를탑재한반도체기억장치
US5828599A (en) * 1996-08-06 1998-10-27 Simtek Corporation Memory with electrically erasable and programmable redundancy
JP4316085B2 (ja) * 1999-12-28 2009-08-19 株式会社東芝 半導体集積回路装置及び集積回路システム
US7517231B2 (en) * 2004-11-16 2009-04-14 Super Talent Electronics, Inc. Solid state drive (SSD) with open top and bottom covers
KR100966895B1 (ko) * 2004-01-06 2010-06-30 삼성전자주식회사 불휘발성 메모리의 테스트 장치 및 방법
JP2005327337A (ja) * 2004-05-12 2005-11-24 Matsushita Electric Ind Co Ltd 半導体記憶装置
KR100572328B1 (ko) * 2004-07-16 2006-04-18 삼성전자주식회사 배드 블록 관리부를 포함하는 플래시 메모리 시스템
US7221603B2 (en) * 2005-05-12 2007-05-22 Micron Technology, Inc. Defective block handling in a flash memory device
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
JP4447533B2 (ja) * 2005-08-11 2010-04-07 富士通マイクロエレクトロニクス株式会社 不良ビットを救済する半導体メモリ
DE102005046981B4 (de) * 2005-09-30 2010-04-15 Qimonda Ag Speicher und Verfahren zum Verbessern der Zuverlässigkeit eines Speichers mit einem benutzten Speicherbereich und einem unbenutzten Speicherbereich
JP4936271B2 (ja) * 2006-01-20 2012-05-23 株式会社メガチップス 半導体記憶装置
US7949908B2 (en) * 2006-10-11 2011-05-24 Marvell Israel (M.I.S.L) Ltd. Memory repair system and method
US8086913B2 (en) * 2008-09-11 2011-12-27 Micron Technology, Inc. Methods, apparatus, and systems to repair memory

Also Published As

Publication number Publication date
US20100211820A1 (en) 2010-08-19

Similar Documents

Publication Publication Date Title
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
US8621139B2 (en) Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same
US8606987B2 (en) Data writing method for flash memory and controller using the same
US8001317B2 (en) Data writing method for non-volatile memory and controller using the same
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
US9164833B2 (en) Data storage device, operating method thereof and data processing system including the same
KR102233400B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
JP2007004234A (ja) ストレージ装置
US8516184B2 (en) Data updating using mark count threshold in non-volatile memory
US20100217920A1 (en) Memory system and address allocating method of flash translation layer thereof
JPWO2007119267A1 (ja) フラッシュメモリ用のメモリコントローラ
US8819350B2 (en) Memory system
JP2008146253A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
US9619380B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
TWI459198B (zh) 記憶體儲存裝置、其記憶體控制器與有效資料識別方法
TWI451439B (zh) 記憶體儲存裝置、其記憶體控制器與資料寫入方法
KR20170111386A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20160074025A (ko) 데이터 저장 장치의 동작 방법
CN107590080B (zh) 映射表更新方法、存储器控制电路单元及存储器存储装置
KR20200137244A (ko) 메모리 시스템 및 그것의 동작방법
US10558562B2 (en) Data storage device and operating method thereof
CN113885808B (zh) 映射信息记录方法以及存储器控制电路单元与存储装置
US10691352B2 (en) Data storage device and method of operating the same
TWI651650B (zh) 記憶體管理方法及使用所述方法的儲存控制器

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid