KR101029704B1 - 플래시 메모리 관리 방법 - Google Patents

플래시 메모리 관리 방법 Download PDF

Info

Publication number
KR101029704B1
KR101029704B1 KR1020080057091A KR20080057091A KR101029704B1 KR 101029704 B1 KR101029704 B1 KR 101029704B1 KR 1020080057091 A KR1020080057091 A KR 1020080057091A KR 20080057091 A KR20080057091 A KR 20080057091A KR 101029704 B1 KR101029704 B1 KR 101029704B1
Authority
KR
South Korea
Prior art keywords
flash memory
area
block
blocks
region
Prior art date
Application number
KR1020080057091A
Other languages
English (en)
Other versions
KR20090131224A (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 KR1020080057091A priority Critical patent/KR101029704B1/ko
Publication of KR20090131224A publication Critical patent/KR20090131224A/ko
Application granted granted Critical
Publication of KR101029704B1 publication Critical patent/KR101029704B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

Abstract

본 문서는 인 플래이스 방식에 따라 메모리 영역을 다수의 영역으로 구분하고, 이 구분된 영역별로 메모리에 대한 데이터를 처리하는 경우, 플래시 메모리 내 전체 여유블록을 각 영역에 고르게 분포시키는 플래시 메모리 관리 방법을 개시한다. 이러한 플래시 메모리 관리 방법에 따르면 베드블록이 특정 영역에 편중되어 플래시 메모리 수명이 단축되는 문제를 해결할 수 있다.
플래시 메모리, 인 플래이스 기법, 여유블록

Description

플래시 메모리 관리 방법{METHOD FOR MANAGING A FLASH MEMORY}
본 문서는 플래시 메모리에 관한 것으로 보다 구체적으로, 메모리를 다수의 영역으로 분할하고 영역별 매핑 테이블을 이용하여 상기 메모리에 대한 데이터 연산을 처리하는 플래시 메모리 관리 방법에 관한 것이다.
일반적으로, 플래시 메모리는 비휘발성을 가지면서도 프로그램 가능한 메모리로서 빠른 접근 속도를 가지며 전력을 적게 소비하기 때문에, 이동 단말기, PDA 등의 이동형 디바이스(mobile device)를 비롯한 내장형 시스템(embedded system)에서 널리 사용되고 있다.
이러한 플래시 메모리는 기존의 램(RAM)이나 비휘발성 저장 장치, 마그네틱 저장 장치 등과 마찬가지로 특정 위치에 저장된 데이터에 임의로 접근할 수 있지만, 데이터를 수정하거나 삭제하는 방법에 있어서는 기존의 저장장치와 다르게 블록(block)을 기본단위로 하여 액세스가 이루어진다.
일반적으로 플래시의 제어 및 관리를 목적으로 사용되고 있는 매핑 알고리즘으로 인 플래이스(IN PLACE) 방법과 아웃 플래이스(OUT PLACE) 방법이 사용된다. 인 플래이스 방법은 플래시 메모리의 물리적 영역을 일정구간으로 분할하여 각 영 역으로 별도로 관리하는 방법이고, 아웃 플래이스 방법은 플래시 메모리 영역 전체를 하나로 하여 전체 영역을 한번에 관리하는 방법이다.
인 플래이스 방법은 통상 아웃 플레이스 방법보다 초기화 속도, 처리 속도 및 메모리 자원(예를 들어, RAM)의 효율성에 있어서 우수하다. 그래서 대용량의 플래시 메모리의 초기화 속도 및 메모리 자원의 문제를 가지고 있는 아웃 플레이스 방법의 단점을 보완하기 위하여 인 플래이스 방법이 사용된다.
하지만, 인 플래이스 방법의 경우 플래시 메모리가 가지고 있는 특징인 베드블록(BAD BLOCK) 문제에 대해서는 특정 영역에서만 반복적인 읽기/쓰기/삭제(READ/WRITE/ERASE) 동작을 했을 경우 특정 영역에 베드블록이 집중적으로 생성되어 가용할 수 있는 여유블록이 없어 더 이상 플래시 메모리를 사용할 수 없는 상황이 발생하는 단점이 있다.
본 문서는 상술한 배경기술에 있어서, 메모리를 다수의 영역으로 분할하고 영역별 매핑 테이블을 이용하여 상기 메모리에 대한 데이터 연산을 처리하되, 플래시 메모리 내 여유블록을 영역별로 정규화시키는 플래시 메모리 관리 방법을 제공하고자 한다.
상술한 과제를 해결하기 위한 일 수단으로써, 메모리를 다수의 영역으로 분할하고 영역별 매핑 테이블을 이용하여 상기 메모리에 대한 데이터 연산을 처리하는 플래시 메모리 관리 방법은, 플래시 메모리 전체에 생성된 베드블록을 확인하여 상기 플래시 메모리 전체의 여유블록 수를 결정하고, 상기 플래시 메모리 전체의 여유블록 수를 상기 플래시 메모리의 영역 수(AZ)로 나누어 각 영역별 할당되는 정규화된 여유블록 수(F)를 결정한 후, 상기 플래시 메모리의 각 영역이 상기 정규화된 여유블록 수(F)의 여유블록을 포함하도록 상기 플래시 메모리의 각 영역의 범위를 결정한다.
그리고, 상기 영역별 매핑 테이블을 이용하여 상기 플래시 메모리에 대한 데이터 연산을 처리하되, 상기 플래시 메모리의 각 영역의 범위는 각 영역에 포함되는 베드블록 수에 따라 가변적인 것을 특징으로 한다.
상기 플래시 메모리에는, 상기 플래시 메모리에 생성된 베드블록 정보를 포함하는 베드블록 테이블이 저장되고, 상기 베드블록 테이블을 통해 상기 플래시 메 모리 전체에 생성된 베드블록을 확인할 수 있다.
상기 베드블록 테이블은, 상기 플래시 메모리에는 미러링 기법을 통해 베드블록 테이블이 중복 저장되고, 상기 중복 저장된 베드블록 테이블을 읽을 때 패리티 정보를 적용하여 읽기 오류를 검출하거나, 정정할 수 있다.
상기 플래시 메모리 전체의 여유블록 수는, 상기 플래시 메모리의 전체 블록의 수(AF)에서 상기 플래시 메모리의 전체 기본할당블록의 수(AN), 상기 플래시 메모리의 전체 베드블록의 수(AB) 및 상기 베드블록 테이블 영역의 블록의 수(BB)를 뺀 값으로 결정될 수 있다.
상기 영역별 매핑 테이블은, 상기 각 영역의 범위를 나타내는 영역 테이블을 통해 각 영역에 포함되는 블록을 확인하여 생성하되, 상기 영역 테이블은, 각 영역의 첫 번째 물리적 블록 주소 정보와 각 영역에 포함되는 물리적 블록 수 정보를 포함하여 이루어질 수 있다.
상기 플래시 메모리에 포함되는 블록은, 각 블록이 포함되는 영역 주소 정보를 포함할 수 있다. 그리고, 상기 플래시 메모리의 제1 영역의 주소정보를 포함하는 블록이 제2 영역에 포함되어 있는 경우, 상기 제1 영역의 주소정보를 포함하는 블록의 데이터를 상기 제2 영역의 빈 블록에 복사한 후 상기 제1 영역의 주소정보를 포함하는 블록의 데이터를 삭제할 수 있다.
상기 플래시 메모리 관리 방법은, 사용자에 의해 시작될 수도 있고, 상기 플래시 메모리의 임의의 영역에 포함되는 여유블록이 없는 경우, 자동적으로 시작될 수 있다.
본 문서에서 개시되는 플래시 관리 방법에 따르면, 영역별로 데이터를 처리하는 경우 베드블록이 특정 영역에 집중적으로 밀집될 수 있더라도 영역별로 정규화된 여유블록을 할당하여 제품의 수명을 극대화할 수 있다.
또한, 플래시 메모리 내 베드블록 테이블을 구비하여 여유블록 정규화를 위해 베드블록을 확인하는 시간을 최소화할 수 있어서 플래시 메모리의 초기동작을 고속화할 수 있다.
또한, 베드블록 테이블을 생성 및 관리할 때 미러링 기법과 오류검출/정정 기능을 함께 사용하여 베드블록 테이블의 데이터 신뢰성을 극대화할 수 있다.
또한, 플래시 메모리 초기화마다 변경될 수 있는 영역의 범위를 영역 테이블로 관리하여, 영역별 매핑 테이블 생성시 이용할 수 있는 효과가 있다.
또한, 플래시 메모리의 각 블록이 논리적 주소뿐만 아니라 영역 주소도 포함하여, 베드블록의 생성으로 발생하는 영역범위의 변경으로 인하여 블록이 속하는 영역과 포함하고 있는 영역정보의 불일치로 발생하는 문제들을 효과적으로 해결할 수 있다.
이하 도면을 참조하여 플래시 메모리 관리 방법을 보다 구체적으로 설명한다.
도 1은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용할 수 있는 플래시 메모리 장치의 블록도를 나타낸다.
본 실시예에 따른 플래시 메모리 장치는, 플래시 메모리부(10), 플래시 메모 리부(10)에 해당 데이터 매핑 정보를 갱신하는 등 플래시 메모리부(10)를 제어하는 플래시 메모리 제어부(20), 플래시 메모리에 대한 읽기/쓰기/삭제 데이터 처리 제어는 물론 플래시 메모리의 전체적인 동작을 제어하는 중앙 처리부(30), 컴퓨터 프로세서가 빠르게 접근할 수 있도록 하기 위하여, 운영체계, 응용프로그램 그리고 현재 사용중인 데이터를 유지하고 있는 임시저장장소인 램(40), 컴퓨터를 켤 때마다 부팅되거나 재설정하기 위한 프로그램을 저장하는 롬(50)을 포함하여 이루어질 수 있다.
플래시 메모리 제어부(20) 또는 중앙 처리부(30)에서 플래시 메모리의 읽기/쓰기/삭제 처리시, 논리적 블록 주소값에 의한 호스트의 접근을 플래시 메모리의 물리적 접근이 될 수 있도록, 매핑 테이블을 통해 논리적 블록 주소값을 물리적 블록 주소값으로 매핑하여 플래시 메모리를 제어할 수 있다. 특히, 인 플래이스 방법에 따라 플래시 메모리 영역을 다수의 영역으로 구분하여 영역별로 관리하는 경우 영역별 매핑 테이블을 생성하여 이용할 것이다.
본 실시예에 따른 플래시 메모리부(10)는, 인 플래이스 방법에 따른 메모리 관리를 위해 다수의 영역으로 구분된다. 그리고, 구분된 각 영역(11)은, 논리적 블록이 할당되는 기본할당블록 영역(12)과, 베드블록과 기본할당블록이 베드블록이 된 때에 이를 대체할 수 있는 여유블록을 포함하는 여유블록 영역(13)으로 구분하여 설명할 수 있다.
도 1에서는 기본할당블록 영역(12)과 여유블록 영역(13)의 각 영역을 구성하는 블록들이 모여있는 형태로 도시하였지만, 각 영역을 구성하는 블록들이 플래시 메모리의 논리적 영역 및/또는 물리적 영역에서 분산된 형태로 구성될 수 있음은 당연하다.
도 2는 일반적인 인 플래이스 기법에 따른 플래시 메모리 관리 방법을 적용할 수 있는 플래시 메모리부의 구조도를 나타낸다.
도 2를 참조하면, 상술한 바와 같이 플래시 메모리부(10)는 제1 영역(11) 내지 제4 영역을 포함하는 다수개의 영역으로 구분되어 관리된다.
제1 영역(11)은, N개의 기본할당블록을 포함하는 기본할당블록 영역(12)과, B1개의 베드블록과 F1개의 여유블록의 M(=B1+F1)개의 블록을 포함하는 여유블록 영역(13)으로 이루어진다. 나머지 영역들도, 마찬가지로 N개의 기본할당블록을 포함하는 기본할당블록 영역(12)과, Bz개의 베드블록과 Fz개의 여유블록의 M(=Bz+Fz)개의 블록을 포함하는 여유블록 영역(13)으로 이루어진다. 도 2를 참조하면, 각 영역의 크기 즉, 각 영역에 포함되는 블록의 수가 모두 N+M개로 동일한 것을 확인할 수 있다.
상술한 바와 같이 메모리를 다수의 영역으로 구분하여 메모리 읽기/쓰기/삭제의 데이터 처리를 관리하는 경우, 호스트에서 특정영역만 집중적으로 읽기/쓰기/삭제를 행하게 되면 타영역보다 그 특정영역의 블록들에 대한 읽기/쓰기/삭제 횟수가 늘어남에 따라 그 특정영역에 베드블록이 집중적으로 발생할 수 있다.
특히 도 2에 도시된 바와 같이 한번 결정된 영역이 고정되는 경우에는, 고정된 집중적으로 생성된 베드블록 때문에, 플래시 메모리 전체가 더 이상 사용이 불가능한 상태가 되어 제품의 수명을 빨리 단축시키는 결과를 초래할 것이다. 예를 들어, 만약 고정된 특정 영역의 M개의 여유블록 중 베드블록의 수가 M개가 되어 사용가능한 여유블록의 수가 0이 되면, 다른 영역의 여유블록이 있더라도 이 다른 영역의 여유블록을 사용할 수 없어 플래시 메모리 전체가 더 이상 사용이 불가능한 상태가 될 것이다.
본 실시예에서는 플래시 메모리의 각 영역에 포함되는 사용가능한 여유블록의 수를 일정하게 배분하고 각 영역에 포함되는 베드블록의 수에 따라 영역에 포함되는 블록 수 즉, 각 영역의 크기가 가변으로 조정될 수 있는 구조로 영역을 설정한다. 즉, 이와 같은 방법을 통해 특정영역에 베드블록이 집중되어 제품의 수명이 단축되는 인 플래이스 기법의 문제를 해결할 수 있을 것이다.
도 3은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용할 수 있는 플래시 메모리부의 구조도를 나타낸다.
도 3에 도시된 바와 같이, 본 실시예에 따른 플래시 메모리부(10)는, 제1 영역(11) 내지 제4 영역을 포함하는 다수개의 영역으로 구분되어 관리된다. 그리고, 각 영역, 예를 들어 제1 영역(11)은, N개의 기본할당블록을 포함하는 기본할당블록 영역(12)과, B1개의 베드블록과 F개의 여유블록을 포함하는 여유블록 영역(13)으로 이루어진다. 즉, 제1 영역(11)에 포함되는 물리적 블록의 수는 N+F+B1가 될 것이다. 도 3을 참조하면, 본 실시예에 따라 각 영역에 포함되는 여유블록의 수가 모두 F개로 동일하고, 따라서 각 영역의 크기 즉, 각 영역에 포함되는 블록의 수는 각 영역에 포함되는 베드블록의 수(Bz)에 따라서 달라질 수 있음을 확인할 수 있다.
본 실시예에서는 각 영역에 포함되는 기본할당블록의 수가 모두 N으로 동일 한 것으로 설명하지만, 설정에 따라서 영역별로 기본할당블록의 수가 다르게 결정될 수도 있을 것이다.
이하 수학식 1은, 각 영역에 포함되는 정규화된 여유블록의 수를 결정하는 방법의 일례를 나타낸다.
Figure 112008043382035-pat00001
수학식 1에서, F는, 각 영역에 포함되는 상술한 정규화된 여유블록의 수를 나타낸다.
AF는, 플래시 메모리의 전체 블록의 수를 나타낸다. 플래시 메모리의 전체 블록의 수(AF)는 플래시 메모리의 제조사, 용량, 및 종류에 따라 결정되는 것이며, 예를 들어 플래시 메모리 초기화 시 플래시 ID를 읽어 확인할 수 있다.
AZ는, 플래시 메모리의 영역의 수를 나타낸다. 플래시 메모리의 영역의 수(AZ)는 각 영역에 포함되는 물리적 블록의 평균 블록 수가 결정되면, 전체 플래시 메모리의 블록 수를 이 각 영역에 포함되는 물리적 블록의 평균 블록 수를 나누어 결정될 수 있다.
AN은, 플래시 메모리의 전체 기본할당블록의 수를 나타낸다. 여기서, 기본할당블록이란, 상술한 바와 같이 논리적 블록이 할당되는 블록을 의미하는 것이다. 플래시 메모리의 전체 기본할당블록의 수(AN)는 각 영역에 포함되는 기본할당블록의 수(N)를 합산하여 결정될 수 있다.
그리고, AB는, 플래시 메모리의 전체 베드블록의 수를 나타낸다. 플래시 메모리의 전체 베드블록의 수(AB)는 각 영역의 베드블록의 수(Bz, z=1,2,3,4,...,AZ)를 합산한 것으로 각 블록의 첫 번째 또는 두 번째 페이지의 스페어(SPARE) 공간을 읽어서 해당 블록의 베드 유무를 판별하여 베드인 블록을 카운트하여 결정될 수 있다.
다시 말해서, 정규화된 여유블록의 수(F)는, 전체 여유블록의 수를 플래시 메모리 영역의 수로 나누어 결정하되, 전체 여유블록의 수는 수학식 1에 따르면, 플래시 메모리의 전체 블록에서 플래시 메모리의 전체 베드블록과 플래시 메모리의 전체 기본할당블록 제외한 블록의 수가 될 수 있다.
한편, 고용량의 플래시 메모리에서는 플래시 메모리의 전체 베드블록의 수(AB)를 결정하기 위해서 플래시 메모리 초기화 과정에 예를 들어, 플래시 메모리 장치에 전원이 공급되는 때에 각 블록의 첫 번째 또는 두 번째 페이지의 스페어 공간을 읽어 해당 블록의 베드 유무를 판별하게 되면 초기화 과정에 많은 시간이 소요될 것이다. 이는 메모리의 용량에 따라서는 이 시간이 수 초에서 수백 초가 될 수 있다.
이런 문제를 해결하기 위해서 본 실시예에서는 제품 출하 전 최초 한 번만 전체 플래시 메모리의 블록정보를 모두 읽어서 확인 후 베드블록에 대한 정보를 이를 관리하기 위한 블록에 저장한다. 그리고, 베드블록이 발생하면 이 베드블록에 대한 정보를 갱신한다.
그리고, 이후 플래시 메모리의 초기화 과정에서는 플래시의 블록 전체를 읽어 베드유무를 판독할 필요 없이, 베드블록에 대한 정보를 통해 바로 총 베드블록의 수를 확인하거나, 베드블록의 위치정보가 있는 블록만 읽어서 해당 블록의 베드 유무를 판별할 수 있다. 이렇게 플래시 메모리에 베드블록에 대한 정보를 저장하고 관리하여, 초기화 시간을 현저히 줄일 수 있을 것이다.
전체 플래시 메모리에 포함되는 베드블록에 대한 정보는 베드블록 테이블로 저장될 수 있고 이 베드블록 테이블이 저장되는 블록을 베드블록 테이블 영역(14)으로 지정하여 사용할 수 있다.
즉, 본 실시예에 따른 플래시 메모리부(10)는 기 설정된 수의 블록이 상술한 베드블록 테이블 영역(14)으로 지정되어 사용될 수 있다. 베드블록 테이블 영역(14)에, 플래시 메모리에 생성된 베드블록 정보를 기록하는 베드블록 테이블을 하나 이상 저장하고, 베드블록이 발생하면 이 베드블록 테이블을 갱신한다. 베드블록 테이블을 통해 상기 플래시 메모리에 생성된 전체 베드블록을 확인할 수 있다.
베드블록 테이블 영역(14)은, 베드블록 테이블을 하나 이상 저장하는 블록이 포함되는 A 영역(15)과 A 영역(15)의 블록이 베드블록이 되는 경우 이를 대체할 수 있는 여유블록을 포함하는 B 영역(16)으로 구분될 수 있다. 다만, 이러한 구분은 설명의 편이를 위해 구분하는 것으로 실제 플래시 메모리 상에서도 물리적이거나 논리적인 구분이 반드시 수반될 필요는 없을 것이다.
이때 B 영역(16)에는 A 영역에 저장되는 베드블록 테이블 관리를 위해 사용되는 여유블록이 포함될 수도 있다. 이는 상술한 바와 같이 베드블록이 발생한 경우, 베드블록 테이블을 갱신하는데 사용될 수 있다. 플래시 메모리 특성상 베드블록 테 이블이 저장된 해당블록에 바로 쓰기를 할 수 없기 때문에, 본 실시예에 따른 별도의 여유블록에 갱신된 베드블록 테이블을 기록하고, 원래 베드블록 테이블이 기록되어 있던 블록에서는 삭제하는 방법으로 베드블록 테이블을 갱신할 수 있다.
도 4는 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하기 위한 베드블록 테이블의 구성예를 나타낸 도면이다.
본 실시예에 따르면, 베드블록 테이블은 플래시 메모리의 각 블록에 대한 베드유무 정보를 포함하여 이루어질 수 있다. 예를 들어, 도 4에 도시된 바와 같이 특정 블록에 대한 값이 "0"인 경우에는 베드블록이 아닌 경우를 나타내고, "1"인 경우에는 베드블록인 경우를 나타낼 수 있다. 물론 반대의 경우도 가능할 것이다.
또한, 본 실시예에 따르면, 베드블록 테이블은 중복 저장될 수 있다. 이는 베드블록 테이블의 쓰기 또는 갱신을 실시할 경우, 레이드(RAID)의 미러링(MIRRORING) 기법을 사용함으로써 구현할 수 있다.
다시 말해서 베드블록 테이블(4)을 기록하거나 갱신할 때 베드블록 테이블(4)을 하나의 블록에 저장하는 것이 아니고, 두 개 이상의 블록(41, 42)에 저장한다. 특히, 베드블록 테이블(4)을 갱신하는 경우에는 새로 생성된 베드블록에 대한 정보(43)를 변경하여 두 개 이상의 블록(41, 42)에 저장할 것이다.
그리고, 이렇게 두 개 이상의 블록에 베드블록 테이블이 저장되는 경우, 베드블록 테이블을 읽을 때 베드블록 테이블의 두 개 이상의 블록(41, 42)에 중복 기록된 베드블록 테이블들을 서로 비교하여 오류 발생 여부를 확인할 수 있다. 또한, 베드블록 테이블을 읽을 때 베드블록 테이블을 저장하는 블록의 패리티 비 트(44a, 44b)까지 읽어 오류를 검출하거나, 오류정정부호(ECC: Error Correction Code)를 통해 오류를 정정해줌으로써 베드블록 테이블의 신뢰성을 더욱 확보할 수 있을 것이다.
이하 수학식 2는, 상술한 바와 같이 베드블록 테이블이 저장되는 경우, 각 영역에 포함되는 정규화된 여유블록의 수를 결정하는 방법의 일례를 나타낸다.
Figure 112008043382035-pat00002
수학식 2에서, BB는 베드블록의 위치정보를 보관하고 이를 관리하기 위한 블록의 수를 나타낸다. 베드블록의 위치정보를 보관하고 이를 관리하기 위한 베드블록 테이블 영역의 블록의 수(BB)는, 제조사에 의해 결정될 수 있으며, 베드블록 테이블을 관리하기 위한 여유블록을 포함하는 여유블록의 수나 기록되는 베드블록 테이블의 수 등에 따라서 결정될 수 있다.
예를 들어, 하나의 베드블록 테이블을 기록하는데 1개의 블록이 필요하고, 최소 P개의 베드블록 테이블을 기록한다면, 도 3의 베드블록 테이블 영역의 A 영역에는 최소 P개의 블록이 포함될 것이고, B 영역에도 베드블록 테이블 관리를 위한 여유블록을 포함하여 다수의 여유블록 예를 들어, Q개의 블록이 포함될 수 있다. 이 경우, 베드블록의 위치정보를 보관하고 이를 관리하기 위한 블록의 수(BB)는 예를 들어, 최소 P+Q개가 될 수 있다.
수학식 2에서 F, AF, AB, AN, AZ이 나타내는 바와 이를 결정하는 방법은 위 수학식 1을 통해 설명한 것과 동일하므로 생략한다.
수학식 1 또는 수학식 2를 통해 각 영역에 포함되는 정규화된 여유블록의 수(F)를 산출하는 방법은 실시예일 뿐이고, 각 영역에 사용가능한 여유블록을 고르게 분포시킬 수 있는 본 실시예의 취지를 만족시키는 한, 다양한 방법으로 산출할 수 있을 것이다. 예를 들어, 플래시 메모리 상에 특정 용도로 사용되는 블록이 추가로 지정되는 경우에는 이러한 블록도 고려하는 변형된 형태의 수학식으로 산출할 수 있을 것이다.
도 5는 본 발명의 일 실시예에 따른 플래시 메모리를 관리하는 방법을 설명하기 위한 흐름도이다.
초기화가 시작되면, 먼저 단계 S500에서, 플래시 메모리의 ID를 확인한다. 상술한 바와 같이 플래시 메모리의 ID를 확인하여 단계 S510 및 단계 S520에서 플래시 메모리의 전체 블록의 수(AF)와 플래시 메모리의 영역의 수(AZ)를 확인한다.
이때 초기화는 플래시 메모리가 개인용 컴퓨터 등의 호스트에 연결되는 등으로 사용자에 의해 시작될 수도 있고, 일정 조건을 만족하는 경우에 자동적으로 시작될 수도 있다. 예를 들어, 특정 영역의 집중적인 베드블록의 발생으로 특정 영역에 더 이상 여유블록이 존재하지 않는 경우에는 이를 인식하여 자동적으로 본 실시예에 따른 초기화를 시작할 수 있을 것이다.
그리고, 단계 S530에서 플래시 메모리의 초기화가 최초인지 여부를 판단하여 최초인 경우에는 플래시 메모리에 대한 베드블록 테이블이 없을 것이므로 베드블록 테이블을 생성하기 위한 단계 S532로 진행한다. 하지만, 플래시 메모리의 초기화가 최초가 아닌 경우에는 최초 초기화 과정에서 생성된 베드블록 테이블이 있을 것이므로 베드블록 수를 확인하기 위한 단계 S540으로 진행한다. 즉, 단계 S530의 최초 초기화인지에 대한 판단은, 베드블록 테이블의 유무에 대한 판단으로 대체될 수도 있을 것이다.
먼저, 최초 초기화인 경우, 단계 S532로 진행하여 단계 S532에서 플래시 메모리의 모든 블록의 첫 번째 또는 두 번째 스페어 공간을 읽어 각 블록이 베드블록인지 여부를 판별한다. 그리고, 단계 S534에서 각 블록이 베드블록인지 여부의 판단 결과에 따라 베드블록인 블록의 위치 즉, 베드블록의 위치 정보를 임시저장장치인 램(40)에 저장한다. 그리고, 단계 S536에서 이 램(40)에 저장되는 베드블록의 위치 정보를 플래시 메모리의 베드블록 테이블 영역(14)에 베드블록 테이블로 저장한다.
그리고, 최초 초기화가 아닌 경우, 단계 S540으로 진행하여 플래시 메모리에 저장된 베드블록 테이블을 읽어 이를 임시저장장치인 램(40)에 저장한다. 상술한 바와 같이 레이드의 미러링 기법을 통해 다수의 블록에 각각 베드블록 테이블이 중복 저장되어 있는 경우에는 이 중복 저장된 베드블록 테이블을 모두 읽어 램(40)에 저장한다. 이때 패리티 비트를 적용하여 읽어 베드블록 테이블에 발생할 수 있는 오류를 검출하거나 오류정정부호(ECC)를 통해 오류를 정정할 수도 있다.
그리고, 단계 S550에서 램(40)에 중복 저장된 베드블록 테이블들을 비교하여 단계 S560에서 이들이 일치하는지 여부를 판단한다. 만약 단계 S560의 판단 결과 일치하지 않는 경우에는 베드블록 테이블에 대한 데이터의 신뢰성을 확보하지 못한 경우이므로 단계 S565로 진행하여 베드블록 테이블 영역에 중복 저장된 베드블록 테이블들을 모두 삭제하고, 처음 초기화인 경우와 마찬가지로 상술한 단계 S532로 진행하여 단계 S534 및 단계 S536을 거쳐 베드블록 테이블을 생성한다.
만약 단계 S560의 판단 결과 일치하거나, 상술한 바와 같이 단계 S536에서 베드블록 테이블이 새로 생성된 경우에는 단계 S570으로 진행하여 플래시 메모리의 전체 베드블록의 수(AB)를 결정한다. 이는 램(40)에 저장되어 있는 베드블록 테이블을 통해 베드블록의 위치 정보를 합산하는 방법으로 결정할 수 있다.
그리고, 단계 S580에서 본 실시예에 따른 정규화된 여유블록의 수(F)를 결정한다. 이때에는 상술한 수학식 2를 이용하여 플래시 메모리의 전체 블록에서 플래시 메모리의 전체 베드블록과 플래시 메모리의 전체 기본할당블록 및 플래시 메모리 내 베드블록 테이블 영역으로 지정된 블록을 제외한, 전체 여유블록의 수를 플래시 메모리 영역의 수로 나누어 결정할 수 있을 것이다.
예를 들어, 플래시 메모리의 전체 블록의 수(AF)가 4096이고, 플래시 메모리의 전체 기본할당블록(AN)은 4000이고, 베드블록 테이블 영역으로 지정된 블록(BB)은 10이며, 플래시 메모리의 영역의 수(AZ)가 8이고, 플래시 메모리의 전체 베드블록의 수(AB)는 30인 것으로 결정된다고 가정한다. 이 경우 수학식 2에 따르면 정규화된 여유블록의 수(F)는, (4096-4000-30-10)/8의 연산 결과로 7이 될 것이다.
단계 S590에서는 결정된 정규화된 여유블록의 수(F)를 기초로 임시저장공간인 램(40)에 영역 테이블을 생성할 수 있다. 본 실시예에 따른 영역 테이블은 여유블록을 영역별로 고르게 분포시킴으로써 각 영역별 베드블록의 수에 따라 영역을 구성하는 블록이 가변적이다. 따라서, 영역이 가변적인 상황에서 영역별로 플래시 메모리를 관리하기 위한 각 영역을 확인하기 위해 사용될 수 있을 것이다.
도 6은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하기 위한 영역 테이블의 구성예를 나타낸 도면이다.
도 6을 통해 확인할 수 있듯 영역 테이블은 각 영역에 대해 해당 영역의 첫 번째 물리적 블록 주소 정보와 해당 영역에 포함되는 물리적 블록의 수를 포함하여 이루어질 수 있다.
예를 들어, 초기화 과정 중 베드블록 테이블을 읽고, 정규화된 여유블록의 수(F)가 결정이 되면, 베드블록 테이블을 읽으면서 플래시 메모리에서 베드블록이 아닌 블록을 카운트(COUNT)한다. 이 카운트 값이 영역별 기본할당블록의 수(N)와 정규화된 여유블록의 수(F)를 더한 값과 같게 되는 경우 해당 영역의 첫 번째 물리적 블록 주소 정보와 해당 영역에 포함되는 물리적 블록의 수를 영역 테이블로 저장한다.
이때 각 영역의 물리적 블록의 수는 각 영역의 기본할당블록의 수(N), 각 영역의 베드블록 수(B)와 정규화된 여유블록 수(F)를 모두 고려하는 값이며 이는 해당 영역의 첫 번째 물리적 블록 주소값에서 다음 영역의 첫 번째 물리적 블록 주소값을 빼서 구할 수 있을 것이다. 결국 영역 내의 여유블록의 수는 본 실시예에 따라 정규화된 여유블록의 수(F)로 영역별로 일정하게 되며, 영역별로 영역의 크기 즉, 영역에 포함되는 물리적 블록 수는, 각 영역에 포함되어 있는 베드블록의 수 등에 따라 다르게 설정될 것이다.
초기화 과정에서 설정된 영역별로 플래시 메모리 사용 과정에서 베드블록이 발생하면, 본 실시예에 따라 다음 초기화에는 여유블록의 정규화에 의해서 영역의 범위가 바뀔 수 있다. 영역이 변경되어 특정 영역에 있던 블록이 다른 영역에 포함되는 경우는, 주로 영역과 영역 사이의 경계선에 있는 블록들에서 발생할 것이다. 물론 초기화와 다음 초기화 사이에 발생한 베드블록의 수가 정규화된 여유블록의 수가 변경되지 않는 범위에서 발생하는 경우에는 영역의 범위가 바뀌지 않을 수도 있다.
도 7은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하여 영역이 변경되는 경우를 설명하기 위한 도면이다.
도 7의 (a)는 플래시 메모리가 5개의 영역으로 구분된 예를 나타낸 것이다. 그리고, 도 7의 (b)는 이 플래시 메모리를 사용 중에 베드블록이 발생하여 다음 초기화 과정에서 각 영역의 범위가 변경된 예를 나타낸 것이다.
도 7의 (b)를 참조하면, 플래시 메모리에 총 4개의 베드블록(70a, 70b, 70c, 70d)이 발생하였는데 특히 제2 영역(Z2)에서 3개의 베드블록(70b, 70c, 70d)이 발생하여 베드블록이 특정 영역에 편중되어 발생한 것을 확인할 수 있다. 이런 경우, 본 발명의 실시예에 따라 플래시 메모리 초기화 과정에서 정규화된 여유블록의 수를 결정하여 각 영역이 고르게 여유블록을 가질 수 있도록 할 수 있다.
도 7을 참조하면, 여유블록을 정규화시킴에 따라 영역이 재설정되어, 도 7의 (a)에서는 제3 영역(Z3)에 있던 블록(71a, 71b)이 도 7의 (b)에서는 제2 영역(Z2)에 포함되어 영역이 변경되었고, 도 7의 (a)에서는 제4 영역(Z4)에 있던 블록(71c) 이 도 7의 (b)에서는 제3 영역(Z3)에 포함되어 영역이 변경되었고, 마찬가지로 도 7의 (a)에서는 제5 영역(Z5)에 있던 블록(71d)이 도 7의 (b)에서는 제4 영역(Z4)에 포함되어 영역이 변경되었음을 확인할 수 있다.
상술한 본 발명의 실시예에 따라 여유블록을 정규화시켜 영역의 범위가 변경되면, 도 7의 (b)를 통해 설명한 바와 같이 특정 영역에 있던 블록이 다른 영역에 포함되는 경우가 발생한다. 이 영역이 바뀌는 블록이 이미 다른 영역에서 논리적 블록 주소값을 할당받은 기본할당블록인 경우, 한 영역 내에 동일한 논리적 블록 주소값을 할당받은 블록이 다수 개가 될 수 있다.
이는 플래시 메모리 영역을 다수의 영역으로 구분하여 영역별로 관리하기 위해 영역별 매핑 테이블을 이용하는 경우에 논리적 주소와 물리적 주소가 일대일 매핑되지 않아 호스트의 읽기/쓰기/삭제 수행시 오류가 발생하는 문제가 될 수 있다.
도 8은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하기 위해 영역별 매핑 테이블을 생성하는 방법을 설명하기 위한 흐름도이다.
본 실시예에서는 초기화 과정에서 여유블록을 영역별로 정규화시키는데, 이전 초기화 과정 이후에 발생한 베드블록 수가 영역별로 차이가 나서, 각 영역의 범위가 바뀌면서 생길 수 있는 상술한 문제를 해결하기 위해 각 블록에 논리적 블록 주소값 뿐만 아니라 영역 주소값까지 포함시킬 수 있다. 그러면, 영역별 매핑 테이블 생성시 각 블록을 확인할 때 이 영역 주소값을 확인하여, 해당 블록이 영역이 변경된 블록인지 여부를 알 수 있을 것이다.
이 영역 주소값은 각 블록의 스페어 공간에 포함될 수 있으며 이 스페어 공 간에는 상술한 베드블록 정보, 논리적 블록 주소값, 패리티 비트 또는 오류정정부호(ECC) 등이 더 포함될 수 있다.
먼저, 단계 S800에서 호스트에 의한 읽기/쓰기/삭제 연산 등의 데이터 처리를 위한 명령이 입력된다. 이때 전체 메모리 영역에 대한 논리적 블록 주소값인 LBA(Logical Block Address)와 읽기/쓰기/삭제를 수행할 메모리 영역의 크기 정보가 함께 전송된다. LBA는 전체 메모리 영역에 대한 논리적 블록 주소값으로 상술한 영역에 대한 논리적 블록 주소값과는 구분되는 것이다.
그러면, 단계 S810에서 LBA 값을 해석하여 단계 S820에서 본 실시예에 따른 영역 주소값과, 해당 영역에 대한 논리적 블록 주소값을 유추해 낼 수 있다. 이때 플래시 메모리 칩 번호, 채널 번호, 페이지 주소값, 섹터 주소값 등도 함께 유추해 낼 수도 있다. 그러면, 단계 S830에서 영역 주소값을 통해 확인되는 영역의 매핑 테이블이 존재하는지를 확인한다. 만약 해당 매핑 테이블이 존재하지 않는 경우는 단계 S832에서 해당영역에 대한 매핑 테이블을 생성한다.
영역별 매핑 테이블 생성 시에는 해당 영역에 포함되는 블록의 스페어 공간을 확인하여 베드정보, 논리적 블록 주소값, 영역 주소값 등을 읽어 매핑 테이블을 생성한다. 이때 각 영역의 범위 즉, 해당 영역에 포함되는 물리적 블록들은 상술한 영역 테이블을 통해 알 수 있을 것이다.
이때 본 실시예에서는 영역 주소값을 통해 해당 영역과 다른 영역 주소값이 저장된 블록이 존재하는지 확인한다. 해당영역에 다른 영역의 주소값을 가진 블록이 존재하는 이유는 상술한 바와 같이 본 발명이 실시예에 따른 여유블록의 정규화 에 따라 영역 범위가 변경되었기 때문일 것이다.
단계 S834에서 해당 영역에 포함되는 임의의 블록, 예를 들어 A 블록에 저장된 영역 주소값이 해당 영역에 대한 영역 주소값과 동일한 경우에는 일반적인 방법으로 매핑 테이블을 생성할 수 있다.
하지만, 단계 S834에서 해당 영역에 포함되는 임의의 블록, 예를 들어 A 블록에 저장된 영역 주소값이 A 블록이 속하는 해당 영역에 대한 영역 주소값과 다른 경우 즉, 만약 A 블록이 해당 영역의 주소값이 아닌 다른 영역 주소값을 가진 블록이라면 단계 S836으로 진행하여 A 블록에 저장된 영역 주소값에 따른 영역의 빈 블록을 선정하여 복사한 후 A 블록에 저장된 데이터에 대해서는 삭제하고, A 블록은 빈 블록으로 매핑 테이블을 생성한다. 그리고, A 블록의 스페어 공간에 다른 영역으로 저장되어 있던 영역 주소값을 해당 영역의 주소값으로 표시한다.
위 블록에 대한 단계 S838에서 해당 영역에 대한 매핑 테이블이 완성되었는지 확인하여 완성되지 않은 경우에는 다시 단계 S832로 돌아가서 해당 영역에 포함되는 모든 블록에 대해 확인하면서 매핑 테이블을 생성한다.
그리하여 매핑 테이블이 완성되면, 단계 S840으로 진행하여 이 생성된 매핑 테이블을 참조하여 매핑 알고리즘에 의해 단계 S820에서 유추한 해당 영역에 대한 논리적 블록 주소값에 대응되는 물리적 블록 주소값을 획득하여 단계 S850에서 읽기/쓰기/삭제 등의 데이터 연산을 처리할 수 있다.
만약 매핑 테이블을 확인하였는데 논리적 블록 주소값과 매핑되는 물리적 블록 주소값을 가진 블록이 존재하지 않을 경우 해당 영역에 존재하는 빈 블록 중 한 블록을 선정하여 해당 물리적 블록 주소값을 가진 블록으로 매핑할 수 있다. 이때 그 블록의 스페어 공간에 논리적 블록 주소값 등을 표시한다.
다만, 여기서 A 블록의 스페어 공간에 다른 영역으로 저장되어 있던 영역 주소값을 해당 영역의 주소값으로 표시하는 동작은, 상술한 바와 같이 매핑 테이블 생성시 수행될 수도 있지만, 추후 빈 블록이 된 A 블록에 새로운 데이터를 기록할 때 해당 영역의 주소값으로 표시할 수도 있을 것이다.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하기 위한 영역별 매핑 테이블을 생성하는 과정에서 특히, 도 8의 단계 S836의 동작을 보다 구체적으로 설명하기 위한 도면이다.
도 9의 (a)를 참조하면, 제1 영역(Z1)에 5 개의 블록이 포함되고, 각 블록의 물리적 블록 주소값은 B0~B4임을 확인할 수 있다. 순차적으로 이 5 개의 블록의 스페어 공간을 확인하여 제1 영역(Z1)의 매핑 테이블을 생성할 수 있다. 이때 베드블록 유무나 논리적 주소뿐만 아니라 영역 주소값도 확인한다.
도 9의 (a)에서 B4의 블록(90)에 저장된 영역 주소값은 제1 영역(Z1)이 아닌 제2 영역(Z2)으로 되어 있다. 이는 상술한 바와 같이 본 발명의 실시예에 따라 여유블록의 정규화를 통해 영역 범위가 변경되어 제2 영역(Z2)에 있던 블록이 제1 영역(Z1)으로 변경되었기 때문일 것이다. 이와 같은 경우 상술한 바와 같이 B4의 블록(90)에 대해 도 8의 단계 S836의 동작이 수행될 것이다.
도 9의 (b)는 도 8의 단계 S836의 동작을 수행한 블록의 스페어 공간에 저장된 데이터를 나타낸 것이다. 단계 S836에 따라 B4의 블록(90)에 저장된 영역 주소 값에 따른 제2 영역(Z2)의 빈 블록(91)을 선정하여 복사한 후 B4의 블록(90)의 데이터는 삭제하고, B4의 블록(90)은 빈 블록으로 매핑 테이블을 생성한다. 그리고, B4의 블록(90)의 스페어 공간에 제2 영역(Z2)으로 저장되어 있던 영역 주소값을 해당 영역의 주소값인 제1 영역(Z1)으로 표시한다. 그 결과 도 9의 (b)에서 도시된 바와 같이 될 수 있다. 이 경우에도 빈 블록이 된 B4의 블록(90)에 새로운 데이터를 기록할 때 해당 영역의 주소값을 표시할 수도 있음은 상술한 바와 같다.
상기에서는 도면 및 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 기술적 사상으로부터 벗어나지 않는 범위 내에서 본 발명은 다양하게 수정 및 변경시킬 수 있음은 이해할 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용할 수 있는 플래시 메모리의 블록도를 나타낸다.
도 2는 일반적인 인 플래이스 기법에 따른 플래시 메모리 관리 방법을 적용할 수 있는 플래시 메모리부의 구조도를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용할 수 있는 플래시 메모리부의 구조도를 나타낸다.
도 4는 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하기 위한 베드블록 테이블의 구성예를 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 플래시 메모리를 관리하는 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하기 위한 영역 테이블의 구성예를 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하여 영역이 변경되는 경우를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하기 위해 영역 테이블을 통해 영역을 확인하여 영역별 매핑 테이블을 생성하는 방법을 설명하기 위한 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리 관리 방법을 적용하기 위한 영역별 매핑 테이블을 생성 과정에서 특히, 도 8의 단계 S836의 동작을 보다 구 체적으로 설명하기 위한 도면이다.

Claims (8)

  1. 메모리를 다수의 영역으로 분할하고 영역별 매핑 테이블을 이용하여 상기 메모리에 대한 데이터 연산을 처리하는 플래시 메모리 관리 방법에 있어서,
    플래시 메모리 전체에 생성된 베드블록을 확인하여 상기 플래시 메모리 전체의 여유블록 수를 결정하는 단계;
    상기 플래시 메모리 전체의 여유블록 수를 상기 플래시 메모리의 영역 수(AZ)로 나누어 각 영역별 할당되는 정규화된 여유블록 수(F)를 결정하는 단계;
    상기 정규화된 여유블록 수(F)의 여유블록을 포함하도록 상기 플래시 메모리의 각 영역의 범위를 결정하는 단계; 및
    상기 영역별 매핑 테이블을 이용하여 상기 플래시 메모리에 대한 데이터 연산을 처리하는 단계를 포함하되, 상기 플래시 메모리의 각 영역의 범위는 각 영역에 포함되는 베드블록 수에 따라 가변적으로 구성되며,
    상기 플래시 메모리 전체의 여유블록 수는, 상기 플래시 메모리의 전체 블록의 수(AF)에서 상기 플래시 메모리의 전체 기본할당블록의 수(AN), 상기 플래시 메모리의 전체 베드블록의 수(AB) 및 베드블록 테이블 영역의 블록의 수(BB)를 뺀 값인 것을 특징으로 하는, 플래시 메모리 관리 방법.
  2. 청구항 1에서,
    상기 플래시 메모리에는, 상기 플래시 메모리에 생성된 베드블록 정보를 포함하는 베드블록 테이블이 저장되고, 상기 베드블록 테이블을 통해 상기 플래시 메모리 전체에 생성된 베드블록을 확인하는 것을 특징으로 하는, 플래시 메모리 관리 방법.
  3. 청구항 2에서,
    상기 베드블록 테이블은, 상기 플래시 메모리에는 미러링 기법을 통해 베드블록 테이블이 중복 저장되고, 상기 중복 저장된 베드블록 테이블을 읽을 때 패리티 정보를 적용하여 읽어 오류 검출/정정이 가능한 것을 특징으로 하는, 플래시 메모리 관리 방법.
  4. 삭제
  5. 청구항 1에서,
    상기 영역별 매핑 테이블은, 상기 각 영역의 범위를 나타내는 영역 테이블을 통해 각 영역에 포함되는 블록을 확인하여 생성하되, 상기 영역 테이블은, 각 영역의 첫 번째 물리적 블록 주소 정보와 각 영역에 포함되는 물리적 블록 수 정보를 포함하여 이루어지는 것을 특징으로 하는, 플래시 메모리 관리 방법.
  6. 청구항 1에서,
    상기 플래시 메모리에 포함되는 블록은, 각 블록이 포함되는 영역 주소 정보를 포함하는 것을 특징으로 하는, 플래시 메모리 관리 방법.
  7. 청구항 6에서,
    상기 플래시 메모리의 제1 영역에 포함되는 블록의 영역 주소 정보가 상기 플래시 메모리의 제2 영역으로 설정되어 있는 경우, 상기 제1 영역에 포함되는 블록의 영역 주소 정보를 상기 제1 영역으로 변경하고, 상기 제1 영역에 포함되는 블록에 저장된 데이터는 상기 제2 영역에 포함되는 빈 블록에 복사한 후 삭제하는 것을 특징으로 하는, 플래시 메모리 관리 방법.
  8. 청구항 1에서,
    상기 플래시 메모리 관리 방법은, 상기 플래시 메모리의 임의의 영역에 포함되는 여유블록이 없는 경우, 자동적으로 시작되는 것을 특징으로 하는, 플래시 메모리 관리 방법.
KR1020080057091A 2008-06-17 2008-06-17 플래시 메모리 관리 방법 KR101029704B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080057091A KR101029704B1 (ko) 2008-06-17 2008-06-17 플래시 메모리 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080057091A KR101029704B1 (ko) 2008-06-17 2008-06-17 플래시 메모리 관리 방법

Publications (2)

Publication Number Publication Date
KR20090131224A KR20090131224A (ko) 2009-12-28
KR101029704B1 true KR101029704B1 (ko) 2011-04-18

Family

ID=41690497

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080057091A KR101029704B1 (ko) 2008-06-17 2008-06-17 플래시 메모리 관리 방법

Country Status (1)

Country Link
KR (1) KR101029704B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738551B2 (en) 2011-06-20 2014-05-27 Hyundai Motor Company Method for storing data in memory
US10229050B2 (en) 2015-12-15 2019-03-12 Samsung Electronics Co., Ltd. Method for operating storage controller and method for operating storage device including the same wherein garbage collection is performed responsive to free block unavailable during reuse

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101280181B1 (ko) * 2010-05-18 2013-07-05 삼성전자주식회사 메모리 시스템 및 메모리 시스템에서 플래쉬 변환 레이어의 예비 영역 관리 방법
KR101826047B1 (ko) 2011-09-28 2018-02-07 삼성전자주식회사 저장 장치 및 그 구동 방법
KR101402280B1 (ko) * 2012-12-27 2014-06-02 가톨릭대학교 산학협력단 이동 단말기의 메모리 관리장치 및 그 방법
KR102025080B1 (ko) 2013-01-02 2019-09-25 삼성전자 주식회사 스토리지 시스템 및 스토리지 시스템의 여분 공간 조절 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030040817A (ko) * 2001-11-16 2003-05-23 삼성전자주식회사 플래시 메모리 관리방법
JP2006031696A (ja) 2004-07-16 2006-02-02 Samsung Electronics Co Ltd バッドブロック管理部を含むフラッシュメモリシステム
KR100745163B1 (ko) 2006-06-19 2007-08-01 주식회사 셀픽 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
KR20080037283A (ko) * 2006-10-25 2008-04-30 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030040817A (ko) * 2001-11-16 2003-05-23 삼성전자주식회사 플래시 메모리 관리방법
JP2006031696A (ja) 2004-07-16 2006-02-02 Samsung Electronics Co Ltd バッドブロック管理部を含むフラッシュメモリシステム
KR100745163B1 (ko) 2006-06-19 2007-08-01 주식회사 셀픽 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
KR20080037283A (ko) * 2006-10-25 2008-04-30 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738551B2 (en) 2011-06-20 2014-05-27 Hyundai Motor Company Method for storing data in memory
US10229050B2 (en) 2015-12-15 2019-03-12 Samsung Electronics Co., Ltd. Method for operating storage controller and method for operating storage device including the same wherein garbage collection is performed responsive to free block unavailable during reuse

Also Published As

Publication number Publication date
KR20090131224A (ko) 2009-12-28

Similar Documents

Publication Publication Date Title
US8832371B2 (en) Storage system with multiple flash memory packages and data control method therefor
JP4790007B2 (ja) 相対的な等級を用いて、フラッシュメモリ内の損耗平準化を達成するための方法
US9910748B2 (en) Rebuilding process for storage array
JP6279620B2 (ja) ストレージ装置
US9111618B2 (en) De-duplication in flash memory module
US11157365B2 (en) Method for processing stripe in storage device and storage device
US7895394B2 (en) Storage system
JP6134857B2 (ja) 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法
EP3617867B1 (en) Fragment management method and fragment management apparatus
JP6311195B2 (ja) ストレージデバイスによってデータを記憶するための方法およびストレージデバイス
US9753668B2 (en) Method and apparatus to manage tier information
US9239785B2 (en) Stochastic block allocation for improved wear leveling
JP6216897B2 (ja) ストレージシステム
KR101029704B1 (ko) 플래시 메모리 관리 방법
US20190361611A1 (en) Storage system
EP1898312A1 (en) Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method
WO2016135954A1 (ja) ストレージ装置および不揮発メモリデバイス
JP6089844B2 (ja) 制御装置,ストレージ装置,及び制御プログラム
CN110569000A (zh) 基于固态硬盘阵列的主机端raid管理方法和装置
US10684785B2 (en) Storage system
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN115599313B (zh) 一种磁盘阵列扩容方法、系统、存储介质及设备
JP6693181B2 (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
JP2015191295A (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
CN115220660A (zh) 固态硬盘的写命令处理优化方法、装置和计算机设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140403

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170404

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180402

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190404

Year of fee payment: 9