KR20080082601A - 빠른 웨어 레벨링 플래쉬 드라이브 - Google Patents
빠른 웨어 레벨링 플래쉬 드라이브 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements 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
본 발명은 메모리 소자들에 관한 것으로서, 보다 상세하게는 플래쉬 메모리의 개선된 웨어 레벨링에 관한 것이다.
(관련 출원들에 대한 참조)
본 출원은 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)
- 데이터를 저장하기 위하여 비휘발성 메모리 내의 메모리 블록들의 하나 또는 그 이상을 할당하는 컨트롤러;상기 비휘발성 메모리 내의 상기 메모리 블록들에 대한 표시자들로 점유된 논리-물리(logical-to-physical) 테이블; 및상기 비휘발성 메모리 내의 비할당 메모리 블록들에 대한 표시자들을 저장하는 웨어-레벨링(wear-leveling) 테이블을 포함하고,상기 컨트롤러는 상기 논리-물리 테이블 내의 상기 표시자들에 따라 데이터를 저장하는 상기 메모리 블록들을 최초로 할당하고,상기 비할당 메모리 블록들은 상기 논리-물리 테이블 내의 상기 표시자들에 따라 상기 컨트롤러에 의하여 데이터를 저장하도록 미리 할당되고,상기 컨트롤러는 상기 웨어-레벨링 테이블 내의 하나 또는 그 이상의 표시자들을 식별하고, 상기 식별된 표시자들과 관련된 상기 메모리 블록에 데이터를 저장하는 시스템.
- 제 1 항에 있어서,상기 컨트롤러는, 상기 메모리 블록들의 하나 또는 그 이상에 저장된 데이터를 삭제하고, 상기 삭제된 메모리 블록들에 대한 표시자들로 상기 웨어-레벨링 테이블을 점유시키도록 구성된 것을 특징으로 하는 시스템.
- 제 2 항에 있어서,상기 컨트롤러는, 상기 표시자들과 관련된 상기 메모리 블록들이 삭제되는 경우에 따라, 상기 웨어-레벨링 테이블 내의 상기 표시자들을 우선 순위화하도록 구성된 것을 특징으로 하는 시스템.
- 제 3 항에 있어서,상기 컨트롤러는, 데이터의 저장에 이용가능한 비할당 메모리 블록들에 대한 표시자들에 대해 상기 웨어-레벨링 테이블을 선형적으로 검색하도록 구성된 것을 특징으로 하는 시스템.
- 제 1 항에 있어서, 상기 컨트롤러는,상기 비휘발성 메모리 내의 삭제된 메모리 블록들 및 결함있는 메모리 블록들을 식별하고,상기 식별된 삭제된 메모리 블록들 및 결함있는 메모리 블록들의 갯수를 임계치와 비교하고,상기 비교 또는 상기 비휘발성 메모리의 초기화에 응답하여 상기 웨어-레벨링 테이블을 상기 비교에 응답하여 상기 메모리 블록들에 대한 표시자들로 점유하도록 구성된 것을 특징으로 하는 시스템.
- 제 1 항에 있어서,상기 컨트롤러는, 상기 비할당 메모리 블록들에 대한 표시자들로 상기 웨어-레벨링 테이블을 점유하는 동시에 상기 표시자들로 상기 논리-물리 테이블을 초기화하는 것을 특징으로 하는 시스템.
- 제 6 항에 있어서,상기 컨트롤러는, 비할당 메모리 블록들에 대한 표시자들에 대해 상기 컨트롤러가 상기 웨어-레벨링 테이블을 액세스하기 전에, 상기 논리-물리 테이블 내의 상기 표시자들과 관련된 상기 메모리 블록들을 할당하도록 구성된 것을 특징으로 하는 시스템.
- 제 1 항에 있어서,상기 웨어-레벨링 테이블은 상기 할당된 메모리 블록들에 대한 표시자들을 저장하지 않고,상기 비할당 메모리 블록들은 상기 컨트롤러에 의하여 그 이전에 삭제된 것을 특징으로 하는 시스템.
- 제 1 항에 있어서,상기 비할당 메모리 블록들은, 데이터의 저장에 이용가능한 하나 또는 그 이상의 메모리 블록들 및 데이터를 저장할 수 없는 하나 또는 그 이상의 결함있는 메 모리 블록들을 포함하는 것을 특징으로 하는 시스템.
- 제 9 항에 있어서,상기 웨어-레벨링 테이블은 그 내에 포함되고 상기 결함있는 메모리 블록들과 관련된 표시자들을 상기 컨트롤러에 지시하도록 구성된 것을 특징으로 하는 시스템.
- 제 1 항에 있어서,상기 비휘발성 메모리는 다중 메모리 영역들을 포함하고,상기 메모리 영역들 각각은 복수의 메모리 블록들 및 다른 웨어-레벨링 테이블을 가지고,상기 컨트롤러는, 데이터를 저장하기 위하여 메모리 영역을 식별하는 기록 명령을 수신하고, 상기 식별된 메모리 영역에 상응하지 않는 상기 웨어-레벨링 테이블을 결정하고, 또한 상기 식별된 메모리 영역에 상응하는 메모리 블록들에 대한 표시자들로 상기 웨어-레벨링 테이블을 재점유하는 것을 특징으로 하는 시스템.
- 플래쉬 메모리 내의 하나 또는 그 이상의 메모리 블록들에 대한, 삭제된 메모리 블록들 또는 결함있는 메모리 블록들과 관련된, 표시자들로 웨어-레벨링 테이블을 점유하는 단계;삭제된 메모리 블록과 관련된 상기 웨어-레벨링 테이블 내의 적어도 하나의 표시자를 식별하는 단계;상기 식별된 표시자와 관련된 메모리 블록에 데이터를 저장하는 단계;상기 플래쉬 메모리 내의 삭제된 메모리 블록들과 결함있는 메모리 블록들을 식별하는 단계;식별된 삭제된 메모리 블록들과 결함있는 메모리 블록들의 갯수를 임계치와 비교하는 단계; 및상기 비교 또는 상기 플래쉬 메모리의 초기화에 응답하여 상기 웨어-레벨링 테이블을 상기 비교에 응답하여 상기 메모리 블록들에 대한 표시자들로 점유하는 단계를 포함하는 방법.
- 제 12 항에 있어서,상기 식별된 표시자와 관련된 메모리 블록에 데이터를 저장하는 단계 이전에, 상기 웨어-레벨링 테이블 내의 적어도 하나의 표시자를 식별하는 단계에 응답하고,상기 메모리 블록들의 하나 또는 그 이상에 저장된 데이터를 삭제하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 12 항에 있어서,상기 표시자들과 관련된 메모리 블록들이 삭제되는 경우에 따라서, 상기 웨어-레벨링 테이블 내의 상기 표시자들을 우선 순위화하는 단계를 포함하는 것을 특 징으로 하는 방법.
- 제 14 항에 있어서,상기 우선 순위화하는 단계에 따라서, 상기 표시자들에 대해 상기 웨어-레벨링 테이블을 액세스하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 12 항에 있어서,상기 표시자들과 관련된 상기 메모리 블록들 상에 수행되는 기록 동작들의 횟수에 따라서, 상기 웨어-레벨링 테이블 내의 상기 표시자들을 우선 순위화하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 12 항에 있어서,상기 삭제된 메모리 블록들과 관련된 표시자들로 상기 웨어-레벨링 테이블을 점유하는 동시에 상기 플래쉬 메모리 내의 상기 메모리 블록들에 대한 상기 표시자들로 논리-물리 테이블을 초기화하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 17 항에 있어서,삭제된 메모리 블록들에 대한 표시자들에 대해 상기 웨어-레벨링 테이블을 액세스하는 단계 이전에,상기 논리-물리 테이블 내의 상기 표시자들과 관련된 메모리 블록들을 할당 하는 단계를 포함하는 것을 특징으로 하는 방법.
- 플래쉬 메모리 내의 하나 또는 그 이상의 메모리 블록들에 대한, 삭제된 메모리 블록들 또는 결함있는 메모리 블록들과 관련된, 표시자들로 웨어-레벨링 테이블을 점유하는 단계;데이터를 저장하는 상기 플래쉬 메모리의 영역을 식별하는 기록 명령을 수신하는 단계;상기 식별된 영역과 상응하지 않는 상기 웨어-레벨링 테이블을 결정하는 단계;상기 식별된 영역과 상응하는 메모리 블록들에 대한 표시자들로 상기 웨어-레벨링 테이블을 재점유하는 단계;삭제된 메모리 블록과 관련된 상기 재점유된 웨어-레벨링 테이블 내의 적어도 하나의 표시자를 식별하는 단계; 및상기 식별된 표시자와 관련된 메모리 블록에 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 19 항에 있어서,상기 플래쉬 메모리 내의 삭제된 메모리 블록들 및 결함있는 메모리 블록들을 식별하는 단계;식별된 삭제된 메모리 블록들 및 결함있는 메모리 블록들의 갯수를 임계 치(threshold)와 비교하는 단계; 및상기 비교하는 단계에 응답하여 상기 웨어-레벨링 테이블을 점유하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 19 항에 있어서,상기 플래쉬 메모리 내의 삭제된 메모리 블록들 및 결함있는 메모리 블록들을 식별하는 단계;식별된 삭제된 메모리 블록들 및 결함있는 메모리 블록들의 갯수를 임계치와 비교하는 단계; 및상기 비교하는 단계에 응답하여 상기 메모리 블록들에 대한 표시자들로 상기 플래쉬 메모리를 초기화하는 단계를 포함하는 것을 특징으로 하는 방법.
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)
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)
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 |
-
2006
- 2006-08-30 US US11/468,569 patent/US7853749B2/en active Active
- 2006-08-31 KR KR1020087007800A patent/KR101383853B1/ko active IP Right Grant
- 2006-08-31 JP JP2008529311A patent/JP2009507302A/ja active Pending
- 2006-08-31 WO PCT/US2006/034243 patent/WO2007028026A2/en active Application Filing
-
2010
- 2010-12-13 US US12/966,338 patent/US8417881B1/en active Active
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 |