KR20110073942A - 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 - Google Patents

예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 Download PDF

Info

Publication number
KR20110073942A
KR20110073942A KR1020090130753A KR20090130753A KR20110073942A KR 20110073942 A KR20110073942 A KR 20110073942A KR 1020090130753 A KR1020090130753 A KR 1020090130753A KR 20090130753 A KR20090130753 A KR 20090130753A KR 20110073942 A KR20110073942 A KR 20110073942A
Authority
KR
South Korea
Prior art keywords
block
error
correctable
replacement
pointer
Prior art date
Application number
KR1020090130753A
Other languages
English (en)
Other versions
KR101090394B1 (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 KR1020090130753A priority Critical patent/KR101090394B1/ko
Priority to US12/839,325 priority patent/US8370680B2/en
Priority to TW099140356A priority patent/TWI501252B/zh
Publication of KR20110073942A publication Critical patent/KR20110073942A/ko
Application granted granted Critical
Publication of KR101090394B1 publication Critical patent/KR101090394B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents

Abstract

반도체 스토리지 시스템은, 복수의 메모리 블록을 포함하며, 상기 메모리 블록 내 에러 블록 발생시 상기 에러 블록에 대응되는 교체용 블록들을 포함하는 플래시 메모리 영역, 및 상기 에러 블록을 상기 교체용 블록으로 교체되도록 제어하는 메모리 컨트롤러를 포함하며, 상기 에러 블록은 정정 가능 블록 및 정정 불가 블록을 포함하고, 상기 메모리 컨트롤러는 상기 에러 블록이 정정 가능 블록 및 정정 불가 블록인지 여부를 판단하여, 상기 정정 가능 블록에 대응되어 교체된 상기 교체용 블록의 영역은 복수 횟수로 할당되도록 제어한다.
플래시 메모리, 할당, 불량 블록

Description

예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법{Solid State Storage System For Controlling of Reserved Area Flexibly and Method of Controlling the Same}
본 발명은 반도체 스토리지 시스템 및 그 제어 방법에 관한 것으로서, 보다 구체적으로는 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법에 관한 것이다.
일반적으로 비휘발성 메모리를 많은 휴대용 정보 기기의 저장용 메모리로 사용하고 있다. 더 나아가, 최근에는 PC(Personal Computer)에서 HDD(Hard Disk Drive)를 대신하여 낸드(NAND) 플래시 메모리를 사용한 SSD(Solid State Drive)가 출시되고 있어 급속도로 HDD 시장을 잠식할 것으로 전망되고 있다.
이러한 SSD를 사용하다 보면 불량 블록이 발생될 수 있다. 불량 블록은 플래시 메모리의 공정 결함에 의해 발생할 수 있고, 잦은 동작으로 인해 플래시 메모리 셀의 열화 특성에 기인할 수도 있다. 이러한 불량 블록은 예비 영역의 블록으로 대체되도록 하여 불량 블록의 물리적 영역이 다시 참조되지 않도록 해야 한다. 이를 위해, 예비 영역 공간을 할당한다. 즉, 별도의 물리적 영역을 할당하여 불량 블록 의 교체 전용으로 이용하도록 하고 있다.
본 발명의 기술적 과제는 불량 블록을 관리하는 반도체 스토리지 시스템을 제공하는 것이다.
본 발명의 다른 기술적 과제는 불량 블록을 관리하는 반도체 스토리지 시스템의 제어 방법을 제공하는 것이다.
본 발명의 기술적 과제를 달성하기 위하여, 본 발명의 일 실시예에 따른 반도체 스토리지 시스템은, 복수의 메모리 블록을 포함하며, 상기 메모리 블록 내 에러 블록 발생시 상기 에러 블록에 대응되는 교체용 블록들을 포함하는 플래시 메모리 영역, 및 상기 에러 블록을 상기 교체용 블록으로 교체되도록 제어하는 메모리 컨트롤러를 포함하며, 상기 에러 블록은 정정 가능 블록 및 정정 불가 블록을 포함하고, 상기 메모리 컨트롤러는 상기 에러 블록이 정정 가능 블록 및 정정 불가 블록인지 여부를 판단하여, 상기 정정 가능 블록에 대응되어 교체된 상기 교체용 블록의 영역은 복수 횟수로 할당되도록 제어한다.
본 발명의 다른 기술적 과제를 달성하기 위하여, 반도체 스토리지 시스템의 제어 방법은, 에러 블록이 정정 가능 블록 및 정정 불가 블록인지 판단하는 단계, 상기 에러 블록이 정정 불가 블록이면 교체용 블록의 논리적 어드레스 최대값으로부터 감소되는 논리적 어드레스에 대응되는 블록으로 순차적으로 영역을 할당하도록 제어하는 단계; 및 상기 에러 블록이 정정 가능 블록이면 상기 교체용 블록의 논리적 어드레스 최소값으로부터 증가되는 논리적 어드레스에 대응되는 블록으로 순차적으로 영역을 할당하도록 제어하는 단계를 포함한다.
이하에서는 본 발명의 일 실시예에 따른 반도체 스토리지 시스템에 대하여 첨부된 도면을 참조하여 설명하도록 한다.
먼저, 도 1을 참조하여, 본 발명의 실시예에 따른 반도체 스토리지 시스템에 대해서 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 반도체 스토리지 시스템(100)의 블록도이다. 여기서, 반도체 스토리지 시스템(100)은 낸드 플래시 메모리를 이용한 스토리지 시스템으로 예시한다.
도 1을 참조하면, 반도체 스토리지 시스템(100)은 호스트 인터페이스(110), 버퍼부(120), MCU(130), 메모리 컨트롤러(140) 및 메모리 영역(150)을 포함한다.
우선, 호스트 인터페이스(110)는 버퍼부(120)와 연결된다. 호스트 인터페이스(110)는 외부 호스트 (미도시)와 버퍼부(120)간에 제어 명령, 어드레스 신호 및 데이터 신호를 송수신한다. 호스트 인터페이스(110)와 외부 호스트 (미도시)간의 인터페이스 방식은 직렬 ATA(Serial Advanced Technology Attachment;SATA), 병렬 ATA(Parallel Advanced Technology attachment;PATA) 및 SCSI, Express Card, PCI-Express 방식 중 어느 하나일 수 있으며 제한되지 않는다.
버퍼부(120)는 호스트 인터페이스(110)로부터의 출력 신호들을 버퍼링하거나, 논리적 어드레스 및 물리적 어드레스간의 맵핑 정보 및 메모리 영역의 블록 할 당 정보, 외부로부터 수신된 데이터를 임시 저장한다. 버퍼부(120)는 SRAM(Static Random Access Memory)을 이용한 버퍼일 수 있다.
MCU(Micro Control Unit; 130)는 호스트 인터페이스(110)간에 제어 명령, 어드레스 신호 및 데이터 신호등을 송수신하거나, 이러한 신호들에 의해 메모리 컨트롤러(140)를 제어하기도 한다.
메모리 컨트롤러(140)는 메모리 영역(150)의 복수개의 낸드 플래시 메모리 소자 중 소정 낸드 플래시 메모리 소자(ND)를 선택하고, 라이트, 삭제 또는 리드 명령을 제공한다. 특히, 본 발명의 일 실시예에 따른 메모리 컨트롤러(140)는 불량 블록 발생 대비를 위한 예비 영역을 유동적으로 관리할 수 있다.
통상, 각 블록마다 불량 블록에 대응할 소정 사이즈의 예비 영역을 미리 할당한다. 그리하여, 불량 블록을 예비 영역의 블록으로 교체하고, 불량 블록을 다시 참조하지 않도록 마킹(marking)처리 한다.
그러나, 데이터 블록(미도시)의 여러 동작중 오류(error)가 발생할 경우, 본 발명의 일 실시예에 따른 메모리 컨트롤러(140)는 불량 블록뿐 아니라, 추후 불량 블록이 될 가능성이 높은 블록까지 포함하여 예비 영역내에서 교체되도록 제어한다. 여기서, 메모리 컨트롤러(140)는 ECC 엔진(Error Check Correction Engine; 미도시)을 포함하는 것으로 예시한다. 그리하여, 데이터의 리드 및 라이트 도중 오류가 발생시, 메모리 컨트롤러(140)는 에러 발생 블록에 대해 ECC엔진(미도시)을 이용해 에러를 정정하도록 한다. 이 때, ECC 엔진을 통해 에러 발생 블록의 정정 가능한 경우와 정정 가능하지 않은 경우가 발생할 수 있는데, 본 발명의 일 실시예에 서는 이러한 상기의 두 경우를 모두 포함하여 이미 정정이 된 경우라 하더라도, 예비 영역중 일부 영역을 할당하여 교체하여 관리하도록 한다.
잘 아는 바와 같이, 종래에는 에러 발생 블록에 대해 ECC 엔진을 통해 정정 불가한 경우에만 불량 블록으로 선정하여 예비 영역에서 교체를 수행했다. 만약, 에러가 발생했다 하더라도 ECC 엔진으로 정정가능하면 데이터 영역내 프리 블록(free block)을 이용해 교체를 수행했다.
하지만, 본 발명의 일 실시예에 따르면, 데이터 블록의 리드 및 라이트시 에러가 발생한 경우에는, 메모리 컨트롤러(140)는 에러 발생 블록은 모두 예비 영역에서 교체하도록 한다. 이 때, 메모리 컨트롤러(140)는, 에러 발생 블록에 대해 ECC를 통해 정정이 된 경우와 정정 불가한 경우로 구분하여 예비 영역에서 교체하도록 한다. 특히, 정정이 된 상태로 교체된 예비 영역내 블록들은, 이후 재사용 여부를 검토하여 예비 영역의 자원을 충분히 활용하도록 할 수 있다. 이로써, 본 발명의 일 실시예에 따르면 예비 영역에 대한 이용 효율을 제고시킬 수 있다. 이에 대한 자세한 설명은 후술하기로 한다.
메모리 영역(150)은 메모리 컨트롤러(140)에 의해 제어되어 데이터의 라이트, 삭제 및 리드 동작이 수행된다. 여기서, 메모리 영역(150)은 낸드(NAND) 플래시 메모리일 수 있다. 본 발명의 일 실시예에서는 낸드(NAND) 플래시 메모리의 셀은 SLC(Single Level Cell) 또는 MLC(Multi Level Cell) 일 수 있다. 이러한 메모리 영역(150)은 다수의 페이지를 포함하는 다수의 블록으로 구성된 칩이 복수개 구비될 수 있다.
도 2는 도 1에 따른 데이터 영역 및 예비 영역을 개념적으로 도시한 블록도이다.
도 2를 참조하면, 데이터 영역(DA)은 논리적 어드레스를 갖는 복수개의 블록들을 포함한다. 예비 영역(RA) 또한 논리적 어드레스를 갖는 복수개의 블록들을 포함한다. 이 때, 본 발명의 일 실시예에 따른 예비 영역(RA)은 해당 영역내 블록들의 위치를 파악 또는 산출하도록 두개의 식별자, 예컨대 두개의 포인터(pointer)를 이용한다. 물론, 데이터 영역(DA) 및 예비 영역(RA)들은 논리적 어드레스에 대응되는 물리적 어드레스를 갖고 있다. 하지만, 데이터 영역(DA)만 웨어 레벨링 대상이되고, 예비 영역(RA)은 논리적, 물리적 어드레스를 갖고 있어도 교체 대상으로 참조용 어드레스일 뿐 웨어 레벨링 대상이 되지 않는다.
이러한 본 발명의 일 실시예에서는 예비 영역(RA)에 할당된 논리적 블록들의 논리적 어드레스의 최소값을 갖는 블록에 대응되어 초기화된 값을 갖는 스타트 포인터(start pointer; SP)를 할당한다. 이와 같이, 논리적 어드레스가 증가시, 이에 대응되는 스타트 포인터(SP)의 값도 증가한다. 즉, 논리적 어드레스 최소값이 100이라고 할 경우, 논리적 어드레스가 101, 102, 103..로 증가함에 따라, 스타트 포인터(SP)는 초기치, 예컨대 0보다 증가하도록 제어한다. 하지만, 스타트 포인터(SP)의 증가 범위 한계는 제한이 없이 가변적이다. 즉 논리적 어드레스의 최대값을 갖는 블록에 대응할 때까지 스타트 포인터(SP)도 증가할 수 있으나, 후술될 엔드 포인터(End Pointer;EP)에 의해 제한될 수 있다.
한편, 예비 영역(RA)에 할당된 논리적 블록들의 어드레스의 최대값을 갖는 블록에, 초기화된 엔드 포인터(end pointer; EP)를 할당한다. 스타트 포인터(SP)의 방식에 반하여, 논리적 블록들의 어드레스가 감소함에 따라 이에 대응되는 엔드 포인터(EP)의 값이 증가되도록 제어한다. 즉, 논리적 어드레스 최대값이 120이라고 할 경우, 논리적 어드레스가 119, 118, 117로 감소함에 따라, 엔드 포인터(EP)는 초기치, 예컨대 20보다 증가하도록 제어한다. 이러한 엔드 포인터(EP)의 증가 범위 한계는 제한없이 가변적이다. 즉 논리적 어드레스의 최소값을 갖는 블록에 대응할 때까지 엔드 포인터(EP)도 증가할 수 있으나, 전술한 스타트 포인터(SP)에 의해 제한될 수 있다.
물론, 스타트 포인터(SP)와 엔드 포인터(EP)의 초기치는 혼동되지 않도록 서로 다른 값을 주는 것이 바람직하다. 또한, 엔드 포인터(EP) 및 스타트 포인터(SP)는 각 이들에 대응되는 논리적 블록의 위치 정보를 알기 위함이므로, 포인터 값 자체의 초기치는 중요하지 않다. 이로써, 추가의 예비 영역에 대한 맵핑 정보 없이, 스타트 포인터(SP) 및 엔드 포인터(EP)를 이용함으로써 간단히 예비 영역(RA)에 대한 논리적 블록들의 위치 정보를 제공할 수 있다.
도 2를 계속 참조하여, 구체적으로 설명하면, 데이터 영역(DA)에서 예컨대 리드 모드시, 에러가 발생하였다면(①) ECC(미도시)를 이용해 정정을 시도한다. 이 때 에러 발생 블록이 정정이 되었다면, 즉 정정 가능한 블록으로서, 예비 영역(RA)의 소정 블록을 할당하여 교체를 수행한다. 본 발명의 일 실시예에 따르면, 에러 발생 블록이 정정 가능한 블록이었다면, 스타트 포인터(SP)를 이용해 예비 영역(RA)중 소정 블록을 할당하도록 한다. 그리고, 스타트 포인터(SP)를 십진수로 예 시할 때, 십진수의 '1'만큼 증가시킨다. 예컨대, 스타트 포인터(SP)의 초기치가 0이었다면, 정정 가능한 블록이 교체될 때마다 스타트 포인터(SP)도 점차적으로 1, 2, 3등의 증분된 포인터값을 갖도록 한다.
만약, 데이터 영역(DA)에서 예컨대 리드 모드시, 에러가 발생하였는데(②) ECC(미도시)를 이용해 정정을 시도해 보니, 정정 가능한 비트수를 초과해 정정 불가하다면 불량 블록으로 판정하고, 예비 영역(RA)의 소정 블록을 할당하여 교체를 수행한다. 본 발명의 일 실시예에 따르면, 에러 발생 블록이 정정 불가능한 블록이었다면, 엔드 포인터(EP)를 이용해 예비 영역(RA)중 소정 블록을 할당하도록 한다. 이 후, 엔드 포인터(EP)를 십진수로 예시할 때, 십진수의 '1'만큼 증가시킨다. 예컨대, 엔드 포인터(EP)의 초기치가 20이었다면, 점차적으로 21, 22, 23등으로 증가된 포인터값을 갖도록 한다.
본 발명의 일 실시예에서는, 정정 가능한 블록을 이후 에러가 발생할 소지가 있는 가능성이 높은 블록으로서 경고 블록(warning block)이라고 칭하기로 한다. 또한, 정정 불가 블록은 치유 불가능한 블록이므로, 치명적 블록(critical block)이라고 칭하기로 한다.
이와 같이, 본 발명의 일 실시예에 따르면, 예비 영역(RA)을 스타트 포인터(SP) 및 엔드 포인터(EP)를 이용함으로써 정정 가능한 블록들의 교체 블록과, 정정 불가능한 블록의 교체 블록으로서 구분하여 영역을 관리할 수 있다. 이들 포인터는 에러 발생 블록에 따라 갱신이 가변되므로, 미리 고정된 영역으로 관리되지 않아 예비 영역(RA)의 활용도면에서 유연성(flexibility)이 높다.
도 3은 도 1 및 도 2에 따라 예비 영역(RA)의 워닝 블록과 치명적 블록을 정의하는 스타트 포인터(SP)와 엔드 포인터(EP)가 동일해지는 경우를 개념적으로 도시한 블록도이다.
도 3을 참조하면, 데이터 영역(DA)에서 에러 발생 블록이 다수여서, 정정 가능 블록들의 수도 증가하고, 정정 불가 블록들의 수도 증가하는 경우를 예시적으로 나타내고 있다.
보다 구체적으로는, 정정 가능 블록들의 교체 영역을 정의할 수 있는 스타트 포인터(SP)가 지정하는 블록과 정정 불가능 블록들의 교체 영역을 정의할 수 있는 엔드 포인터(EP)가 지정하는 논리적 어드레스가 실질적으로 동일해졌을 때를 나타내고 있다.
이에 대해, 본 발명의 일 실시예에 따르면, 메모리 컨트롤러(도 1의 140 참조)는 스타트 포인터(SP)와 엔드 포인터(EP)가 지정하는 논리적 블록이 동일해질 경우, 스타트 포인터(SP)를 초기화시킨 후, 초기화된 스타트 포인터(SP)가 지정하는 예비 영역(RA)의 논리적 블록을 교체 블록 대상이 되도록 제어한다.
다시 말하면, 초기화된 스타트 포인터(SP)에 대응되는 논리적 어드레스의 최소값을 갖는 블록으로 교체 블록을 지정하여 교체를 수행한다.
이미 당업자라면 잘 아는 바와 같이, 새로운 블록에 라이트를 하기 위해서는, 라이트 전 삭제를 수행해야 한다. 따라서, 지정된 교체용 블록의 내용을 삭제한 후, 에러 발생 블록의 데이터를 삭제된 교체용 블록에 라이트 하도록 한 후, 에러 체크를 한다.
한편, 플래시 메모리 특성 상, 리드를 반복할 경우에는 순간적으로 전압이 소정 전압 이상으로 상승할 수 있다. 즉, 플래시 메모리 셀의 결함에 기인한 것이 아닌 리드 디스터번스(read disturbance)에 의한 오류가 발생할 수 있다. 따라서, 셀의 결함이 아닌 리드 디스터번스에 의한 오류였다면, 해당 메모리 셀에 대해 삭제를 수행할 경우 전압이 정상으로 회복되어 정상 셀처럼 동작할 수 있다.
도 4는 데이터 영역(DA)과 예비 영역(RA)의 어드레스 맵핑 테이블의 관계를 개념적으로 도시한 것이다.
도 4를 참조하면, 에러 발생된 블록, 즉 데이터 영역(DA)의 논리적 어드레스 맵핑 테이블이 (0, 10)이고, 이에 대응되어 정정 가능한 것으로 판별된 워닝 블록으로서 예비 영역(RA)의 (100, 500)으로 교체되었다면, 해당 에러 발생 블록의 어드레스 맵핑 테이블은 (0, 500)으로 교체되고, 예비 영역(RA)의 논리적 어드레스 맵핑 테이블은 (100, 10)으로 교체된다. 이 때, 예비 영역(RA)의 교체된 실질적 물리적 어드레스 10에는 에러가 발생된 데이터가 저장되어 있는 것이다.
이후, 정정 가능한 블록에 대해 스타트 포인터(SP)를 증가시키며 계속 예비 영역(RA)을 할당한다. 새로운 에러 발생된 블록 (20, 40)에 대해, 스타트 포인터(SP)로 새로운 영역을 할당하려고 하나, 상기 스타트 포인터(SP)와 엔드 포인터(EP)가 지정하는 논리적 블록이 동일해질 경우, 스타트 포인터(SP)를 초기화시킨다. 이는 스타트 포인터(SP)를 최소값의 논리적 어드레스에 대응되는 블록에 대응되도록 복귀시킴을 의미한다.
그리하여, 초기화된 스타트 포인터(SP)에 의해 예비 영역(RA)의 (100, 10)이 재할당된다. 이미 예비 영역(RA)의 (100, 10)에는 데이터 영역(DA)의 (0, 10)에 해당하는 가비지 데이터(garbage data)가 저장되어 있다. 일단, 예비 영역(RA)의 (100, 10)에 새로운 에러 발생된 블록 (20, 40)을 복사하고 에러 체크를 한다. 에러가 발생되지 않는다면, 새로운 에러 발생된 블록(20, 40)에 대해 예비 영역(RA)의 (100, 10)으로 교체가 가능하므로, 데이터 영역(DA)의 어드레스 맵핑 테이블을 (20, 10)으로, 예비 영역(RA)은 (100, 40)으로 어드레스 치환을 한다. 만약, 예비 영역(RA)의 (100, 10)에 데이터 영역(DA)의 (20, 40)을 복사하고 에러 체크를 할 경우, 에러가 발생되었다면, 데이터 영역(DA)의 (20, 40)은 현재 엔드 포인터(EP)를 증가시켜 치명적 불량 블록 영역으로 할당하여 처리하도록 한다.
이와 같이, 정정 가능 블록에 대응되어 교체된 블록도 삭제 후 재사용 가능할 수 있다. 하지만, 정정 가능 블록으로 할당하고 더 이상 잔여 블록이 없을 경우에는, 다시 정정 가능 블록에 대응되어 교체되었던 블록들 중 논리적 어드레스의 최소값을 갖는 블록부터 다시 정정 가능 블록의 교체용 블록으로 할당한다. 그리고 재할당된 블록에 대해 삭제 과정 중, 해당 블록의 셀들의 전압들이 정상으로 회복되어 치유된다면, 새로운 에러 발생 블록의 교체용 블록으로 이용할 수 있다. 하지만, 삭제 한 후에도 정정 가능 블록의 교체용 블록으로 이용시 에러가 발생되었다면 그 정정 가능 블록은 스킵(skip)하고 현재 엔드 포인터(EP)를 1 증가시킨 포인터값에 대응되는 블록으로 교체하여, 정정 불가 블록, 즉 치명적 블록으로서 관리하도록 한다.
도 5는 도 1에 따른 반도체 스토리지 시스템의 제어 방법을 나타낸 순서도이 다.
도 1 내지 도 5를 참조하면, 데이터 영역(DA)에서 에러 발생 시, 정정 가능 비트 초과 에러인지 여부를 판단한다(S10).
정정 가능 비트 초과 에러이면(Y), 치명적 블록으로서 간주되어, 예비 영역(RA)의 엔드 포인터(EP)를 이용해 예비 영역(RA)을 할당한다(S30).
해당 포인터인 엔드 포인터(EP)에 의해 할당된 영역을 삭제 후, 에러 발생 블록을 할당된 영역에 복사한다(S40).
에러 발생 블록의 어드레스 맵을 갱신한다(S50). 즉, 에러 발생 블록의 물리적 어드레스가 예비 영역(RA)의 소정 블록의 물리적 주소로 변경한다.
이후, 엔드 포인터(EP)를 증가시킨다(S60).
만약, 정정 가능 비트 초과 에러가 아니고(N), 정정 가능 비트 이내의 에러라면(Y), 워닝 블록으로서 간주되어(S70), 예비 영역(RA)의 스타트 포인터(SP)를 이용해 예비 영역(RA)을 할당한다(S80).
이어서, 예비 영역(RA)의 스타트 포인터(SP)를 이용해 예비 영역(RA)을 할당한 블록이, 엔드 포인터(EP)에 대응되는 블록과 일치하는지 여부를 판단한다(S90).
스타트 포인터(SP)에 대응되는 블록과 엔드 포인터(EP)에 대응되는 블록이 일치하지 않으면, 해당 포인터인 스타트 포인터(SP)에 의해 할당된 영역을 삭제 후(S30), 에러 발생 블록을 할당된 영역에 복사한다(S40).
에러 발생 블록의 어드레스 맵을 갱신한다(S50).
이후, 스타트 포인터(SP)를 증가시킨다(S60).
만약, 정정 가능 비트 초과 에러가 아니며(N), 정정 가능 비트 이내의 에러도 아니면(N) 에러 발생 블록이 아니므로 종료한다.
한편, 예비 영역(RA)의 스타트 포인터(SP)를 이용해 예비 영역(RA)을 할당한 블록이, 엔드 포인터(EP)에 대응되는 블록과 일치하는지 여부를 판단(S90)하여, 스타트 포인터(SP)에 대응되는 블록과 엔드 포인터(EP)에 대응되는 블록이 일치하면, 스타트 포인터(SP)를 초기화시킨다(S100). 그리하여, 예비 영역(RA)중 초기화된 스타트 포인터(SP)에 대응되는 최소값의 논리적 어드레스를 갖는 블록으로 대응시킨다.
그리고, 해당 포인터인 스타트 포인터(SP)에 의해 할당된 영역을 삭제 후(S110), 에러 발생 블록을 할당된 영역에 복사한다(S120). 이 때, 재사용하는 블록이므로, 교체된 블록의 에러 유무를 체크한다(S130).
에러가 없을 경우, 어드레스 맵핑 테이블을 갱신하고(S140) 스타트 포인터(SP)를 초기화된 값으로부터 1 증가시킨다(S150).
재사용하는 블록에 대해, 교체된 블록의 에러 유무를 체크하여(S130) 에러가 발생되었다면, 엔드 포인터(EP)를 증가시킨다(S160).
해당 포인터인 엔드 포인터(EP)에 의해 할당된 영역을 삭제하고(S170) 에러 발생 블록을 할당된 영역에 복사한다(S180).
이와 같이, 본 발명의 일 실시예에 따르면 예비 영역(RA)을 재사용 가능하도록 제어할 수 있다. 즉, 예비 영역(RA)은 불량 블록의 교체용으로도 이용될 수 있지만, 불량 발생 가능성이 높은 워닝성 블록의 교체용으로도 이용될 수 있다. 즉, 워닝성 블록으로 교체된 블록에 대해서는 삭제 과정을 통해 셀 전압들이 정상으로 회복된다면 재사용 가능하다. 이러한 예비 영역(RA)의 블록 선정을 위해 복수의 포인터를 이용해 간단히 선택 및 치환 가능하므로 반도체 스토리지 시스템의 제어가 용이하다.
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명의 일 실시예에 따른 반도체 스토리지 시스템의 블록도,
도 2는 도 1에 따른 데이터 영역(DA)과 예비 영역(RA)을 개념적으로 도시한 블록도,
도 3은 도 1 및 도 2에 따라 예비 영역의 스타트 포인터(SP)와 엔드 포인터(EP)가 동일해지는 경우를 개념적으로 도시한 블록도,
도 4는 데이터 영역(DA)과 예비 영역(RA)의 어드레스 맵핑 테이블의 관계를 도시한 개념도, 및
도 5는 도 1에 따른 반도체 스토리지 시스템의 제어 방법을 나타낸 플로우 차트이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 호스트 인터페이스 120: 버퍼부
130: MCU 140: 메모리 컨트롤러
150: 메모리 영역

Claims (16)

  1. 복수의 메모리 블록을 포함하며, 상기 메모리 블록 내 에러 블록 발생시 상기 에러 블록에 대응되는 교체용 블록들을 포함하는 플래시 메모리 영역; 및
    상기 에러 블록을 상기 교체용 블록으로 교체되도록 제어하는 메모리 컨트롤러를 포함하며,
    상기 에러 블록은 정정 가능 블록 및 정정 불가 블록을 포함하고, 상기 메모리 컨트롤러는 상기 에러 블록이 정정 가능 블록 및 정정 불가 블록인지 여부를 판단하여, 상기 정정 가능 블록에 대응되어 교체된 상기 교체용 블록의 영역은 복수 횟수로 할당되도록 제어하는 반도체 스토리지 시스템.
  2. 제 1항에 있어서,
    상기 메모리 컨트롤러는 상기 교체용 블록의 영역을 상기 정정 가능 블록에 대응되어 교체되는 영역과 상기 정정 불가 블록에 대응되어 교체되는 영역을 서로 다르게 분리하여 제어하도록 복수의 포인터를 설정하는 반도체 스토리지 시스템.
  3. 제 2항에 있어서,
    상기 복수의 포인터는,
    상기 교체용 블록의 논리적 어드레스의 최소값으로부터 증가함에 따라 증가하는 스타트 포인터(start pointer); 및
    상기 교체용 블록의 논리적 어드레스의 최대값으로부터 감소함에 따라 증가하는 엔드 포인터(end pointer)를 포함하는 반도체 스토리지 시스템.
  4. 제 3항에 있어서,
    상기 에러 블록이 정정 가능 블록이면, 상기 스타트 포인터를 이용해 영역을 할당하여 교체하는 반도체 스토리지 시스템.
  5. 제 3항에 있어서,
    상기 에러 블록이 정정 불가 블록이면, 상기 엔드 포인터를 이용해 영역을 할당하여 교체하는 반도체 스토리지 시스템.
  6. 제 3항에 있어서,
    상기 메모리 컨트롤러는, 상기 스타트 포인터와 상기 엔드 포인터가 지정하는 논리적 블록이 일치할 경우, 상기 스타트 포인터를 초기화시키는 반도체 스토리지 시스템.
  7. 제 6항에 있어서,
    상기 메모리 컨트롤러가 상기 스타트 포인터를 초기화시키는 것은 상기 스타트 포인터가 지정하는 논리적 블록이 상기 교체용 블록의 논리적 어드레스의 최소값의 블록이 되도록 제어하는 반도체 스토리지 시스템.
  8. 제 6항에 있어서,
    상기 메모리 컨트롤러는 새로운 정정 가능 블록에 대해서 상기 스타트 포인터와 상기 엔드 포인터가 지정하는 논리적 블록이 일치할 경우, 상기 스타트 포인터에 의해 기 할당된 논리적 블록을 재할당하도록 제어하는 반도체 스토리지 시스템.
  9. 에러 블록이 정정 가능 블록 및 정정 불가 블록인지 판단하는 단계;
    상기 에러 블록이 정정 불가 블록이면 교체용 블록의 논리적 어드레스 최대값으로부터 감소되는 논리적 어드레스에 대응되는 블록으로 순차적으로 영역을 할당하도록 제어하는 단계; 및
    상기 에러 블록이 정정 가능 블록이면 상기 교체용 블록의 논리적 어드레스 최소값으로부터 증가되는 논리적 어드레스에 대응되는 블록으로 순차적으로 영역을 할당하도록 제어하는 단계를 포함하는 반도체 스토리지 시스템의 제어 방법.
  10. 제 9항에 있어서,
    상기 에러 블록이 정정 불가 블록이면 상기 교체용 블록의 상기 논리적 어드레스 최대값으로부터 감소함에 따라 엔드 포인터(end pointer)를 증가시키는 반도체 스토리지 시스템의 제어 방법.
  11. 제 9항에 있어서,
    상기 에러 블록이 정정 가능 블록이면 상기 교체용 블록의 상기 논리적 어드레스 최소값으로부터 증가함에 따라 스타트 포인터(start pointer)를 증가시키는 반도체 스토리지 시스템의 제어 방법.
  12. 제 11항에 있어서,
    새로 발생된 에러 블록이 정정 가능 블록이나 상기 교체용 블록 중 잔여 영역이 존재하지 않을 경우, 상기 스타트 포인터를 초기화시키는 반도체 스토리지 시스템의 제어 방법.
  13. 제 12항에 있어서,
    상기 교체용 블록 중 잔여 영역이 존재하지 않을 경우는 상기 스타트 포인터 및 상기 엔드 포인터가 지정하는 논리적 블록이 일치하는 반도체 스토리지 시스템의 제어 방법.
  14. 제 12항에 있어서,
    상기 스타트 포인터를 초기화시키는 것은 상기 스타트 포인터가 지정하는 논리적 블록이 상기 교체용 블록의 상기 논리적 어드레스의 최소값에 대응되는 블록을 재할당하는 반도체 스토리지 시스템.
  15. 제 14항에 있어서,
    상기 논리적 어드레스의 최소값에 대응되는 블록을 재할당하여 상기 정정 가능 블록의 교체용 블록으로서 상기 재할당된 블록으로 교체 후, 에러 체크를 수행하는 것을 더 포함하는 반도체 스토리지 시스템.
  16. 제 15항에 있어서,
    상기 에러 체크 후 에러가 발생되면, 현재의 상기 엔드 포인터를 증가시킨 논리적 블록을 할당하여 교체하는 것을 더 포함하는 반도체 스토리지 시스템.
KR1020090130753A 2009-12-24 2009-12-24 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 KR101090394B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020090130753A KR101090394B1 (ko) 2009-12-24 2009-12-24 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US12/839,325 US8370680B2 (en) 2009-12-24 2010-07-19 Solid state storage system for controlling reserved area and method of controlling the same
TW099140356A TWI501252B (zh) 2009-12-24 2010-11-23 用於控制保留區的固態儲存系統及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090130753A KR101090394B1 (ko) 2009-12-24 2009-12-24 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20110073942A true KR20110073942A (ko) 2011-06-30
KR101090394B1 KR101090394B1 (ko) 2011-12-07

Family

ID=44188950

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090130753A KR101090394B1 (ko) 2009-12-24 2009-12-24 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법

Country Status (3)

Country Link
US (1) US8370680B2 (ko)
KR (1) KR101090394B1 (ko)
TW (1) TWI501252B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014051550A1 (en) * 2012-09-25 2014-04-03 Hewlett-Packard Development Company, L.P. Notification of address range including non-correctable error

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859604B (zh) * 2009-04-10 2012-10-24 国民技术股份有限公司 闪存坏块的利用方法
KR20120003283A (ko) * 2010-07-02 2012-01-10 삼성전자주식회사 데이터 저장 장치 및 그것의 배드 블록 관리 방법
TWI420308B (zh) * 2010-10-13 2013-12-21 Phison Electronics Corp 區塊管理方法、記憶體控制器與記憶體儲存裝置
KR101739878B1 (ko) * 2011-02-22 2017-05-26 삼성전자주식회사 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템
KR102098697B1 (ko) 2013-03-15 2020-04-08 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
KR20140142035A (ko) * 2013-06-03 2014-12-11 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작방법
KR102435890B1 (ko) * 2017-08-17 2022-08-25 삼성전자주식회사 스토리지 장치의 어드레스 맵핑 방법 및 동작 방법
KR20190073125A (ko) * 2017-12-18 2019-06-26 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
CN114968066A (zh) * 2021-02-19 2022-08-30 瑞昱半导体股份有限公司 用于快闪存储器中进行故障区块管理的方法与装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001501000A (ja) 1996-08-16 2001-01-23 東京エレクトロン株式会社 エラー検出および訂正を有する半導体メモリ装置
BRPI9906653B1 (pt) * 1998-07-28 2015-08-25 Lg Electronics Inc Meio de gravação ótica, método para o gerenciamento de blocos com defeito dentro de uma área de dados de usuário de um meio de gravação ótica e aparelho para gravação de dados
JP3243220B2 (ja) * 1998-09-14 2002-01-07 株式会社東芝 交替処理方法
CN100468359C (zh) * 1999-08-20 2009-03-11 慧亚科技股份有限公司 快闪记忆体的管理与资料连接的方法
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
JP4059472B2 (ja) * 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
EP1403870A1 (en) * 2002-09-27 2004-03-31 Deutsche Thomson-Brandt Gmbh Method and apparatus for recording a data stream on a storage medium
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
JP4041076B2 (ja) * 2004-02-27 2008-01-30 株式会社東芝 データ記憶システム
KR100645058B1 (ko) * 2004-11-03 2006-11-10 삼성전자주식회사 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법
JP2006185509A (ja) * 2004-12-27 2006-07-13 Toshiba Corp 欠陥管理情報を格納する情報記憶媒体、欠陥管理情報の交替処理方法、および欠陥管理情報の交替処理を行なう装置
US7853749B2 (en) * 2005-09-01 2010-12-14 Cypress Semiconductor Corporation Flash drive fast wear leveling
US7661021B2 (en) * 2006-07-12 2010-02-09 Mediatek Inc. Method for defect management in rewritable optical storage media
KR100802059B1 (ko) * 2006-09-06 2008-02-12 삼성전자주식회사 읽기 디스터브로 인한 배드 블록의 생성을 억제할 수 있는메모리 시스템 및 그것의 동작 방법
TW200828320A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Method for performing static wear leveling on flash memory
US7657701B2 (en) * 2007-01-03 2010-02-02 The General Electric Company System and method of flash memory wear leveling using distributed write cycles
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
KR101413736B1 (ko) * 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
TWI343001B (en) * 2007-11-13 2011-06-01 Ite Tech Inc Data preserving method and data accessing method for non-volatile memory
JP5374075B2 (ja) * 2008-06-06 2013-12-25 エイチジーエスティーネザーランドビーブイ ディスク装置及びその制御方法
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
TWI364661B (en) * 2008-09-25 2012-05-21 Silicon Motion Inc Access methods for a flash memory and memory devices
US8327066B2 (en) * 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014051550A1 (en) * 2012-09-25 2014-04-03 Hewlett-Packard Development Company, L.P. Notification of address range including non-correctable error
US9804917B2 (en) 2012-09-25 2017-10-31 Hewlett Packard Enterprise Development Lp Notification of address range including non-correctable error

Also Published As

Publication number Publication date
US20110161727A1 (en) 2011-06-30
US8370680B2 (en) 2013-02-05
TWI501252B (zh) 2015-09-21
TW201131572A (en) 2011-09-16
KR101090394B1 (ko) 2011-12-07

Similar Documents

Publication Publication Date Title
KR101090394B1 (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8332576B2 (en) Data reading method for flash memory and controller and storage system using the same
US9448868B2 (en) Data storing method, memory control circuit unit and memory storage apparatus
KR101086876B1 (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8015371B2 (en) Storage apparatus and method of managing data storage area
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9298534B2 (en) Memory system and constructing method of logical block
KR100946286B1 (ko) 플래시 파일 시스템에서 가상-물리 주소 변환 방법 및 시스템
US20110119442A1 (en) Non-volatile write cache for a data storage system
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
US20110055623A1 (en) Solid state storage system with improved data merging efficiency and control method thereof
KR20120081351A (ko) Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
US11150819B2 (en) Controller for allocating memory blocks, operation method of the controller, and memory system including the controller
TW201526006A (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9778862B2 (en) Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus
KR20120070408A (ko) 블록을 관리하는 비휘발성 메모리 장치의 제어 방법
US10824340B2 (en) Method for managing association relationship of physical units between storage area and temporary area, memory control circuit unit, and memory storage apparatus
US10430288B2 (en) Data backup method, data recovery method and storage controller
KR101027687B1 (ko) 라이트 동작을 제어하는 반도체 스토리지 시스템 및 그 제어 방법
CN106469019B (zh) 存储器管理方法、存储器控制电路单元及存储器储存装置
CN110162493B (zh) 存储器管理方法及使用所述方法的储存控制器
CN115145491A (zh) 存储器管理方法、存储器控制器及存储器存储装置
CN115202584A (zh) 存储器管理方法、存储器控制器及存储器存储装置
CN116048390A (zh) 程序码读取方法、存储器控制器及存储器存储装置

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: 20141021

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151020

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161024

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171025

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181022

Year of fee payment: 8