KR20090094333A - 비휘발성 메모리에 대한 초기 웨어 레벨링 - Google Patents

비휘발성 메모리에 대한 초기 웨어 레벨링

Info

Publication number
KR20090094333A
KR20090094333A KR1020097013437A KR20097013437A KR20090094333A KR 20090094333 A KR20090094333 A KR 20090094333A KR 1020097013437 A KR1020097013437 A KR 1020097013437A KR 20097013437 A KR20097013437 A KR 20097013437A KR 20090094333 A KR20090094333 A KR 20090094333A
Authority
KR
South Korea
Prior art keywords
memory
blocks
block
block address
slope
Prior art date
Application number
KR1020097013437A
Other languages
English (en)
Other versions
KR101087308B1 (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 KR20090094333A publication Critical patent/KR20090094333A/ko
Application granted granted Critical
Publication of KR101087308B1 publication Critical patent/KR101087308B1/ko

Links

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
    • 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
    • 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
    • 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Abstract

비휘발성 메모리에 대한 초기 웨어 레벨링을 위한 방법 및 장치가 개시된다. 방법의 실시예는, 비휘발성 메모리의 다수의 메모리 블럭들의 세트의 각각에 대한 소거 사이클들을 카운팅하는 단계를 포함하며, 각 메모리 블럭에 대한 소거 사이클들을 카운팅하는 단계는, 메모리 블럭의 물리적 블럭 어드레스에 대한 제1 카운트를 증분시키는 단계, 및 메모리 블럭이 스페어 메모리 블럭이 아닌 경우, 메모리 블럭의 논리적 블럭 어드레스에 대한 제2 카운트를 증분시키는 단계를 포함한다. 이 방법은 또한, 복수의 메모리 블럭들의 소거 사이클들의 카운팅에 적어도 부분적으로 기초하여, 비휘발성 메모리가 메모리 블럭들의 고르지 않은 웨어를 갖는지 여부를 판정하는 단계를 포함한다.

Description

비휘발성 메모리에 대한 초기 웨어 레벨링{INITIATIVE WEAR LEVELING FOR NON-VOLATILE MEMORY}
본 발명의 실시예들은 컴퓨터 메모리에 관한 것이다. 보다 구체적으로는, 본 발명의 실시예들은 비휘발성 메모리에 대한 웨어 레벨링(wear leveling)에 관한 것이다.
컴퓨터 및 전자 디바이스 동작에서, 플래시 메모리 및 유사한 비휘발성 메모리는 데이터의 유지에 있어, 적은 비용 및 높은 밀도와 함께 저전력 동작을 제공하는 많은 이점들을 제공할 수 있다. 데이터는, 동작시 최소의 전력을 필요로 하며 저장을 유지하기 위한 전력을 필요로 하지 않는 컴팩트한 형태로 저장되기 때문에, 이러한 메모리는 애플리케이션들의 수를 증가시킬 때에 이용되고 있다.
그러나, 비휘발성 메모리는 동작시 특정 부정적인 면을 갖는다. 예를 들면, 플래시 메모리 등의 메모리는, 각 기입 사이클이 진행됨에 따라 악화되는 경향이 있기 때문에 제한된 사용 수명을 갖는다. 이러한 이유로 인해, 메모리의 특정 부분에, 메모리의 다른 부분들보다 더 많은 기입 동작들이 행해지는 경우, 더 많은 수의 기입이 행해진 부분들은 악화되기 쉬우며 결국에는 더욱 빨리 오류가 발생하게 될 것이다.
플래시 메모리의 전체 수명을 연장시키기 위해, 웨어 레벨링 프로세스가 실현될 수 있다. 웨어 레벨링 프로세스는, 더 적게 이용된 메모리의 부분들에 대해 기입 동작을 지시함으로써 저장 디바이스에 대해 웨어(wear)를 더욱 고르게 분배하기 위한 것이다. 이 프로세스는, 호스트 시스템이 이 프로세스를 인식하고 있지 않은 채로, 메모리 제어기에 의해 핸들링될 수 있다.
웨어 레벨링은, 디바이스의 고상(solid-state) 메모리 어레이에서 논리적 블럭 어드레스들을 다른 물리적 블럭 어드레스들로 리맵핑(re-mapping)하기 위한 알고리즘을 포함할 수 있다. 그러나, 이용되는 알고리즘은, 메모리 동작의 효율 및 웨어 레벨링 프로세스의 효율에 크게 영향을 미칠 수 있다. 리맵핑 프로세스들의 타이밍, 적절한 물리적 영역들이 리맵핑을 위해 식별되는 방식, 및 관련 쟁점들 등의 쟁점들이 메모리 동작에 크게 영향을 미칠 수 있다.
도 1은 비휘발성 메모리의 일 실시예를 나타낸 도면.
도 2는 웨어 레벨링 프로세스의 일 실시예를 나타내기 위한 플로우차트.
도 3A는 웨어 레벨링 전에 비휘발성 메모리에 대해 생성되는 회귀선(regression line)을 나타낸 도면.
도 3B는 웨어 레벨링의 일 실시예가 구현된 후의 비휘발성 메모리에 대해 생성된 회귀선을 나타낸 도면.
도 4 내지 도 7은 웨어 레벨링 프로세스의 일 실시예에서의 메모리 블럭 리클레임(reclaim) 동작들의 일례를 나타낸 도면.
도 8은 비휘발성 메모리 디바이스의 일 실시예를 나타낸 도면.
도 9는 본 발명의 일 실시예를 이용하는 컴퓨터 시스템을 나타낸 도면.
본 발명의 실시예들은, 동일한 참조 부호들은 유사한 요소들을 칭하고 있는 첨부 도면들 내의 도면들 내에서 예로써 예시되는 것이며 제한으로 예시되는 것은 아니다.
본 발명의 일 실시예는 비휘발성 메모리에 대한 초기 웨어 레벨링과 관련된다.
본원에서 사용되는 용어에 대해 설명한다:
"비휘발성 메모리"란, 전력이 메모리에 공급되지 않을 때에도 메모리 내용을 유지하는 메모리를 의미한다. 비휘발성 메모리는 플래시 메모리를 포함한다.
"플래시 메모리"란, 전기적으로 소거되고 리프로그래밍(reprogrammed)될 수 있는 비휘발성 컴퓨터 메모리를 의미한다. 플래시 메모리는, "셀들"(이들 각각은 하나 이상의 정보 비트를 저장함)이라 칭해지는 부동 게이트 트랜지스터들의 어레이에 정보를 저장한다. 본원에서 사용되는 "플래시 메모리"는 플래시 메모리 스토리지를 위한 기술들 중 임의의 기술을 포함할 수 있다. 예를 들면, 플래시 메모리는 NOR 및 NAND 기술 메모리 양쪽 모두를 포함할 수 있다. 또한, 플래시 메모리는, 단일 비트 퍼 셀(single-bit-per-cell) 플래시 메모리, 및 다중 비트 퍼 셀(multiple bits per cell)을 허용하는 다중 레벨 셀 구조를 비롯하여 메모리 셀 당 다양한 수의 정보 비트들을 제공하는 기술들을 포함할 수 있다.
"웨어"란 비휘발성 메모리의 이용을 의미한다.
"블럭"이란, 동작시 소거될 수 있는 비휘발성 메모리 어레이의 일부를 의미하는데, 블럭은 다수의 셀들을 포함한다. 소거되는 플래시 메모리 블럭의 각각의 셀들은 프로그래밍될 수 있지만, 플래시 메모리의 블럭 내의 셀들은 메모리의 전체 블럭을 소거하는 것에 의해서만 변화될 수 있다.
본 발명의 일 실시예에서, 플래시 혹은 그 밖의 다른 비휘발성 메모리의 고르지 않은 웨어가, 웨어 레벨링 프로세스를 이용하여 처리된다. 본 발명의 일 실시예에서는, 웨어 레벨링은, 가장 많이 웨어링된(worn) 메모리 블럭들의 그룹으로부터의 데이터와, 가장 적게 웨어링된 메모리 블럭들의 그룹으로부터의 데이터를 교환함으로써 구현된다. 일 실시예에서, 비휘발성 메모리에 대한 웨어 레벨링 프로세스는, 각 물리적 블럭 어드레스 및 각 논리적 블럭 어드레스 양쪽에 대한 메모리 블럭들에 대한 소거 동작들에 대한 카운트를 유지하는 것을 포함한다. 일 실시예에서, 웨어 레벨링 프로세스는, 각 메모리 블럭의 물리적 블럭 소거 카운트 및 논리적 블럭 소거 카운트를 나타내는 선의 기울기(slope of line)가 특정 임계치보다 큰 것으로 판정될 때 특정 간격으로 유발된다.
플래시 메모리 등의 비휘발성 메모리는, 특정 유한 횟수의 소거-기입 사이클들만을 허용할 것이며 임의의 데이터를 블럭의 셀들 내에 기입하기 전에 그 블럭을 소거해야 하기 때문에, 동작 상의 한계를 가지고 있다. 예를 들면, 대부분의 상업적으로 이용가능한 플래시 제품들은 백만 프로그래밍 사이클들을 견디는 것이 보장된다. 이러한 이유로 인해, 운영 체제 등의 하드 드라이브 기반 애플리케이션들을 컴팩트 플래시(CompactFlash) 등의 플래시 메모리 기반 디바이스들에 이동시킬 때 주의를 기울여야 한다. 고르지 않은 웨어의 영향은, 기입을 카운팅하고 블럭들을 동적으로 리맵핑하여 섹터들 간에 기입 동작들을 분배하거나, 혹은 기입 검증하고, 기입 실패의 경우 스페어 섹터들(spare sectors)에 리맵핑함으로써, 특정 칩 펌웨어 혹은 파일 시스템 드라이버들에 의해 부분적으로 상쇄될 수 있다. 그러나, 시간의 경과에 따라 데이터의 액티비티(activity)의 변동은 일반적으로 고르지 못한 웨어를 발생시킬 것이다.
비휘발성 메모리들의 동작시, 일반적으로 또한, 메모리의 블럭 당 발생하는 기입 사이클의 횟수를 모니터링하고 분배하기 위해 웨어 레벨링 프로세서 혹은 알고리즘을 구현하는 것이 추천된다. 이는, 기입 집약적 애플리케이션들의 경우 특히 중요하다. 웨어 레벨링이 구현되지 않는 경우, 메모리 블럭들은 매우 다른 레이트들로 이용될 수 있다. 오랫동안 생존하고 있는 데이터를 갖는 블럭들은, 자주 변화되는 데이터를 갖는 블럭들만큼 많은 소거-기입 사이클들을 견딜 필요가 없다. 웨어 레벨링 프로세스는, 일반적으로, 각 블럭에 대해 모든 이용가능한 기입 사이클을 동일하게 이용하는 것을 보장하고자 한다. 일반적으로, 웨어 레벨링은 메모리 블럭들 간에 데이터를 교환하는 것을 포함할 수 있다.
본 발명의 일 실시예에서, 웨어 레벨링 프로세스(이는 IWL, 혹은 초기 웨어 레벨링(Initiative Wear Leveling)이라 칭해질 수 있음)는 비휘발성 메모리에서 구현된다. 본 발명의 일 실시예에서, 비휘발성 메모리에 대한 웨어 레벨링은, 개별적인 메모리 블럭들이 아니라, 메모리 블럭들의 그룹들을 교환하는 것을 포함한다. 이 실시예에서, 제1 그룹은, 비휘발성 메모리 디바이스의 가장 많이 웨어링된 메모리 블럭들을 나타낼 수 있으며, 제2 그룹은, 가장 적게 웨어링된 메모리 블럭들을 나타낼 수 있다. 데이터는, 이러한 그룹들 내의 블럭들 간에 교환될 수 있다.
본 발명의 일 실시예에서, 비휘발성 메모리의 웨어 레벨링 프로세스는, 물리적 어드레스 및 논리적 어드레스 양쪽 모두에 대한 메모리 블럭들에 대한 소거 동작들의 횟수를 기록하는 것을 포함한다. 일 실시예에서, 물리적 블럭에 대해 얼마나 많은 리클레임(reclaim) 동작이 발생하였는지를 추적하기 위한 PBEC(Physical Block Erase Count) 값을 유지하는 것에 추가하여, 논리적 블럭 당 데이터의 변화 빈도를 추적하기 위해 각 메모리 블럭에 대한 논리 블럭 인덱스에 의해 인덱싱되는 LBEC(Logical Block Erase Count) 값이 유지된다. 이러한 방식으로, 메모리 블럭이 리클레임될 때마다, 그 PBEC 및 LBEC 값들 각각은 1만큼 증가될 것이다.
일 실시예에서, 이하의 것이 PBEC 및 LBEC 값들과 관련하여 참(true)이 될 것이다:
1. PBEC 증분 = LBEC 증분(PBEC 및 LBEC 양쪽 모두를 증분시키는 결과를 갖는 메모리 블럭의 리클레임)
2. 디바이스에 대한 총 PBEC의 합 ≥ 디바이스에 대한 총 LBEC의 합
3. 파일 시스템이 프레시(fresh) 메모리 디바이스 상에서 개시되는 경우, 디바이스에 대한 총 PBEC의 합 = 디바이스에 대한 총 LBEC의 합.
파일 시스템이 개시되고 중단되며 메모리의 포맷팅이 일어나지 않은 경우, LBEC 및 PBEC 값들은 동일하다. 파일 시스템이 개시되기 전에 메모리 디바이스가 포맷팅되는 경우, 포맷이 완료된 후 PBEC 값들이 유지되거나 혹은 복원되는 것으로 가정될 수 있다. 그러나, LBEC 값들은, 블럭 데이터가 소거되는 것으로 인해, 소거될 수 있다. 이 경우의 블럭 데이터는 데이터가 얼마나 액티브한지를 반영하는 데에 이용되기 때문에, 데이터가 삭제된 후에도 그 LBEC를 저장할 이유는 없다. 이에 따라, 프레시/새로운/전체 소거된 메모리 디바이스의 경우, 합(LBEC) = 합(PBEC)이다. 디바이스의 포맷팅이 일단 발생되었으면, LBEC들이 소거되었으며, 이어서 합(PBEC)이 합(LBEC)보다 크게 될 것이다.
본 발명의 일 실시예에서, PBEC 필드는, 각 물리적 블럭에 대해 얼마나 많은 리클레임 동작들이 발생하였는지를 추적하는 데에 이용된다. 일 실시예에서, 추가의 LBEC 필드는, 논리적 블럭에 의한 데이터의 변화 빈도를 추적하기 위해 논리적 블럭 인덱스에 의해 인덱싱된다. 이에 따라, 논리적 데이터 블럭이 리클레임될 때마다, 그 LBEC가 1만큼 증가될 것이며, 또한 관련 물리적 데이터 블럭에 대한 PBEC가 1만큼 증가된다. 일 실시예에서는, 다음과 같다:
(1) PBEC 증분 = LBEC 증분 - 블럭이 리클레임될 때마다 각각이 1만큼 증분됨
(2) 총 PBCE의 합 ≥ 총 LBEC의 합
(3) 파일 시스템이 프레시 플래시 상에서 개시되는 경우 총 PBEC의 합 = 총 LBEC의 합.
본 발명의 일 실시예에서, 적어도 두 개의 WBG(Worn Block Group)가 IWL 웨어 레벨링 프로세스에서 지정된다. 첫 번째 그룹은 "높은 그룹(high group)"으로서 칭해진다. 높은 그룹은 상대적으로 높은 PBEC 및 높은 LBEC 값들을 가질 것이며, 비휘발성 메모리들의 스페어 블럭들에 대해 리클레임 사이클들이 빈번하게 발생되기 때문에, 임의의 스페어 블럭들을 포함할 수 있다. 두 번째 그룹은 "낮은 그룹(low group)"으로 칭해지며, 상대적으로 낮은 PBEC 및 낮은 LBEC를 가질 것이며, 스페어 블럭들은 포함되지 않는다. IWL 프로세스는 그 후, 두 개의 그룹들 간에 높은 LBEC 논리적 블럭 및 낮은 LBEC 논리적 블럭들을 교환하고자 하며, 이는 일련의 리클레임 동작들을 통하여 달성될 수 있다. 이 절차는 WBG 교환으로 칭해진다. WBG 교환의 목적은, 오랫동안 생존하는(낮은 LBEC) 데이터 블럭들을 더 많이 웨어링된(높은 PBEC) 블럭들로 파퓰레이팅(populating)하고, 빈번하게 변화된(높은 LBEC) 데이터 블럭들을 더 적게 웨어링된(낮은 PBEC) 블럭들로 파플레이팅하는 것이다. 이 동작시, 스페어 블럭들은 다음 리클레임 블럭으로 될 가능성이 높으며, 이에 따라 높은 PBEC 스페어 블럭들은 마찬가지로 반대편 그룹으로 이동하게 된다.
그러나, 웨어 레벨링 프로세스는, 통상의 리클레임 동작들을 비롯하여 특정 통상의 메모리 동작들에 영향을 끼칠 수 있다. 이로 인해, 웨어 레벨링은 메모리 성능에 대한 밸런싱(balancing)을 필요로 할 수 있다. 본 발명의 일 실시예에서, 웨어 레벨링의 웨어 빈도에 영향을 미치도록 특정 값들이 설정될 수 있다. 일 실시예에서, 사용자는 ECMOD(소거 카운트 인터벌) 및 SLOPETH 값들(기울기 임계치)을 설정할 수 있다. 이들 값들을 증가시키면, 비휘발성 디바이스의 수명을 일부 희생시키기는 하지만, 성능 코스트를 감소시키게 될 것이다.
본 발명의 일 실시예에서, 비휘발성 메모리는, 각 물리적 메모리 블럭에 대한 소거 동작의 횟수, 및 각 논리적 메모리 블럭에 대한 소거 동작의 횟수에 적어도 부분적으로 기초하는 웨어 레벨링을 포함한다. 일 실시예에서, 회귀선의 기울기가 임계치를 초과하면 웨어 레벨링 동작들이 개시되는데, 이 회귀선은, 각 블럭에 대한 물리적 소거 카운트에 대(versus) 이러한 각 블럭에 대한 논리적 소거 카운트에 대해 발생된다.
본 발명의 일 실시예에서, IWL 프로세스의 개시는, 각 메모리 블럭에 대한 물리적 블럭 및 논리적 블럭 소거 카운트들의 그룹에 피팅(fitting)되는 선의 기울기에 의해 유발될 수 있는데, 이 선의 기울기는 또한, 동작이 성공하였는지를 판정하는 데에 이용된다. 일 실시예에서, 선을 에러 카운트 데이터에 피팅하는 데에 통계학적 방법이 이용될 수 있다. 특정 실시예에서는, IWL 동작이 요구되는 시기를 판정하고, 실행된 IWL 동작이 얼마나 성공적으로 되었는지를 평가하는 데에, 선형 회귀가 이용된다. 선형 회귀에서는, 선형 방정식을 관측된 데이터에 피팅함으로써 두 개의 변수들 간의 관계를 모델링하려고 시도한다. 회귀선을 피팅하는 가장 통상적인 방법은 최소 제곱법이다. 최소 제곱 라인 방법은 f(x) = a + bx의 형태의 방정식을 적용하며, 이는 a의 절편을 가지며 b의 기울기를 갖는 선 그래프이다. 이 방법에서는 이하와 같은, 원 데이터 세트(raw data set) 의 트렌드를 나타낸다:
비휘발성 메모리 디바이스의 동작시, 회귀선 기울기 b에 대한 세 가지 경우가 존재한다:
· b=0, 이는, 시스템이 프레시 플래시 상에서 개시되거나, 혹은 웨어 레벨링이 유지되고 있을 때 발생될 수 있음.
· b>0, 이는 웨어가 언레벨링(unleveled)될 때 발생함.
· b<0, 이는 WBG들이 교환되었을 때 성공적인 프로세스에서 발생함.
본 발명의 일 실시예에서, 웨어 레벨링은, 특정 인터벌 후에만 발생하는 것으로 제한될 수 있다. 예를 들면, ECMOD는, IWL 프로세스를 유발하기 전에 경과하는 소거 카운트 인터벌이다. 예를 들면, ECMOD는 1000 사이클 이하일 수 있다. 또한, 웨어 레벨링의 유발은 SLOPETH(PBEC-LBEC 회귀선 기울기 임계치)에 의해 제어된다. 비휘발성 메모리에서, 통상의 리클레임 동작은, 무효 데이터를 포함하는 "더티(dirty)" 메모리 블럭을 리클레임하는 데에 이용될 수 있는데, 이 동작은 무효하게 된 메모리 공간을 해방시키고자(free up) 하는 것이다. IWL 구현시에, 비휘발성 메모리에 대한 통상의 리클레임 절차는 변경되지 않지만, 웨어 레벨링 프로세스는, 백그라운드 리클레임 작업의 수행에 영향을 미칠 수 있다. 사용자 혹은 설계자는, 웨어 레벨링의 빈도를 판정하도록 함께 작용하는 ECOMD 및 SLOPETH 파라미터들을 조정함으로써 메모리 수명 문제 및 고객 성능 필요성을 다룰 수 있다. 예를 들면, 고객은 ECMOD 및 SLOPETH를 증가시킴으로써 웨어 레벨링의 성능 코스트를 감소시킬 수 있다.
웨어 레벨링의 구현시에, 이 처리는 일반적으로 고상 메모리 제어기에 의해 핸들링될 수 있으며, 이에 따라 호스트 시스템과는 독립적이다. 이러한 구현에서, 호스트 시스템은 그 판독 및 기입을 논리적 블럭 어드레스들에 대해서만 수행하며, 기초적인 물리적 블럭 어드레스들은 이용하지 않는다. 이러한 방식으로, 호스트는, 웨어 레벨링의 결과로서 발생하는 임의의 데이터 이동을 인식하지 못할 것이다. 그러나, 본 발명의 실시예들은 메모리 제어와 관련하여 변동될 수 있으며, 임의의 특정한 메모리 제어 방법에 제한되지 않는다.
파일 시스템이 개시되고 중단되며 포맷팅 동작이 발생하지 않는 경우, LBEC의 증분 및 PBEC의 증분은 동일하다. 그러나, 파일 시스템이 개시되기 전에, 플래시가 포맷팅되는 경우, 포맷팅이 완료된 후에 PBEC가 유지되거나 혹은 복원되지만, LBEC는, 블럭 데이터가 소거되므로, 모두 소거될 것으로 예상될 것이며, 이에 따라 그 LBEC를 저장할 필요는 없다. 이에 따라, 프레시, 새로운, 혹은 전체 소거된 플래시의 경우, 그 합(LBEC) = 합(PBEC)이다. 일단 포맷팅이 발생되면, LBEC들은 소거되어서, 합(PBEC)는 합(LBEC)보다 크게 될 수 있다.
제공된 예들에서는, 웨어 레벨링 프로세스를 시작하는 시기 및 종료하는 시기를 결정하기 위해 하나의 임계 값이 이용된다. 그러나, 본 발명의 실시예들은 둘 이상의 임계치를 이용할 수도 있다. 본 발명의 일 실시예에서, 프로세스는 두 개의 임계치를 이용하여, 교환 프로세스가 필요하게 되는 횟수를 감소시킬 수 있다. 이 예에서는, 비휘발성 메모리가 통상적으로 이용되어서, 메모리 블럭들의 물리적 블럭 소거 카운트 값들 및 논리적 블럭 소거 카운트 값들의 값들에 대한 회귀선 피트(fit)가 점차적으로 증가하게 된다. 웨어링된 블럭 교환 프로세스는, 메모리 블럭들에 대한 회귀선의 기울기가 제1 임계치 위에 있을 때 시작될 수 있다. 일단 시작되면, 웨어링된 블럭 그룹 교환은, 회귀선의 기울기가 제2 임계치보다 작을 때(이 때 교환 프로세스가 중단될 것임)까지 계속될 수 있다. 그 후, 이 프로세스는 원래의 상태로 되돌아갈 것이며, 여기서, 회귀선의 기울기가 다시 제1 임계치를 초과하면, 웨어링된 블럭 교환 프로세스가 시작될 것이다. 통상의 동작으로 되돌아가면, 회귀선의 기울기는 다시, 특정의 고도의 액티브 메모리 블럭들에서 더 많은 소거 사이클들이 발생함에 따라 점차적으로 증가하게 될 것이다.
도 1은 비휘발성 메모리의 일 실시예를 나타낸 도면이다. 이 도면에서, 비휘발성 메모리 디바이스(100)는 메모리 블럭들의 어레이(105)를 포함한다. 일례에서, 메모리 블럭들의 어레이(105)는, 물리적 블럭 어드레스 PB1 및 논리적 블럭 어드레스 LB7을 갖는 제1 메모리 블럭(110), 및 물리적 블럭 어드레스 PB4 및 논리적 블럭 어드레스 LB5를 갖는 제2 메모리 블럭(115)을 포함할 수 있다. 제공되는 어드레스들은 단순히 일례이며, 임의의 물리적 혹은 논리적 어드레스가 존재할 수 있다. 각 동작에서, 메모리 어레이(105)의 각 블럭에는 여러 번의 소거 및 기입 사이클들이 행해질 수 있으며, 각 사이클은 영향받는 셀들의 수명을 단축시키게 된다.
도시된 바와 같이, 제1 메모리 블럭(110)은 상대적으로 인액티브(inactive) 상태에 있으며, 이 블럭은 소거되고 데이터 세트 A(120)가 블럭(110)에 기입된다(125). 이와 대조적으로, 제2 메모리 블럭(115)은 상대적으로 액티브 상태에 있으며, 예를 들면, 데이터 B(130)는 변경되어서(135), 각 기입 프로세스가 블럭 내의 데이터의 소거를 요구할 때, 제2 블럭(115)의 셀들에 대한 소거 및 기입 동작(140)이 여러 번 행해지게 된다. 이에 따라, 시간이 경과함에 따라, 제2 메모리 블럭(115)에 대한 웨어가, 제1 메모리 블럭(110)에 대한 웨어보다 상당히 크게 될 수 있다.
본 발명의 일 실시예에서, 메모리 블럭들의 어레이에는 웨어 레벨링이 행해져서, 메모리 블럭들에 대한 웨어를 고르게 한다. 이 실시예에서, 웨어 레벨링은, 물리적 블럭 기입 사이클들에 대한 카운트 및 논리적 블럭 기입 사이클들에 대한 카운트에 기초한다. 일 실시예에서, 선형 회귀에 의한 물리적 블럭 기입 사이클들 및 논리적 블럭 기입 사이클들에 대한 선 피트의 기울기가 임계치에 도달할 때 웨어 레벨링 알고리즘이 개시된다. 일 실시예에서, 이 알고리즘은, 가장 많이 웨어링된 블럭 그룹(이는 제2 메모리 블럭(115)을 포함할 수 있음) 내에 포함된 데이터가, 가장 적게 웨어링된 블럭 그룹(이는 제1 메모리 블럭(110)을 포함할 수 있음) 내에 포함된 데이터로 교환되는 데이터 리클레임을 제공한다. 다른 예에서는, 가장 적게 웨어링된 그룹이 스페어 메모리 블럭을 포함할 수 있는데, 스페어 블럭들은 리클레임되기 매우 쉽다. 지정된 그룹들 간의 교환 후에, 나머지 블럭들에는 추가의 교환이 행해지며, 이 프로세스는, 회귀선의 기울기가 더 이상 임계치 위에 있지 않을 때까지 계속된다.
도 2는 웨어 레벨링 프로세스의 일 실시예를 나타내는 플로우차트이다. 이 도면에서, 백그라운드 메모리 리클레임 프로세스가 행해지는데(단계 205), 이 프로세스는 통상의 메모리 리클레이밍(reclaiming) 및 웨어 레벨링에 대한 메모리 리클레이밍을 포함한다. 이 리클레임 프로세스는, 동작시 계속해서 반복하는 "포레버 루프(forever loop)"(210)로 칭해질 수 있는 형태로 되어 있다. 이 루프에서, 통상의 메모리 리클레임 프로세스가 단계 215에서 발생한다.
단계 220에서, ECMOD(error count modulus) 추가의 소거 카운트들이, 백그라운드 리클레임 작업의 개시 이래로, 혹은 마지막 웨어 레벨링 동작 이래로 발생한 경우, 웨어 레벨링 프로세싱이 개시된다. 물리적 블럭 소거 카운트(PBEC) 및 논리적 블럭 소거 카운트(LBEC)에 대한 회귀선의 기울기 b가 임계치 SLOPETH와 비교되어 평가된다(단계 225). 기울기 b가 이 임계치를 초과하지 않는 경우, 루프는 계속된다. 기울기 b가 이 임계치를 초과하는 경우, 웨어링된 블럭 그룹 교환이 행해지는데(단계 230), 가장 많이 웨어링된 그룹(더 높은 PBEC 및 LBEC의 값들을 갖는 메모리 블럭들과, 스페어 메모리 블럭들을 포함하는 그룹) 내에 포함된 데이터가, 가장 적게 웨어링된 그룹(스페어 메모리 블럭들을 포함하지 않으면서, 더 낮은 PBEC 및 LBEC 값들을 갖는 메모리 블럭들을 포함하는 그룹) 내에 포함된 데이터와 교환된다. 이 교환 후에, 기울기 b는 다시, 임계치 SLOPETH와 비교되는데(단계 225), 교환 프로세스는 그 후, 기울기 b가 임계치 SLOPETH를 더 이상 초과하지 않을 때까지 계속된다.
일 실시예에서, 프로세스는, 웨어 레벨링에 이용되는 임계치와 관련하여 변화될 수 있다. 예를 들면, 웨어 레벨링 프로세스의 개시는, 기울기 b가 제1 임계치(SLOPETH1)를 초과하는 경우 발생될 수 있는데, 웨어 레벨링 프로세스는, 기울기 b가 제2 임계치(SLOPETH2) 미만일 때까지 계속되며, 여기서, 예를 들면 SLOPETH2는 SLOPETH1보다 작을 수 있다.
도 3A는 웨어 레벨링 전에 비휘발성 메모리에 대해 발생된 회귀선을 나타낸 도면이다. 이 도면에서, 물리적 블럭 소거 카운트(PBEC(305)) 및 논리적 블럭 소거 카운트(LBEC(310)) 면에서, 가설의 비휘발성 메모리의 각 블럭이 제공된다. 플래시 메모리가 새로운 것인 경우, 처음에는 물리적 블럭 소거 카운트들 및 논리적 블럭 소거 카운트들이 매우 낮거나 제로(zero)일 것이다. 그러나, 더 많은 기입 사이클들이 발생함에 따라, 도 3A에 도시된 바와 같이, 더 액티브한 상태의 메모리 블럭들이 물리적 블럭 소거 카운트들 및 논리적 블럭 소거 카운트들 양쪽 모두에 대한 더 높은 카운트 값들을 전개할 것이다.
이 도면에 도시된 바와 같이, 시간이 경과함에 따라, 낮은 PBEC 및 LBEC 값들(315)을 갖는 특정 메모리 블럭들, 중간 PBEC 및 LBEC 값들(320)을 갖는 특정 블럭들, 및 높은 PBEC 및 LBEC 값들(325)을 갖는 특정 블럭들이 존재할 것임을 예상할 수 있다. 본 발명의 일 실시예에서, 메모리 블럭 값들에 대한 회귀선(335)을 발생시키기 위해 선형 회귀가 이용된다. 예시를 용이하게 하기 위해, 대칭선(330)이 제공된다. 대칭선(330)의 우측 상의 메모리 블럭들은, 대칭선(330)의 좌측 상의 메모리 블럭들과 비교하여 점점 웨어링되고 있으며, 이로 인해 웨어 레벨링이 실시되지 않는 경우 너무 이른 디바이스의 고장이 발생될 수 있다.
본 발명의 일 실시예에서, 미리 정해진 횟수의 소거 이벤트가 발생된 후에, 웨어 레벨링 평가가 발생될 수 있다. 평가시에, 회귀선(335)의 기울기가 임계 값 위에 있는 경우 웨어 레벨링 프로세스가 개시되어서, 웨어링된 블럭 그룹들(350)의 교환이 행해지게 될 수 있다. 이 교환시에, 가장 많이 웨어링된 그룹(325)의 블럭들 내에 포함된 데이터가, 가장 적게 웨어링된 그룹(315) 내의 블럭들에 대해 교환된다. 일 실시예에서, 일련의 리클레임 동작들을 통하여 교환이 달성된다. 교환 후에, 회귀선이 다시 발생되며, 기울기가 다시 임계 값과 비교된다. 이 프로세스는, 기울기가 임계치 아래로 떨어지도록 충분히 변화될 때까지 계속된다.
도 3B는, 웨어 레벨링의 실시예가 구현된 후에, 비휘발성 메모리에 대해 생성된 회귀선을 나타낸 도면이다. 이 도면에서, 물리적 블럭 소거 카운트(PBEC(355)) 및 논리적 블럭 소거 카운트(LBEC(360))의 면에서 다시 가설적 비휘발성 메모리의 각 블럭이 제공된다. 웨어링된 그룹 교환에 이어서, 발생된 회귀선의 기울기가 변경되었다(385). 교환 후에, 높은 PBEC 및 낮은 LBEC(365)를 갖는 메모리 블럭들, 중간 PBEC 및 LBEC 값들(370)을 갖는 메모리 블럭들(이는 어떠한 교환에도 관련되지 않았을 가능성이 큼), 및 낮은 PBEC 및 높은 LBEC 값들(375)을 갖는 메모리 블럭들이 존재한다. 예시를 용이하게 하기 위해 대칭선(380)이 다시 제공된다. 본질적으로, 대칭선(380)의 우측 상의 메모리 블럭들은 이제, 상대적으로 낮은 웨어링을 가지지만 이제는 장래에 웨어링이 발생될 수 있는 액티브 데이터를 갖는 블럭들이다. 대칭선(380)의 좌측 상의 메모리 블럭들은 이제, 상대적으로 높은 웨어를 갖지만, 이제는 덜 액티브한 데이터를 가져서, 장래에 덜 웨어링되게 될 것으로 예상될 수 있는 블럭들이다.
도 4 내지 도 7은 웨어 레벨링 프로세스의 일 실시예에서의 메모리 블럭 리클레임 동작들의 예를 나타낸 도면이다. 이 도면들에서는, 예시적인 비휘발성 메모리의 메모리 블럭들을 도시하고 있다. 도시된 바와 같이, PBn은 n번째 물리적 블럭을 의미하며, LBn은 n번째 논리적 블럭을 의미한다. 도면에 도시된 바와 같이, 임의의 메모리 블럭이 물리적 블럭 어드레스를 가지며, 논리적 블럭 어드레스를 갖거나 혹은 스페어로서 지정된다. 이 도면에서, 메모리 디바이스는 8개의 메모리 블럭들(PB0 내지 PB7)을 포함한다. 이 도면들에서, 각 메모리 블럭은 그 물리적 블럭 어드레스(405), 그 논리적 블럭 어드레스(410), 그 논리적 블럭 소거 카운트(415), 및 그 물리적 블럭 소거 카운트(420)에 의해 표시된다. 본 발명의 일 실시예에서, IWL 프로세스가 구현되며, 적절한 그룹들의 메모리 블럭들 내에 포함되는 데이터는 일련의 리클레임 프로세스들을 통하여 교환된다. 도 4 내지 도 7은 데이터의 교환을 위한 특정 프로세스를 나타내고 있지만, 본 발명의 실시예들은 교환 프로세스를 실행하기 위한 어떠한 특정 프로세스에도 제한되지 않는다.
도 4에는, 예시적인 비휘발성 메모리의 블럭들이 도시되어 있다. 도시를 용이하게 하기 위해, 발생된 웨어는 일반적으로 PB0로부터 PB7로 증가한다. 그러나, 실제의 웨어는 임의의 메모리 블럭들에서 발생될 수 있으며, 일정한 순서일 필요는 없을 것이다. 특정 구현에서, 간격 및 기울기 임계 값들이 설정되며, 이들은 이 예에서 ECMOD=135 및 SLOPETH=0.09일 수 있다. 이들은 이 예에 대한 특정 값들이지만, 이들 값들은 필요한 경우 변경될 수 있다.
도 4에서, 원 데이터 세트 의 계산 트렌드에 의해, Sum(LBEC) =135, Sum(PBEC) =135, 및 b=0.0976515이다. 소거 카운트가 ECMOD에 도달하면, 기울기에 대해 평가한다. 이 경우, 기울기는 SLOPETH 값 0.09보다 커서, 메모리에 대한 웨어에 있어서의 과도한 불균형을 나타낸다. 이에 따라, 웨어 레벨링 프로세스가 시작된다.
본 발명의 일 실시예에서, 메모리 블럭들은 다양한 서로 다른 방식으로 그룹들로 분리될 수 있다. 도 4에 제시된 간략한 예의 경우, 낮은 그룹은 PB0(425)(LBEC=7 및 PBEC=4를 가짐) 및 PB1(430)(LBEC=3 및 PBEC=6을 가짐)을 포함할 수 있다. 이들 블럭들은 낮은 웨어를 가지며, 액티브 데이터를 포함하는 것으로 보이지 않음을 알 수 있다. 높은 그룹의 경우, 블럭들은 PB6(455)(LBEC=30 및 PBEC =28을 가짐) 및 PB7(460)(PBEC=30을 갖는 스페어 블럭)을 포함할 수 있다. 이 도면에서, 높은 그룹 및 낮은 그룹들은 인접한 메모리 블럭들로 구성되지만, 이는 오직 도시를 간략하게 하기 위한 것일 뿐이다. 실제로는, 임의의 메모리 블럭들이 높은 그룹 혹은 낮은 그룹 내에 포함될 수 있다. 나머지 블럭들(PB2(435), PB3(440), PB4(445), 및 PB5(450))이 중간 그룹에 해당되며 교환에 관여하지 않는다. 교환이, 충분한 기울기의 변화를 제공하지 않는 경우, 이들 나머지 블럭들은 교환 동작을 위해 낮은 그룹 및 높은 그룹 내에 들어가게 될 수 있다.
본 발명의 일 실시예에서, 교환은, 통상의 리클레임 프로세스를 이용하는 일련의 동작들을 통하여 구현될 수 있다. 예를 들면, 프로세스 Reclaim(PB0, PB7)을 이용하여 PBO(425) 및 PB7(460) 간에 교환이 발생하는 경우, PB0으로부터 PB7로 데이터가 복사되며, PB0가 소거되며, PB0가 스페어 블럭으로 설정된다. 도 4의 예에서는, Reclaim(PB0, PB7)이 행해진 제1 교환이다.
도 5는 Reclaim(PB0, PB7) 후의 결과적인 메모리를 나타낸다. 이 예에서, PBO(525)는 이제 스페어 블럭인데, PBEC는 4에서 5로 증가된다. PB7(560)은 이제 LB6이며, LBEC는 이제 7에서 8로 증가된다. (PB7(560)의 PBEC는 30에서 유지되는데, 그 이유는 이것이 스페어 블럭이어서 이미 소거되었으며 데이터를 기입하기 전에 소거가 행해지는 것을 요구하지 않기 때문이다.) 이 시점에서, Sum(LBEC) =136, Sum(PBEC) =136, 및 b=-0.11161이다.
도 6은 Reclaim(PB6, PB0)인 다음 이어지는 동작 후의 메모리 결과이다. 이 동작 후에, PB6(655)은 이제 스페어 블럭이며, PBEC는 28에서 29로 증가된다. PB0(625)는 이제 LB0이며, LBEC는 30에서 31로 증가된다. 이 시점에서, 교환 프로세스에서, Sum(LBEC)=137, Sum(PBEC)=137, 및 b=-0.28086이다.
도 7은 일련의 동작들 중 최종 동작, Reclaim(PB6, PB1) 후의 메모리 결과이다. 이 최종 스테이지에서, PB0(625)은 LBEC=31 및 PBEC=5를 가지며, PB1(730)은 PBEC=7을 갖는 스페어 블럭(이에 따라 이는 다음 리클레임 블럭일 가능성이 높음)이다. 이에 따라, 가장 적은 양의 웨어를 갖는 블럭들의 그룹은 이제 더 액티브한 데이터를 가져서, 낮은 웨어를 높은 데이터 액티비티와 매칭시킨다. 또한, PB6(755)은 LBEC=4 및 PBEC=29를 가지며, PB7(560)은 LBEC=8 및 PBEC=30을 갖는다. 가장 많은 양의 웨어를 갖는 블럭들의 그룹은 이제 덜 액티브한 데이터를 가져서, 높은 웨어를 낮은 데이터 액티비티와 매칭시킨다. 일련의 리클레임 동작들 중 최종 동작 후에, Sum(LBEC) = 138, Sum(PBEC)=138, 및 b=-0.54262이다. 이에 따라, PBEC-LBEC 회귀선의 기울기는 임계치 아래로 감소되었다. 본 발명의 실시예에서, 이에 따라 웨어 레벨링 동작이 완료된다. 그 후, 시스템은, 다른 웨어 레벨링 사이클이 요구되는지 여부를 판정하기 위해 기울기를 임계치와 다시 비교하기 전에 ECMOD 소거 사이클들을 기다릴 것이다. PBEC-LBEC 회귀선의 기울기가 임계치 아래로 감소되지 않은 경우, 교환 프로세스가 계속되어서, 요구되는 값 아래로 기울기를 감소시키기 위해 추가의 데이터 교환을 제공할 것이다.
도 8은 비휘발성 메모리 디바이스의 일 실시예를 나타낸 도면이다. 이 도면에서, 플래시 메모리 등의 비휘발성 메모리 디바이스(800)는 장치(815)와 결합되거나 혹은 장치(815)의 일부로 될 수 있다. 이 장치는, 컴퓨터, PDA(personal digital assistant) 혹은 핸드헬드 컴퓨터, 디지털 카메라, 디지털 음악 재생기, 혹은 그 밖의 다른 유닛을 비롯한, 전자 메모리를 필요로 하는 임의의 장치일 수 있다. 메모리 디바이스(800)는, 메모리 제어기(810)와 결합된 메모리 어레이(805)를 포함하는데, 메모리 제어기(810)는 메모리 어레이(805) 내에 데이터를 저장하는 것을 제어한다. 메모리 어레이(805)는, 예를 들면 제1 메모리 블럭(820) 및 제2 메모리 블럭(825)을 비롯한 다수의 메모리 셀들의 메모리 블럭들을 포함한다. 이 예에서, 제1 메모리 블럭(820)은 물리적 블럭 PB0 및 논리적 블럭 LB5이며, 제2 메모리 블럭(825)은 물리적 블럭 PB3 및 논리적 블럭 LB2이다. 메모리 제어기(810)는 논리적 메모리 로케이션의 지정을 담당할 수 있어서, 장치(815)는 논리적 로케이션들에 의해 메모리 셀들을 어드레싱하며 메모리 셀들의 물리적 로케이션들은 인식하지 못한다.
본 발명의 일 실시예에서, 메모리 제어기(810)는 메모리 어레이(805)에 대한 각 소거-기입 사이클의 카운트를 기록하는데, 이 카운트는 각 물리적 블럭 및 각 논리적 블럭에 대한 카운트를 포함한다. 일 실시예에서, 카운트들은, 메모리 디바이스에 대한 웨어 레벨링 동작들을 실시하는 데에 이용된다. 일 실시예에서, 메모리 디바이스(800)는 현재의 기입-소거 사이클 카운트들을 포함하는 레지스트리(registry) 혹은 레지스트리들을 포함할 수 있다. 도시된 바와 같이, 메모리 디바이스(810)는 물리적 블럭 소거 카운트들(830)의 레지스트리 및 논리적 블럭 소거 카운트들(835)의 레지스트리를 포함한다. 도시된 바와 같이, 물리적 블럭 소거 카운트들(830)의 레지스트리는, 제1 메모리 블럭(820)에 대한 PB0EC(PB0에 대한 소거 카운트), 및 제2 메모리 블럭(825)에 대한 PB3EC(845)를 포함하며, 이는 n번째 물리적 블럭에 대한 PBnEC(850)까지 계속된다. 논리적 블럭 소거 카운트들(835)의 레지스트리는 제1 메모리 블럭(820)에 대한 LB2EC(LB2에 대한 소거 카운트), 및 제2 메모리 블럭(825)에 대한 LB5EC(860)를 포함하며, 이는 m번째 논리적 블럭에 대한 LBmEC(865)까지 계속된다. 메모리 어레이(805)는, 논리적 메모리 블럭에 지정되지 않는 하나 이상의 스페어 블럭을 포함하며, 이에 따라, m이 n보다 작게 될 수 있다.
본 발명의 일 실시예에서, 메모리 제어기(810)는, 메모리 어레이(805)의 블럭들의 웨어의 현재 상태를 평가한다. 일 실시예에서, 이러한 평가는, 소거 사이클의 ECMOD 횟수 후에 발생한다. 본 발명의 일 실시예에서, 메모리 제어기(810)는, 물리적 블럭 소거 카운트들(830)의 레지스트리 및 논리적 블럭 소거 카운트들(835)의 레지스트리 내에 포함되는 데이터에 대한 회귀선의 기울기를 계산한다. 회귀선의 기울기가 임계치(SLOPETH)를 초과하는 경우, 메모리 제어기(810)는, 메모리 블럭들의 높은 웨어 그룹(스페어 블럭들을 포함하며 높은 PBEC 및 LBEC 값들을 가짐), 및 메모리 블럭들의 낮은 웨어 그룹(낮은 PBEC 및 LBEC 값들을 가짐)을 식별하고, 그룹들 간의 데이터 교환으로 진행하여서, 액티브 데이터를 낮은 웨어 메모리 블럭들로 전송한다.
도 9는 본 발명의 실시예를 이용하는 컴퓨터 시스템을 나타낸 도면이다. 본 발명과 관련이 없는 특정 표준의 널리 공지된 컴포넌트들은 도시하지 않는다. 본 발명의 일 실시예에서, 컴퓨터(900)는, 버스(905), 혹은 정보를 통신하기 위한 그 밖의 통신 수단, 및 정보의 처리를 위해 버스(905)에 결합된 두 개 이상의 프로세서들(910)(제1 프로세서(915) 및 제2 프로세서(920)로 도시되어 있음) 등의 처리 수단을 포함한다. 프로세서들(910)은 하나 이상의 물리적 프로세서 및 하나 이상의 논리적 프로세서를 포함할 수 있다. 또한, 프로세서들(910) 각각은 다수의 프로세서 코어들을 포함할 수 있다. 컴퓨터(900)는 간략성을 위해 하나의 버스(905)를 갖는 것으로 도시되어 있지만, 컴퓨터는 다수의 서로 다른 버스들을 가질 수 있으며, 이러한 버스들로의 컴포넌트 접속은 변경될 수 있다. 도 9에 도시된 버스(905)는, 적절한 브리지들, 어댑터들, 혹은 제어기들에 의해 접속되는 임의의 하나 이상의 개별적인 물리적 버스, 포인트간 접속(point-to-point connections), 혹은 이들 양쪽 모두를 나타내는 앱스트랙션(abstraction)이다. 따라서, 버스(905)는, 예를 들면 시스템 버스, PCI(Peripheral Component Interconnect) 버스, 하이퍼트랜스포트(HyperTransport) 혹은 ISA(industry standard architecture) 버스, SCSI(small computer system interface) 버스, USB(universal serial bus), IIC(I2C) 버스, 혹은 IEEE(Institute of Electrical and Electronics Engineers) 표준 1394 버스(종종 "파이어와이어(FireWire)"로 칭해짐)("Standard for a High Performance Serial Bus" 1394-1995, IEEE, published August 30, 1996, 및 그 보충물들 참조)를 포함할 수 있다.
컴퓨터(900)는 또한, 프로세서들(910)에 의해 실행될 인스트럭션들 및 정보를 저장하기 위한 메인 메모리(925)로서 랜덤 액세스 메모리(RAM) 혹은 그 밖의 다른 동적 저장 디바이스를 포함한다. 메인 메모리(925)는 또한, 프로세서들(910)에 의한 인스트럭션들의 실행 동안 일시적 변수 혹은 다른 중간 정보를 저장하는데에 이용될 수 있다. RAM 메모리는, 메모리 내용의 리프레시를 필요로 하는 동적 랜덤 액세스 메모리(DRAM), 및 내용의 리프레시를 필요로 하지는 않지만 코스트가 증가하는 정적 랜덤 액세스 메모리(SRAM)를 포함한다. DRAM 메모리는, 신호들을 제어하기 위한 클럭 신호를 포함하는 동기식 동적 랜덤 액세스 메모리(SDRAM), 및 확장된 데이터-출력 동적 랜덤 액세스 메모리(EDO DRAM; extended data-out dynamic random access memory)를 포함할 수 있다. 메인 메모리의 이용은, 무선 디바이스들로부터의 수신 신호들을 저장하는 것을 포함할 수 있다. 컴퓨터(900)는 또한, 판독 전용 메모리(ROM)(930) 및/또는 프로세서들(910)에 대한 인스트럭션들 및 정적 정보를 저장하기 위한 그 밖의 다른 정적 저장 디바이스를 포함할 수 있다.
데이터 스토리지(935)는 또한, 정보 및 인스트럭션들을 저장하기 위해 컴퓨터(900)의 버스(905)에 결합될 수 있다. 데이터 스토리지(935)는, 자기 디스크 혹은 광 디스크 및 그 대응 드라이브, 플래시 메모리 혹은 그 밖의 다른 비휘발성 메모리, 혹은 그 밖의 다른 메모리 디바이스를 포함할 수 있다. 이러한 엘리먼트들은 서로 결합되거나, 혹은 개별적인 컴포넌트들일 수 있으며, 컴퓨터(900)의 다른 엘리먼트들의 부분들을 이용한다. 본 발명의 일 실시예에서, 데이터 스토리지(935)는 플래시 메모리(937)를 포함할 수 있다. 실시예에서, 플래시 메모리(937)는, 각 메모리 블럭에 대한 소거-기입 사이클들의 불균형에 의해 유발되는, 플래시 메모리(937)의 메모리 블럭들에 대한 웨어를 고르게 하기 위한 웨어 레벨링 프로세스들을 제공한다.
컴퓨터(900)는 또한, 버스(905)를 통하여, 음극선관(CRT) 디스플레이, 액정 디스플레이(LCD), 플라즈마 디스플레이, 혹은 그 밖의 다른 임의의 디스플레이 기술 등의 디스플레이 디바이스(940)에 결합되어서 정보를 단말기 사용자에게 디스플레이할 수 있다. 일부 환경에서는, 디스플레이 디바이스는, 또한 적어도 입력 디바이스의 일부로서 이용되는 터치 스크린일 수 있다. 일부 환경에서는, 디스플레이 디바이스(940)는, 오디오 정보를 제공하기 위한 스피커 등의 오디오 디바이스이거나, 혹은 이를 포함할 수 있다. 입력 디바이스(945)는, 정보 및/또는 커맨드 선택을 프로세서들(910)에게 전송하기 위해 버스(905)에 결합될 수 있다. 다양한 구현예에서, 입력 디바이스(945)는, 키보드, 키패드, 터치 스크린 및 스타일러스, 음성 기동 시스템, 혹은 그 밖의 다른 입력 디바이스, 혹은 이러한 디바이스들의 결합물일 수 있다. 포함될 수 있는 다른 유형의 사용자 입력 디바이스는, 마우스, 트랙볼, 혹은 지시 정보 및 커맨드 선택을 하나 이상의 프로세서(910)에 전송하고 디스플레이 디바이스(940) 상의 커서 움직임을 제어하기 위한 커서 지시 키들 등의 커서 제어 디바이스(950)이다.
통신 디바이스(955)도 또한 버스(905)에 결합될 수 있다. 특정 구현에 따라, 통신 디바이스(955)는, 마더보드 상의 트랜시버, 무선 모뎀, 네트워크 인터페이스 카드, LAN(Local Area Network), 혹은 그 밖의 다른 인터페이스 디바이스를 포함할 수 있다. 통신 디바이스(955)의 이용은 무선 디바이스들로부터 신호를 수신하는 것을 포함할 수 있다. 무선 통신의 경우, 통신 디바이스(955)는 하나 이상의 안테나(958)를 포함할 수 있다. 일 실시예에서, 통신 디바이스(955)는 컴퓨터(900)를 부적절한 액세스로부터 보호하기 위한 방화벽을 포함할 수 있다. 컴퓨터(900)는, LAN(local area network)(965) 등의 네트워크, 혹은 통신 디바이스(955)를 이용하는 그 밖의 다른 디바이스들(이는 인터넷, 근거리 통신망, 혹은 다른 환경으로의 링크들을 포함할 수 있음)에 연결될 수 있다. 컴퓨터(900)는 또한, 전원, 배터리, 태양 전지, 연료 전지, 혹은 전력을 공급하거나 발생시키기 위한 그 밖의 다른 시스템 혹은 디바이스를 포함할 수 있는 전력 디바이스 혹은 시스템(960)을 포함할 수 있다. 전력 디바이스 혹은 시스템(960)에 의해 제공되는 전력은, 컴퓨터(900)의 엘리먼트들에 요구되는 바와 같이 분배될 수 있다.
본 개시물의 이점을 갖는 본 기술 분야에 통상의 지식을 가진 자라면, 전술한 설명 및 도면들에 대한 그 밖의 다른 많은 변형이 본 발명의 범주 내에서 실시될 수 있음을 알 것이다. 실제로, 본 발명은 전술한 상세사항들에 제한되지 않는다. 오히려, 임의의 보정을 포함하는 이하의 특허청구범위가 본 발명의 범주를 정의하는 것이다.
전술한 설명에서, 설명을 위해, 본 발명의 철저한 이해를 돕기 위해 수많은 특정 상세사항들이 제시되었다. 그러나, 본 기술 분야에 통상의 지식을 가진 자에게는, 본 발명은 이들 특정 상세사항 없이도 실시될 수 있음이 명백할 것이다. 다른 예들, 널리 공지된 구조들 및 디바이스들이 블럭도의 형태로 도시되어 있다.
본 발명은 각종 프로세스들을 포함할 수 있다. 본 발명의 프로세스들은 하드웨어 컴퓨터들에 의해 수행되거나, 혹은 기계 실행가능 인스트럭션들(이는 이 인스트럭션들로 프로그래밍된 범용 혹은 특수 용도 프로세서 혹은 논리 회로들로 하여금 프로세스들을 수행하게 하는 데에 이용될 수 있음)로 구현될 수 있다. 대안적으로는, 이 프로세스들은 하드웨어 및 소프트웨어의 결합에 의해 수행될 수 있다.
본 발명의 부분들은, 인스트럭션들이 저장되어 있는 기계 판독 가능 매체를 포함할 수 있으며, 본 발명에 따른 프로세스를 수행하기 위한 컴퓨터(혹은 그 밖의 다른 전자 디바이스들)를 프로그래밍하는 데에 이용될 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 기계 판독가능 매체는, 플로피 디스켓, 광 디스크, CD-ROM(compact disk read-only memory), 및 광 자기 디스크, ROM(read-only memory), RAM(random access memory), EPROM(erasable programmable read-only memory), EEPROM(electrically-erasable programmable read-only memory), 자기 혹은 광 카드, 플래시 메모리, 혹은 전자 인스트럭션들을 저장하기에 적합한 그 밖의 유형의 매체/기계 판독가능 매체를 포함할 수 있지만, 이에 제한되는 것은 아니다. 또한, 본 발명은 또한 컴퓨터 프로그램 제품으로서 다운로드될 수 있으며, 여기서 이 프로그램은, 통신 링크(예를 들면, 모뎀 혹은 네트워크 접속)를 통하여 반송파 혹은 다른 전파 매체에서 구현된 데이터 신호들에 의해, 혹은 원격 컴퓨터로부터 요청 컴퓨터로 전송될 수 있다.
많은 방법들이 이들의 가장 기본적인 형태로 개시되었지만, 본 발명의 기본적 범주로부터 벗어나지 않고, 프로세스들이 방법들 중 임의의 방법에 추가되거나 혹은 이로부터 삭제될 수 있으며, 정보가, 설명된 메시지들 중 임의의 메시지에 추가되거나 혹은 이로부터 빠질 수 있다. 본 기술 분야에 통상의 지식을 가진 자에게는, 또다른 변경 및 적응이 실시될 수 있음이 명백할 것이다. 특정 실시예들은, 본 발명을 제한하려고 제공되는 것이 아니며 이를 예시하기 위한 것이다. 본 발명의 범주는, 위에서 제공되는 특정 예들에 의해서 결정되는 것이 아니라, 이하의 특허청구범위에 의해서만 결정되는 것이다.
또한, 본 명세서 전체에서 "일 실시예" 혹은 "실시예"를 언급하는 것은, 특정 피쳐가 본 발명의 실제 적용 내에 포함될 수 있음을 의미함을 알아야 한다. 마찬가지로, 본 발명의 예시적인 실시예들에 대한 전술한 설명에서, 본 발명의 각종 피쳐들은 하나의 실시예, 도면, 혹은 그들의 설명 내에서 때때로 함께 그룹화되어서, 본 개시물을 능률적으로 하거나 다양한 신규한 양태들 중 하나 이상의 이해를 돕는다. 그러나, 본 개시물의 방법은, 특허청구되는 발명이 각 특허청구범위에서 명시적으로 인용되는 것보다 더 많은 피쳐들을 요구하는 의도를 반영하는 것으로 해석되어서는 않된다. 오히려, 이하의 특허청구범위에서 반영하는 바와 같이, 신규한 양태들은, 하나의 전술한 개시된 실시예의 모든 피쳐들보다 적게 갖는다. 따라서, 본 특허청구범위는, 이에 의해 본 개시물 내에 명시적으로 포함되며, 각 청구항은 본 발명의 개별적인 실시예로서 독립적으로 존재하는 것이다.

Claims (18)

  1. 비휘발성 메모리의 웨어 레벨링(wear leveling) 방법으로서,
    비휘발성 메모리의 복수의 메모리 블럭들 각각에 대한 소거 사이클들을 카운팅하는 단계 ― 각각의 메모리 블럭에 대한 소거 사이클들을 카운팅하는 단계는, 상기 메모리 블럭의 물리적 블럭 어드레스에 대한 제1 카운트를 증분시키는 단계, 및 상기 메모리 블럭이 스페어(spare) 메모리 블럭이 아닌 경우, 상기 메모리 블럭의 논리적 블럭 어드레스에 대한 제2 카운트를 증분시키는 단계를 포함함 ―; 및
    상기 복수의 메모리 블럭들의 소거 사이클들의 카운팅에 적어도 부분적으로 기초하여, 상기 비휘발성 메모리가 메모리 블럭들의 고르지 않은 웨어(uneven wear)를 갖는지 여부를 판정하는 단계
    를 포함하는 비휘발성 메모리의 웨어 레벨링 방법.
  2. 제1항에 있어서,
    상기 비휘발성 메모리가 고르지 않은 웨어를 갖는 경우,
    높은 웨어 레벨들을 갖는, 상기 비휘발성 메모리의 메모리 블럭들의 제1 그룹, 및 낮은 웨어 레벨들을 갖는, 상기 비휘발성 메모리의 메모리 블럭들의 제2 그룹을 식별하고,
    상기 제1 그룹의 하나 이상의 메모리 블럭으로부터의 데이터와, 상기 제2 그룹의 하나 이상의 메모리 블럭으로부터의 데이터를 교환하는, 비휘발성 메모리의 웨어 레벨링 방법.
  3. 제2항에 있어서,
    상기 복수의 메모리 블럭들 중 제1 메모리 블럭과 제2 메모리 블럭 간에 데이터를 교환하는 것은, 상기 제1 메모리 블럭으로부터의 논리적 블럭 어드레스를 상기 제2 메모리 블럭으로 트랜스퍼(transfer)하는 것을 포함하는, 비휘발성 메모리의 웨어 레벨링 방법.
  4. 제2항에 있어서,
    상기 제1 그룹의 하나 이상의 메모리 블럭으로부터의 데이터와, 상기 제2 그룹의 하나 이상의 메모리 블럭으로부터의 데이터를 교환하는 것은, 일련의 메모리 블럭 리클레임(reclaim) 동작을 포함하는, 비휘발성 메모리의 웨어 레벨링 방법.
  5. 제1항에 있어서,
    상기 비휘발성 메모리가 메모리 블럭들의 고르지 않은 웨어를 갖는지 여부를 판정하는 단계는, 각각의 물리적 블럭 어드레스에 대한 소거 사이클들 및 각각의 논리적 블럭 어드레스에 대한 소거 사이클들을 나타내기 위해 선형 회귀(linear regression)에 의한 선(line)을 생성하는 단계를 포함하는, 비휘발성 메모리의 웨어 레벨링 방법.
  6. 제1항에 있어서,
    상기 비휘발성 메모리가 메모리 블럭들의 고르지 않은 웨어를 갖는지 여부를 판정하는 단계는, 생성된 선의 기울기와 기울기 임계치를 비교하는 단계를 더 포함하는, 비휘발성 메모리의 웨어 레벨링 방법.
  7. 제6항에 있어서,
    상기 비휘발성 메모리에 대한 미리 정해진 횟수의 소거 사이클들이 발생된 후에, 상기 생성된 선의 기울기가 상기 기울기 임계치와 비교되는, 비휘발성 메모리의 웨어 레벨링 방법.
  8. 제1항에 있어서,
    상기 비휘발성 메모리는 플래시 메모리인, 비휘발성 메모리의 웨어 레벨링 방법.
  9. 비휘발성 메모리 디바이스로서,
    복수의 메모리 블럭들을 포함하는 메모리 어레이 ― 각각의 메모리 블럭은 물리적 블럭 어드레스를 가지며, 각각의 메모리 블럭은, 논리적 블럭 어드레스를 가지거나 혹은 스페어 메모리 블럭임 ―;
    상기 메모리 어레이에 결합된 메모리 제어기 ― 상기 메모리 제어기는 상기 메모리 어레이에 데이터를 저장하는 것을 제어하기 위한 것임 ―; 및
    상기 메모리 어레이의 상기 복수의 메모리 블럭들에 대한 소거 동작들의 횟수를 기록하기 위한 하나 이상의 레지스터 ― 상기 하나 이상의 레지스터는, 각각의 물리적 블럭 어드레스에 대한 소거 사이클들의 카운트, 및 각각의 논리적 블럭 어드레스에 대한 소거 사이클들의 카운트를 포함함 ―
    를 포함하는 비휘발성 메모리 디바이스.
  10. 제9항에 있어서,
    상기 메모리 제어기는, 각각의 물리적 블럭 어드레스에 대한 소거 사이클들의 횟수 및 각각의 논리적 블럭 어드레스에 대한 소거 사이클들의 횟수를 나타내는 선의 기울기를 판정하기 위한 것인, 비휘발성 메모리 디바이스.
  11. 제10항에 있어서,
    상기 메모리 제어기는, 미리 정해진 횟수의 소거 사이클들이 발생된 후에, 상기 선의 기울기를 판정하는 비휘발성 메모리 디바이스.
  12. 제10항에 있어서,
    상기 메모리 제어기는, 상기 선의 기울기와 임계값을 비교하기 위한 것이며, 상기 메모리 제어기는, 상기 선의 기울기가 상기 임계값을 초과하는 경우 메모리 블럭들의 스위칭을 수행하기 위한 것인, 비휘발성 메모리 디바이스.
  13. 제12항에 있어서,
    상기 메모리 블럭들의 스위칭은, 높은 소거 카운트들을 갖는 메모리 블럭들의 제1 그룹과 낮은 소거 카운트들을 갖는 메모리 블럭들의 제2 그룹 사이에서 데이터를 스위칭하는 것을 포함하는 비휘발성 메모리 디바이스.
  14. 제9항에 있어서,
    상기 메모리 어레이는 플래시 메모리 어레이를 포함하는 비휘발성 메모리 디바이스.
  15. 컴퓨터 시스템으로서,
    버스;
    상기 버스에 결합된 플래시 메모리 디바이스 ― 이 비휘발성 메모리 디바이스는 복수의 메모리 블럭들을 포함함 ―;
    상기 버스에 결합된 동적 랜덤 액세스 메모리; 및
    상기 버스에 결합된 프로세서 ― 상기 프로세서는, 상기 동적 랜덤 액세스 메모리와 상기 플래시 메모리 디바이스 간에 데이터를 트랜스퍼하기 위한 것임 ―
    를 포함하며,
    상기 시스템은, 물리적 블럭 어드레스 및 논리적 블럭 어드레스에 의해 상기 메모리 블럭들 각각에 대한 소거 사이클들의 횟수를 추적하는 컴퓨터 시스템.
  16. 제15항에 있어서,
    상기 시스템은, 물리적 블럭 어드레스 및 논리적 블럭 어드레스에 의한 상기 메모리 블럭들 각각에 대한 소거 사이클들의 횟수에 적어도 부분적으로 기초하여, 상기 플래시 메모리 디바이스가 고르지 않은 웨어를 갖는지 여부를 판정하기 위한 것인, 컴퓨터 시스템.
  17. 제16항에 있어서,
    상기 시스템은, 물리적 블럭 어드레스 및 논리적 블럭 어드레스에 의한 상기 메모리 블럭들 각각에 대한 소거 사이클들의 횟수에 대한 회귀선의 기울기와 기울기 임계치를 비교함으로써, 상기 플래시 메모리 디바이스가 고르지 않은 웨어를 갖는지 여부를 판정하기 위한 것인, 컴퓨터 시스템.
  18. 제16항에 있어서,
    상기 시스템은, 미리 정해진 횟수의 소거 사이클들이 발생될 때마다, 상기 플래시 메모리 디바이스가 고르지 않은 웨어를 갖는지 여부를 판정하기 위한 것인, 컴퓨터 시스템.
KR1020097013437A 2006-12-27 2006-12-27 비휘발성 메모리에 대한 초기 웨어 레벨링 KR101087308B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2006/003615 WO2008077284A1 (en) 2006-12-27 2006-12-27 Initiative wear leveling for non-volatile memory

Publications (2)

Publication Number Publication Date
KR20090094333A true KR20090094333A (ko) 2009-09-04
KR101087308B1 KR101087308B1 (ko) 2011-11-25

Family

ID=39562076

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097013437A KR101087308B1 (ko) 2006-12-27 2006-12-27 비휘발성 메모리에 대한 초기 웨어 레벨링

Country Status (5)

Country Link
US (1) US8356152B2 (ko)
JP (1) JP5006940B2 (ko)
KR (1) KR101087308B1 (ko)
DE (1) DE112006004187B4 (ko)
WO (1) WO2008077284A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170016385A (ko) * 2014-05-28 2017-02-13 마이크론 테크놀로지, 인크. 웨어 레벨링 동작들을 수행하기 위한 장치들 및 방법들
US10529395B2 (en) 2012-04-10 2020-01-07 Samsung Electronics Co., Ltd. Memory system for access concentration decrease management and access concentration decrease method
US10740263B2 (en) 2013-03-15 2020-08-11 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
US10885957B2 (en) 2012-10-26 2021-01-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies

Families Citing this family (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103208309B (zh) 2006-05-12 2016-03-09 苹果公司 存储设备中的失真估计和消除
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
US7697326B2 (en) 2006-05-12 2010-04-13 Anobit Technologies Ltd. Reducing programming error in memory devices
US8156403B2 (en) 2006-05-12 2012-04-10 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US8060806B2 (en) 2006-08-27 2011-11-15 Anobit Technologies Ltd. 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
CN101601094B (zh) 2006-10-30 2013-03-27 苹果公司 使用多个门限读取存储单元的方法
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
US7706182B2 (en) 2006-12-03 2010-04-27 Anobit Technologies Ltd. Adaptive programming of analog memory cells using statistical characteristics
US9153337B2 (en) 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
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
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal 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
KR101413736B1 (ko) * 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
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
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
KR101509836B1 (ko) 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
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
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
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
TWI385669B (zh) * 2008-07-23 2013-02-11 Phison Electronics Corp 用於快閃記憶體的平均磨損方法、儲存系統與控制器
KR101103061B1 (ko) * 2008-07-28 2012-01-06 주식회사 팍스디스크 반도체 스토리지 시스템 및 그 제어 방법
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
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
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
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8891298B2 (en) 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for 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
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
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
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8176295B2 (en) 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8065469B2 (en) * 2009-04-20 2011-11-22 Imation Corp. Static wear leveling
US8732389B2 (en) * 2009-06-23 2014-05-20 Seagate Technology Llc Memory wear control
EP2270525A1 (en) * 2009-07-02 2011-01-05 Gemalto SA Method of auditing the wear of a memory embedded in a secure electronic token
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8447915B2 (en) * 2009-07-23 2013-05-21 Hitachi, Ltd. Flash memory device for allocating physical blocks to logical blocks based on an erase count
TWI421869B (zh) * 2009-10-14 2014-01-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
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
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
TWI457941B (zh) * 2010-06-25 2014-10-21 Macronix Int Co Ltd 區塊為基礎快閃記憶體之位元組存取的方法與裝置
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
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US8493781B1 (en) 2010-08-12 2013-07-23 Apple Inc. Interference mitigation using individual word line erasure operations
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
US20120198124A1 (en) * 2011-01-28 2012-08-02 Apple Inc. Methods and systems for optimizing read operations in a non-volatile memory
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US20140089560A1 (en) * 2012-09-25 2014-03-27 Adesto Technologies Corporation Memory devices and methods having write data permutation for cell wear reduction
US9201786B2 (en) 2012-12-21 2015-12-01 Kabushiki Kaisha Toshiba Memory controller and memory system
US20150143021A1 (en) * 2012-12-26 2015-05-21 Unisys Corporation Equalizing wear on storage devices through file system controls
US9262315B2 (en) 2013-07-05 2016-02-16 Apple Inc. Uneven wear leveling in analog memory devices
US9317367B2 (en) 2013-08-01 2016-04-19 Globalfoundries Inc. Re-distributing high usage data in a raid solid state drive array
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
US9501400B2 (en) 2013-11-13 2016-11-22 Sandisk Technologies Llc Identification and operation of sub-prime blocks in nonvolatile memory
JP6107802B2 (ja) * 2014-12-15 2017-04-05 コニカミノルタ株式会社 不揮発性メモリ制御装置、不揮発性メモリ制御方法及びプログラム
KR102250423B1 (ko) 2015-01-13 2021-05-12 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102393323B1 (ko) 2015-08-24 2022-05-03 삼성전자주식회사 재사용 주기를 이용하여 사용자 데이터를 쓰기 위한 워드라인을 결정하는 저장 장치의 동작 방법
KR102456104B1 (ko) 2015-08-24 2022-10-19 삼성전자주식회사 데이터 신뢰성에 따라 동작 조건을 변경하는 저장 장치의 동작 방법
KR102333746B1 (ko) 2015-09-02 2021-12-01 삼성전자주식회사 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법
US9760303B2 (en) 2015-09-29 2017-09-12 Sandisk Technologies Llc Partially-bad block operation in 3-D nonvolatile memory
US10643700B2 (en) * 2015-10-29 2020-05-05 Micron Technology, Inc. Apparatuses and methods for adjusting write parameters based on a write count
US9898215B2 (en) 2015-12-07 2018-02-20 International Business Machines Corporation Efficient management of page retirement in non-volatile memory utilizing page retirement classes
TWI571882B (zh) * 2016-02-19 2017-02-21 群聯電子股份有限公司 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置
CN107122308A (zh) * 2016-02-25 2017-09-01 群联电子股份有限公司 平均磨损方法、内存控制电路单元及内存储存装置
US9842059B2 (en) * 2016-04-14 2017-12-12 Western Digital Technologies, Inc. Wear leveling in storage devices
KR20180014975A (ko) * 2016-08-02 2018-02-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20180040288A (ko) 2016-10-12 2018-04-20 삼성전자주식회사 비휘발성 메모리 장치의 리클레임 제어 방법, 상기 비휘발성 메모리 장치를 포함하는 저장 장치의 동작 방법 및 저장 장치
US10976936B2 (en) * 2017-08-23 2021-04-13 Micron Technology, Inc. Sensing operations in memory
JP7020989B2 (ja) 2018-04-23 2022-02-16 株式会社メガチップス 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
KR102545189B1 (ko) 2018-09-07 2023-06-19 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US11416163B2 (en) * 2020-04-09 2022-08-16 SK Hynix Inc. Systems and methods for dynamic logical block address distribution between multicores
KR20220138759A (ko) * 2021-04-06 2022-10-13 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
CN113707206B (zh) * 2021-05-17 2024-03-22 深圳市国微电子有限公司 Flash存储器的数据保护方法、装置、电子设备及存储介质
DE102021116828A1 (de) 2021-06-30 2023-01-05 Harman Becker Automotive Systems Gmbh Verfahren und Vorrichtung zur Überwachung einer Nutzlast eines Speichermediums
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 (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
TW261687B (ko) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
US5341339A (en) 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JP3507132B2 (ja) 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5568423A (en) 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5963970A (en) 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6937948B2 (en) 2001-11-13 2005-08-30 Intel Corporation Flash memory program and erase operations
KR100484147B1 (ko) 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
KR101122511B1 (ko) * 2002-10-28 2012-03-15 쌘디스크 코포레이션 비휘발성 저장 시스템들에서 자동 웨어 레벨링
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7035967B2 (en) 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
JP4199519B2 (ja) * 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US6865122B2 (en) 2003-04-11 2005-03-08 Intel Corporation Reclaiming blocks in a block-alterable memory
US20050055495A1 (en) 2003-09-05 2005-03-10 Nokia Corporation Memory wear leveling
US7032087B1 (en) 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
US7106636B2 (en) 2004-06-22 2006-09-12 Intel Corporation Partitionable memory device, system, and method
US7057934B2 (en) 2004-06-29 2006-06-06 Intel Corporation Flash memory with coarse/fine gate step programming
US20060069850A1 (en) 2004-09-30 2006-03-30 Rudelic John C Methods and apparatus to perform a reclaim operation in a nonvolatile memory
US7818342B2 (en) * 2004-11-12 2010-10-19 Sap Ag Tracking usage of data elements in electronic business communications
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10529395B2 (en) 2012-04-10 2020-01-07 Samsung Electronics Co., Ltd. Memory system for access concentration decrease management and access concentration decrease method
US11024352B2 (en) 2012-04-10 2021-06-01 Samsung Electronics Co., Ltd. Memory system for access concentration decrease management and access concentration decrease method
US11817174B2 (en) 2012-04-10 2023-11-14 Samsung Electronics Co., Ltd. Memory system for access concentration decrease management and access concentration decrease method
US10885957B2 (en) 2012-10-26 2021-01-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US10740263B2 (en) 2013-03-15 2020-08-11 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
KR20170016385A (ko) * 2014-05-28 2017-02-13 마이크론 테크놀로지, 인크. 웨어 레벨링 동작들을 수행하기 위한 장치들 및 방법들
US10365835B2 (en) 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
US11347402B2 (en) 2014-05-28 2022-05-31 Micron Technology, Inc. Performing wear leveling operations in a memory based on block cycles and use of spare blocks

Also Published As

Publication number Publication date
US20100161880A1 (en) 2010-06-24
US8356152B2 (en) 2013-01-15
WO2008077284A1 (en) 2008-07-03
JP2010515127A (ja) 2010-05-06
KR101087308B1 (ko) 2011-11-25
DE112006004187T5 (de) 2009-11-26
DE112006004187B4 (de) 2015-09-10
JP5006940B2 (ja) 2012-08-22

Similar Documents

Publication Publication Date Title
KR101087308B1 (ko) 비휘발성 메모리에 대한 초기 웨어 레벨링
US10209902B1 (en) Method and apparatus for selecting a memory block for writing data, based on a predicted frequency of updating the data
JP5031849B2 (ja) フラッシュメモリのブロック管理方法
TWI425357B (zh) 用來進行區塊管理之方法以及記憶裝置及控制器
TWI446345B (zh) 用來進行區塊管理之方法以及記憶裝置及控制器
US8452913B2 (en) Semiconductor memory device and method of processing data for erase operation of semiconductor memory device
US8103820B2 (en) Wear leveling method and controller using the same
TWI489373B (zh) 資料儲存裝置和快閃記憶體之區塊管理方法
JP5706520B2 (ja) フラッシュ・メモリのセルをウェアレベリングする方法
KR101454817B1 (ko) 반도체 메모리 장치 및 그것의 마모도 관리 방법
US8417872B2 (en) Write and merge methods in memory card systems for reducing the number of page copies
US8386697B2 (en) Memory managing method for non-volatile memory and controller using the same
TWI438778B (zh) 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器
US7649794B2 (en) Wear leveling method and controller using the same
KR20070099234A (ko) 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법
US10283196B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
TWI791981B (zh) 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US10346040B2 (en) Data merging management method based on data type, memory storage device and memory control circuit unit
CN113535074A (zh) 用来针对非易失性存储器进行区块管理的方法以及设备
JP2007179479A (ja) メモリコントローラおよびフラッシュメモリシステム
TWI453747B (zh) 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
KR100514756B1 (ko) 플래쉬 메모리를 파일 시스템으로 라이트하기 위한캐쉬처리 방법
JP2005174468A (ja) フラッシュメモリのアクセス制御方法
KR20110015288A (ko) 플래시 메모리의 소거 정보를 복원하는 방법
JP2016115081A (ja) 不揮発メモリストレージ制御装置、不揮発メモリストレージの書き込み制御方法およびプログラム

Legal Events

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

Payment date: 20141031

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee