KR100920960B1 - 상대등급을 이용하여 플래시 메모리에서 마모 평준화를달성 하는 방법 - Google Patents

상대등급을 이용하여 플래시 메모리에서 마모 평준화를달성 하는 방법 Download PDF

Info

Publication number
KR100920960B1
KR100920960B1 KR1020077020723A KR20077020723A KR100920960B1 KR 100920960 B1 KR100920960 B1 KR 100920960B1 KR 1020077020723 A KR1020077020723 A KR 1020077020723A KR 20077020723 A KR20077020723 A KR 20077020723A KR 100920960 B1 KR100920960 B1 KR 100920960B1
Authority
KR
South Korea
Prior art keywords
block
blocks
relative
deleted
memory
Prior art date
Application number
KR1020077020723A
Other languages
English (en)
Other versions
KR20070118601A (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 KR20070118601A publication Critical patent/KR20070118601A/ko
Application granted granted Critical
Publication of KR100920960B1 publication Critical patent/KR100920960B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/18Flash erasure of all the cells in an array, sector or block simultaneously

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명에 따르면, 메모리의 각 블록에 대해, 그 블록이 삭제된 횟수와 적어도 하나의 다른 블록이 삭제된 횟수의 함수인 수를 연산하고, 상기 수는 메모리를 포함하는 메모리 디바이스에 저장된다. 상기 수는 블록들이 삭제될 때 필요한 만큼 업데이트된다. 그들의 수에 따라 삭제될 블록들이 선택된다. 바람직하게는, 각 블록의 함수는 그 블록의 상대 등급이다.
블록, 메모리 디바이스, 함수, 연산, 플래시 메모리, 컴퓨터-판독가능한 코드, 컴퓨터-판독가능한 스토리지 매체, 프로그램 코드

Description

상대등급을 이용하여 플래시 메모리에서 마모 평준화를 달성 하는 방법{METHOD OF ACHIEVING WEAR LEVELING IN FLASH MEMORY USING RELATIVE GRADES}
본 발명은 플래시 메모리에 관한 것으로, 보다 특정하게는 메모리에서의 블록들의 마모도 평준화를 달성함으로써 플래시 메모리의 유용한 수명을 연장시키는 방법에 관한 것이다.
다년간 플래시 메모리 디바이스에 대한 것이 알려져 왔다. 플래시 디바이스는 PDA 및 휴대전화의 데이터 스토리지, MP3 플레이어의 오디오 파일 스토리지, 및 다수의 기타 애플리케이션 용으로, 고 신뢰도의 솔리드-스테이트 디스크를 제조하는 데 사용된다. 데이터 스토리지로 플래시 메모리를 사용하는 제품을 설계할 때 고려되어야만 하는 측면 중 하나는 플래시 블록들이 삭제되고 재기록되는 횟수가 제한되어 있다는 점이다. 예를 들면, 현재 상업적으로 이용가능한 NAND 플래시 디바이스는 일반적으로 블록당 100,000 사이클의 기록/삭제까지 지원하도록 그의 제조사에 의해 정해지지만, 셀당 2 비트를 저장하는 보다 고밀도의 멀티-레벨-셀 (MLC) NAND 플래시 디바이스는 일반적으로 블록당 10,000 사이클의 기록/삭제까지 지원하도록 지정된다. 블록이 자신의 정해진 기록/삭제 사이클의 한계에 도달한 후에는, 자신의 사양에 따라 동작하는 것을 디바이스의 제조사가 더이상 보장하지 않는다. 따라서, 메모리의 블록들이 불필요하게 이러한 한계에 도달하는 상태를 방지하는 주의가 취해져야한다.
상이한 플래시 메모리 벤더들은 저장 유닛을 기술할 때 상이한 용어를 사용하기 때문에, 우리는 여기서 본 설명의 목적에 대해 "블록"은 단일 동작시 삭제될 수 있는 최소의 저장 단위이고, 반면에 "페이지"는 단일 동작으로 기록(또는 "프로그래밍")될 수 있는 최소의 저장 단위로 정의한다.
비균일한 마모를 방지하기 위한 수단이 취해지지 않으면, 메모리 시스템의 정상 동작은 블록의 모집단 전체에 상기의 비균일한 마모를 야기할 수도 있다. 이것은 대부분의 소프트웨어 시스템이 자신들의 스토리지 어드레스 공간 전체에 걸쳐 비-균질한 방식으로 기록을 하는 경향이 있기 때문이다. 이것은 마이크로소프트의 FAT와 같은 파일시스템이 스토리지 시스템에서 관리될 때 더 그러하다. 이러한 경우, 일부 관리 데이터는 일반적으로 스토리지 시스템 어드레스 공간의 시작부분에서 파일 시스템에 의해 유지된다. 이러한 데이터는 파일 할당 테이블의 하나 이상의 복사본 또는 스토리지 볼륨의 루트 디렉토리가 된다. 이러한 관리 데이터 영역에 기록을 하는 횟수는 다른 스토리지 영역에 기록하는 횟수보다 더 높고, 따라서, 특별한 수단이 취해지지 않는다면, 그것들을 포함하고 있는 블록들은 보다 많은 수의 기록/삭제 사이클을 경험할 것이고, 다른 블록들 보다 그것들의 수명이 보다 일찍 끝나게 될 것이다. 우리는 따라서, 소수의 중요한 블록들이 이미 수명이 다한 조건에 도달했기 때문에, 대부분의 블록들이 자신들의 수명의 한계에 훨씬 못미치지만 전체로서의 볼륨이 이미 자신의 수명의 끝에 도달하게 되는 스토리지 볼륨을 갖는다.
우리는 디바이스의 블록 전체에서 기록/삭제 사이클의 수가 동일하도록 해야한다는 것을 상기로부터 명확하게 알 수 있다. 모든 블록들이 거의 동일한 기록/삭제 이력을 가진다면, 전체로서의 스토리지 시스템의 수명은 최대화될 것이다.
종래 기술은 상기의 플래시 메모리의 마모 평준화 문제를 해결하기 위한 다수의 해결안을 교시한다. 그 소수의 예는 다음과 같다:
미국특허 제 6,230,233, Lofgren et al.
미국특허 제 5,341,339, Wells
미국특허 제 5,568,423, Jou et al.
미국특허 제 5,388,083, Assar et al.
미국특허 제 5,712,819, Harari
미국특허 제 6,570,790, Harari
미국특허 제 5,963,480, Harari
미국특허 제 6,831,865, Chang et al.
상기 모든 특허는 본 문에 참조의 목적으로 그 전체가 통합되어 있다.
상기의 모든 종래 기술에 공통적인 것은 그 모두가 각 블록에 의해 경험된 삭제 사이클의 수를 카운팅하는 것에 기초한다는 것이다. 본 발명의 기술의 목적에 대해, "삭제 카운트"는 플래시 메모리의 블록이 자신의 사용 이력 전체를 통해 삭제된 횟수를 나타내는 수이다. 상기 삭제 카운트는 스토리지 시스템 내에 저장되고 시스템 동작동안 관리된다. 블록이 삭제될 때마다, 그의 삭제 카운트가 증가된다. 상기 해결안 중 일부는 그 블록내에 블록의 삭제 카운트를 저장하는 것이다. 일부는 플래시 메모리 내의 특별히 할당된 위치에 중심화된 테이블로 모든 블록의 모든 삭제 카운트를 저장한다. 다른 것들은 비휘발성 메모리에 삭제 카운트를 저장하는 것에 추가하여, 플래시 메모리를 관리하는 컨트롤러의 램에 삭제 카운트를 저장한다. 그러나, 모든 경우에, 블록에 의해 실행된 삭제 카운트를 수는 공지되고, 마모 평준화의 목적을 달성하기 위해 사용된다. 블록의 삭제 카운트를 살펴봄으로써, 플래시 관리 소프트웨어는 어떤 블록들이 가장 많이 사용되었고, 어떤 블록들이 최소로 사용되었는지 검지할 수 있다.
마모 평준화를 달성하는 데에 삭제 카운트를 아는 것이 사용되도록 하는 방법에는 2 가지 주된 레벨이 있다. 가장 간단한 레벨은 새로운 블록이 사용을 위해 할당될 필요가 있고 플래시 관리 시스템이 사용을 위해 가용한 빈 블록 중 어느것이 할당된 블록이 될지를 결정해야할 때 활성화된다. 일반적으로 결정 알고리즘은 높은 수의 삭제 사이클을 가진 다른 블록보다 낮은 수의 삭제 사이클을 가진 블록을 선호하여, 카운트의 폭이 더 작아지고 블록의 마모가 보다 균일하게 된다. 이러한 레벨의 마모 평준화를 본문에서는 "동적 마모 평준화"라고 한다. 보다 개선된 레벨은 일부 파일들이 본래 정적이고, 일반적으로 한 번 기록되면 거의 업데이트되거나 재기록되지 않는다는 사실을 고려한다. 이것은 대부분의 운영시스템 코드 파일 또는 워드프로세싱 프로그램과 같은 소프트웨어 애플리케이션의 경우에 그러하다. 특별한 수단을 취하지 않는다면, 동적 마모 평준화 알고리즘에 의해 수행되는 마모 평준화는 정적 파일들에 의해 사용되는 블록들에 영향을 주지 않는데, 이는 그들 블록들이 운영 시스템의 정규적인 코스에서는 절대로 빈 블록이 되지 않기 때문이다. 이것은 매우 낮은 삭제 카운트를 가진 블록들을 남겨두고, 실제로 메모리 시스템의 수명을 그것이 할 수 있는 것 보다 더 낮추게되는 것을 의미한다. 따라서 발달된 마모 평준화 해결안은, 정적 파일들이 재기록이 안된다고 할지라도 때때로 상기 정적 파일들을 다른 블록으로 강제적으로 이동시킴으로써 이러한 문제를 해결한다. 이것은 정적 파일들이 할당이 발생하는 자주 할당되는 블록들의 풀을 재입력하도록 하고, 그결과 삭제 카운트의 전체 평준화를 개선하고 결과적으로 스토리지 시스템의 수명을 개선하도록 한다. 이러한 마모 평준화의 레벨은 본문에서 "정적 마모 평준화"라고 한다. 추가적인 제한이 없는 "마모 평준화"라는 용어는 동적인 마모 평준화와 정적인 마모 평준화 모두에 적용된다.
상기 종래 기술 참조 문헌은 원하는 마모 평준화 결과를 달성하는 많은 알고리즘을 개시하지만, 이 알고리즘 모두는 블록의 삭제 카운트를 아는 것에 의지하는 것이다.
상기의 일반적인 규칙에 대한 예외는 Ban의 미국 특허 6,732,221이다. Ban은 블록당 삭제 사이클을 카운팅하는 것에 의존하지 않는 플래시 메모리에서 마모 평준화를 달성하는 방법을 개시한다. 대신에 Ban은 할당 및 사용할 블록을 선택하는 통계적인 방법을 사용하여, 시스템이 다수의 사이클의 블록 삭제를 진행한 후에, 결국에는 모든 블록의 마모가 높은 가능성을 가지고 거의 균일하게 되도록 한다. 그러나, Ban은 상대적으로 작은 수의 삭제 사이클 후에, 짧은 기간내에 마모 평준화의 균일화가 달성되는 것을 보장하는 것은 아니다. 따라서, Ban의 해결안은 1000과 같은, 매우 낮은 기록/삭제 사이클을 가진 플래시 디바이스에서는 잘 작동하지 못한다.
블록당 삭제 사이클을 카운팅하는 것에 의존하는 모든 종래 기술의 해결안에서는, 각 블록의 카운트를 저장할 필요가 있다. 카운트가 그것이 적용되는 동일한 블록이나, 또는 다른 위치에서 유지되던지 간에, 스토리지가 카운트를 위해 할당되어야한다. 100,000 사이클 플래시 디바이스에 대해 적어도 17 비트가 카운트당 필요하고, 10,000 플래시 디바이스에 대해 적어도 14 비트가 카운트당 필요하다. 일부 경우에, 이것은 그 목적을 위해서 예약하기에는 너무 많은 공간이다. 예를 들면, 512 바이트의 사용자 데이터의 각 페이지는 시스템 제어 정보를 저장하기 위한 16 바이트의 "여분의 영역"이 수반되도록 하는 NAND 플래시 디바이스를 관리하는 플래시 관리 시스템을 가정한다. 삭제 카운트는 단일 페이지가 아닌 전체 블록의 속성이기 때문에, 일반적으로 이러한 삭제 카운트는 블록의 페이지 중 하나에만, 일반적으로 제 1 페이지에 저장된다. 따라서, 제 1 페이지의 여분의 영역 중 적어도 3 바이트(100,000 사이클 디바이스라고 가정)는 블록의 삭제 카운트를 저장하는 데에 할당되어야만 한다. 그러나, 이들 여분의 영역의 바이트는 효율적인 관리 또는 페이지에 저장된 데이터의 오류 수정 스킴의 패리티 비트를 위한 플래시 관리 소프트웨어에 필요한 다른 관리 정보를 저장하는 데에 필요하다.
유사하게, 삭제 카운트가 중심 테이블로 유지된다면, 필요한 공간의 크기는 너무 많게 될 것이다. 플래시 디스크가 4 개의 1 기가 비트 플래시 디바이스를 포함한다면, 그 각각은 32 킬로바이트의 4,096 블록들을 가지고, 그 각각은 3 바이트 의 삭제 카운트를 필요로하며, 그렇게되면 상기 테이블의 크기는 4x4,096x3=49,152바이트가 된다. 이것은 백업을 위한 다수의 복사본을 포함하기 전에 블록의 크기를 초과한다. 보다 중요하게는, 램에 삭제 카운트 테이블의 복사본을 유지하는 것이 성능의 이유를 위해 유용하지만, 상기의 크기는 너무 크고, 일반적으로 플래시 컨트롤러에서 가용한 램의 크기를 초과한다.
따라서, 한편으로는 블록 모집단 전체에 균일한 삭제 사이클을 제공하고 다른 한편으로는 그와 동시에 삭제 사이클을 카운트하고 그들의 수를 저장하는 종래 기술에 비해 덜 메모리를 소모하는 플래시 메모리 블록의 마모 평준화를 달성하는 방법에 대한 필요성이 광범위하게 인식되었으며, 그러한 방법을 가지는 것은 매우 이점을 가지게 되는 것이다.
본 발명에 따르면, 복수의 블록을 포함하는 메모리 디바이스의 메모리를 관리하는 방법으로서, 각 블록에 대해: a) 각 블록이 삭제된 횟수와 적어도 하나의 다른 블록이 삭제된 횟수의 함수인 수를 연산하는 단계; 및 b) 상기 수를 메모리 디바이스에 저장하는 단계를 포함하는 메모리를 관리하는 방법을 제공한다.
본 발명에 따르면, a) 복수의 블록을 포함하는 메모리; 및 b) 각 블록에 대해, i) 각 블록이 삭제된 횟수와 적어도 하나의 다른 블록이 삭제된 횟수의 함수인 수를 연산하는 단계, 및 ii) 메모리 디바이스에 상기 수를 저장하는 단계를 포함하는 방법에 의해 상기 메모리를 관리하는 컨트롤러;를 포함하는 메모리 디바이스가 제공된다.
본 발명에 따르면, 복수의 블록을 포함하는 메모리 디바이스의 메모리를 관리하는 컴퓨터-판독가능 코드가 내장된 컴퓨터-판독가능 스토리지 매체로서, 상기 컴퓨터-판독가능 코드는, a) 각 블록에 대해, 각 블록이 삭제된 횟수와 적어도 하나의 다른 블록이 삭제된 횟수의 함수인 수를 연산하는 프로그램 코드; 및 b) 각 블록에 대해 메모리 디바이스에 상기 수를 저장하는 프로그램 코드를 포함하는 것을 특징으로 하는 컴퓨터-판독가능한 스토리지 매체가 제공된다.
본 발명의 기본 방법에 따르면, 메모리 디바이스의 메모리의 블록의 관리는, 각 블록에 대해, 상기 블록이 삭제된 횟수와 하나 이상의 다른 블록이 삭제된 횟수의 함수인 수를 연산하는 단계, 및 메모리 디바이스에 상기 수를 저장하는 단계를 포함한다. 바람직하게는, 각 블록의 수는, 블록이 삭제되고, 그의 삭제 카운트가 함수의 변수인 다른 블록의 하나가 삭제될 때마다 업데이트된다.
바람직하게는, 상기 방법은 상기 수에 따라 적어도 부분적으로 삭제할 적어도 하나의 블록을 선택하는 단계를 포함한다.
각 블록의 수는 블록 자체나 또는 상기 블록의 외부에 저장될 수 있다.
바람직하게는, 각 블록에 대해, 상기 함수는 블록의 상대 등급이다. 본문에서 이해되는 것으로는, 블록의 "상대 등급"은 적어도 하나의 다른 블록이 삭제된 횟수에 대한 그 블록이 삭제된 횟수의 측정치이다. 하기에 기술된 바와 같이, 일반적으로, 그들의 상대 등급을 연산하기 위해 블록이 삭제되는 횟수를 명시적으로 카운트할 필요가 없다.
본 발명의 바람직한 실시예에서, 사용되는 특정한 "상대 등급"은, 적어도 하나의 블록에 대해, 블록의 상대 등급이 그 블록의 삭제 카운트와 다른 블록의 삭제 카운트 사이의 차이에 따르도록 한다. 가장 바람직하게는, 다른 블록은 타겟 블록과 이웃해 있다.
본 발명의 또다른 바람직한 실시예에서, 사용되는 특정한 "상대 등급"은, 적어도 하나의 블록에 대해, 블록의 상대 등급이 그 블록의 삭제 카운트와 적어도 2 개의 다른 블록의 평균 삭제 카운트 사이의 차이에 따르도록 한다. 가장 바람직하게는, 상기 다른 블록 중 적어도 하나는 타겟 블록과 이웃해 있다.
바람직하게는, 상기 수를 연산하는 단계는 블록당 예측된 최대 삭제 사이클의 수를 저장하기에 불충분한 비트 수로 각 블록의 함수의 끝수를 버리는(truncating) 단계를 포함한다.
본 발명의 범위는 또한 본 발명의 방법에 따라 관리되는 메모리 디바이스와 본 발명의 방법에 따라 메모리를 관리하는 컴퓨터-판독가능 코드를 그안에 내장하는 컴퓨터-판독가능 스토리지 매체를 포함한다.
본 발명은 예시로써만 첨부 도면을 참조하여 본 문에 기술된다.
도 1은 본 발명에 따라 빈 블록이 사용을 위해 어떻게 할당되는 지를 나타내는 플로우 차트이다.
도 2는 도 1의 블록의 상대 등급이 어떻게 업데이트되는 지를 나타내는 플로우 차트이다.
도 3은 도 1의 블록의 이웃의 상대 등급이 어떻게 업데이트되는지를 나타내 는 플로우 차트이다.
도 4는 본 발명의 플래시 메모리 디바이스의 고-레벨 블록 다이어그램이다.
도 5는 본 발명의 데이터 스토리지 시스템의 고-레벨 부분 블록 다이어그램이다.
본 발명은 명시적으로 삭제 사이클을 카운팅하지 않고서도 플래시 메모리와 같은 메모리에서 마모 평준화를 달성하는 방법이다.
본 발명에 따르는 마모 평준화의 원리와 동작은 도면과 하기의 설명을 참조하여 보다 더 이해될 것이다.
본 발명은 블록의 삭제 사이클을 균등하게 하기 위해 각 블록의 삭제 사이클의 정확한 수를 실제로 알 필요없는 관찰에 기초한다. 삭제 사이클의 균등화는 실제로는 상이한 블록들의 주기의 수 사이의 관계식의 문제이기 때문에, 사이클 수의 절대적인 값을 저장하는 것이 아니라 상이한 블록의 사이클의 수 사이의 관계식만을 저장하는 것에 의존하는 측정치에 의해 그 목적을 달성할 수 있다.
이러한 방법의 예는 각 블록에 대해 블록이 삭제된 횟수와 그의 두 가장 인접한 이웃 블록이 삭제된 평균횟수 사이의 차이와 동일한 값을 각 블록이 저장하도록 하는 것이다. 본 발명의 취지에서, "이웃"이라는 것은 블록 어드레서에 의해 정의된다. 예를 들면, 블록이 그 결과로서 번호가 매겨진다면, 블록 10의 "이웃"은 블록 9와 11이 된다. 또는 하나 이상의 포멀 노테이션에서,- 블록 n에 연관된 수는 EC(n)-(EC(n-1)+EC(n+1))/2이고, 여기서 EC(i)는 블록 i의 삭제 카운트이다. 분수는 조정하기 불편하기 때문에, 우리는 여기서 상기 값의 정의를 상기 표현식에 2를 곱하도록 약간 변형하여, 하기의 설명식에서 상기 값이 2EC(n)-EC(n-1)-EC(n+1)이 되도록 한다.
이러한 값은 블록의 "상대 등급"으로 본문에서 칭하는 단순한 예일 뿐이다. 상대 등급의 상기 정의를 제 1 및 마지막 블록에 적용가능하도록 만들기 위해, 제 1 및 마지막 블록이 서로 이웃하도록 정의되어 모든 블록이 마지막 블록에 이어지는 제 1 블록을 가지도록 순환적으로 순서가 매겨지는 것으로 간주되도록 한다. 따라서 제 1 블록의 상대 등급은(블록들은 0에서 N-1까지 번호가 매겨지는 것으로 가정한다) 2EC(0)-EC(N-1)-EC(1)이고, 마지막 블록의 상대 등급은 2EC(N-1)-EC(N-2)-EC(0)이 된다.
각 블록에 저장되는 것은 블록의 삭제 카운트가 아니라, 블록의 상대 등급이다. 상대 등급이 삭제 카운트에 의해 고유하게 결정된다고 하더라도, 삭제 카운트는 상대 등급에 의해 고유하게 결정되는 것은 아니라는 것에 유의해야한다. 이것은 모든 블록이 정확하게 동일한 횟수로 삭제되는 간단한 경우를 고려함으로써 쉽게 증명될 수 있다. 이러한 경우 모든 블록들은 0의 상대 등급을 가진다. 그러나, 모든 블록의 상대 등급을 아는 것이 우리가 삭제 카운트를 재구축할 수 있도록 허용하는 것은 아니다. 모든 블록이 10 삭제 블록을 경험하거나 또는 모든 블록이 1,000 삭제 블록을 경험하게 될 수 있다. 임의의 정수 N에 대해, 모든 블록이 N 삭제 사이클을 경험하는 경우, 정확하게 동일한 상대 등급: 모든 블록에 대해 0의 상대 등급을 야기한다.
따라서, 상대 등급의 개념은 기본적으로 삭제 카운트의 개념과 상이함이 명확하다. 블록의 삭제 카운트는 그 개별 블록의 특성이지만, 블록의 상대 등급은 개별 블록의 특성이 아니라 다른 블록과 비교한 그 블록의 상대적인 조건의 측정치이다. 블록의 상대 등급은 자신 안에 블록의 조건에 대한 절대적인 정보를 포함하지는 않는다. 이것은 상대 등급의 접근 방식을 마모 평준화를 달성하기위한 기반으로서 삭제 카운트를 사용하는 종래 기술의 해결안과 구별짓는 것이고, 또한 삭제 카운트의 일반화로서 "블록의 특성"을 이용하는 Harari의 미국 특허 5,712,819의 일반화된 해결안과도 차별된다.
상대 등급의 개념은 각 블록에 대해, 삭제 카운트에 2를 곱하거나 또는 삭제 카운트의 제곱과 같은 블록의 삭제 카운트의 함수를 저장하는 것과는 근본적으로 다르다. 삭제 카운트의 제곱은 삭제 카운트와 확실하게 상이하지만, 그것은 블록의 조건에 대해서만 의존하기 때문에, 여전히 "블록의 특성"의 범위내에 들어간다. 상대 등급을 블록의 특성과 상이하게 만드는 상대 등급의 중대한 특징은 삭제 카운트가 상대 등급으로부터 재구축될 수 없다는 것이 아니라, 블록의 상대 등급이 바로 그 동일한 블록의 삭제 카운트에 의해 고유하게 결정되지 않는다는 것임을 유의하라. 예를 들면, 각 블록에 대해 일정한 정수 M에 의해 나누어진 그의 삭제 카운트의 나머지를 저장한다면, 이 값은 그것이 그 나머지로부터 삭제 카운트를 재구축할 수 없을지라도 그 나머지가 그 블록의 삭제 카운트에 의해 고유하게 결정되기 때문에 여전히 그 블록의 특성이 된다.
삭제 카운트가 아닌 상대 등급을 저장하는 한가지 이점은 스토리지 공간을 절약한다는 것이다. 마모 평준화가 적절하게 작용하고, 블록의 모집단의 전체의 삭제 사이클의 수를 거의 균등화시키는 자신의 목적을 달성한다면, 상대 등급의 절대값은 작아진다. 이것은 우리가 블록당 더 적은 비트를 이용할 수 있으며, 마모 평준화의 목적으로 비휘발성 메모리 또는 휘발성 메모리에서 전용되는 전체 스토리지가 종래기술의 해결안 보다 더 작아짐을 의미한다. 예를 들면, 우리는 한 블록에 대해 허용된 삭제 사이클의 수가 최대 100,000일지라도, 블록당 단지 8 비트의 스토리지만을 할당할 수가 있다. 이것은 삭제 카운트를 저장하는 종래 기술의 시스템에서 사용되는 스토리지 양의 절반 이하이다. 항상 양의 정수인 삭제 카운트와는 달리 상대 등급은 양이거나 음이 될 수 있다는 것에 유의해야만 한다. 따라서, 상대 등급당 8 비트를 사용할 때, 표현될 수 있는 값의 범위는 -128 내지 +127 사이이고, 음의 수를 나타내기 위해 "2의 보수" 방법을 이용하는 것으로 가정한다.
모든 블록에 상대 등급이 주어진다면, 이러한 상대 등급들은 블록의 마모 평준화를 달성하기 위해 삭제 카운트의 위치에 사용된다. 삭제 카운트를 사용하는 종래 기술에 개시된 마모 평준화 알고리즘 각각은 삭제 카운트 대신에 상대 등급을 사용하는 것에 쉽게 적응된다. 도면을 참조하면, 도 1은 이것이 어떻게 달성되는지의 예를 도시한다. 도 1은 빈 블록이 사용을 위해 할당되어야만 할 때(즉, 동적 마모 평준화를 위해) 취해지는 단계들의 플로우 차트이다. 단계(100)에서, 빈 블록을 사용하기 위해 할당하도록 플래시 관리 시스템으로부터 요청이 수신된다. 단계(110)에서, 모든 빈 블록의 상대 등급이 가장 낮은 상대 등급을 가진 빈 블록을 찾도록 스캐닝된다. 하나 이상의 빈 블록이 동일한 가장 낮은 값을 가진다면, 이 들 블록 중 하나가 임의로 선택된다. 단계(120)에서 선택된 블록(이하 "블록 K")이 삭제된다. 이것은 플래시 관리 시스템이 삭제되지 않은 상태에 빈 블록의 자신의 풀을 저장하는 것을 가정한다. 일부 플래시 관리 시스템은 빈 블록을 사용으로 놓기 위한 프로세스 속도를 높이기 위해, 자신의 빈 블록의 풀을 이미 삭제된 상태로 저장한다. 종래 기술에서 당업자는 이러한 시스템 내에서 작업하기 위해 상기의 마모 평준화 방법을 변조하는 것이 용이할 것이다. 단계(130)에서, 블록 K는 사용으로 놓인다. 이것이 수행되는 방법과 어떤 제어 필드가 결과로서 업데이트되는지 상세한 것은 상이한 플래시 관리 시스템 사이에서 차이가 나며, 본 발명의 방법을 이해하는 것과는 무관하다.
단계(140)에서, 블록 K의 상대 등급은 블록 K가 하나 이상의 삭제 사이클을 방금 경험했다는 사실을 반영하도록 업데이트된다. 이것은 도 2에 더 상세하게 나와 있다.
단계(150)에서, 블록 K-1의 상대 등급은 블록 K가 방금 하나 이상의 삭제 사이클을 경험했다는 사실을 반영하도록 업데이트된다. 이것은 도 3에 보다 더 상술된다.
단계(160)에서, 블록 K+1의 상대 등급은 블록 K가 방금 하나 이상의 삭제 사이클을 경험했다는 사실을 반영하도록 업데이트된다. 이것 역시 도 3에서 보다 더 상술된다.
도 2는 블록 K의 상대 등급이 어떻게 업데이트 되었는지를 상술한다(도 1의 단계(140)). 단계(200)에서, 우리는 블록 K의 상대 등급이 저장될 수 있는 최대의 값과 동일한지 여부를 체크한다. 8 비트를 이용하는 상기의 상대 등급들의 예에 대해, 이것은 상대 등급이 127과 같은지를 물어보는 것을 의미한다. 상기 대답이 긍정적이면, 우리는 상대 등급을 더 증분할 수 없고 아무것도 하지 못한다(단계(210)). 대답이 부정적이면, 상대 등급을 증분할 공간이 있는 것이고, 그렇다면 우리는 블록 K의 상대 등급이 저장될 수 있는 최대값에서 1을 뺀것과 같은지를 더 체크한다(단계(220)). 8 비트를 이용하는 상기의 상대등급들의 예에 대해, 이것은 상대 등급이 126 인지를 문의하는 것을 의미한다. 그 대답이 긍정적이면, 단계(230)에서, 우리는 하나씩 상대 등급을 증분한다. 대답이 부정적이면, 단계(240)에서, 우리는 2씩 상대 등급을 증분한다. 이러한 로직의 마지막 결과는 상대등급이 2씩 증분하는 것이고, 그렇지않으면, 이러한 증분을 위한 공간이 없고, 이경우 상대 등급은 최대 가능한 값에서 끝수를 버린다. 이러한 결과는 블록의 삭제 사이클의 수와 그의 두 이웃의 삭제 사이클의 평균수 사이의 차이의 두배인 상대 등급의 정의에 따르는 것이다. 블록을 하나의 추가 사이클을 경험하게 하는 것은(두 이웃은 이번 스테이지에서 추가적인 삭제 사이클을 경험하지 않는다) 상대 등급이 명확하게 2 씩 증가하는 것을 야기한다.
도 3은 블록 K-1 및 K+1의 상대 등급이 어떻게 업데이트 되었는지를 상술한다(각각 도 1의 단계(150 및 160)). 단계(300)에서, 우리는 블록 K-1 또는 K+1의 상대 등급이 저장될 수 있는 최소 값과 동일한지 여부를 체크한다. 8 비트를 이용하는 상기의 상대 등급들의 예에 대해, 이것은 상대 등급이 -128과 같은지를 물어보는 것을 의미한다. 상기 대답이 긍정적이면, 우리는 상대 등급을 더 감소시킬 수 없고 아무것도 하지 못한다(단계(310)). 대답이 부정적이면, 상대 등급을 감소시킬 공간이 있는 것이고, 단계(320)에서 그렇다면 우리는 상대 등급을 하나씩 감소시킨다. 이러한 로직의 마지막 결과는 상대등급이 1씩 감소되는 것이고, 그렇지않으면, 이러한 감소를 위한 공간이 없고, 이 경우 상대 등급은 최소의 가능한 값에서 끝수를 버린다. 이러한 결과는 다시 블록의 삭제 사이클의 수와 그의 두 이웃의 삭제 사이클의 평균수 사이의 차이의 두배인 상대 등급의 정의에 따르는 것이다. 하나의 이웃한 블록이 하나의 추가 사이클을 경험하게 하는 것은(그 블록과 다른 이웃 블록은 이번 스테이지에서 추가적인 삭제 사이클을 경험하지 않는다) 상대 등급이 명확하게 1 씩 감소되는 것을 야기한다.
상대 등급값이 최소 또는 최대값에서 끝수를 버릴 수 있다는 사실은 상대 등급의 저장된 값이 이론적인 참값의 거의 근사치가 된다는 것을 의미한다. 그러나, 마모 평준화를 달성하기 위한 상대 등급의 사용은 일반적으로 상대 등급을 작고 0에 근사하게 만들기 때문에, 이러한 근사치는 대부분의 블록에 대해 매우 정확하다. 마모 평준화 알고리즘은 일반적으로 삭제 사이클의 정확한 카운트와의 작은 편차에는 민감하지 않으며, 따라서 일부 부정확하고 근사치인 값을 대신하여 상대 등급을 저장하기 위한 보다 작은 수의 비트를 이용하여 스토리지 영역을 절감하는 것이 자리맞춤된다.
상기 설명은 상대 등급에 기반한 동적 마모 평준화를 달성하는 것에 관련된 것이다. 상대 등급은 또한 정적 마모 평준화의 목적을 위해서도 사용될 수 있다. 이러한 것을 달성하기 위해, 때때로 모든 사용된 블록의 상대 등급이 스캐닝되고, 매우 낮은 상대 등급을 가진 블록을 찾는다. 이러한 낮은 상대 등급을 가진 블록을 찾는 것은 그 블록이 그의 이웃들 보다 더 작은 주기를 가진 것을 의미한다. 플래시 관리 시스템은 그런다음 그 블록의 컨텐츠를 그를 대체하기 위해 할당된 다른 블록으로 복사하는 것을 처리하고, 그런 다음 그 블록을 다시 빈 블록 풀로 되돌려놓는다. 이것은 결과적으로 원하는 대로 다른 블록에 비교된 그 블록의 삭제 사이클의 수를 균등화하는 결과를 낳는다. 매우 낮은 상대 등급을 가진 블록을 스캐닝하는 것은 모든 특정한 인터벌 시간에 주기적으로 한번씩 트리거되거나 또는 동적 마모 평준화 메커니즘에 통합되어 일부 사용자-초기화 기록 동작이 발생할 때 정적 블록들만이 빈 풀로 되돌려지도록 할 수 있다. 양쪽 방법 모두 정적 마모 평준화를 구현하기 위한 종래 기술에 교시되어 있다.
마모 평준화를 위한 기준으로서 상대 등급을 이용하는 것은 가장 최적화된 평준화를 가져오지 못할 수도 있는 근사치라는 것을 이해해야한다. 이것은 상대 등급이, 그 블록의 이웃과 비교된 블록의 사용양에 대한 국부적 정보만을 제공하기 때문이다. 그것은 전체 디바이스에 적용하는 글로벌한 정보를 제공하지 못한다. 한 블록은 제 2 블록의 상대 등급보다 높은 상대 등급을 가지는 것이 발생하지만, 실제로는 상기 제 2 블록이 제 1 블록보다 더 많은 삭제 사이클을 경험한다. 여전히, 동작 시간의 평균 및 긴 기간에서 상대 등급에 의존하는 것은 최적의 마모 평준화에 대한 근사치를 제공한다.
삭제 카운트가 아닌 상대 등급을 이용하는 본 발명의 방법은 특히 중심 위치에 모든 블록의 등급을 함께 저장하는 시스템에 유용하다. 이것은 3 개의 이웃하는 블록 또는 하나의 블록의 상대 등급을 업데이트하는 비용이 실제에 있어서는 동일하기 때문에 그러하다. 이것은 그 블록 내에 각 블록의 등급을 저장하는 시스템에서는 그러하지 아니한데, 이 경우에는 3 블록의 상대 등급을 업데이트하는 것이 3 개의 블록에 기록을 하는 것을 의미하기 때문이고, 이것은 단일 블록을 업데이트하는 시간 비용의 3 배이다. 그러나, 본 발명의 방법은 그것이 중앙 스토리지 경우에 비해 덜 효율적이더라도 상대 등급의 개별 스토리지의 경우에도 적용가능하다.
그 블록의 삭제 사이클의 수와 그의 이웃하는 두 블록의 삭제 사이클의 평균수 사이의 차이의 2 배가 되는, 블록의 상대 등급을 연산하기 위한 상기 제시된 공식은, 상대 등급을 연산하는 유일한 방법이 아니다. 예를 들면, 어느 한 블록의 삭제 사이클의 수와 각 면에 2개씩 있는 그 블록의 4 개의 가장 인접한 이웃 블록의 삭제 사이클의 평균수 사이의 차이로 나타내는 상대 등급을 정의할 수 있다. 보다 일반적으로, 모든 짝수 N에 대해, 그 블록의 삭제 사이클의 수와 각 면에 N/2 블록이 있는, 그의 N의 가장 인접한 이웃 블록들의 삭제 사이클의 평균 수 사이의 차이를 나타내는 상대 등급을 연산할 수도 있다. 상기 제시된 2-블록-이웃 연산의 이점은 각 블록 삭제 동작시 단지 3 블록의 상대 등급을 업데이트하는 것이 필요할 뿐이라는 것이고, 반면 N-블록-이웃 연산의 일반적인 경우에는, N+1 블록의 상대 등급이 각 블록 삭제 동작시마다 업데이트 되어야한다. 이러한 업데이트할 상대 등급의 수를 최소화하는 것은 상대 등급이 그의 블록 내에 개별적으로 각각 저장될 때 특히 중요한데, 이것이 기록될 더 많은 블록을 필요로하고 플래시 메모리에 기 록하는 것은 상대적으로 느린 동작이기 때문이다. 한편으로는, N>2를 이용하는 것은 본 발명이 국부적 요동에 보다 덜 민감하게 만든다.
상대 등급의 연산은 그 블록 주위에 중심으로 대칭이 아닌 상대 등급을 채용하는 것에 의해 더 근사되고 간략화될 수 있다. 예를 들면, 상대 등급은 그 블록의 삭제 사이클의 수와 그 블록에 선행하는 것으로 간주되는 하나의 그 자신의 이웃하는 블록의 삭제 사이클의 수 사이의 차이를 나타내도록 정의될 수 있다. 따라서, 블록 i의 상대 등급은 EC(i)-EC(i-1)이고, 블록 0의 상대 등급은 EC(0)-EC(N-1)이며, 여기서 N은 블록의 수이다. 이러한 일방적인 정의는 상술한 대칭형 정의 보다 상기 블록의 삭제 사이클 수의 상대적인 비균등성의 더 정제되지 못한 근사치를 제공하지만, 그것은 여전히 긴 안목으로보면 충분히 좋은 마모 평준화를 제공한다. 상대 등급의 이러한 간략화된 정의의 장점은 오직 2 개의 상대 등급만이 각 블록 삭제 동작당 업데이트 되어야만 한다는 것이다.
추가로, 주어진 블록의 상대 등급을 연산하는 데에 사용되는 다른 블록들이 실제로 인접한 이웃 블록들이 되어야할 필요는 전혀 없다. 우리가 모든 블록들에 맞게 연산을 유지하도록 처리하는 한은 다른 블록들도 가능하다. 예를 들면, 블록 i의 상대 등급이 2EC(i)-EC(i+30)-EC(i+70)과 같은 정의를 사용한다. 상기 연산을 모든 블록에 대해 의미가 있도록 하기 위해, 우리는 제 1 블록을 마지막 블록의 후속하는 것으로 간주한다. 이러한 상대 등급의 정의는 상기 제시된 제 1 정의와 유사하며, 그 차이는 (+30) 및 (+70)의 오프셋이 (-1) 및 (+1)의 오프셋 대신에 사용된다는 것이다. 상대 등급의 이러한 2 개의 정의에 기초한 마모 평준화 알고리즘 은 평균적으로 동일한 레벨로 실행할 것으로 예측된다.
상술한 모든 것의 결과로서, 우리는 본 발명의 방법이 스토리지 시스템에 기반한 플래시 메모리의 블록의 마모 평준화를 달성하기 위한 효율적인 방법을 제공한다는 것을 이해한다. 본 발명의 범위는 상기 제시한 방법, 이러한 방법을 채용한 메모리 시스템, 및 상기 방법들을 구현하고 그 안에 컴퓨터 판독가능한 코드를 내장한 컴퓨터 판독가능한 스토리지 시스템을 포함한다.
다시 도면을 참조하면, 도 4는 호스트(30)에 결합된 본 발명의 플래시 메모리 디바이스(20)의 고-레벨 블록 다이어그램이다. 도 4는, 도 1의 본 문에 그 전체가 참조의 목적으로 통합되어 있는 Ban의 미국특허 제 5,404,485로부터 적용가능하다(US 5,404,485가 본 설명과 상이한 전문용어를 사용함에 유의하라: US 5,404,485는 플래시 메모리의 삭제 블록을 "유닛"이라고 한다.). 플래시 메모리 디바이스(20)는 플래시 메모리(24), 컨트롤러(22) 및 랜덤 액세스 메모리(RAM)(26)를 포함한다. US 5,404,485의 "플래시 제어(14)"에 대응하는 컨트롤러(22)는 US 5,404,485에 기술된 바와 같은 RAM(26)의 도움으로 플래시 메모리(24)를 관리한다. 컨트롤러(22)는 또한 상술한 상대 등급을 이용하여 플래시 메모리(24)의 블록의 마모 평준화를 지원한다.
도 5는 본 발명의 대안이 되는 데이터 스토리지 시스템(50)의 고-레벨 국부적 블록 다이어그램이다. 데이터 스토리지 시스템(50)은 프로세서(52) 및 4 개의 메모리 디바이스: RAM(54), 부트 ROM(56), 대용량 스토리지 디바이스(하드 디스크)(58) 및 플래시 메모리 디바이스(40)를 포함하며, 이는 모두 공통의 버스(60)를 통해 통신한다. 플래시 메모리 디바이스(20)와 유사하게, 플래시 메모리 디바이스(40)는 플래시 메모리(42)를 포함한다. 플래시 메모리 디바이스(20)와는 달리, 플래시 메모리 디바이스(40)는 자신의 컨트롤러와 RAM이 없다. 대신에, 프로세서(52)는, 예를 들면 이스라엘 Kfar Saba의 M-Systems Flash Disk Pioneer Ltd.의 TrueFFS™ 드라이버 방식으로 US 5,404,485,의 방법을 구현하고 또한 본 발명의 마모 평준화 방법을 구현하는 소프트웨어 드라이버를 실행함으로 컨트롤러(22)를 에뮬레이팅한다. 플래시 메모리 디바이스는 또한 프로세서(52)가 플래시 메모리(42)와 통신할 수 있도록 하는 버스 인터페이스(44)를 포함한다.
프로세서(52)가 플래시 메모리(42)를 관리하도록 실행하는 소프트웨어 드라이버의 코드는 대용량 스토리지 디바이스(58)에 저장되고, 실행을 위해 RAM(54)으로 전송된다. 따라서 대용량 스토리지 디바이스(58)는 본 발명의 원리에 따라 플래시 메모리(42)를 관리하기 위한 컴퓨터 판독가능한 코드가 내장된 컴퓨터 판독가능한 코드 스토리지 매체의 예가 된다.
본 발명이 제한된 수의 실시예에 대해 기술되었지만, 본 발명의 많은 변형, 변경, 기타 응용이 이루어질 수 있음을 이해할 것이다.

Claims (17)

  1. 복수의 블록을 포함하는 메모리 디바이스의 메모리를 관리하는 방법으로서, 각 블록에 대해, 상기 방법은,
    (a) 상기 각 블록이 삭제된 횟수와 적어도 하나의 다른 블록이 삭제된 횟수의 함수인 수를 연산하는 단계; 및
    (b) 상기 수를 메모리 디바이스에 저장하는 단계;를 포함하고, 상기 각 블록에 대해, 상기 함수는 상기 각 블록의 상대 등급인 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  2. 제 1 항에 있어서, 각 블록에 대해,
    (c) 상기 각 블록이 삭제될 때마다 상기 수를 업데이트하는 단계;를 더 포함하는 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  3. 제 1 항에 있어서, 각 블록에 대해,
    (c) 상기 적어도 하나의 다른 블록 중 하나가 삭제될 때마다 상기 수를 업데이트하는 단계;를 더 포함하는 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  4. 제 1 항에 있어서,
    (c) 상기 수에 따라 적어도 부분적으로 삭제될 적어도 하나의 블록을 선택하 는 단계;를 더 포함하는 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  5. 제 1 항에 있어서,
    상기 저장하는 단계는 상기 블록들 중 적어도 하나의 각각에 대해 상기 각각의 블록에 상기 수를 저장하는 단계를 포함하는 단계에 의해 달성되는 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  6. 제 1 항에 있어서,
    상기 저장하는 단계는 상기 블록의 적어도 하나의 각각에 대해, 상기 각각의 블록 외부에 상기 수를 저장하는 단계에 의해 달성되는 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 블록의 적어도 하나의 각각에 대해, 상기 상대 등급은 상기 각각의 블록의 삭제 카운트와 하나의 다른 블록의 삭제 카운트 사이의 차이에 의존하는 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  9. 제 8 항에 있어서,
    상기 하나의 다른 블록은 상기 각 블록의 이웃한 블록인 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  10. 제 1 항에 있어서,
    상기 블록의 적어도 하나의 각각에 대해, 상기 상대 등급은 상기 각 블록의 삭제 카운트와 적어도 2 개의 다른 블록의 평균 삭제 카운트 사이의 차에 의존하는 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  11. 제 10 항에 있어서,
    상기 적어도 2개의 다른 블록들 중 적어도 하나는 상기 각 블록의 이웃하는 블록인 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  12. 제 1 항에 있어서,
    상기 연산하는 단계는, 각 블록에 대해, 블록당 최대 허용된 삭제 사이클의 수를 저장하기에 불충분한 비트 수에서 상기 함수의 끝수를 버리는 단계를 포함하는 것을 특징으로 하는 메모리 디바이스의 메모리를 관리하는 방법.
  13. (a) 복수의 블록을 포함하는 메모리; 및
    (b) 상기 각 블록에 대해:
    (i) 상기 각 블록이 삭제된 수와 적어도 하나의 다른 블록이 삭제된 수의 함수인 수를 연산하는 단계, 및
    (ii) 상기 수를 메모리 디바이스에 저장하는 단계를 포함하는 단계에 의해 상기 메모리를 관리하는 컨트롤러;를 포함하고, 상기 각 블록에 대해, 상기 함수는 상기 각 블록의 상대 등급인 것을 특징으로 하는 메모리 디바이스.
  14. 제 13 항에 있어서,
    상기 메모리는 플래시 메모리인 것을 특징으로 하는 메모리 디바이스.
  15. 복수의 블록을 포함하는 메모리 디바이스의 메모리를 관리하는 컴퓨터-판독가능한 코드를 내장한 컴퓨터-판독가능한 스토리지 매체로서, 상기 컴퓨터-판독가능한 코드는,
    (a) 각 블록에 대해, 상기 각 블록이 삭제된 횟수와 적어도 하나의 다른 블록이 삭제된 횟수의 함수인 수를 연산하기 위한 프로그램 코드; 및
    (b) 각 블록에 대해, 상기 수를 메모리 디바이스에 저장하기 위한 프로그램 코드;를 포함하고, 상기 각 블록에 대해, 상기 함수는 상기 각 블록의 상대 등급인 것을 특징으로 하는 컴퓨터-판독가능한 코드를 내장한 컴퓨터-판독가능한 스토리지 매체.
  16. 제 13 항에 있어서, 상기 연산하는 단계는, 상기 각 블록에 대해 블록당 최대 허용 삭제 사이클의 수를 저장하기에 충분하지 않은 비트 수로 각 블록의 함수의 끝수를 버리는 단계를 포함하는 것을 특징으로 하는 메모리 디바이스.
  17. 제 15 항에 있어서, 상기 연산하는 단계는, 상기 각 블록에 대해 블록당 최대 허용 삭제 사이클의 수를 저장하기에 충분하지 않은 비트 수로 각 블록의 함수의 끝수를 버리는 단계를 포함하는 것을 특징으로 하는 컴퓨터-판독가능한 스토리지 매체.
KR1020077020723A 2005-03-14 2006-03-12 상대등급을 이용하여 플래시 메모리에서 마모 평준화를달성 하는 방법 KR100920960B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US66125605P 2005-03-14 2005-03-14
US60/661,256 2005-03-14
US11/288,161 US7224604B2 (en) 2005-03-14 2005-11-29 Method of achieving wear leveling in flash memory using relative grades
US11/288,161 2005-11-29

Publications (2)

Publication Number Publication Date
KR20070118601A KR20070118601A (ko) 2007-12-17
KR100920960B1 true KR100920960B1 (ko) 2009-10-09

Family

ID=36970683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077020723A KR100920960B1 (ko) 2005-03-14 2006-03-12 상대등급을 이용하여 플래시 메모리에서 마모 평준화를달성 하는 방법

Country Status (6)

Country Link
US (1) US7224604B2 (ko)
EP (1) EP1859451A2 (ko)
JP (1) JP4790007B2 (ko)
KR (1) KR100920960B1 (ko)
CN (1) CN101208753B (ko)
WO (1) WO2006097917A2 (ko)

Families Citing this family (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7640389B2 (en) * 2006-02-28 2009-12-29 Freescale Semiconductor, Inc. Non-volatile memory having a multiple block erase mode and method therefor
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
WO2007132452A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
KR101202537B1 (ko) 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
WO2008068747A2 (en) 2006-12-03 2008-06-12 Anobit Technologies Ltd. Automatic defect management in memory devices
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
CN101715595A (zh) 2007-03-12 2010-05-26 爱诺彼得技术有限责任公司 存储器单元读取阈的自适应估计
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8429493B2 (en) 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
JP4444314B2 (ja) * 2007-07-13 2010-03-31 株式会社東芝 半導体メモリ情報蓄積装置とその書き込み制御方法
US7865761B1 (en) 2007-06-28 2011-01-04 Emc Corporation Accessing multiple non-volatile semiconductor memory modules in an uneven manner
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US7916543B2 (en) 2007-10-22 2011-03-29 Micron Technology, Inc. Memory cell operation
KR101509836B1 (ko) 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
US7903486B2 (en) 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US7849275B2 (en) 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US9183133B2 (en) * 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US7636258B2 (en) * 2007-12-12 2009-12-22 Qimonda Flash Gmbh Integrated circuits, memory controller, and memory modules
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US20090259819A1 (en) * 2008-04-09 2009-10-15 Skymedi Corporation Method of wear leveling for non-volatile memory
US20090259994A1 (en) * 2008-04-15 2009-10-15 Nokia Corporation Apparatus, Method, and Computer Program Product for Analyzing Program Memory Operations
WO2009140700A1 (en) 2008-05-16 2009-11-19 Fusion Multisystems, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US7924623B2 (en) * 2008-05-27 2011-04-12 Micron Technology, Inc. Method for memory cell erasure with a programming monitor of reference cells
FR2933803B1 (fr) * 2008-07-08 2010-09-24 Thales Sa Dispositif et procede de sauvegarde de donnees sur des supports de memoire non volatile, de type flash nand, destines a des calculateurs embarques
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
CN101685675B (zh) * 2008-09-26 2014-01-15 美光科技公司 存储器单元操作
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8825940B1 (en) 2008-12-02 2014-09-02 Siliconsystems, Inc. Architecture for optimizing execution of storage access commands
TWI395222B (zh) * 2008-12-05 2013-05-01 Apacer Technology Inc A storage device having a flash memory, and a storage method of a flash memory
WO2010076829A1 (en) * 2008-12-30 2010-07-08 Massimo Iaculo Wear leveling for erasable memories
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US9176859B2 (en) * 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US9098396B2 (en) * 2009-02-13 2015-08-04 Sandisk Il Ltd. Enhancement of efficiency in power failure handling in flash memory
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
TWI409819B (zh) * 2009-03-03 2013-09-21 Silicon Motion Inc 平均地使用一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
US10079048B2 (en) * 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
KR101586047B1 (ko) 2009-03-25 2016-01-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US20100318719A1 (en) * 2009-06-12 2010-12-16 Micron Technology, Inc. Methods, memory controllers and devices for wear leveling a memory
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
EP2455865B1 (en) * 2009-07-17 2020-03-04 Toshiba Memory Corporation Memory management device
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
CN101989458B (zh) * 2009-07-31 2013-10-30 慧帝科技(深圳)有限公司 平均地使用一闪存的多个区块的方法、记忆装置及控制器
US7936610B1 (en) 2009-08-03 2011-05-03 Micron Technology, Inc. Selective refresh of single bit memory cells
US8601202B1 (en) 2009-08-26 2013-12-03 Micron Technology, Inc. Full chip wear leveling in memory device
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8327226B2 (en) * 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
US8321646B2 (en) * 2010-04-13 2012-11-27 Dot Hill Systems Corporation Method and apparatus for rebalancing storage components within a storage tier
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
CN102568570B (zh) * 2010-12-07 2016-04-27 上海华虹集成电路有限责任公司 基于sd接口使用环形队列快速写闪存介质的方法
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
KR20120096212A (ko) * 2011-02-22 2012-08-30 삼성전자주식회사 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이들의 동작 방법
US8762625B2 (en) * 2011-04-14 2014-06-24 Apple Inc. Stochastic block allocation for improved wear leveling
US8898373B1 (en) 2011-06-29 2014-11-25 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US9158621B2 (en) * 2011-08-29 2015-10-13 Sandisk Technologies Inc. System and method of copying data
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9311501B2 (en) * 2012-03-26 2016-04-12 International Business Machines Corporation Using different secure erase algorithms to erase chunks from a file associated with different security levels
KR101989850B1 (ko) * 2012-04-03 2019-06-18 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
US8769193B2 (en) 2012-04-30 2014-07-01 Empire Technology Development Llc Numeric representation to improve life of solid state storage devices
CN102915764A (zh) * 2012-09-04 2013-02-06 邹粤林 提高闪存芯片缺陷容忍度的方法、闪存存储系统及其控制器
US8990542B2 (en) 2012-09-12 2015-03-24 Dot Hill Systems Corporation Efficient metadata protection system for data storage
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US9240235B2 (en) 2013-12-19 2016-01-19 Sandisk Technologies Inc. Mitigating disturb effects for non-volatile memory
US9524236B1 (en) * 2014-01-09 2016-12-20 Marvell International Ltd. Systems and methods for performing memory management based on data access properties
US9728278B2 (en) 2014-10-24 2017-08-08 Micron Technology, Inc. Threshold voltage margin analysis
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US10528287B2 (en) 2015-10-09 2020-01-07 Sony Corporation Memory, memory controller, storage apparatus, information processing system, and control method for tracking erase count and rewrite cycles of memory pages
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004040585A1 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile storage systems

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5268319A (en) 1988-06-08 1993-12-07 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5341339A (en) 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
JPH075934A (ja) * 1993-06-21 1995-01-10 Yamato Scient Co Ltd 温度プログラムの設定方法
US5568423A (en) 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
JP3219699B2 (ja) * 1996-09-17 2001-10-15 三洋電機株式会社 半導体メモリ装置
CN1351350A (zh) * 2000-10-27 2002-05-29 岳京星 闪存中存储块的分区及读写信息标识的方法
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
JP4289026B2 (ja) * 2003-05-28 2009-07-01 日本電気株式会社 半導体記憶装置
CN1318978C (zh) * 2003-07-25 2007-05-30 华为技术有限公司 一种存储异常信息的方法
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
US7089349B2 (en) * 2003-10-28 2006-08-08 Sandisk Corporation Internal maintenance schedule request for non-volatile memory system
JP2006065550A (ja) * 2004-08-26 2006-03-09 Canon Inc インクジェット記録装置の不揮発性メモリ書き込み制御方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004040585A1 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile storage systems

Also Published As

Publication number Publication date
WO2006097917A2 (en) 2006-09-21
US7224604B2 (en) 2007-05-29
JP2009506389A (ja) 2009-02-12
WO2006097917A3 (en) 2006-12-14
CN101208753A (zh) 2008-06-25
US20060203546A1 (en) 2006-09-14
CN101208753B (zh) 2012-12-12
JP4790007B2 (ja) 2011-10-12
KR20070118601A (ko) 2007-12-17
EP1859451A2 (en) 2007-11-28

Similar Documents

Publication Publication Date Title
KR100920960B1 (ko) 상대등급을 이용하여 플래시 메모리에서 마모 평준화를달성 하는 방법
US9898212B1 (en) Method and apparatus for selecting a memory block for writing data, based on a predicted frequency of updating the data
EP3588259B1 (en) Garbage collection method for storage media, storage medium, and program product
US9021185B2 (en) Memory controller and methods for enhancing write performance of a flash device
KR101464338B1 (ko) 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템
US7882300B2 (en) Apparatus and method for managing nonvolatile memory
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
KR100818035B1 (ko) 저장 매체 상의 데이터 관리 및 데이터 관리 시스템과 컴퓨터 판독가능한 저장 매체
JP2014241158A (ja) メモリの複数のブロックの寿命の向上
KR20190052083A (ko) 저장된 데이터를 플래시 메모리에 기초한 저장 매체에 기입하기 위한 방법 및 디바이스
JP2005242897A (ja) フラッシュディスク装置
KR100624973B1 (ko) 플래시 메모리의 효율적인 소거 횟수 평준화방법(k-평준화)
KR101699779B1 (ko) 플래시 메모리의 색인 방법
US10877698B2 (en) Semiconductor device for managing cold addresses of nonvolatile memory device
JP2020086748A (ja) メモリコントローラ、及びメモリシステム
KR102671141B1 (ko) 비휘발성 메모리의 주소를 관리하는 반도체 장치
KR100885026B1 (ko) 플래시 메모리의 마모도 평준화 방법
US20240004555A1 (en) Memory system
JP2017134440A (ja) メモリ制御回路、メモリ制御システム、メモリ制御方法、及び、メモリ制御プログラム
JP2021140464A (ja) ストレージ装置、ストレージシステム及び方法
CN115878025A (zh) 树结构节点压缩优先级
CN116627353A (zh) 一种文件管理方法、装置、设备及存储介质
Rahiman et al. GR-FB Block Cleaning Scheme in Flash Memory

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130926

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141001

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160920

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee