KR20020029899A - 저장 매체 상에서 데이터 관리를 위한 방법, 시스템 및컴퓨터 프로그램 - Google Patents

저장 매체 상에서 데이터 관리를 위한 방법, 시스템 및컴퓨터 프로그램 Download PDF

Info

Publication number
KR20020029899A
KR20020029899A KR1020027000114A KR20027000114A KR20020029899A KR 20020029899 A KR20020029899 A KR 20020029899A KR 1020027000114 A KR1020027000114 A KR 1020027000114A KR 20027000114 A KR20027000114 A KR 20027000114A KR 20020029899 A KR20020029899 A KR 20020029899A
Authority
KR
South Korea
Prior art keywords
block
blocks
data
value
counter
Prior art date
Application number
KR1020027000114A
Other languages
English (en)
Other versions
KR100818035B1 (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 요트.게.아. 롤페즈
Publication of KR20020029899A publication Critical patent/KR20020029899A/ko
Application granted granted Critical
Publication of KR100818035B1 publication Critical patent/KR100818035B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7211Wear leveling
    • 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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

복수의 블록들(21)을 포함하는 저장 매체(10)를 관리하기 위한 방법 및 시스템이 제공된다. 제 1 블록(22)이 삭제되어야 할 때, 상기 제 1 블록(22)의 마모 수준(wear level)이 상기 삭제를 실행하는 것을 받아들일 수 있는지에 대한 결정이 이루어진다. 받아들일 수 있다면, 상기 제 1 블록(22) 상의 데이터는 삭제된다. 받아들일 수 없다면, 상기 제 1 블록(22)보다 낮은 마모 수준을 갖는 제 2 블록(23)이 선택되고, 상기 제 2 블록(23)의 데이터가 상기 제 1 블록(22)으로 복사된다. 양호하게, 모든 블록(22)은 블록이 삭제된 횟수를 추적하는 관련 카운터를 구비한다. 과거에 거의 삭제되지 않았던 블록들은 미래에도 삭제될 가능성이 거의 없으므로, 이 후 상기 제 1 블록(2)은 자주 삭제되지 않을 것이며 그러므로 그 수명이 연장된다. 상기 제 2 블록(23)은 이제 새로운 데이터를 저장하는데 사용될 수 있고 더 자주 사용될 것이다.

Description

저장 매체 상에서 데이터 관리를 위한 방법, 시스템 및 컴퓨터 프로그램{Method, system and computer program for data management on storage medium}
서두에서 정의한 형태의 방법은 미국특허 제5,896,393호에 공지되어 있다. EEPROMs 및 플래쉬 메모리들과 같은 비휘발성 저장 매체는, 전류가 스위치 오프될 때 매체에 저장된 데이터가 세이브된다는 점에서 유리하다. 그렇지만, 상대적으로 긴 액세스 시간을 갖는다는 것 외에도, 각각의 기록 동작이 선행하는 삭제 동작을 요구하며 각각의 기록 및 삭제 동작은 저장 매체를 저하시킨다는 단점을 갖는다. 그러한 저장 매체는 개별적으로 기록, 판독 및 삭제될 수 있는 블록들로 종종 분할된다. 이것이 갖는 문제는 블록이 마모되기 전에 상기 블록의 삭제 및 기록 동작과 같은 전환의 제한된 횟수만이 가능하다는 점이다.
미국특허 5,896,393호에는 복수의 블록들을 포함하는 저장 매체의 관리 방법에 대해 기재되어 있다. 상기 방법은 먼저 저장 매체에서 제 1 블록을 저장 블록(저장 어레이)으로서 선택하고 제 2 블록을 업데이트 블록(업데이트 어레이)으로서 선택한다. 파일들은 상기 제 1 블록에 저장된 다음 "활성(active)"이라 표시된다. 저장된 파일들은 삭제될 수 있다. 이것은 삭제 동작을 실행함이 없이, 상기 블록들 중 한 블록 상에서 그것들을 "비활성(inactive)"이라 표시함으로써 발생된다. 주기적으로, "활성"이라 표시된 상기 저장된 블록들은 제 2 블록으로 복사되고, 그 후 상기 제 1 블록은 삭제된다. 이 후, 상기 제 2 블록은 저장 블록으로서 표시되고 다른 블록이 업데이트 블록으로서 선택된다. 상기 다른 블록을 위한 선택은, 상기 복수의 블록들 중 임의의 블록을 선택하거나 상기 저장된 블록에 논리적으로 선행하는 블록을 선택함으로써 이루어진다. 모든 저장된 파일들을 상기 제 2 블록에 주기적으로 복사하는 것은 복사할 필요가 없는 파일들도 복사한다는 점에서 불리하다. 임의적 선택은 모든 블록들이 항상 저장된 블록으로서 선택되는 것을 보장할 수 없어 일련의 블록들이 다른 블록들보다 더 마모된다는 점에서 불리하다. 부가해서, 이 방법은 어떤 파일들은 더 적응될 필요가 있고 다른 파일들은 거의 적응될 필요가 없다는 사실을 고려하지 않는다는 점에서 불리하다. 이것은 필수는 아닐지라도, 모든 파일들은 종종 동일하게 복사된다. 결과적으로, 상기 저장 매체는 일정하게 마모되지 않으며 상기 저장 매체의 일부분들이 다른 부분들보다 더 마모된다.
본 발명은 저장 매체에서 데이터를 관리하는 방법에 관한 것으로서, 상기 저장 매체는 데이터가 저장될 수 있는 복수의 블록들을 포함하며, 상기 복수의 블록들 중 제 1 블록이 전환을 실행하기 위해 선택된다.
본 발명은 또한 저장 매체에서 데이터를 관리하는 시스템에 관한 것으로서, 상기 저장 매체는 데이터가 저장될 수 있는 복수의 블록들을 포함하며, 상기 시스템은 전환을 실행하기 위해 상기 복수의 블록들 중 제 1 블록을 선택하도록 배열된다.
본 발명의 목적은 저장 매체의 수명이 연장되고 이 수명 동안 최대 용량을 사용될 수 있는 상기 저장 매체에서 데이터를 관리하는 방법을 제공하는 것이다.
상기 목적은 상기 제 1 블록의 마모 수준(wear level)이 상기 전환의 실행을 받아들일 수 있는지를 결정하고, 받아들일 수 있다면, 상기 제 1 블록에서의 상기 전환을 실행하고, 받아들일 수 없다면,
상기 복수의 블록들 중 상기 제 1 블록보다 낮은 마모 수준을 갖는 제 2 블록을 선택하는 단계와,
상기 제 2 블록의 데이터를 상기 제 1 블록으로 복사하는 단계를 포함하는 본 발명에 따른 방법에 의해 달성된다.
본 발명은, 블록 내의 데이터가 과거에 거의 변경되지 않았다면 미래에는 더 변경되지 않을 것이라는 인식에 근거한다. 저장 매체는 일반적으로 프로그램 코드와 이 프로그램 코드에 의해 사용되는 데이터와의 혼합을 포함한다. 상기 프로그램 코드는 거의 변경되지 않으며 반면에 상기 데이터는 규칙적으로 적응된다. 이 때 상기 프로그램 코드를 포함하는 블록들은 데이터를 포함하는 블록들보다 낮은 마모 수준을 갖는다. 본 발명의 상기 인식으로부터 출발하면, 제 1 블록 상에서의 변환들의 횟수는 낮은 마모 수준을 갖는 제 2 블록의 데이터를 상기 제 1 블록으로 복사하는 것에 의해 미래에 제한될 수 있다. 결과적으로, 상기 제 1 블록의 수명은 연장된다. 또한, 상기 제 1 블록은, 마모 수준이 상기 제 1 블록의 마모 수준보다 낮은 다른 블록들이 존재한다면, 전환을 행하도록 선택되지 않을 것이다. 그래서,다른 블록들이 훨씬 동일하게 마모될 때까지 상기 제 1 블록은 마모되지 않을 것이다. 이것은 전체적인 저장 매체에 대해 마모가 균일하게 분포되게 하여 상기 저장 매체의 수명을 연장시킨다.
특정한 실시예에서, 상기 복수의 블록들 중 상기 블록들은 관련된 블록에서의 전환의 횟수를 카운트하는 관련 카운터를 구비하며, 상기 제 1 블록의 카운터의 값이 제한 값보다 작을 때는, 상기 카운터의 값이 증가되어 상기 전환이 실행되며, 상기 제한 값보다 작지 않을 때는, 카운터가 상기 제 1 블록의 카운터보다 낮은 값을 갖는 블록이 제 2 블록으로서 선택된다. 상기 카운터는 각각의 블록 상에서 전환들의 횟수를 카운트하는데 사용된다. 각각의 전환에 따라 이 카운터의 값은 증가된다. 상기 카운터가 상기 제한 값을 초과할 때, 이것은 각각의 블록이 많은 전환들을 행했다는 표시이다. 이 때 상기 블록은 더 마모되고 상기 블록은 파손될 기회가 더 많아지게 되고, 그래서 관련 카운터가 상기 제 1 블록의 카운터보다 낮은 값을 갖는 상기 제 2 블록으로부터의 데이터가 상기 제 1 블록으로 복사된다. 카운터의 사용은 마모 수준을 추적하는데 있어서 매우 간단하고 효과적인 방법이다.
본 발명의 특정한 실시예에서, 상기 낮은 값은 상기 복수의 블록들 중 상기 블록들의 카운트들의 가장 낮은 값이다. 이 실시예는 모든 블록들이 결국 제 2 블록으로서 선택되고 그래서 결국 모든 블록들이 훨씬 동일하게 사용된다는 점에서 유리하다. 상기 낮은 값이 상기 가장 낮은 값이 아니면, 블록이 선택되지 않거나 자주 선택되지 않을 가능성이 존재하며, 그래서 이 블록은 자주 사용되지 않고 그러므로 다른 블록들보다 덜 마모된다. 이 실시예에 따라 모든 블록들이 훨씬 동일하게 사용되어 저장 매체의 수명이 최대로 되는 것이 달성된다.
본 발명의 특정한 실시예에서, 상기 제한 값은 상기 복수의 블록들 중 상기 상기 블록들의 대부분의 카운터들이 상기 제한 값을 초과할 때 증가된다. 이 실시예는 상기 제한 값이 이제 낮은 값으로 초기에 설정될 수 있고 그래서 다양한 블록들의 관련 카운터들의 값들에서의 큰 차이 없이도, 상기 저장 매체의 마모가 균일하게 분포된다는 점에서 유리하다. 제한 값이 크다면, 상기 카운터들의 값들의 차이는 높아지게 되고, 그래서 일련의 블록들이 자신들의 수명에 보다 빠르게 도달하게 되지만, 다른 블록들은 약간의 전환들이 행해져서 오랫동안 여전히 지속될 수 있다.
본 발명의 특정한 실시예에서, 상기 제 2 블록에서 상기 제 1 블록으로 데이터가 복사된 후에 상기 제 2 블록이 삭제된다. 이 실시예는 상기 제 2 블록이 이제 새로운 데이터를 위해 즉시 사용가능하게 된다는 점에서 유리하다.
본 발명의 특정한 실시예에서, 상기 전환은 상기 제 1 블록을 삭제하는 단계를 포함한다. 이 실시예는, 블록이 삭제될 때 상기 블록이 특히 마모되기 때문에, 삭제 동작의 횟수가 마모량의 합리적인 정확한 척도가 된다는 점에서 유리하다.
본 발명의 목적은 또한 저장 매체에서 데이터를 관리하는 시스템을 제공하는 것이며, 상기 저장 매체의 수명은 연장되며 이 수명 동안 최대 용량이 사용가능하다.
이 목적은 제 1 블록의 마모 수준(wear level)이 전환의 실행을 받아들일 수 있는지를 결정하는 제어 수단(26)을 포함하며, 받아들일 수 있다면, 상기 제 1 블록 상에서의 상기 전환을 실행하고, 받아들일 수 없다면,
상기 복수의 블록들 중 상기 제 1 블록보다 낮은 마모 수준을 갖는 제 2 블록을 선택하는 단계와,
상기 제 2 블록의 데이터를 상기 제 1 블록으로 복사하는 단계를 포함하는 것을 특징으로 하는 시스템에 의해 본 발명에 따라 달성된다.
시스템의 특정한 실시예에서, 상기 복수의 블록들 중 상기 블록들은 관련된 블록에서의 전환의 횟수를 카운트하는 관련 카운터를 구비하며, 상기 제어 수단은, 상기 제 1 블록의 카운터의 값이 제한 값보다 작을 때는, 상기 카운터의 값을 증가시키고 상기 전환을 실행하며, 상기 제한 값보다 작지 않을 때는, 카운터가 상기 제 1 블록의 카운터보다 낮은 값을 갖는 블록을 제 2 블록으로서 선택하도록 배열된다.
상기 시스템의 특정한 실시예에서, 상기 시스템은 상기 블록들의 카운터들의 값이 지정되어 있는 테이블을 초기에 구성하도록 배열된다. 이것은 예를 들어 상기 시스템을 개시함으로써 유효화될 수 있다. 이 실시예는, 상기 테이블이 고속의 휘발성 메모리에 저장될 수 있어서 테이블을 참조하는 것이 관련 블록으로부터 상기 카운터를 판독하는 것에 비해 빠르다는 점에서 유리하다.
상기 시스템의 특정한 실시예에서, 상기 제어 수단은 상기 제 2 블록으로부터의 상기 데이터가 상기 제 1 블록으로 복사된 후 상기 제 2 블록을 삭제하도록 배열된다. 이 실시예는 상기 시스템의 기능이 예를 들어 전원 장애로 인해 복사 프로세스 동안 방해받는다면, 상기 데이터는 여전히 상기 제 2 블록에 존재한다는 점에서 유리하다.
본 발명은 또한 프로그램 가능한 장치를 본 발명에 따른 시스템으로서 기능하게 할 수 있는 컴퓨터 프로그램 제품에 관한 것이다.
이들 특징 및 다른 특징들을 첨부된 도면들을 참조하여 상세히 설명한다.
도 1은 저장 매체의 다이어그램 도시도이다.
도 2는 본 발명에 따른 데이터 관리를 위한 시스템의 다이어그램 도시도이다.
도면들에 있어서 동일한 참조 부호들은 유사한 또는 대응하는 부분들을 나타낸다. 도면들에 도시된 몇몇 부분들은 통상적으로 소프트웨어로 실행되며, 그러한 표시는 예를 들어 소프트웨어 모듈 또는 오브젝트와 같은 소프트웨어 실재물을 나타낸다.
도 1은 본 발명에 따른 시스템에서 사용되는 것과 같은 저장 매체(10)의 구조를 도시한다. 상기 저장 매체(10)는 복수의 블록들을 포함한다. 블록(11)은 차례로 복수의 페이지들을 포함한다. 페이지(12)는 제 1 부분(12) 및 제 2 부분(13)으로 구성될 수 있으며, 상기 제 1 부분(13)은 데이터를 저장하기 위해 사용되며, 상기 제 2 부분(14)은 상기 제 1 부분(13)에 저장된 데이터를 위한 에러 정정 코드들과 같은 관련 정보를 저장하기 위해 사용된다. 그러한 저장 매체(10)의 예로는 삼성 KM29U1 NAND 플래쉬 장치가 있다. 이 저장 매체는 각각 16 킬로바이트의 1024 블록으로 분할된다. 각각의 블록은 528 바이트의 32 페이지로 분할된다. 페이지는다시 512 바이트의 제 1 부분과 16 바이트의 제 2 부분으로 분할된다.
NAND 플래쉬 메모리들과 같은 저장 매체에 있어서, 개개의 바이트들은 직접적으로 액세스될 수 없다. 데이터의 판독 및 기록은 12 페이지씩 유효하다. 게다가, 개개의 페이지들을 삭제하는 것은 불가능하다. 페이지들을 갖는 완전한 블록(11)을 동시에 삭제함으로써 삭제가 이루어진다. 페이지를 포함하는 상기 블록을 삭제함이 없이 상기 페이지를 재기록하는데는 제한된 양(통상적으로 5 내지 10 회)이 가능하다.
페이지 상의 데이터가 더 이상 유효하지 않을 때 완전한 블록을 삭제하는 것은 통상적으로 바람직하지 않다. 이 문제를 해결하는 종래의 방법은 페이지를 위한 상이한 가능한 상태들을 한정하는 것이다. 페이지(12)의 상태는 예를 들어 하나 또는 그 이상의 비트 플래그들의 형태로 제 2 부분(14)에 저장될 수 있다.
그런 다음 페이지(12)는 그 상태를 "삭제된"으로 변경시킴으로써 삭제될 수 있다. 하나의 블록이 삭제될 때, 그 블록에서의 모들 페이지들의 상태는 "자유(free)"로 변경된다. 기록되는 페이지는 "기록된(written)" 상태로 변경된다. "자유" 상태를 갖고 있는 페이지들만이 기록될 수 있다. 그래서, "삭제된" 상태를 갖고 있는 페이지는, 위치가 정해져 있는 블록이 삭제될 때까지 더 이상 사용될 수 없다.
이 기술에서는, 페이지를 삭제함으로써 저장 매체 상에 무효한 공간이 더 이상 존재하지 않게 된다. 저장 매체가 많이 사용될 수록 사용가능한 자유 공간은 적어진다. 이 자유 공간을 사용하기 위한 유일한 방법은 블록을 삭제하는 것이다. 자유 공간을 사용하기 위해 블록들을 삭제하는 것은, 예를 들어 주기적으로, 또는 자유 공간의 양이 소정의 제한(certain limit) 이하로 떨어졌을 때의 시간에서 유효화될 수 있다.
"기록된" 상태를 갖는 페이지들이 없는 블록들을 삭제하는 것이 더 양호한데, 왜냐하면 상기 삭제 동안 데이터가 손실되지 않기 때문이다. 그렇지만, 그러한 블록들이 존재하지 않거나, 이들 블록들만을 삭제함으로써 사용될 수 있는 것보다 보다 많은 자유 공간이 필요하다면, "기록된" 상태를 갖는 페이지들을 포함하는 블록들도 삭제되어야만 한다. 이것은, 이들 페이지들 상의 데이터가 세이브되기 위해서는, 상기 "기록된" 상태를 갖는 모든 페이지들이 복사되어야 하는 다른 제 1 블록이 발견되어야 한다는 것을 의미한다.
복사 동작 후, 관리 데이터(administrative data)를 적응시킬 필요도 있다. 예를 들어, 상기 저장 매체(10) 상에 파일들이 저장되면, 상기 저장 매체(10)에 속하는 파일 할당 테이블이 존재할 수 있으며, 상기 저장 매체에서는 파일과 그 파일의 내용물을 포함하는 하나 또는 그 이상의 페이지들 사이의 대응(correspondence)이 지정되어 있다. 이 때 상기 파일에 속하는 오른 쪽 페이지들이 지정되도록 상기 테이블이 적응되어야 한다. 대안적으로, 저장된 데이터를 위한 논리 어드레스들이 이들 데이터가 저장되어 있는 각각의 페이지들로 변형되는 인터페이스가 존재하는 것도 가능하다. 그 경우, 상기 인터페이스를 사용하는 정보가 적응된다. 다른 시스템에 있어서는 동등한 방법이 수행될 수 있다.
이 방법에서 자유 공간을 사용하는데는 시간이 걸리기 때문에, 삭제되어야하는 블록들의 수, 예를 들어 소정의 상한(certain upper limit)에 또는 소정의 상한까지 새로운 데이터를 저장하는데 필요한 블록들의 수를 제한할 것이 권장된다.
상기 저장 매체는 블록마다 제한된 수의 삭제 동작만이 행해질 수 있다. 블록이 너무 많은 횟수로 삭제되면, 마모량이 너무 커져 고장이 일어나며 그러면 더 이상 새로운 데이터를 저장할 수 없게 된다. 통상적인 NAND 플래쉬 메모리에 있어서, 에러 정정 코드들을 사용하지 않으면 100,000 동작이 가능하며, 에러 정정 코드들을 사용하면 1,000,000 동작이 가능하다.
도 2는 저장 매체(10)에서 데이터를 관리하기 위한 시스템을 도시한다. 상기 저장 매체(10)는 예를 들어 NAND 플래쉬 메모리이다. 그것은 도 1에 도시된 바와 같은 특징적 부분들을 가지며 그래서 복수의 블록들(21)을 포함하며, 상기 복수의 블록(21) 중 각각의 블록(22)은 복수의 페이지들(25)을 포함하며, 이 페이지들에 데이터가 저장될 수 있다.
상기 시스템은 또한 제어 유닛(26)을 포함한다. 이 유닛은 페이지들 상의 데이터를 판독 및 기록할 수 있으며 블록들을 삭제할 수 있다. 상기 제어 유닛(26)은 또한 어떤 데이터가 어디에 저장되는지를 등록하고, 상기 저장 매체(10)의 관리를 위해 필요한 다른 관리 작업들을 수행한다. 상기 제어 유닛(26)이 본 문헌에서는 시스템과는 분리된 부분으로서 구현되어 있지만, 대안적으로 상기 저장 매체(10)를 제어하는 장치 드라이버에서 소프트웨어로 상기 제어 유닛(26)의 기능들을 실행하도록 하는 것이 가능하거나, 상기 저장 매체(10)가 포함되어 있는 컴퓨터 시스템의 운영 체제의 부분을 형성하는 기능들을 가지도록 하는 것도 가능하다.
상기 제어 유닛(26)의 작업들 중 하나는 상기 자유 공간을 사용하기 위해 블록들을 삭제하는 것이다. 데이터가 기록되어야 하고 이를 위한 사용가능한 공간이 불충분할 때 상기 제어 유닛(26)은 이를 행할 필요가 있다. 상기 제어 유닛(26)은 블록들을 주기적으로 삭제할 수도 있고 또는 예를 들어 카운터에서 자유 공간의 양을 추적할 수도 있으며 이 양이 규정된 제한 이하로 떨어질 때 블록들을 삭제할 수도 있다.
블록의 상기 전환(mutation)은 마모를 더욱 증가시키기 때문에, 블록이 전환을 행한 횟수를 계속 추적하는 것이 유익하다. 양호한 실시예에서, 그러므로 상기 복수의 블록들(21) 중 상기 블록들은 블록이 전환을 행한 횟수를 추적하기 위한 관련 카운터를 구비한다. 양호한 실시예에서 이 카운터는 상기 블록의 삭제 동작 횟수를 카운트한다. 상기 카운터는 상기 블록(11)의 저장 공간 내, 예를 들어 상기 블록(11)의 하나 또는 그 이상의 페이지들(12)의 제 2 부분(14)에 저장될 수 있다. 상기 카운터를 사용하는 대신에, 상기 블록들은 마모 수준(wear level)이 받아들일 수 없게 되었다는 신호를 보내는 몇몇 다른 관련 식별자를 포함할 수도 있다. 상기 제어 유닛(26)은 개개의 블록들에서 삭제 동작들의 평균 횟수와 같은 허리스틱(heuristic)을 마모 수준의 측정으로서 사용할 수도 있다.
상기 카운터들은 예를 들어 테이블 내에 포함될 수도 있어서, 상기 카운터들의 값을 신속하게 판독하는 것이 가능하다. 마찬가지로, 예를 들어 초기에, 상기 시스템이 개시되었을 때, 메모리(10)로부터 모든 블록들의 카운터들의 값을 판독하고 그것들을 테이블에 저장함으로써 상기 테이블을 구성하도록 시스템을 배열하는것이 가능하다. 이 때 상기 테이블은 고속 휘발성 메모리에 저장될 수 있어서, 블록을 위한 카운터를 참조하는 것이 상기 관련 블록의 상기 카운터가 상기 메모리(10)로부터 직접 판독되는 상황에 비해 빠르다.
상기 카운터 유닛(26)은 이제 선택된 블록(22)이 얼마 자주 삭제되었는지를 결정할 수 있다. 예를 들어 상기 저장 매체(10)에 방(room)을 만들어야 하기 때문에, 또는 상기 선택된 블록(22) 상의 데이터가 삭제되어야 하기 때문에, 상기 선택된 블록(22)이 다시 삭제되어야 한다면, 양호한 실시예에서의 상기 제어 유닛(26)은 상기 관련 카운터의 값을 검사한다. 상기 카운터의 값이 제한 값(limit value)보다 작을 때, 상기 제어 유닛(26)은 상기 블록(22)을 삭제하고 상기 카운터를 증가시킨다.
상기 저장 매체(10)에 방을 만들기 위해 상기 제 1 블록(22)을 삭제해야만 할 때, 상기 제어 유닛(26)은, 도 1을 참조하여 설명한 바와 같이, 상기 제 1 블록을 삭제하기 전에 상기 블록(22)에 존재하는 "기록된" 상태를 갖는 페이지들을 다른 블록(24)에 복사해야만 한다.
상기 제 1 블록(22)의 마모 수준이 받아들일 수 없는 것으로 발견될 수도 있다. 양호한 실시예에서, 이것은, 상기 관련 카운터의 값이 상기 제한 값보다 큰 것으로 판명될 때 발생한다. 상기 블록(22)이 여러 번 삭제되고, 그래서 블록(22)의 마모량이 상기 블록이 파손될 정도로 크게 되는 것을 피하기 위해, 상기 제어 유닛(26)은 모든 블록들의 관련 카운터들을 검사하고, 카운터가 블록의 상기 제 1 블록(22)의 카운터보다 낮은 값을 갖는 블록을 양호하게 선택함으로써, 상기 복수의 블록들(21) 중 제 2 블록(23)를 선택한다.
상기 낮은 값은 상기 복수의 블록들(21) 중 상기 블록들의 카운터들의 값들 중 가장 낮은 값으로 되는 것이 권장된다. 그 경우, 모든 블록들은 언제나 제 2 블록(23)으로서 선택되며, 그래서 결국, 모든 블록들은 종종 동일하게 사용된다. 상기 낮은 값이 상기 가장 낮은 값이 아니라면, 블록이 선택되지 않거나 다른 블록들보다 자주 선택되지 않을 가능성이 있게 되어, 이 블록은 자주 사용되지 않게 되고 그래서 다른 블록들보다 마모가 덜하게 된다.
이제 상기 제어 유닛(26)은 상기 블록을 삭제하기 전에, 상기 블록(22)에 이제 존재하는 "기록된" 상태를 갖는 페이지들을 다른 블록(24)에 복사한다. 이 후, 상기 제어 유닛(26)은 상기 제 1 블록(22)을 삭제할 수 있고 상기 제 2 블록(23)으로부터 상기 제 1 블록(22)으로 데이터를 복사할 수 있다. 그렇게 함으로써, "삭제된" 상태를 갖는 상기 제 2 블록(23)의 페이지들은 스킵될 수 있다.
상기 데이터가 상기 제 2 블록(23)에서 제 1 블록(22)으로 복사된 후, 상기 제어 유닛(26)은 상기 제 2 블록(23)을 삭제할 수 있다. 그런 다음 상기 제 2 블록(23)의 공간은 즉시 새로운 데이터를 저장하기 위해 사용가능해진다.
상기 복수의 블록들 중 상기 저장 매체(10) 상의 모든 블록들의 대부분의 카운터들이 상기 제한 값을 초과하거나 그 값에 도달될 때, 상기 제한 값은 상승될 수 있다. 상기 제어 유닛(26)은, 상기 제 2 블록(23)을 선택하는데 있어서 상기 제어 유닛은 모든 블록들의 관련 카운터들을 검사해야 하기 때문에, 이것이 그 경우인지를 쉽게 확인할 수 있으며, 그런 다음 충분한 카운터들이 상기 제한 값보다 여전히 낮은지를 직접 확인할 수 있다. 상기 제한 값이 너무 여러 번 증가되는 것을 피하기 위해, 모든 카운터들이 상기 제한 값에 도달하거나 초과할 때까지 상기 제한 값이 증가되지 않도록 하는 것이 양호하다. 상기 제한 값의 증가는, 카운터 값이 그 때까지 상기 제한 값에 도달되었던 블록들이 이제 다시 삭제되기에 적합하다는 것을 의미하며, 이것은 모든 블록들이 상기 제한 값에 도달되었을 때만 발생해야 하는데, 왜냐하면 모든 블록들이 여러 번 동일하게 삭제되었고 그러므로 전체 저장 매체(10)에 대해 마모가 균일하게 분포되기 때문이다.
상기 제한 값은, 상기 제 1 블록(22)의 카운터의 값이 상기 제한 값에 너무 자주 도달되지 않도록 선택되어야 한다. 위에서 언급한 동작들의 실행은 여분의 시간을 필요로 하며 상기 제 1 블록(22) 및 상기 제 2 블록(23) 모두에서 약간의 마모를 야기한다.
상기 저장 매체(10)의 수명을 최대화하기 위하여, 모든 블록들이 훨씬 동일하게 마모될 필요가 있다. 이론적으로 이것은, 모든 다른 블록들이 한 번씩 삭제될 때까지, 첫 번째 삭제 후 블록이 더 이상 삭제되지 않도록 상기 제한 값을 1로 설정함으로써 달성된다. 이 후, 상기 제한 값은 1씩 증가되어야 한다. 그렇지만, 이것은 실제로는 실행되지 않는다.
실제적으로 적절한 초기 제한 값은 저장 매체 수명의 1%이다. 대부분의 카운터들이 이 값에 도달될 때, 상기 제한 값은 상기 수명의 다른 1%만큼씩 증가될 수 있다.
본 발명은 데이터가 저장될 수 있는 복수의 블록들을 포함하는 저장 매체에서 데이터를 관리하는 방법 및 시스템에 적용가능하다.

Claims (13)

  1. 데이터가 저장될 수 있는 복수의 블록들(21)을 포함하는 저장 매체(10)에서 데이터를 관리하는 방법으로서, 상기 복수의 블록들(21) 중 제 1 블록(22)이 전환(mutation)을 실행하도록 선택되는, 상기 저장 매체(10)에서 데이터를 관리하는 방법에 있어서,
    상기 제 1 블록(22)의 마모 수준(wear level)이 상기 전환의 실행을 받아들일 수 있는지를 결정하고, 받아들일 수 있다면, 상기 제 1 블록(22)에서의 상기 전환을 실행하고, 받아들일 수 없다면,
    상기 복수의 블록들 중 상기 제 1 블록(22)보다 낮은 마모 수준을 갖는 제 2 블록(23)을 선택하는 단계와,
    상기 제 2 블록(23)의 데이터를 상기 제 1 블록(22)으로 복사하는 단계를 포함하는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 방법
  2. 제 1 항에 있어서, 상기 복수의 블록들(21) 중 상기 블록들은 관련된 블록에서의 전환들의 횟수를 카운트하는 관련 카운터를 구비하며, 상기 제 1 블록(22)의 카운터의 값이 제한 값(limit value)보다 작을 때는, 상기 카운터의 값이 증가되고 상기 전환이 실행되며, 상기 제한 값보다 작지 않을 때는, 카운터가 상기 제 1 블록(22)의 카운터보다 낮은 값을 갖는 블록이 상기 제 2 블록(23)으로서 선택되는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 방법.
  3. 제 2 항에 있어서, 상기 낮은 값은 상기 복수의 블록들 중 상기 블록들의 카운터들의 값들 중 가장 낮은 값인 것을 특징으로 하는, 저장 매체에서의 데이터 관리 방법.
  4. 제 2 항에 있어서, 상기 제한 값은, 상기 복수의 블록들 중 상기 블록들의 대부분의 카운터들이 상기 제한 값을 초과할 때 증가되는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 방법.
  5. 제 1 항에 있어서, 상기 제 2 블록(23)은, 상기 제 2 블록(23)의 데이터가 상기 제 1 블록(21)에 복사된 후 삭제되는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 방법.
  6. 제 1 항에 있어서, 상기 전환은 상기 제 1 블록(22)을 삭제하는 단계를 포함하는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 방법.
  7. 데이터가 저장될 수 있는 복수의 블록들(21)을 포함하는 저장 매체(10)에서 데이터를 관리하는 시스템으로서, 상기 시스템은 전환(mutation)을 실행하기 위해 상기 복수의 블록들(21) 중 제 1 블록(22)을 선택하도록 배열되는, 상기 저장 매체에서 데이터를 관리하는 시스템에 있어서,
    상기 제 1 블록(22)의 마모 수준(wear level)이 상기 전환의 실행을 받아들일 수 있는지를 결정하는 제어 수단(26)을 포함하며, 받아들일 수 있다면, 상기 제 1 블록(22) 상에서의 상기 전환을 실행하고, 받아들일 수 없다면,
    상기 복수의 블록들 중 상기 제 1 블록(22)보다 낮은 마모 수준을 갖는 제 2 블록(23)을 선택하는 단계와,
    상기 제 2 블록(23)의 데이터를 상기 제 1 블록(22)으로 복사하는 단계를 포함하는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 시스템.
  8. 제 7 항에 있어서, 상기 복수의 블록들(21) 중 상기 블록들은 관련된 블록에서의 전환들의 횟수를 카운트하는 관련 카운터를 구비하며, 상기 제어 수단(26)은, 상기 제 1 블록(22)의 상기 카운터의 값이 제한 값(limit value)보다 작을 때는, 상기 카운터의 값을 증가시키고 상기 전환을 실행하며, 상기 제한 값보다 작지 않을 때는, 카운터가 상기 제 1 블록(22)의 상기 카운터보다 낮은 값을 갖는 블록을 상기 제 2 블록(23)으로서 선택하도록 배열되는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 시스템.
  9. 제 8 항에 있어서, 상기 낮은 값은, 상기 복수의 블록들 중 상기 블록들의 카운터들의 값들 중 가장 낮은 값인 것을 특징으로 하는, 저장 매체에서의 데이터 관리 시스템.
  10. 제 8 항에 있어서, 상기 제어 수단(26)은, 상기 복수의 블록들 중 상기 블록들의 대부분의 상기 카운터들이 상기 제한 값을 초과할 때 상기 제한 값을 증가시키도록 배열되는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 시스템.
  11. 제 8 항에 있어서, 상기 시스템은, 상기 블록들의 상기 카운터들의 값이 지정되어 있는 테이블을 초기에 구성하도록 배열되는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 시스템.
  12. 제 7 항에 있어서, 상기 제어 수단(26)은, 상기 제 2 블록(23)으로부터의 데이터가 상기 제 1 블록(22)에 복사된 후 상기 제 2 블록(23)을 삭제하도록 배열되는 것을 특징으로 하는, 저장 매체에서의 데이터 관리 시스템.
  13. 프로그램 가능한 장치를 제 7 항에서 청구한 바와 같은 시스템으로서 기능하게 할 수 있는 컴퓨터 프로그램 제품.
KR1020027000114A 2000-05-04 2001-04-18 저장 매체 상의 데이터 관리 및 데이터 관리 시스템과 컴퓨터 판독가능한 저장 매체 KR100818035B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP00201616 2000-05-04
EP00201616.0 2000-05-04

Publications (2)

Publication Number Publication Date
KR20020029899A true KR20020029899A (ko) 2002-04-20
KR100818035B1 KR100818035B1 (ko) 2008-03-31

Family

ID=8171451

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027000114A KR100818035B1 (ko) 2000-05-04 2001-04-18 저장 매체 상의 데이터 관리 및 데이터 관리 시스템과 컴퓨터 판독가능한 저장 매체

Country Status (6)

Country Link
US (1) US20010054129A1 (ko)
EP (1) EP1281123A1 (ko)
JP (1) JP2003532222A (ko)
KR (1) KR100818035B1 (ko)
CN (1) CN100442247C (ko)
WO (1) WO2001084321A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100914263B1 (ko) * 2004-12-16 2009-08-27 쌘디스크 코포레이션 스크래치 패드 블록
US8335887B2 (en) 2009-10-29 2012-12-18 Hynix Semiconductor Inc. Solid state storage systems and methods for flexibly controlling wear leveling

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386653B2 (en) * 2001-08-06 2008-06-10 Sandisk Il Ltd Flash memory arrangement
US7174420B2 (en) * 2002-10-22 2007-02-06 Microsoft Corporation Transaction-safe FAT file system
US7363540B2 (en) 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
US7234036B1 (en) * 2002-10-28 2007-06-19 Sandisk Corporation Method and apparatus for resolving physical blocks associated with a common logical block
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7328301B2 (en) * 2003-04-07 2008-02-05 Intel Corporation Dynamically mapping block-alterable memories
US9639554B2 (en) 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
US7873596B2 (en) 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
US8606830B2 (en) 2004-12-17 2013-12-10 Microsoft Corporation Contiguous file allocation in an extensible file system
US8321439B2 (en) 2004-12-17 2012-11-27 Microsoft Corporation Quick filename lookup using name hash
US7685380B1 (en) * 2005-06-29 2010-03-23 Xilinx, Inc. Method for using configuration memory for data storage and read operations
US7474559B1 (en) 2005-08-30 2009-01-06 Xilinx, Inc. Circuit and method for employing unused configuration memory cells as scratchpad memory
US20070150645A1 (en) * 2005-12-28 2007-06-28 Intel Corporation Method, system and apparatus for power loss recovery to enable fast erase time
US7613738B2 (en) 2007-01-16 2009-11-03 Microsoft Corporation FAT directory structure for use in transaction safe file system
US7747664B2 (en) 2007-01-16 2010-06-29 Microsoft Corporation Storage system format for transaction safe file system
US8122179B2 (en) 2007-12-14 2012-02-21 Silicon Motion, Inc. Memory apparatus and method of evenly using the blocks of a flash memory
US20090327581A1 (en) * 2008-06-30 2009-12-31 Coulson Richard L Nand memory
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
US20140129758A1 (en) * 2012-11-06 2014-05-08 Spansion Llc Wear leveling in flash memory devices with trim commands
US10073626B2 (en) 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
CN104657678B (zh) * 2013-11-19 2018-01-09 北京兆易创新科技股份有限公司 应答保护单调计数器、读取方法及计数方法
CN107818808B (zh) * 2016-09-14 2023-09-12 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器存储装置
CN109214217B (zh) * 2018-09-07 2021-11-26 深圳市航顺芯片技术研发有限公司 一种微控制器芯片防破解的方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
GB2283342B (en) * 1993-10-26 1998-08-12 Intel Corp Programmable code store circuitry for a nonvolatile semiconductor memory device
US5896393A (en) * 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
GB2317720A (en) * 1996-09-30 1998-04-01 Nokia Mobile Phones Ltd Managing Flash memory
JP3724168B2 (ja) * 1998-02-03 2005-12-07 三菱電機株式会社 状態検出装置及び光ディスク装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100914263B1 (ko) * 2004-12-16 2009-08-27 쌘디스크 코포레이션 스크래치 패드 블록
US8335887B2 (en) 2009-10-29 2012-12-18 Hynix Semiconductor Inc. Solid state storage systems and methods for flexibly controlling wear leveling

Also Published As

Publication number Publication date
CN1383510A (zh) 2002-12-04
US20010054129A1 (en) 2001-12-20
JP2003532222A (ja) 2003-10-28
WO2001084321A1 (en) 2001-11-08
EP1281123A1 (en) 2003-02-05
CN100442247C (zh) 2008-12-10
KR100818035B1 (ko) 2008-03-31

Similar Documents

Publication Publication Date Title
KR100818035B1 (ko) 저장 매체 상의 데이터 관리 및 데이터 관리 시스템과 컴퓨터 판독가능한 저장 매체
US7882300B2 (en) Apparatus and method for managing nonvolatile memory
KR100389241B1 (ko) 비휘발성 메모리에서의 가변 크기 데이터의 효율적인관리를 위한 동적 할당
KR100914089B1 (ko) 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치
KR100920960B1 (ko) 상대등급을 이용하여 플래시 메모리에서 마모 평준화를달성 하는 방법
JP4837731B2 (ja) プログラム可能な耐久度を有するフラッシュメモリ
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US8200904B2 (en) System and method for clearing data from a cache
JP3544610B2 (ja) メモリ装置
US8386695B2 (en) Methods and apparatus for writing data to non-volatile memory
KR100526188B1 (ko) 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR100849221B1 (ko) 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
US6621746B1 (en) Monitoring entropic conditions of a flash memory device as an indicator for invoking erasure operations
US8239612B2 (en) Memory controller, flash memory system with memory controller, and control method of flash memory
US20030163633A1 (en) System and method for achieving uniform wear levels in a flash memory device
EP0686976A2 (en) Data management system for programming-limited type semiconductor memory and IC memory card having the data management system
JP2005242897A (ja) フラッシュディスク装置
KR20100030602A (ko) 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
KR20000062616A (ko) 비휘발성 메모리에 데이터를 저장하는 방법
JPH10133940A (ja) メモリ装置
KR20070024504A (ko) 기억 장치, 메모리 관리 방법 및 프로그램
JP2008123314A (ja) 半導体記憶装置への情報記録方法及び情報記録システム
KR101067464B1 (ko) 파일 시스템 및 데이터 관리 방법
JP2020086748A (ja) メモリコントローラ、及びメモリシステム
JP2007219793A (ja) フラッシュメモリの書き込み方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee