KR100885026B1 - 플래시 메모리의 마모도 평준화 방법 - Google Patents

플래시 메모리의 마모도 평준화 방법 Download PDF

Info

Publication number
KR100885026B1
KR100885026B1 KR1020070098126A KR20070098126A KR100885026B1 KR 100885026 B1 KR100885026 B1 KR 100885026B1 KR 1020070098126 A KR1020070098126 A KR 1020070098126A KR 20070098126 A KR20070098126 A KR 20070098126A KR 100885026 B1 KR100885026 B1 KR 100885026B1
Authority
KR
South Korea
Prior art keywords
block
interval
list
blocks
section
Prior art date
Application number
KR1020070098126A
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 KR1020070098126A priority Critical patent/KR100885026B1/ko
Application granted granted Critical
Publication of KR100885026B1 publication Critical patent/KR100885026B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • 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/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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 플래시 메모리의 마모도 평준화 방법에 관한 것으로, 상기 플래시 메모리의 블럭에 대한 삭제 횟수를 기준으로 각기 다른 구간 교환값과 구간 임계값을 가지는 다수의 구간을 설정하고, 상기 플래시 메모리의 블럭들의 실제 삭제 횟수를 토대로 현재 구간을 설정하고, 각 블럭이 해당 구간의 구간 교환값을 초과하는지 여부를 표식하는 블럭별 정적 블럭 맵과, 각 블럭에 대한 삭제 횟수를 표식하는 사용가능 블록 리스트와, 상기 구간 임계값을 초과하는 블럭을 표식하는 구간 임계값 초과 블록 리스트를 부여하는 단계; 상기 플래시 메모리의 블록에 대한 할당이 요청되면, 상기 구간 임계값 초과 블록 리스트에 제1블록이 있는지 검색하는 단계; 상기 구간 임계값 초과 블록 리스트에 제1블록이 있으면, 상기 정적 블록 맵의 구간 교환값 미만으로 표식된 제2블록의 데이터를 상기 제1블록으로 복사하고, 상기 제2블록을 할당하는 단계; 상기 제1블록이 없으면, 상기 사용가능 블록 리스트 중 삭제횟수가 가장 적은 제3블록을 할당하는 단계를 포함한다.
플래시 메모리, 삭제, 평준화

Description

플래시 메모리의 마모도 평준화 방법{METHOD OF EQUALIZING ABRASION RATE FOR FLASH MEMORY}
본 발명은 저장매체에 관한 것으로, 더욱 상세하게는 플래시 메모리의 마모도 평준화 방법에 관한 것이다.
일반적으로 플래시 메모리의 각 블록은 지우기 연산 횟수의 제한이 있다. 이에 플래시 메모리가 공장에서 출하된 이후에 지우기 연산의 횟수가 제한을 넘게 되면, 해당 블록은 오류 블록이 될 수 있다. 따라서 플래시 메모리의 물리 블록을 고르게 사용하는 것으로 상기 플래시 메모리의 수명을 연장시킬 수 있다.
이를 위한 종래기술로 논리 블록에 맵핑되지 않은 다수의 물리 블록(Free Block List)을 삭제 횟수에 따라 나열하고, 이후 논리 블록에 맵핑할 물리 블록을 삭제 횟수가 적은 순서에 따라 우선적으로 맵핑하는 방법이 있다.
이러한 종래기술을 사용하게 될 경우에는 사용자가 할당된 데이터 영역을 대부분 사용하게 된다면 삭제 횟수의 편차는 점점 커질 수가 있다.
도 1은 종래 기술로 구현된 삭제 횟수를 평준화하는 방법에 대해 개략적으로 나타낸 것으로, 물리 넘버(physical number)로 나타내는 각 물리 블록에 대해 삭제 횟수를 표식하며, 상기 물리 넘버로 나타내는 물리 블럭과 삭제 횟수를 기록하여 관리하기 위한 프리 블록 리스트(Free Block List)를 포함한다. 상기 플래시 메모리를 제어하는 모듈은 상기 프리 블록 리스트(Free Block List)에서 삭제 횟수가 적은 수대로 정렬하여 그 순서에 따라 사용한다.
도 2a는 종래기술에서 새로운 블록을 할당할 경우에 사용가능 블록 리스트에 새 블록을 추가하는 예를 나타낸 것으로, 삭제횟수가 가장 적은 수로 정렬되어 있으므로 사용가능 블록 리스트의 처음의 블록인 물리 블록 14번을 할당한다. 그리고 두 번째 사용가능 블록 리스트는 14번을 할당한 후의 사용가능 블록 리스트를 나타낸다.
도 2b은 종래기술에서 블록을 소거한후 사용가능 블록 리스트를 재조합한 예를 나타낸 것으로, 물리블록 2번이 소거되면 2번 블록의 삭제 횟수를 1증가시키고 증가된 삭제 횟수11의 값이 사용가능 블록 리스트에 삽입될 위치를 찾는다. 상기 사용가능 블록 리스트에서 물리 블록 30번의 삭제 횟수가 10이고 물리 블록 19번의 삭제 횟수가 14이므로 그사이에 삭제 횟수가 11인 물리 블록 2번이 삽입된다. 그리고 도 2b의 두 번째 사용가능 블록 리스트는 물리 블록 2번을 등록한 후의 사용가능 블록 리스트를 나타낸다.
도 2c는 종래기술에서 사용가능 블록 리스트에 사용 가능한 블록이 거의 없을 경우 이들 블록에 대한 삭제 횟수의 편차변화를 나타낸다. 도 2c와 같이 사용가능 블록 리스트에 사용 가능한 블록이 거의 없을 경우 즉, 거의 모든 블록이 사용중인 경우 사용 가능한 블록에 대한 소거 연산이 너무 많이 일어나서 다른 블록과 의 편차가 많이 발생된다. 즉, 물리 블록 30번과 31번 블록이 처음에는 삭제 횟수가 각각 10, 17 이었다가 이 두 블록만을 계속 사용하여 삭제 횟수가 각각 90, 97이 되어 다른 블록과의 편차가 많이 생기는 문제가 나타난다. 상기 도 2c의 예에서와 같이, 사용자가 할당된 데이터 영역을 대부분 사용하는 상황에서 같은 논리섹터에 대한 계속되는 다시 쓰기가 발생한다면 특정 물리블록에 대한 삭제작업이 반복되어 물리블록간의 삭제 횟수에 대한 편차는 점점 커질 수 있는 문제점이 있다.
또 다른 문제로 맵핑되지 않은 물리블록의 수가 많을 경우 삭제횟수에 따른 정렬작업이 시스템 성능에 영향을 미칠 수 있는 것이다.
본 발명은 상기한 종래 기술의 문제점을 해결하기 위해 안출된 것으로 플래시 메모리의 블록에 대한 삭제 횟수에 따라 구간 임계값과 구간 교환값을 설정하고, 상기 구간 교환값에 대응되는 정적 블록맵을 비트맵으로 생성하고, 블록 할당시 구간 임계값을 초과하는 사용가능 블록 리스트에 블록이 있으면 정적 블록 맵에 있는 블록과 데이터를 교환하여 삭제횟수가 적은 블록을 할당하여 블록의 삭제횟수를 평준화하는 플래시 메모리의 마모도 평준화 방법을 제공하는 것을 그 목적으로 한다.
또한 본 발명의 다른 목적은 구간 임계값을 초과하는 블록과 정적 블록맵에 있는 구간 교환 값 이하의 블록을 교환하다가 정적 블록 맵에 더 이상 교환할 블록이 없고 구간 임계값 이하의 사용가능 블록이 없으면 새로운 구간 임계값과 구간 교환값을 설정하여 블록의 삭제횟수를 평준화하는 플래시 메모리의 마모도 평준화 방법을 제공하는 것이다.
또한 본 발명의 또 다른 목적은 구간 임계값과 구간 교환값에서 사용가능 블록의 관리를 위해 새로운 구간 임계값과 이전 구간 교환값 사이의 값을 사용가능 블록리스트를 32로 등분하여 32개의 사용가능 블록 관리리스트로 사용가능 블록을 관리함으로써, 삭제 횟수에 따른 정렬 작업을 제거하여 시스템 성능을 향상시키는 플래시 메모리의 마모도 평준화 방법을 제공하는 것이다.
상기한 목적을 달성하기 위한 본 발명에 따르는 플래시 메모리의 마모도 평준화 방법은, 상기 플래시 메모리의 블럭에 대한 삭제 횟수를 기준으로 각기 다른 구간 교환값과 구간 임계값을 가지는 다수의 구간을 설정하고, 상기 플래시 메모리의 블럭들의 실제 삭제 횟수를 토대로 현재 구간을 설정하고, 각 블럭이 해당 구간의 구간 교환값을 초과하는지 여부를 표식하는 블럭별 정적 블럭 맵과, 각 블럭에 대한 삭제 횟수를 표식하는 사용가능 블록 리스트와, 상기 구간 임계값을 초과하는 블럭을 표식하는 구간 임계값 초과 블록 리스트를 부여하는 단계; 상기 플래시 메모리의 블록에 대한 할당이 요청되면, 상기 구간 임계값 초과 블록 리스트에 제1블록이 있는지 검색하는 단계; 상기 구간 임계값 초과 블록 리스트에 제1블록이 있으면, 상기 정적 블록 맵의 구간 교환값 미만으로 표식된 제2블록의 데이터를 상기 제1블록으로 복사하고, 상기 제2블록을 할당하는 단계; 상기 제1블록이 없으면, 상기 사용가능 블록 리스트 중 삭제횟수가 가장 적은 제3블록을 할당하는 단계를 포 함하는 것을 특징으로 한다.
상기한 본 발명은 삭제 횟수 범위에 따른 다수의 사용가능 블록 리스트를 통해 플래시 메모리의 블록을 관리함으로써 시스템의 성능을 향상시키고, 삭제횟수가 적은 사용가능블록을 먼저 사용함으로써 마모도의 편차를 줄일 수 있는 이점이 있다.
또한 본 발명은 플래시 메모리의 블록에 대한 임계 값을 구간별로 여러 번 설정하여 마모도 평준화를 다수 수행함으로써, 플래시 메모리의 마모도 편차를 더욱 줄일 수 있는 효과가 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
본 발명은 플래시 메모리의 블럭에 대한 삭제 횟수에 따라 여러 구간으로 설정한 후에, 각 블럭이 해당 구간에서 사용되는 최대 교환 기준 값인 구간 교환값을 초과하였는지 여부를 비트맵으로 표식하는 정적 블럭 맵과, 각 블럭에 대한 삭제 횟수를 표식함과 아울러 삭제 횟수범위별로 구분된 다수의 사용가능 블록 리스트 와, 해당 구간에서 사용되는 최대 블록 삭제 임계 값인 구간 임계값을 초과한 블럭을 표식하는 구간 임계값 초과 블록 리스트를 부여한다.
상기한 각 구간에 대해서는 구간 임계값과 구간 교환값이 설정된다.
상기 구간 임계 값과 상기 구간 교환 값은 플래시 메모리의 한계 삭제 횟수가 10만번인 메모리를 기준으로 최초 구간에 대한 임계값을 3만으로 구간 교환 값을 5천으로 설정한다. 두 번째 구간에 대한 임계값으로는 구간 임계값을 5만으로 구간 교환 값을 1만으로 설정한다. 세 번째 구간에 대한 임계값으로는 구간 임계값을 7만으로 구간 교환 값을 3만으로 설정한다. 네 번째 구간에 대한 임계값으로는 구간 임계값을 8만, 구간 교환 값을 5만으로, 마지막 구간에 대한 임계값으로는 구간 임계값을 9만, 구간 교환 값을 7만으로 설정한다.
그리고 각 구간에서 사용가능 블록 리스트의 개수는 리스트 디바이더가 지원하는 최대값을 사용한다. 상기 리스트 디바이더는 중앙처리장치가 한번에 처리 가능한 비트를 비교하여 최초 1의 위치를 가리키는 것으로, 32비트 시스템에서는 32비트를 비교하여 최초 1의 위치를 가리키고 64비트 시스템에서는 64비트를 비교하여 최초 1의 위치를 가리킨다. 상기 리스트 디바이더를 지원하지 않는 중앙처리장치는 임의의 방법을 통해 똑같은 기능을 제공할 수 있다. 여기서, 상기 리스트 디바이더의 값은 보통 2의 배수가 될 것이며, 본 발명에서는 32로 가정한다.
상기한 구간 교환 값이 설정되면 상기 구간 교환 값을 기준으로 정적 블록 맵을 비트맵으로 생성한다.
그리고 상기 구간 임계 값과 구간 교환 값 사이의 사용가능 블록을 관리하기 위해 구간 임계 값과 이전의 구간 교환 값(처음에는 0)을 32로 등분하여 32개의 사용가능 블록 리스트로 구성되는 사용가능 블록 리스트 그룹을 생성한다. 상기 32개의 사용가능 블록 리스트는 삭제횟수에 따라 블록을 관리한다.
예를들어, 블록의 삭제가 이행되면, 이 블록의 삭제횟수에 대응되는 사용가능 블록 리스트에 이 블록을 추가하고, 블록을 할당할 때에는 삭제횟수가 가장 적은 사용가능 블록 리스트에 등록된 블럭부터 할당한다.
상기 삭제횟수가 가장 적은 사용가능 블록 리스트에 더 이상 블록이 없으면 삭제횟수가 다음으로 적은 사용가능 블록 리스트에 등록된 블록을 할당한다. 이러한 방법으로 해당 구간 임계 값을 초과하는 블록이 발생할 때까지 32개의 사용가능 블록리스트에 있는 블록들을 할당한다.
그리고 구간 임계 값을 초과하는 블록이 최초로 발생하면 모든 블록을 검색하여 정적 블록 맵을 갱신한다. 상기 정적 블록 맵은 갱신 시점에서 사용중인 블록들 중 삭제회수가 구간 교환 값 이하에 해당되는 블록들은 1로 표시하고 그 이외의 모든 블록들은 0으로 표시한다. 그리고 구간 임계 값을 초과하는 블록을 구간 임계 값 초과 블록 리스트에 블록을 추가한다. 만약 구간 임계 값을 초과하는 블록과의 교환이 일어나기 전에 정적 블록 맵에 1인 블록 중에서 삭제연산이 일어나면 이 블록은 정적 블록 맵에서 제거한다는 의미로 0을 설정한다.
상기 블록을 할당할 때 구간 임계 값을 초과한 사용 가능 블록 리스트에 블록이 있으면 32개의 사용 가능 블록 리스트가 있더라고 우선적으로 구간 임계 값을 초과한 사용가능 블록리스트의 블록을 정적 블록 맵에 1인 블록과 데이터를 교환하 고 교환된 블록을 삭제하여 이 블록을 할당하고 정적 블록 맵에서 0으로 변경된다.
상기한 바와 같이 본 발명은 정적 블록 맵을 통해 구간 교환값을 초과하지 않은 블록을 대상으로 구간 임계값을 초과하는 블록과의 교환을 이행한다. 이는 시스템에서 삭제 또는 수정이 거의 없는 데이터가 기록된 블록이 존재하는 경우에 상기 블록의 삭제횟수는 그대로 유지된 채 다른 블록들에 대해서만 삭제가 계속 이행됨에 따라 발생하는 삭제횟수편차를 감소시키기 위한 것이다.
상기 블록 할당과 블록 교환후 블록 할당을 수행하다가 정적 블록 맵에 더 이상 1로 설정된 블록이 없고 32개의 사용 가능 블록 리스트에도 블록이 없으면 구간 임계 값과 구간 교환 값을 다시 설정한다. 새롭게 설정된 구간 임계 값과 구간 교환 값을 기준으로 사용 가능 블록을 관리하기 위해 구간 임계 값과 이전의 구간 교환 값을 32등분하여 32개의 사용가능 블록리스트를 생성하고 상기 과정을 반복한다.
본 발명은 시스템 초기화시 마모도 평준화의 구간을 설정하는 두 가지 방법을 제공한다.
첫 번째 방법은 모든 블록 중 삭제횟수가 가장 큰 블록을 찾고, 가장 큰 블록의 삭제횟수를 처음의 구간 임계 값과 비교하여 구간 임계 값에 특정 비율 내에 있으면 이 구간 임계 값으로 구간을 정하고 초과하면 다음 구간 임계 값에 특정 비율 내 인지 비교하는 방식으로 구간을 설정한다.
두 번째 방법은 정적 블록 맵을 갱신할 때 정적 블록 맵을 특정 물리블록에 저장해두고 이후 시스템 초기화시 해당 물리 블록에서 정적 블록 맵을 갱신하고, 상기 물리블록에 저장하는 작업은 정적 블록 맵이 갱신될 때마다 수행된다.
상기한 두 가지의 구간 설정 방법은 시스템 환경에 따라 적절히 선택된다. 예를 들어, 리부팅 작업이 많은 시스템에서는 두 번째 방법을 선택하는 것이 바람직할 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 3은 최초로 구간 임계값을 초과하는 블록이 발생했을 때의 정적 블록 맵의 갱신과정과 구간 임계 값을 초과하는 블록의 처리과정을 개략적으로 나타낸다. 상기 도 3을 참조하면, 본 발명은 32개의 사용가능 블록리스트로 구성되는 사용가능 블록리스트 그룹, 구간 임계 값 초과 블록리스트, 정적 블록 맵을 구비한다.
상기 구간 임계 값을 초과하는 블록이 발생하기 전 32개의 사용가능 블록리스트에는 각각의 사용가능 블록은 삭제횟수에 따라 자신의 블록 삭제횟수에 해당하는 사용가능 블록리스트에 등록된다.
최초로 구간 임계 값을 초과하는 블록이 발생하면 모든 블록을 검색하여 정적 블록 맵을 갱신한다. 상기 정적 블록 맵은 갱신 시점에서 사용중인 블록들 중 삭제횟수가 구간 교환 값 이하에 해당되는 블록들은 1로 표시하고 그 이외의 모든 블록들은 0으로 표시한다. 그리고 구간 임계 값 초과 사용가능 블록리스트에 구간 임계 값을 초과하는 블록을 추가한다.
상기 도 3에서는 45번 블록이 30000을 초과하여 구간 임계 값을 초과하는 블록이 발생되면, 상기 정적 블록 맵을 갱신하여 삭제횟수가 구간 교환 값 5000이하 이고 사용가능 블록이 아닌 0, 1, 2, 17, 21, 24 그리고 25번 블록에 대해서 1을 표시하고 나머지를 0으로 표시함을 나타낸다. 그리고 상기 45번 블록을 구간 임계 값 초과 사용가능 블록리스트에 추가한다.
도 4는 구간 임계 값 초과 사용가능 블록리스트에 블록이 있을 때 블록을 할당하는 과정을 개략적으로 나타낸다. 상기 도 4를 참조하면, 사용가능 블록 할당요청이 들어오면 구간 임계 값 초과 사용가능 블록리스트에 블록이 있는지 검색한다. 상기 구간 임계 값 초과 사용가능 블록 리스트를 통해 45번 블록이 검색되면, 상기 정적 블록 맵에서 1인 블록을 찾는다. 0번 블록이 1로 표시되어 있으므로 0번 블록의 데이터를 45번 블록에 복사한다. 복사가 끝나면 0번 블록을 삭제하고 정적 블록 맵에서 0번 블록을 0으로 표시한다. 삭제가 완료되면 사용가능 블록의 할당을 요청한 곳으로 블록을 넘겨준다.
도 5는 구간 임계 값 초과 사용가능 블록리스트에 블록이 없을 때 32개의 사용가능 블록리스트에서 블록을 할당하는 과정을 개략적으로 나타낸 것이다.
상기 사용가능 블록 할당요청이 들어오면 구간 임계 값 초과 사용가능 블록리스트에 블록이 있는지 검색하고 없으면, 32개의 사용가능 블록리스트에서 삭제횟수가 가장 적은 순서대로 사용가능 블록이 있는지 검색한다.
상기 구간 임계 값 초과 사용가능 블록리스트에 블록이 없으므로 32개의 사용가능 블록리스트 중 삭제횟수가 가장 적은 사용가능 블록리스트인 0번에 33번 블록이 있음을 알고 33번 블록을 할당한 곳으로 넘겨주고 0번 사용가능 블록리스트에서 33번 블록을 제거한다.
도 6a와 도 6b는 32개의 사용가능 블록리스트에 블록이 없고 정적 블록 맵에 1인 블록이 없을 때 새로운 구간을 설정하고 사용가능 블록리스트를 갱신하는 과정을 개략적으로 나타낸 것이다.
상기 도 6a에서는 32개의 사용가능 블록리스트에 블록이 없고 정적 블록 맵에 1인 블록이 없고 구간 임계 값 초과 사용가능 블록리스트에 사용가능 블록이 존재하는 것을 나타낸다. 여기에서는 더 이상 할당한 사용가능 블록이 없으므로 구간 임계 값이 50000이고 구간 교환 값이 10000인 새로운 구간으로 설정한다.
상기 도 6b는 구간 임계 값이 50000이고 구간 교환 값이 10000인 새로운 구간으로 설정하고 사용가능 블록리스트를 새로운 구간에 맞게 갱신한 것을 나타낸다.
상기 새 구간 임계 값이 50000과 이전 구간 교환 값인 5000 사이 삭제횟수를 32등분하여 32개의 새 사용가능 블록리스트를 갱신하고, 삭제횟수가 5000이하인 블록은 사용가능 블록리스트 0번에 한꺼번에 관리한다. 상기 사용가능 블록리스트를 갱신한 후 사용가능 블록을 각 블록의 삭제횟수에 해당하는 블록리스트에 추가한다. 상기 정적 블록 맵은 새로운 구간 임계 값인 50000을 초과하는 블록이 나오면 갱신함으로 현재는 이전 구간과 변화가 없다.
도 7은 사용가능 블록할당 요청이 들어왔을 때 블록을 할당하는 과정에 대한 흐름도이다.
상기 플래시 메모리를 관리하는 제어모듈은 상기 플래시 메모리에 대한 사용가능 블록의 할당요청이 들어오면 구간 임계 값 초과 사용가능 블록리스트에 블록 이 있는지 검색한다(100,102단계). 상기 블록이 있으면 정적 블록 맵을 검색하고 정적 블록 맵에 1인 블록을 찾는다(104,106단계). 1인 블록이 있으면 정적 블록 맵에 1인 블록의 데이터를 구간 임계 값 초과 사용가능 블록리스트의 블록으로 복사하고 정적 블록 맵에 1인 블록을 삭제하고 0으로 표시한다(108,110단계). 이후, 상기 제어모듈은 상기 삭제한 블록을 할당한다(112단계).
상기한 바와 달리 구간 임계 값 초과 사용가능 블록리스트에 블록이 없거나 정적 블록 맵에 1인 블록이 없으면 32개의 사용가능 블록리스트를 검색하여 사용가능 블록이 있는지 찾는다(114,116단계). 상기 사용가능 블록이 있으면 삭제횟수가 가장 적은 블록리스트의 블록을 할당한다(118단계).
상기한 바와 달리 32개의 사용가능 블록리스트를 사용가능 블록이 없으면 더 이상 할당할 사용가능 블록이 없으므로 새로운 구간을 설정한다(120단계).
상기 새로운 구간 임계 값과 이전 구간 교환 값 사이에 새로운 32개의 사용가능 블록리스트 생성하고(122단계), 이전 구간 임계 값 초과 사용가능 블록리스트의 블록들을 새로운 32개 사용가능 블록리스트에 추가하고 이전 구간 임계 값 초과 사용가능 블록리스트를 초기화한다(124단계). 삭제횟수가 가장 적은 블록리스트로부터 블록 할당한다(126단계).
도 1은 종래기술에 따른 플래시 메모리의 마모도 평준화 방법을 개략적으로 도시한 도면.
도 2a 내지 도 2c는 종래 기술에 따른 플래시 메모리의 블록 리스트 처리 과정을 예시한 도면.
도 3은 본 발명의 바람직한 실시예에 따라 최초로 구간 임계 값을 초과하는 블록이 발생했을 때의 정적 블록 맵의 갱신과정과 구간 임계 값을 초과하는 블록의 처리과정을 개략적으로 나타낸 도면.
도 4는 본 발명의 바람직한 실시예에 따라 구간 임계 값 초과 사용가능 블록리스트에 블록이 있을 때 블록을 할당하는 과정은 개략적으로 나타낸 도면.
도 5는 구간 임계 값 초과 사용가능 블록리스트에 블록이 없을 때 32개의 사용가능 블록리스트에서 블록을 할당하는 과정을 개략적으로 나타낸 도면.
도 6a와 6b는 32개의 사용가능 블록리스트에 블록이 없고 정적 블록 맵에 1인 블록이 없을 때 새로운 구간을 설정하고 사용가능 블록리스트를 갱신하는 과정을 개략적으로 나타낸 도면.
도 7은 사용가능 블록할당 요청이 들어 왔을 때 블록을 할당하는 과정에 따른 처리 흐름도.

Claims (4)

  1. 플래시 메모리의 마모도 평준화 방법에 있어서,
    상기 플래시 메모리의 블럭에 대한 삭제 횟수를 기준으로 각기 다른 구간 교환값과 구간 임계값을 가지는 다수의 구간을 설정하고, 상기 플래시 메모리의 블럭들의 실제 삭제 횟수를 토대로 현재 구간을 설정하고, 각 블럭이 해당 구간의 구간 교환값을 초과하는지 여부를 표식하는 블럭별 정적 블럭 맵과, 각 블럭에 대한 삭제 횟수를 표식하는 사용가능 블록 리스트와, 상기 구간 임계값을 초과하는 블럭을 표식하는 구간 임계값 초과 블록 리스트를 부여하는 단계;
    상기 플래시 메모리의 블록에 대한 할당이 요청되면, 상기 구간 임계값 초과 블록 리스트에 제1블록이 있는지 검색하는 단계;
    상기 구간 임계값 초과 블록 리스트에 상기 제1블록이 있으면, 상기 정적 블록 맵에서 구간 교환값 미만으로 표식된 제2블록의 데이터를 상기 제1블록으로 복사하고, 상기 제2블록을 할당하는 단계;
    상기 구간 임계값 초과 블록 리스트에서 상기 제1블록이 없으면, 상기 사용가능 블록 리스트 중 삭제횟수가 가장 적은 제3블록을 할당하는 단계;를 포함하며,
    상기 사용가능 블록 리스트는 사용가능 블록과 삭제가 필요한 블록을 포함해서 관리하고 이를 위해 삭제 횟수 범위별로 다수 구비됨을 특징으로 하는 플래시 메모리의 마모도 평준화 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 정적 블럭 맵에 구간 교환값 미만인 블록이 없고,
    상기 사용가능 블록 리스트에 구간 임계값 이하의 블록이 없으면,
    상기 구간 교환값 및 상기 구간 임계값을 다음 구간의 상기 구간 교환값 및 상기 구간 임계값으로 갱신함을 특징으로 하는 플래시 마모도 평준화 방법.
  4. 제1항에 있어서,
    시스템 초기화시 상기 구간의 설정은,
    상기 플래시 메모리의 모든 블록 중 삭제횟수가 가장 큰 블록의 삭제횟수를 각 구간의 구간 임계값와 비교하여 상기 삭제횟수가 구간 임계값 내에 존재하는 구간으로 설정하거나,
    정적 블록 맵의 갱신시마다 정적 블록 맵을 특정 물리블록에 저장해두고 이후 시스템 초기화시 마모도 평준화의 구간 설정을 해당 물리 블록에서 읽어와서 갱신함을 특징으로 하는 플래시 메모리 마모도 평준화 관리 방법.
KR1020070098126A 2007-09-28 2007-09-28 플래시 메모리의 마모도 평준화 방법 KR100885026B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070098126A KR100885026B1 (ko) 2007-09-28 2007-09-28 플래시 메모리의 마모도 평준화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070098126A KR100885026B1 (ko) 2007-09-28 2007-09-28 플래시 메모리의 마모도 평준화 방법

Publications (1)

Publication Number Publication Date
KR100885026B1 true KR100885026B1 (ko) 2009-02-25

Family

ID=40681962

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070098126A KR100885026B1 (ko) 2007-09-28 2007-09-28 플래시 메모리의 마모도 평준화 방법

Country Status (1)

Country Link
KR (1) KR100885026B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150133916A (ko) * 2014-05-20 2015-12-01 삼성전자주식회사 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004296014A (ja) * 2003-03-27 2004-10-21 Mitsubishi Electric Corp 不揮発性メモリの消去回数平準化方法
KR20050079991A (ko) * 2005-06-29 2005-08-11 박상원 플래시 메모리의 효율적인 소거 횟수 평준화방법(k-평준화)

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004296014A (ja) * 2003-03-27 2004-10-21 Mitsubishi Electric Corp 不揮発性メモリの消去回数平準化方法
KR20050079991A (ko) * 2005-06-29 2005-08-11 박상원 플래시 메모리의 효율적인 소거 횟수 평준화방법(k-평준화)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150133916A (ko) * 2014-05-20 2015-12-01 삼성전자주식회사 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
KR102211865B1 (ko) 2014-05-20 2021-02-04 삼성전자주식회사 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법

Similar Documents

Publication Publication Date Title
US8060718B2 (en) Updating a memory to maintain even wear
EP3367251B1 (en) Storage system and solid state hard disk
US7224604B2 (en) Method of achieving wear leveling in flash memory using relative grades
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
US11704239B2 (en) Garbage collection method for storage medium, storage medium, and program product
US6401160B1 (en) Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory
US7882300B2 (en) Apparatus and method for managing nonvolatile memory
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP6139381B2 (ja) メモリシステムおよび方法
US20090259819A1 (en) Method of wear leveling for non-volatile memory
US9189390B2 (en) Wear leveling for erasable memories
US20180067850A1 (en) Non-volatile memory device
US8200891B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
WO2011061724A1 (en) Memory controller and methods for enhancing write performance of a flash device
JPH0816482A (ja) フラッシュメモリを用いた記憶装置およびその記憶制御方法
KR20010029171A (ko) 플래시 메모리와 그 제어 방법
KR20010042905A (ko) 비휘발성 메모리에서의 가변 크기 데이터의 효율적인관리를 위한 동적 할당
JP2005242897A (ja) フラッシュディスク装置
KR20190052083A (ko) 저장된 데이터를 플래시 메모리에 기초한 저장 매체에 기입하기 위한 방법 및 디바이스
CN110764704B (zh) 一种环境变量写入方法、存储介质及电子装置
KR100624973B1 (ko) 플래시 메모리의 효율적인 소거 횟수 평준화방법(k-평준화)
US9703495B2 (en) Memory controller, memory system, and memory control method
KR100885026B1 (ko) 플래시 메모리의 마모도 평준화 방법
JP2021033945A (ja) メモリシステムおよび制御方法
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee