KR20080082601A - 빠른 웨어 레벨링 플래쉬 드라이브 - Google Patents

빠른 웨어 레벨링 플래쉬 드라이브 Download PDF

Info

Publication number
KR20080082601A
KR20080082601A KR1020087007800A KR20087007800A KR20080082601A KR 20080082601 A KR20080082601 A KR 20080082601A KR 1020087007800 A KR1020087007800 A KR 1020087007800A KR 20087007800 A KR20087007800 A KR 20087007800A KR 20080082601 A KR20080082601 A KR 20080082601A
Authority
KR
South Korea
Prior art keywords
memory blocks
memory
indicators
wear
leveling table
Prior art date
Application number
KR1020087007800A
Other languages
English (en)
Other versions
KR101383853B1 (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 KR20080082601A publication Critical patent/KR20080082601A/ko
Application granted granted Critical
Publication of KR101383853B1 publication Critical patent/KR101383853B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • 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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터를 저장하는 하나 또는 그 이상의 메모리 블록들, 데이터를 저장하기 위해 메모리 블록들의 하나 또는 그 이상을 할당하는 컨트롤러, 및 비휘발성 메모리 내의 비할당 메모리 블록들에 대한 표시자들로 점유된 웨어-레벨링 테이블을 포함하고, 컨트롤러는 웨어-레벨링 테이블 내의 하나 또는 그 이상의 표시자들을 식별하고, 데이터 저장을 위하여 식별된 표시자들과 관련된 비할당 메모리 블록들에 할당하는, 비휘발성 메모리를 포함하는 시스템과 방법을 개시한다.
플래쉬 메모리, 시스템, 메모리 블록, 웨어 레벨링, 웨어-레벨링 테이블

Description

빠른 웨어 레벨링 플래쉬 드라이브{Flash drive fast wear leveling}
본 발명은 메모리 소자들에 관한 것으로서, 보다 상세하게는 플래쉬 메모리의 개선된 웨어 레벨링에 관한 것이다.
(관련 출원들에 대한 참조)
본 출원은 2005년 9월 1일 출원된 미국임시특허출원번호 제60/713,913호로부터 우선권을 주장하며, 본 명세서에 참조로서 결합된다.
플래쉬 메모리와 같은 비휘발성 메모리 소자들은 데이터 저장 어플리케이션들에 많이 사용되고 있다. 플래쉬 메모리의 물리적 특성들이 비휘발성 데이터 저장을 허용한다고 하여도, 플래쉬 메모리는 한정된 수명을 가지는 단점이 있다. 예를 들어, 낸드(NAND) 플래쉬 메모리 블록들은 통상적으로 대략 100,000 내지 1,000,000회의 기록 동작들을 수행하면 마모(wear out)되거나 실패한다.
플래쉬 드라이브는 통상적으로 메모리 블록들 상에, 예를 들어, 독취, 기록, 및 삭제 동작들을 수행한다. 기록 동작들을 수행하는 도중에, 플래쉬 드라이버는 데이터의 저장에 이용가능한 삭제된 메모리 블록들을 식별하는 것이 일반적으로 요구된다. 많은 플래쉬 드라이버들은 가장 최근에 삭제된 메모리 블록 상에 이러한 기록동작을 수행한다. 기록 동작들의 수행을 위하여 이러한 방법이 삭제된 메모리 블록들을 효과적으로 위치시킨다고 하여도, 상기 메모리 블록들에 기록 동작들을 항상 균일하게 분배할 수 없으며, 따라서 플래쉬 메모리의 수명을 감소시킨다.
플래쉬 메모리의 수명을 최대화하기 위하여, 많은 시스템들은 메모리 블록들에 보다 균일하게 적절한 기록 동작들을 시도하는 웨어-레벨링(wear-leveling) 기술을 이행한다. 예를 들어, 플래쉬 드라이버들은 플래쉬 메모리 내의 모든 메모리 블록들에 표시자들을 제공하는 논리-물리 테이블을 선형적으로 검색함에 의하여 웨어-레벨링을 증가시킬 수 있다. 통상적으로 상기 논리-물리 테이블에는 상기 표시자들을 수반하는 플래그(flag)들, 예를 들어, 상기 표시자에 상응하는 메모리 블록이 삭제되는 것을 지시하는 삭제 플래그 및 메모리 블록이 실패한 것을 지시하는 불량 블록 플래그가 있다.
이러한 웨어-레벨링 기술이 기록 동작들을 분배함으로서 플래쉬 메모리의 수명을 증가시킨다고 하여도, 데이터를 기록하기 위해 다음의 삭제된 불록을 찾기 위해 사용되는 논리-물리 테이블의 선형 검색은 비효율적이고, 일부 경우에는 플래쉬 드라이버의 주어진 프로세싱 요구들을 수행하지 못한다. 예를 들어, 24 개의 이용가능하고 삭제된 메모리 블록들을 가지는 1024 개의 메모리 블록들을 포함하는 논리-물리 테이블의 선형 검색을 수행하는 플래쉬 드라이버는 삭제된 메모리 블록을 찾기위하여 상기 논리-물리 테이블에 평균 44 번의 액세스들이 요구되며, 가장 나쁜 경우에는 상기 논리-물리 테이블에 평균 1000 번의 액세스들이 요구된다. 상기 플래쉬 메모리가 10 개의 불량 메모리 블록들과 단지 14 개의 삭제된 메모리 블록들을 포함하는 경우에는, 플래쉬 드라이버는 삭제된 블록을 찾기위하여 상기 논리- 물리 테이블에 평균적으로 77번의 액세스를 하여야한다.
본 발명에 따른 시스템은, 데이터를 저장하기 위하여 비휘발성 메모리 내에 메모리 블록들의 하나 또는 그 이상을 할당하는 컨트롤러; 및 상기 비휘발성 메모리 내에 비할당 메모리 블록들에 대한 표시자들로 점유된 웨어-레벨링(wear-leveling) 테이블을 포함하고, 상기 컨트롤러는 상기 웨어-레벨링 테이블 내의 하나 또는 그 이상의 표시자들을 식별하고, 상기 식별된 표시자들과 관련된 메모리 블록들에 데이터를 저장한다.
본 발명에 따른 방법은, 플래쉬 메모리 내의 하나 또는 그 이상의 메모리 블록들에 대한, 삭제된 메모리 블록들 또는 결함있는 메모리 블록들과 관련된, 표시자들로 웨어-레벨링 테이블을 점유하는 단계; 상기 웨어-레벨링 테이블 내의 적어도 하나의 표시자를 식별하는 단계; 및 상기 식별된 표시자와 관련된 메모리 블록에 데이터를 저장하는 단계를 포함한다.
본 발명은 첨부된 도면을 참조하여 개시된 바를 더욱 잘 이해할 수 있다.
도 1은 본 발명의 실시예들에 유용한 메모리 시스템을 블록 형태로 도시한다.
도 2는 도 1에 도시된 메모리 시스템의 예시적인 동작들을 도시하는 흐름도이다.
도 3은 본 발명의 실시예들에 유용한 다른 메모리 시스템을 블록 형태로 도 시한다.
도 4는 도 3에 도시된 메모리 시스템의 예시적인 동작들을 도시하는 흐름도이다.
도 1은 본 발명의 실시예들에 유용한 메모리 시스템(100)을 블록 형태로 도시한다. 도 1을 참조하면, 메모리 시스템(100)은 데이터를 저장하는 복수의 메모리 블록들(105-1,...,105-N)을 가지는 플래쉬 메모리(110)를 포함한다. 일부 실시예들에 있어서, 플래쉬 메모리(110)는, 스마트 미디어(SmartMediaTM)의 명세사항에 따라 구성된 1024 개의 메모리 블록들을 포함할 수 있고, 예를 들어, 상기 1024 개의 메모리 블록들 중에 최대 1000 개가 소정의 시간에 데이터 저장을 위해 할당된다. 잔류하는 비할당 메모리 블록들은, 데이터의 저장에 이용가능한 삭제되거나 또는 삭제가능한 메모리 블록들, 불량이거나 결함있는 메모리 블록들, 또는 이들 모두를 포함할 수 있다. 플래쉬 메모리(110)는 낸드(NAND) 플래쉬 메모리, 또는 데이터를 저장할 수 있는 모든 종류의 비휘발성 메모리일 수 있다.
메모리 시스템(100)은, 플래쉬 메모리(110)의 메모리 블록들(105-1,...,105-N) 상에 독취, 기록, 및 삭제 동작들과 같은 메모리 액세스(access) 동작들을 수행하는 플래쉬 메모리 컨트롤러(120)를 포함한다. 플래쉬 메모리(110)에 데이터를 기록한 즉시, 플래쉬 메모리 컨트롤러(120)는 플래쉬 메모리(110) 내에 상기 데이터의 저장에 이용가능한 하나 또는 그 이상의 비할당 메모리 블록들을 식별할 수 있고, 이어서 상기 식별된 메모리 블록(들)에 상기 데이터를 기록할 수 있다. 플래쉬 메모리 컨트롤러(120)는, 컴퓨터로 독취가능한 매체, 분리된 하드웨어 구성요소들의 셋트, 또는 이와 유사한 것들 내에 저장된 지시를 수행하는 펌웨어(firmware), 프로세서, 또는 다중 통신 프로세서로서 실행될 수 있다.
메모리 시스템(100)은, 플래쉬 메모리(110) 내의 메모리 블록들(105-1,...,105-N)에 대한 표시자들로 점유된 논리-물리(logical-to-physical) 테이블(130)을 포함한다. 상기 표시자들은 플래쉬 메모리(110) 내의 메모리 블록들(105-1,...105-N)의 물리적 위치들을 어드레스할 수 있다. 논리-물리 테이블(130)은 상기 플래쉬 메모리의 잔존 영역에 위치하거나 및/또는 메모리 시스템(100) 내에 포함되는 다른 메모리, 예를 들어, 랜덤 액세스 메모리(random access memory, RAM), 또는 이와 유사한 것들의 메모리 내에 저장될 수 있다.
메모리 시스템(100)의 초기 구성동안, 플래쉬 메모리 컨트롤러(120)는 논리-물리 테이블(130) 내의 상기 표시자들을, 예를 들어, 플래쉬 메모리(110) 내에서 메모리 블록들(105-1,..., 105-N)과 1:1 구성으로 초기화할 수 있다. 일부 실시예들에 있어서, 메모리 블록들(105-1,...,105-N)에 대한 상기 1:1 맵핑은 제조 과정중에 또는 메모리 시스템(100)의 초기 사용중에 수행될 수 있다. 따라서, 플래쉬 메모리(110)에 최초로 데이터를 기록한 경우에 있어서, 플래쉬 메모리 컨트롤러(120)는 논리-물리 테이블(130)을 통한 선형적 시퀀싱(sequencing)에 의하여 데이터를 저장하는 메모리 블록들(105-1,...,105-N)을 식별할 수 있다.
논리-물리 테이블(130)를 초기화한 후에 또는 플래쉬 메모리 컨트롤러(120) 가 논리-물리 테이블(130)을 통한 선형적 시퀀싱을 완료한 경우에, 플래쉬 메모리 컨트롤러(120)는 데이터 기록 동작들 동안에 플래쉬 메모리(110) 내의 삭제되거나 또는 삭제가능한 메모리 블록들에 대한 표시자들을 식별한다. 논리-물리 테이블(130)의 검색이 플래쉬 메모리 컨트롤러(120)에게 비효율적이고 과중한 작업이 될 수 있으므로, 메모리 시스템(100)의 실시예들은 플래쉬 메모리(110) 내의 비할당 메모리 블록들에 대한 표시자들로 점유된 웨어-레벨링 테이블(140)을 포함한다. 상기 비할당 메모리 블록들은, 플래쉬 메모리 컨트롤러(120)가 이전에 삭제한 메모리 블록들과 같이 데이터의 저장에 이용가능한 메모리 블록들(105-1,...,105-N)이거나, 또는 실패하였거나 결함있는 메모리 블록들(105-1,...,105-N)일 수 있다. 웨어-레벨링 테이블(140)은 상기 플래쉬 메모리의 잔존 영역에 위치하거나 및/또는 메모리 시스템(100) 내에 포함되는 다른 메모리, 예를 들어, 랜덤 액세스 메모리 또는 이와 유사한 것들의 메모리 내에 저장될 수 있다.
플래쉬 메모리 컨트롤러(120)는 비할당 메모리 블록들에 대한 표시자들로 웨어-레벨링 테이블(140)을 점유시키는 웨어-레벨링 유니트(125)를 포함한다. 일부 실시예들에 있어서, 논리-물리 테이블(130)의 초기화 이후 또는 이와 동시에, 및/또는 플래쉬 메모리 컨트롤러(120)가 논리-물리 테이블(130) 내의 초기화된 표시자들과 상응하는 메모리 블록들(105-1,...,105-N)에 데이터를 저장한 이후 또는 이와 동시에, 웨어-레벨링 유니트(125)는 상기 비할당 메모리 블록들에 대한 표시자들로 웨어-레벨링 테이블(140)을 점유시킨다.
플래쉬 메모리 컨트롤러(120)가 플래쉬 메모리(110)에 데이터를 기록할 것을 결정하는 경우에 있어서, 상기 데이터의 저장에 이용가능한 플래쉬 메모리(110) 내의 적어도 하나의 삭제되거나 또는 삭제가능한 메모리 블록을 식별하기 위하여, 웨어-레벨링 유니트(125)는 웨어-레벨링 테이블(140)을 액세스할 수 있다. 또한, 웨어-레벨링 테이블(140)은 그 내부의 삭제되거나 또는 삭제가능한 메모리 블록들에 상응하는 표시자들 및 그 내부의 결함이 있거나 실패한 메모리 블록들에 상응하는 표시자들을 지시하기 위한 데이터를 포함할 수 있다. 웨어-레벨링 테이블(140)이 플래쉬 메모리(110) 내의 비할당 메모리 블록들에 대한 표시자들을 포함하므로, 웨어-레벨링 유니트(125)는 데이터 기록 동작들 동안에 삭제되거나 또는 삭제가능한 메모리 블록을 식별하기 위하여 요구되는 시간을 감소할 수 있다.
웨어-레벨링 유니트(125)는, 예를 들어 웨어-레벨링 테이블(140)의 점유 동안에, 웨어-레벨링 테이블(140)을 우선 순위화하는 우선 순위화 체계를 수행할 수 있다. 웨어-레벨링 유니트(125)는, 각각의 메모리 블록에 이행된 기록 동작들의 횟수에 따르거나, 또는 상기 메모리 블록들이 삭제되거나 또는 삭제가능할 수 있는 경우에 따라서, 상기 비할당 메모리 블록들 또는 상기 삭제되거나 또는 삭제가능한 메모리 블록들을 우선 순위화할 수 있다. 웨어-레벨링 테이블(140)의 우선 순위화는, 삭제되거나 또는 삭제가능한 메모리 블록들에 대한 표시자들에 그들의 우선 순위에 따라서 웨어-레벨링 유니트(125)가 선형적으로 액세스하도록 허용하며, 이에 따라 메모리 시스템(100)이 메모리 블록들(105-1,...,105-N)에 기록 동작들을 더 균일하게 분배하는 것을 허용하며, 또한 플래쉬 메모리(110)의 수명을 연장하게 한다.
도 2는 도 1에 도시된 메모리 시스템의 예시적인 동작들을 도시하는 흐름도(200)이다. 도 2를 참조하면, 블록 210에 있어서, 플래쉬 메모리 컨트롤러(120)는 플래쉬 메모리(110) 내의 비할당 메모리 블록들을 식별한다. 일부 실시예들에 있어서, 플래쉬 메모리(110) 내의 하나 또는 그 이상의 메모리 블록들(105-1,...,105-N)이 데이터를 더 이상 저장할 필요가 없는 결정에 대하여, 메모리 블록을 삭제하는 결정에 대하여 또는 삭제가능하다고 간주하는 결정에 대하여 응답하여, 플래쉬 메모리 컨트롤러(120)는 플래쉬 메모리(110) 내의 비할당 메모리 블록들을 식별할 수 있다. 또한, 플래쉬 메모리(110) 내의 메모리 블록(105-1,...,105-N)이 결함이 있거나 또는 실패함의 결정에 대하여 응답하여, 플래쉬 메모리 컨트롤러(120)는 비할당 메모리 블록들을 식별할 수 있다.
블록 220에 있어서, 플래쉬 메모리 컨트롤러(120)는 상기 플래쉬 메모리 내의 비할당 메모리 블록들에 대한 표시자들로 웨어-레벨링 테이블(140)을 점유시킨다. 일부 실시예들에 있어서, 웨어-레벨링 유니트(125)는 상기 표시자들로 웨어-레벨링 테이블(140)을 점유시킨다. 웨어-레벨링 테이블(140)은, 플래쉬 메모리(110) 내의 삭제되거나 또는 삭제가능한 메모리 블록들에 대한 표시자들, 또는 플래쉬 메모리(110) 내의 결함있거나 또는 실패한 메모리 블록들에 대한 표시자들을 포함할 수 있다.
플래쉬 메모리 컨트롤러(120)는, 예를 들어, 웨어-레벨링 테이블(140)을 점유하는 동안, 웨어-레벨링 테이블(140)을 우선 순위화하는 우선 순위화 체계를 수행할 수 있다. 플래쉬 메모리 컨트롤러(120)는, 각각의 메모리 블록에 이행된 기 록 동작들의 횟수에 따르거나, 또는 상기 메모리 블록들이 삭제되거나 또는 삭제가능하다고 간주하는 경우에 따라서, 상기 비할당 메모리 블록들, 또는 삭제되거나 삭제가능한 메모리 블록들을 우선 순위화할 수 있다.
블록 230에 있어서, 플래쉬 메모리 컨트롤러(120)는, 웨어-레벨링 테이블(140) 내의 플래쉬 메모리 컨트롤러(120)로부터 데이터의 저장에 이용가능한 비할당 메모리 블록에 대한 표시자를 식별한다. 상기 식별된 표시자는, 삭제된 메모리 블록 또는 삭제가능한 메모리 블록과 같은 데이터의 저장에 이용가능한 비할당 메모리 블록에 대한 것일 수 있다. 상기 메모리 블록이 삭제가능한 경우에 있어서, 상기 메모리 블록에 데이터를 기록하기 전에 플래쉬 메모리 컨트롤러(120)가 상기 메모리 블록을 삭제할 수 있다.
플래쉬 메모리 컨트롤러(120)는, 플래쉬 메모리(110) 내의 삭제되거나 또는 삭제가능한 메모리 블록들에 대한 표시자들에 대하여 웨어-레벨링 테이블(140)에 액세스하여, 비할당 메모리 블록에 대한 표시자를 식별할 수 있다. 웨어-레벨링 테이블(140)이 플래쉬 메모리 컨트롤러(120)에 의하여 우선 순위화된 경우에 있어서, 웨어-레벨링 유니트(125)는 삭제되거나 또는 삭제가능한 메모리 블록들에 대한 표시자들을 선형적으로 액세스하고, 이에 따라 검색 시간을 감소시키고 메모리 시스템(100)이 메모리 블록들(105-1,...,105-N) 중의 기록 동작들을 더 균일하게 분배하는 것을 허용한다.
블록 240에 있어서, 플래쉬 메모리 컨트롤러(120)는 상기 식별된 표시자에 상응하는 메모리 블록에 데이터를 기록한다. 일부 실시예들에 있어서, 플래쉬 메 모리 컨트롤러(120)는, 상기 메모리 블록에 데이터를 기록하기 전에, 상기 식별된 표시자에 상응하는 상기 메모리 블록을 삭제할 수 있다.
도 3은 본 발명의 실시예들에 유용한 다른 메모리 시스템(300)을 블록 형태로 도시한다. 도 3을 참조하면, 메모리 시스템(300)은 플래쉬 메모리 컨트롤러(320)로부터 데이터를 저장하는 복수의 플래쉬 메모리 영역들(310-1,...,310-N)을 포함한다. 일부 실시예들에 있어서, 플래쉬 메모리 영역들(310-1,...,310-N) 각각은, 스마트 미디어(SmartMediaTM)의 명세사항에 따라 구성된 1024 개의 메모리 블록들을 포함할 수 있고, 예를 들어, 상기 1024 개의 메모리 블록들 중에 최대 1000 개가 소정의 시간에 데이터 저장을 위해 할당된다. 잔류하는 비할당 메모리 블록들은, 데이터의 저장에 이용가능한 삭제되거나 또는 삭제가능한 메모리 블록들, 불량이거나 결함있는 메모리 블록들, 또는 이들 모두를 포함할 수 있다. 플래쉬 메모리 영역들(310-1,...,310-N)은 낸드 플래쉬 메모리, 또는 데이터를 저장할 수 있는 모든 종류의 비휘발성 메모리일 수 있다.
메모리 시스템(300)은, 플래쉬 메모리 영역들(310-1,...,310-N) 상에 독취, 기록, 및 삭제 동작들과 같은 메모리 액세스 동작들을 수행하는 플래쉬 메모리 컨트롤러(320)를 포함한다. 플래쉬 메모리 영역들(310-1,...,310-N)의 하나에 데이터를 기록한 즉시, 플래쉬 메모리 컨트롤러(320)는 상기 데이터의 저장에 이용가능한 플래쉬 메모리 영역(310)과 관련된 하나 또는 그 이상의 비할당 메모리 블록들을 식별할 수 있고, 이어서 상기 식별된 메모리 블록(들)에 상기 데이터를 기록할 수 있다. 플래쉬 메모리 컨트롤러(320)는, 컴퓨터로 독취가능한 매체, 분리된 하드웨어 구성요소들의 셋트, 또는 이와 유사한 것들에 저장된 지시를 수행하는 펌웨어, 프로세서, 또는 다중 통신 프로세서로서 실행될 수 있다.
메모리 시스템(300)은, 플래쉬 메모리 영역들(310-1,...,310-N)의 하나 또는 그 이상 내의 상기 메모리 블록들에 대한 표시자들로 점유된 논리-물리 테이블(330)을 포함한다. 상기 표시자들은 플래쉬 메모리 영역들(310-1,...,310-N) 내의 메모리 블록들의 물리적 위치들을 어드레스할 수 있다. 논리-물리 테이블(330)은 상기 플래쉬 메모리의 잔존 영역에 위치하거나 및/또는 메모리 시스템(300) 내에 포함되는 다른 메모리, 예를 들어, 랜덤 액세스 메모리, 또는 이와 유사한 것들의 메모리 내에 저장될 수 있다.
메모리 시스템(300)의 초기 구성동안, 플래쉬 메모리 컨트롤러(320)는 논리-물리 테이블(330) 내의 상기 표시자들을, 예를 들어 플래쉬 메모리 영역들(310-1,...,310-N)의 적어도 하나 내에서 상기 메모리 블록들과 1:1 구성으로 초기화할 수 있다. 일부 실시예들에 있어서, 상기 메모리 블록들에 대한 상기 1:1 맵핑은 제조 과정중에 또는 메모리 시스템(300)의 초기 사용중에 수행될 수 있다. 따라서, 플래쉬 메모리 영역들(310-1,...,310-N)에 최초로 데이터를 기록한 경우에 있어서, 플래쉬 메모리 컨트롤러(320)는 논리-물리 테이블(330)을 통한 선형적 시퀀싱에 의하여 데이터를 저장하는 메모리 블록들을 식별할 수 있다.
논리-물리 테이블(330)를 초기화한 후에 또는 플래쉬 메모리 컨트롤러(320)가 논리-물리 테이블(330)을 통한 선형적 시퀀싱을 완료한 경우에, 플래쉬 메모리 컨트롤러(320)는 데이터 기록 동작들 동안에 플래쉬 메모리 영역들(310-1,...,310-N) 내의 삭제되거나 또는 삭제가능한 메모리 블록들에 대한 표시자들을 식별하도록 요구된다. 논리-물리 테이블(330)의 검색이 플래쉬 메모리 컨트롤러(320)에게 비효율적이고 과중한 작업이 될 수 있으므로, 메모리 시스템(300)의 실시예들은 플래쉬 메모리 영역들(310-1,...,310-N)의 하나 또는 그 이상 내의 비할당 메모리 블록들에 대한 표시자들로 점유된 웨어-레벨링 테이블(340)을 포함한다. 웨어-레벨링 테이블(340)은 상기 플래쉬 메모리의 잔존 영역에 위치하거나 및/또는 메모리 시스템(300) 내에 포함되는 다른 메모리, 예를 들어, 랜덤 액세스 메모리 또는 이와 유사한 것들의 메모리 내에 저장될 수 있다.
플래쉬 메모리 컨트롤러(320)는 플래쉬 메모리 영역들(310-1,...,310-N)의 하나 또는 그 이상 내의 비할당 메모리 블록들에 대한 표시자들로 웨어-레벨링 테이블(340)을 점유시키는 웨어-레벨링 유니트(325)를 포함한다. 일부 실시예들에 있어서, 플래쉬 메모리 영역들(310-1,...,310-N)로부터 웨어-레벨링 테이블 데이터에 따라서 웨어-레벨링 유니트(325)는 웨어-레벨링 테이블(340)을 점유시킬 수 있다. 상기 웨어-레벨링 테이블 데이터는 상응하는 플래쉬 메모리 영역들(310-1,...,310-N) 내의 비할당 메모리 블록들에 대한 표시자들일 수 있다. 논리-물리 테이블(330)의 초기화 이후 또는 이와 동시에, 및/또는 플래쉬 메모리 컨트롤러(320)가 논리-물리 테이블(330) 내의 초기화된 표시자들과 상응하는 플래쉬 메모리 영역들(310-1,...,310-N)에 데이터를 저장한 이후 또는 이와 동시에, 웨어-레벨링 유니트(325)는 비할당 메모리 블록들에 대한 표시자들로 웨어-레벨링 테이 블(340)을 점유시킨다.
웨어-레벨링 유니트(325)는, 예를 들어, 웨어-레벨링 테이블(340)을 점유하는 동안, 웨어-레벨링 테이블(340)을 우선 순위화하는 우선 순위화 체계를 수행할 수 있다. 웨어-레벨링 유니트(325)는, 각각의 메모리 블록에 이행된 기록 동작들의 횟수에 따르거나, 또는 상기 메모리 블록들이 삭제되거나 또는 삭제가능할 수 있는 경우에 따라서, 상기 비할당 메모리 블록들 또는 삭제되거나 또는 삭제가능한 메모리 블록들을 우선 순위화할 수 있다. 웨어-레벨링 테이블(340)의 우선 순위화는, 삭제되거나 또는 삭제가능한 메모리 블록들에 대한 표시자들에 그들의 우선 순위에 따라서 웨어-레벨링 유니트(325)가 선형적으로 액세스하도록 허용하며, 이에 따라 메모리 시스템(300)이 플래쉬 메모리 영역들(310-1,...,310-N)에 기록 동작들을 더 균일하게 분배하는 것을 허용하며, 또한 플래쉬 메모리 영역들(310-1,...,310-N)의 수명을 연장하게 한다.
플래쉬 메모리 컨트롤러(320)가 상기 플래쉬 메모리 영역들 중에 하나에, 예를 들어 플래쉬 메모리 영역(310-1)에 데이터를 기록하는 것을 결정하는 경우에 있어서, 웨어-레벨링 유니트(325)는 웨어-레벨링 테이블(340) 내에 저장된 표시자들이 플래쉬 메모리 영역(310-1)과 상응하는지 여부를 식별할 수 있다. 웨어-레벨링 테이블(340) 내에 저장된 표시자들이 플래쉬 메모리 영역(310-1)과 상응하는 경우에는, 웨어-레벨링 유니트(325)는, 상기 데이터의 저장에 이용가능한 플래쉬 메모리 영역들(310-1,...,310-N) 내의 적어도 하나의 삭제되거나 또는 삭제가능한 메모리 블록을 식별하도록 웨어-레벨링 테이블(340)을 액세스할 수 있다.
웨어-레벨링 테이블(340)이 플래쉬 메모리 영역(310-1)과 상응하지 않는 표시자들로 점유된 경우에는, 웨어-레벨링 유니트(325)는 플래쉬 메모리 영역들(310-1)에 대한 표시자들로 웨어-레벨링 테이블(340)을 점유시킬 수 있다. 예를 들어, 웨어-레벨링 유니트(325)는 플래쉬 메모리 영역(310-1)의 잔존영역 내에 저장된 웨어-레벨링 테이블 데이터로 웨어-레벨링 테이블(340)을 점유할 수 있다. 일부 실시예들에 있어서, 플래쉬 메모리 영역(310-1)에 상응하는 표시자들로 웨어-레벨링 테이블(340)을 점유하기 전에, 플래쉬 메모리 컨트롤러(320)는 웨어-레벨링 테이블(340) 내에 저장된 표시자들을 플래쉬 메모리 영역(310-1,...,310-N)에 상응하는 잔존 영역에 저장할 수 있다.
도 4는 도 3에 도시된 메모리 시스템의 예시적인 동작들을 도시하는 흐름도(400)이다. 도 4를 참조하면, 블록 410에 있어서, 플래쉬 메모리 컨트롤러(320)는 플래쉬 메모리 영역들(310-1,...,310-N)의 하나와 관련된 비할당 메모리 블록들을 식별한다. 플래쉬 메모리 컨트롤러(320)는 상기 플래쉬 메모리 영역과 관련된 웨어-레벨링 테이블 데이터에 따라서, 상기 비할당 메모리 블록들을 식별할 수 있다.
결정 블록 415에 있어서, 플래쉬 메모리 컨트롤러(320)는 식별된 비할당 메모리 블록들의 갯수가 임계치(threthold)를 초과하는지 여부를 결정한다. 상기 임계치는 플래쉬 메모리 컨트롤러(320) 내에 미리 설정되어 있거나 동역학적으로 결정될 수 있다. 상기 임계치는 웨어-레벨링 테이블 내에 항목들의 갯수와 상응할 수 있거나 및/또는 논리-물리 테이블(330)이 초기화되었는지 여부를 플래쉬 메모리 컨트롤러(320)에 지시할 수 있다.
식별된 비할당 메모리 블록들의 갯수가 상기 임계치를 초과하는 경우에 있어서, 블록 420에서 플래쉬 메모리 컨트롤러(320)는 플래쉬 메모리 영역(310-1,...,310-N)에 대해 논리-물리 테이블(330)을 초기화한다. 상기 논리-물리 테이블(330)의 초기화는, 웨어-레벨링 테이블(340)을 액세스하기 이전에, 논리-물리 테이블(330)의 표시자들에의 선형적 액세스를 포함할 수 있다. 식별된 비할당 메모리 블록들의 갯수가 상기 임계치를 초과하지 않는 경우에는, 블록 430을 실행한다.
블록 430에 있어서, 플래쉬 메모리 컨트롤러(320)는 플래쉬 메모리 영역(310-1,...,310-N) 내의 식별된 메모리 블록들에 대한 표시자들로 웨어-레벨링 테이블(340)을 점유시킨다. 블록 440에 있어서, 플래쉬 메모리 컨트롤러(320)는 플래쉬 메모리 영역(310-1,...,310-N) 내의 하나 또는 그 이상의 메모리 블록들에 데이터를 기록하는 명령을 수신한다. 상기 명령은 상기 데이터를 저장하도록 플래쉬 메모리 영역(310-1,...,310-N)을 지시할 수 있다.
결정 블록(445)에 있어서, 플래쉬 메모리 컨트롤러(320)는 상기 기록 명령이 현재의 플래쉬 메모리 영역(310-1,...,310-N)에 대하여 상응하는지 여부를 결정한다. 상기 기록 명령이 상기 현재의 플래쉬 메모리 영역(310-1,...,310-N)에 대하여 상응하는 경우에는, 블록 450에서 플래쉬 메모리 컨트롤러(320)는 웨어-레벨링 테이블(340) 내의 표시자와 상응하는 상기 메모리 블록에 데이터를 저장한다.
상기 명령이 현재의 플래쉬 메모리 영역(310-1,...,310-N)에 대하여 상응하지 않는 경우에는, 상기 기록 명령에 의하여 식별된 플래쉬 메모리 영역(310- 1,...,310-N)과 관련된 비할당 메모리 블록들을 식별하는 블록 410으로 되돌아가 실행된다. 일부 실시예들에 있어서, 블록 410을 재실행하기 전에, 웨어-레벨링 테이블(340) 내의 상기 표시자들이 관련된 플래쉬 메모리 영역(310-1,...,310-N)에 저장될 수 있다.
본 기술분야의 당업자는 본 명세서에서 가르치는 개념들이 많은 다른 가능한 방법들에서 특정한 응용으로 조정될 수 있음을 깨달을 수 있다. 특히, 본 기술분야의 당업자들은 도시된 실시예가 본 개시를 읽을 때 명백해 질수 있는 여러 대체적인 실행들의 단지 하나임을 깨달을 수 있다. 상술한 실시예들은 예시적이다.
본 명세서에서는 여러 위치들에서 "일(an)", "하나의(one)", "다른(another)", 또는 "일부(some)" 실시예(들)을 언급하고 있으나, 이러한 참조 각각이 동일한 실시예들을 지칭하거나 또는 특징이 하나의 실시예에만 적용된다는 의미로 해석하여서는 안된다.
본 발명은 웨어-레벨링 테이블을 우선 순위화하여, 삭제되거나 또는 삭제가능한 메모리 블록들에 대한 표시자들에 그들의 우선 순위에 따라서 웨어-레벨링 유니트가 선형적으로 액세스하도록 허용하며, 이에 따라 메모리 시스템이 메모리 블록들에 기록 동작들을 더 균일하게 분배하는 것을 허용하며, 또한 플래쉬 메모리의 수명을 연장하게 한다.

Claims (21)

  1. 데이터를 저장하기 위하여 비휘발성 메모리 내의 메모리 블록들의 하나 또는 그 이상을 할당하는 컨트롤러;
    상기 비휘발성 메모리 내의 상기 메모리 블록들에 대한 표시자들로 점유된 논리-물리(logical-to-physical) 테이블; 및
    상기 비휘발성 메모리 내의 비할당 메모리 블록들에 대한 표시자들을 저장하는 웨어-레벨링(wear-leveling) 테이블을 포함하고,
    상기 컨트롤러는 상기 논리-물리 테이블 내의 상기 표시자들에 따라 데이터를 저장하는 상기 메모리 블록들을 최초로 할당하고,
    상기 비할당 메모리 블록들은 상기 논리-물리 테이블 내의 상기 표시자들에 따라 상기 컨트롤러에 의하여 데이터를 저장하도록 미리 할당되고,
    상기 컨트롤러는 상기 웨어-레벨링 테이블 내의 하나 또는 그 이상의 표시자들을 식별하고, 상기 식별된 표시자들과 관련된 상기 메모리 블록에 데이터를 저장하는 시스템.
  2. 제 1 항에 있어서,
    상기 컨트롤러는, 상기 메모리 블록들의 하나 또는 그 이상에 저장된 데이터를 삭제하고, 상기 삭제된 메모리 블록들에 대한 표시자들로 상기 웨어-레벨링 테이블을 점유시키도록 구성된 것을 특징으로 하는 시스템.
  3. 제 2 항에 있어서,
    상기 컨트롤러는, 상기 표시자들과 관련된 상기 메모리 블록들이 삭제되는 경우에 따라, 상기 웨어-레벨링 테이블 내의 상기 표시자들을 우선 순위화하도록 구성된 것을 특징으로 하는 시스템.
  4. 제 3 항에 있어서,
    상기 컨트롤러는, 데이터의 저장에 이용가능한 비할당 메모리 블록들에 대한 표시자들에 대해 상기 웨어-레벨링 테이블을 선형적으로 검색하도록 구성된 것을 특징으로 하는 시스템.
  5. 제 1 항에 있어서, 상기 컨트롤러는,
    상기 비휘발성 메모리 내의 삭제된 메모리 블록들 및 결함있는 메모리 블록들을 식별하고,
    상기 식별된 삭제된 메모리 블록들 및 결함있는 메모리 블록들의 갯수를 임계치와 비교하고,
    상기 비교 또는 상기 비휘발성 메모리의 초기화에 응답하여 상기 웨어-레벨링 테이블을 상기 비교에 응답하여 상기 메모리 블록들에 대한 표시자들로 점유하도록 구성된 것을 특징으로 하는 시스템.
  6. 제 1 항에 있어서,
    상기 컨트롤러는, 상기 비할당 메모리 블록들에 대한 표시자들로 상기 웨어-레벨링 테이블을 점유하는 동시에 상기 표시자들로 상기 논리-물리 테이블을 초기화하는 것을 특징으로 하는 시스템.
  7. 제 6 항에 있어서,
    상기 컨트롤러는, 비할당 메모리 블록들에 대한 표시자들에 대해 상기 컨트롤러가 상기 웨어-레벨링 테이블을 액세스하기 전에, 상기 논리-물리 테이블 내의 상기 표시자들과 관련된 상기 메모리 블록들을 할당하도록 구성된 것을 특징으로 하는 시스템.
  8. 제 1 항에 있어서,
    상기 웨어-레벨링 테이블은 상기 할당된 메모리 블록들에 대한 표시자들을 저장하지 않고,
    상기 비할당 메모리 블록들은 상기 컨트롤러에 의하여 그 이전에 삭제된 것을 특징으로 하는 시스템.
  9. 제 1 항에 있어서,
    상기 비할당 메모리 블록들은, 데이터의 저장에 이용가능한 하나 또는 그 이상의 메모리 블록들 및 데이터를 저장할 수 없는 하나 또는 그 이상의 결함있는 메 모리 블록들을 포함하는 것을 특징으로 하는 시스템.
  10. 제 9 항에 있어서,
    상기 웨어-레벨링 테이블은 그 내에 포함되고 상기 결함있는 메모리 블록들과 관련된 표시자들을 상기 컨트롤러에 지시하도록 구성된 것을 특징으로 하는 시스템.
  11. 제 1 항에 있어서,
    상기 비휘발성 메모리는 다중 메모리 영역들을 포함하고,
    상기 메모리 영역들 각각은 복수의 메모리 블록들 및 다른 웨어-레벨링 테이블을 가지고,
    상기 컨트롤러는, 데이터를 저장하기 위하여 메모리 영역을 식별하는 기록 명령을 수신하고, 상기 식별된 메모리 영역에 상응하지 않는 상기 웨어-레벨링 테이블을 결정하고, 또한 상기 식별된 메모리 영역에 상응하는 메모리 블록들에 대한 표시자들로 상기 웨어-레벨링 테이블을 재점유하는 것을 특징으로 하는 시스템.
  12. 플래쉬 메모리 내의 하나 또는 그 이상의 메모리 블록들에 대한, 삭제된 메모리 블록들 또는 결함있는 메모리 블록들과 관련된, 표시자들로 웨어-레벨링 테이블을 점유하는 단계;
    삭제된 메모리 블록과 관련된 상기 웨어-레벨링 테이블 내의 적어도 하나의 표시자를 식별하는 단계;
    상기 식별된 표시자와 관련된 메모리 블록에 데이터를 저장하는 단계;
    상기 플래쉬 메모리 내의 삭제된 메모리 블록들과 결함있는 메모리 블록들을 식별하는 단계;
    식별된 삭제된 메모리 블록들과 결함있는 메모리 블록들의 갯수를 임계치와 비교하는 단계; 및
    상기 비교 또는 상기 플래쉬 메모리의 초기화에 응답하여 상기 웨어-레벨링 테이블을 상기 비교에 응답하여 상기 메모리 블록들에 대한 표시자들로 점유하는 단계를 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 식별된 표시자와 관련된 메모리 블록에 데이터를 저장하는 단계 이전에, 상기 웨어-레벨링 테이블 내의 적어도 하나의 표시자를 식별하는 단계에 응답하고,
    상기 메모리 블록들의 하나 또는 그 이상에 저장된 데이터를 삭제하는 단계를 포함하는 것을 특징으로 하는 방법.
  14. 제 12 항에 있어서,
    상기 표시자들과 관련된 메모리 블록들이 삭제되는 경우에 따라서, 상기 웨어-레벨링 테이블 내의 상기 표시자들을 우선 순위화하는 단계를 포함하는 것을 특 징으로 하는 방법.
  15. 제 14 항에 있어서,
    상기 우선 순위화하는 단계에 따라서, 상기 표시자들에 대해 상기 웨어-레벨링 테이블을 액세스하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제 12 항에 있어서,
    상기 표시자들과 관련된 상기 메모리 블록들 상에 수행되는 기록 동작들의 횟수에 따라서, 상기 웨어-레벨링 테이블 내의 상기 표시자들을 우선 순위화하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 제 12 항에 있어서,
    상기 삭제된 메모리 블록들과 관련된 표시자들로 상기 웨어-레벨링 테이블을 점유하는 동시에 상기 플래쉬 메모리 내의 상기 메모리 블록들에 대한 상기 표시자들로 논리-물리 테이블을 초기화하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제 17 항에 있어서,
    삭제된 메모리 블록들에 대한 표시자들에 대해 상기 웨어-레벨링 테이블을 액세스하는 단계 이전에,
    상기 논리-물리 테이블 내의 상기 표시자들과 관련된 메모리 블록들을 할당 하는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 플래쉬 메모리 내의 하나 또는 그 이상의 메모리 블록들에 대한, 삭제된 메모리 블록들 또는 결함있는 메모리 블록들과 관련된, 표시자들로 웨어-레벨링 테이블을 점유하는 단계;
    데이터를 저장하는 상기 플래쉬 메모리의 영역을 식별하는 기록 명령을 수신하는 단계;
    상기 식별된 영역과 상응하지 않는 상기 웨어-레벨링 테이블을 결정하는 단계;
    상기 식별된 영역과 상응하는 메모리 블록들에 대한 표시자들로 상기 웨어-레벨링 테이블을 재점유하는 단계;
    삭제된 메모리 블록과 관련된 상기 재점유된 웨어-레벨링 테이블 내의 적어도 하나의 표시자를 식별하는 단계; 및
    상기 식별된 표시자와 관련된 메모리 블록에 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  20. 제 19 항에 있어서,
    상기 플래쉬 메모리 내의 삭제된 메모리 블록들 및 결함있는 메모리 블록들을 식별하는 단계;
    식별된 삭제된 메모리 블록들 및 결함있는 메모리 블록들의 갯수를 임계 치(threshold)와 비교하는 단계; 및
    상기 비교하는 단계에 응답하여 상기 웨어-레벨링 테이블을 점유하는 단계를 포함하는 것을 특징으로 하는 방법.
  21. 제 19 항에 있어서,
    상기 플래쉬 메모리 내의 삭제된 메모리 블록들 및 결함있는 메모리 블록들을 식별하는 단계;
    식별된 삭제된 메모리 블록들 및 결함있는 메모리 블록들의 갯수를 임계치와 비교하는 단계; 및
    상기 비교하는 단계에 응답하여 상기 메모리 블록들에 대한 표시자들로 상기 플래쉬 메모리를 초기화하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020087007800A 2005-09-01 2006-08-31 빠른 웨어 레벨링 플래쉬 드라이브 KR101383853B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US71391305P 2005-09-01 2005-09-01
US60/713,913 2005-09-01
US11/468,569 US7853749B2 (en) 2005-09-01 2006-08-30 Flash drive fast wear leveling
US11/468,569 2006-08-30
PCT/US2006/034243 WO2007028026A2 (en) 2005-09-01 2006-08-31 Flash drive fast wear leveling

Publications (2)

Publication Number Publication Date
KR20080082601A true KR20080082601A (ko) 2008-09-11
KR101383853B1 KR101383853B1 (ko) 2014-04-17

Family

ID=37805689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087007800A KR101383853B1 (ko) 2005-09-01 2006-08-31 빠른 웨어 레벨링 플래쉬 드라이브

Country Status (4)

Country Link
US (2) US7853749B2 (ko)
JP (1) JP2009507302A (ko)
KR (1) KR101383853B1 (ko)
WO (1) WO2007028026A2 (ko)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680977B2 (en) * 2004-02-26 2010-03-16 Super Talent Electronics, Inc. Page and block management algorithm for NAND flash
US8156403B2 (en) * 2006-05-12 2012-04-10 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
WO2007132456A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
US7697326B2 (en) * 2006-05-12 2010-04-13 Anobit Technologies Ltd. Reducing programming error in memory devices
CN103258572B (zh) 2006-05-12 2016-12-07 苹果公司 存储设备中的失真估计和消除
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
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
US7593263B2 (en) * 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
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
US8086785B2 (en) * 2007-02-22 2011-12-27 Mosaid Technologies Incorporated System and method of page buffer operation for memory devices
WO2008101316A1 (en) * 2007-02-22 2008-08-28 Mosaid Technologies Incorporated Apparatus and method for using a page buffer of a memory device as a temporary cache
WO2008111058A2 (en) * 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) * 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
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
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
US8270246B2 (en) * 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
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
TWI354996B (en) * 2007-12-31 2011-12-21 Phison Electronics Corp Wear leveling method and controller thereof
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
US8082384B2 (en) 2008-03-26 2011-12-20 Microsoft Corporation Booting an electronic device using flash memory and a limited function memory controller
KR101437123B1 (ko) 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법
US20090254729A1 (en) * 2008-04-07 2009-10-08 Skymedi Corporation Method of wear leveling for a non-volatile memory
US20090259819A1 (en) * 2008-04-09 2009-10-15 Skymedi Corporation Method of wear leveling for non-volatile memory
TWI385667B (zh) * 2008-06-26 2013-02-11 Phison Electronics Corp 用於快閃記憶體的資料管理方法、儲存系統與控制器
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
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8082386B2 (en) * 2008-10-21 2011-12-20 Skymedi Corporation Method of performing wear leveling with variable threshold
US8891298B2 (en) 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8275933B2 (en) * 2008-11-10 2012-09-25 Fusion-10, Inc Apparatus, system, and method for managing physical regions in a solid-state storage device
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
US8248831B2 (en) * 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
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
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
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
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8266344B1 (en) * 2009-09-24 2012-09-11 Juniper Networks, Inc. Recycling buffer pointers using a prefetch buffer
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
KR101097438B1 (ko) * 2009-10-29 2011-12-23 주식회사 하이닉스반도체 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
KR101090394B1 (ko) * 2009-12-24 2011-12-07 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
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
JP5612508B2 (ja) * 2010-03-25 2014-10-22 パナソニック株式会社 不揮発性メモリコントローラ及び不揮発性記憶装置
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
US8645794B1 (en) 2010-07-31 2014-02-04 Apple Inc. Data storage in analog memory cells 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
US9003247B2 (en) 2011-04-28 2015-04-07 Hewlett-Packard Development Company, L.P. Remapping data with pointer
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9747157B2 (en) 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
CN104102459A (zh) * 2014-07-03 2014-10-15 优佰特电子科技(无锡)有限公司 一种闪存设备的数据处理方法及闪存设备
KR102211868B1 (ko) * 2014-12-15 2021-02-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
EP3035195A1 (en) * 2014-12-16 2016-06-22 SFNT Germany GmbH A wear leveling method and a wear leveling system for a non-volatile memory
US10157141B2 (en) 2016-03-09 2018-12-18 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
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

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US6263399B1 (en) * 1998-06-01 2001-07-17 Sun Microsystems, Inc. Microprocessor to NAND flash interface
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
TWI235915B (en) * 2003-03-13 2005-07-11 Ritek Corp Device and method for recording the status of block of a nonvolatile memory
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
US7441067B2 (en) * 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling

Also Published As

Publication number Publication date
WO2007028026A3 (en) 2007-12-27
US7853749B2 (en) 2010-12-14
WO2007028026B1 (en) 2008-03-06
WO2007028026A2 (en) 2007-03-08
KR101383853B1 (ko) 2014-04-17
JP2009507302A (ja) 2009-02-19
US8417881B1 (en) 2013-04-09
US20070050536A1 (en) 2007-03-01

Similar Documents

Publication Publication Date Title
KR101383853B1 (ko) 빠른 웨어 레벨링 플래쉬 드라이브
US20200167083A1 (en) Techniques for controlling recycling of blocks of memory
US7797481B2 (en) Method and apparatus for flash memory wear-leveling using logical groups
US7908423B2 (en) Memory apparatus, and method of averagely using blocks of a flash memory
EP2248131B1 (en) Fatigue management system and method for hybrid nonvolatile solid state memory system
US7962687B2 (en) Flash memory allocation for improved performance and endurance
EP1891529B1 (en) Flash memory with programmable endurance
US6591330B2 (en) System and method for flexible flash file
US10073771B2 (en) Data storage method and system thereof
US20080189490A1 (en) Memory mapping
US20100082917A1 (en) Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
US20100125696A1 (en) Memory Controller For Controlling The Wear In A Non-volatile Memory Device And A Method Of Operation Therefor
US11461228B2 (en) Multilevel addressing
CN109697027B (zh) 包括共享存储器区域和专用存储器区域的数据存储设备
US7426605B2 (en) Method and apparatus for optimizing flash device erase distribution
CN108959112B (zh) 存储系统及使用其的损耗均衡方法
KR20070046864A (ko) 플래쉬 화일 시스템에서 가상-물리 주소 변환 방법 및시스템
US9075707B2 (en) Data writing method and data storage device
CN107045423B (zh) 存储器装置及其数据存取方法
US20090254729A1 (en) Method of wear leveling for a non-volatile memory
US20110055459A1 (en) Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof
CN111324292A (zh) 非易失性存储器的存储器回收方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170324

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180323

Year of fee payment: 5