KR20050065632A - 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치 - Google Patents

비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치 Download PDF

Info

Publication number
KR20050065632A
KR20050065632A KR1020057007326A KR20057007326A KR20050065632A KR 20050065632 A KR20050065632 A KR 20050065632A KR 1020057007326 A KR1020057007326 A KR 1020057007326A KR 20057007326 A KR20057007326 A KR 20057007326A KR 20050065632 A KR20050065632 A KR 20050065632A
Authority
KR
South Korea
Prior art keywords
block
blocks
erase count
erased
erase
Prior art date
Application number
KR1020057007326A
Other languages
English (en)
Other versions
KR100914089B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=32107214&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20050065632(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 샌디스크 코포레이션 filed Critical 샌디스크 코포레이션
Publication of KR20050065632A publication Critical patent/KR20050065632A/ko
Application granted granted Critical
Publication of KR100914089B1 publication Critical patent/KR100914089B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • 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

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)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

본 발명은 비휘발성 메모리 시스템의 시스템 메모리에서 소거 카운트를 저장하기 위한 방법 및 장치를 개시한다. 본 발명의 일 양상에 따르면, 비휘발성 메모리내의데이타 구조는 비휘발성 메모리내의 다수의 블록들의 제 1 블록이 소거되는 다수의 횟수들의 표시를 제공하는 제 1 표시기를 포함한다. 데이타 구조는 또한 비휘발성 메모리의 블록에 관한 정보를 포함하도록 배열된 헤더를 포함한다.

Description

비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치{MAINTAINING AN AVERAGE ERASE COUNT IN A NON-VOLATILE STORAGE SYSTEM}
본 발명은 대용량 디지털 데이터 저장 시스템에 관한 것이다. 더욱 상세하게는, 본 발명은 비휘발성 저장 시스템에서 저장영역과 관련된 마모(wear)가 모든 저장 영역에 걸쳐 균일하게 되도록 소거 카운트를 효과적으로 유지할 수 있는 장치 및 방법에 관한 것이다.
메모리 시스템의 콤팩트한 치수와 비휘발성 메모리의 반복적 재프로그램 능력으로 인해 플래시 저장 시스템과 같은 비휘발성 메모리 시스템의 사용이 증대하고 있다. 플래시 메모리 저장 시스템의 물리적 콤패트한 치수로 인해 이러한 저장 시스템의 이용이 용이해져, 이러한 저장 시스템이 점차 보편화되고 있다. 플래시 메모리 저장 시스템을 이용하는 장치로는 디지털 카메라, 디지털 캠코더, 디지털 뮤직 플레이어, 휴대용 컴퓨터, 위치추적장치 등을 예로 들 수 있으며, 그 밖에도 무수히 많다고 할 수 있다. 플래시 메모리 저장 시스템에서 포함된 비휘발성 메모리를 반복적으로 재프로그램할 수 있는 능력으로 인해 플래시 메모리 저장시스템을 재활용할 수 있게 된다.
일반적으로, 플래시 메모리 저장 시스템은 플래시 메모리 카드 및 플래시 메모리 칩 세트를 포함한다. 플래시 메모리 칩은 일반적으로 플래시 메모리 소자 및 제어기 소자를 포함한다. 전형적인 플래시 메모리 칩 세트는 내장형 시스템에 조립되도록 배열된다. 이러한 조립 시스템 또는 호스트 시스템 제조자는 소자 형태의 플래시 메모리와 기타 다른 소자와 함께 호스트 시스템에 플래시 메모리 및 다른 소자를 조립한다.
비휘발성 메모리, 보다 구체적으로는 플래시 메모리 시스템 내에 있는 플래시 메모리 저장 블록은 반복적으로 프로그램되고 소거될 수 있지만, 각각의 블록 또는 물리적 위치는 블록이 마모되기 이전, 즉 메모리 용량이 축소되기 이전에 특정한 횟수만큼만 소거될 수 있다. 즉, 각각의 블록의 프로그램 및 소거 사이클은 제한된다. 어떤 메모리에서는, 블록의 사용이 불가능한 것으로 간주하기 전까지 대략 만 번 정도의 소거가 가능할 수도 있다. 다른 메모리에서는, 블록이 마모되었다고 간주되기까지 십만 번 내지 심지어 백만 번까지 소거가 가능할 수 있다. 블록이 마모되어 플래시 메모리 시스템의 전체 저장 용량 일부에서 현저한 성능 저하 또는 사용 손실이 야기될 경우, 플래시 메모리 시스템의 사용자는 예를 들면 저장된 데이터의 손실이나, 데이터 저장능력의 불가능으로 인해 악영향을 받는다.
플래시 메모리 시스템 내에서 블록 또는 물리적 위치상의 마모는 각각의 블록이 얼마나 많이 프로그램이 되었는가에 따라 다양하게 나타난다. 블록, 더욱 일반적으로는 저장 소자가 일단 프로그램되고 실질적으로 재프로그램될 수 없다면, 프로그램 및 소거 사이클, 및 상기 블록과 관련된 마모 정도는 상대적으로 낮아진다. 그러나 블록이 반복적으로 기입 및 소거되면, 즉 기입/소거 사이클이 반복되면, 상기 블록과 관련된 마모 정도는 상대적으로 높아진다. 논리 블록 어드레스(LBA: Logical Block Address)는 예를 들면 플래시 메모리 시스템을 사용 또는 액서스하는 시스템과 같은 호스트에 의해 사용되어, 플래시 메모리 시스템에 저장된 데이터를 액세스함에 따라, 호스트가 반복적으로 동일한 LBA를 사용하여 데이터를 기입 또는 재기입하면, 플래시 메모리 시스템내의 동일한 물리적 위치 또는 블록이 반복적으로 기입 및 소거되며, 이는 당업자에게 공지되어 있다.
일부 블록은 심하게 마모되고 다른 블록은 상대적으로 마모 정도가 작은 경우, 마모된 블록의 존재로 인해 플래시 메모리 시스템의 전체 성능이 저하된다. 마모된 블록 자체에 관련된 성능 저하 이외에도, 원하는 데이터를 저장할 수 있는 마모되지 않은 블록이 불충분한 경우에도 플래시 메모리 시스템의 전체 성능이 저하될 수 있다. 종종, 플래시 메모리 시스템에 임계치의 마모된 블록이 존재하는 경우, 심지어 플래시 메모리 시스템의 다른 많은 셀이 상대적으로 마모되지 않은 경우에도 플래시 메모리 시스템을 사용할 수 없는 상태가 될 수 있다. 상대적으로 마모되지 않은 블록을 상당수 가지고 있는 플래시 메모리 시스템이 사용될 수 없는 것으로 간주된 경우, 상기 플래시 메모리 시스템과 관련된 많은 자원을 폐기하여야 한다.
플래시 메모리 시스템 내에서 블록이 균등하게 마모될 가능성을 높이기 위해, 종종 마모 레벨링 동작이 수행된다. 당 분야의 통상의 기술자라면 알 수 있는 바와 같이, 마모 레벨링 동작은 일반적으로 특정 LBA에 관련된 물리적 위치나 블록을 변화시켜 동일한 LBA가 동일한 물리적 위치나 블록에 항상 관련되지 않게 한다. LBA의 블록 연관성을 변경시켜, 다른 블록이 마모되기 전에 특정 블록이 마모되는 것을 감소시킬 수 있다.
종래의 마모 레벨링 프로세스에는 물리적 위치를 교환하는(swapping) 단계가 포함되며, 이는 위치에 상대적으로 큰 비중을 차지하는 2개의 부분, 즉 커스토머 또는 호스트 LBA를 맵핑한다. 즉, 상대적으로 큰 저장 셀 섹션과 관련된 LBA가 교환된다. 이러한 교환은 커스토머로부터 수동 명령을 통해, 즉 호스트 사용을 통해 초기화되며, 결과적으로 커스토머에게는 이러한 교환이 투명하지 못하다. 또한, 상대적으로 큰 비중을 차지하는 2개의 저장 셀 섹션 사이에서 데이터를 이동시키는 단계를 포함하는 교환 동작은 시간 소모적이므로 효율적이지 못하다. 또한, 전체 플래시 메모리 시스템과 관련된 상당한 자원을 소모하는 비교적 오랜 기간의 동작에 의해 전체 플래시 메모리 시스템의 성능이 악화될 수 있다. 당 분야의 통상의 기술라면 알 수 있는 바와 같이, 제 1 위치로부터 데이터를 이동하는 단계는 통상적으로 데이터를 또다른 위치로 복사하고 제 1 위치로부터 데이터를 소거하는 단계를 포함한다.
또다른 종래의 마모 레벨링 프로세스는 블록이 마모되는 것을 허용하는 단계를 포함한다. 일단 블록이 효과적으로 마모되면, 블록에 할당된 섹터는, 섹터에 관련된 어드레스를 맵핑함으로써 섹터가 저장된 블록이 일단 마모되거나 사용할 수 없게 되면 예비 영역으로 재할당된다. 예비 영역 또는 블록의 수는 한정되어 있고 값이 고가이므로, 사용 불가능한 블록이 관련된 섹터가 맵핑될 수 있는 예비 영역을 항상 가질 수는 없다. 또한, 블록이 사용불가능하게 된 이후에만 섹터를 재맵핑하는 것은 전체 플래시 메모리 시스템의 성능을 저하시킨다.
따라서, 플래시 메모리 저장 시스템 내에서 마모 레벨링을 효율적으로 그리고 실질적으로 명료하게 행할 수 있는 방법 및 장치가 필요하다. 즉, 마모 레벨링 프로세스를 용이하게 하고, 이를 통해 연산자원을 많이 사용하지 않고도 플래시 메모리 저장 시스템과 관련된 물리적 위치에서 마모를 보다 균일하게 하는 시스템이 필요하다.
본 발명은 첨부 도면을 참조하여 설명하는 다음의 상세한 설명을 통해 더욱 잘 이해할 수 있다.
도 1a는 본 발명의 실시예에 따른 비휘발성 메모리장치를 포함하는 일반 호스트 시스템의 개략도.
도 1b는 본 발명의 실시예에 따른 예를 들면 도 1a의 메모리장치(120)와 같은, 메모리장치를 나타낸 도면.
도 1c는 내장형 비휘발성 메모리를 포함하는 호스트 시스템을 나타낸 도면.
도 2는 본 발명의 실시예에 따른 플래시 메모리의 일부를 나타낸 개략도.
도 3은 본 발명의 실시예에 따른 플래시 메모리 시스템에 대해서 초기화 요청을 처리하는 단계를 예시하는 흐름도.
도 4는 본 발명의 실시예에 따른 정적 블록을 처리하는 방법을 예시하는 흐름도.
도 5a는 본 발명의 실시예에 따른 시스템 메모리를 나타낸 개략 블록도.
도 5b는 본 발명의 실시예에 따른 정상 블록, 최소 빈도 소거 블록, 최대 빈도 소거 블록의 예를 나타낸 도면.
도 6은 본 발명의 실시예에 따른 시스템 메모리에서의 블록 교환/갱신을 수행하여 블록의 보다 균일한 마모를 가능하게 하는 방법을 예시하는 도면.
도 7은 본 발명의 실시예에 따른 시스템 구조를 나타낸 개략도.
도 8a는 본 발명의 실시예에 따른 소거 카운트 블록을 예시한 도면.
도 8b는 본 발명의 실시예에 따른 소거 카운트 블록내의 페이지, 예를 들면 도 8a의 소거 카운트 블록(800)의 페이지(810a)를 위치별로 분할하여 나타낸 도면.
도 8c는 본 발명의 실시예에 따른 소거 카운트 블록의 페이지, 예를 들면 도 8a의 소거 카운트 블록(800)의 페이지(810a)를 바이트 별로 분할하여 나타낸 도면.
도 8d는 본 발명의 실시예에 따른 소거 카운트 블록의 페이지, 예를 들면 도 8a의 소거 카운트 블록(800)의 페이지(810a)를 나타내며, 여기서 페이지(810a)는 특정 블록이 사용불가능하게 되었음을 나타내는 소거 카운트 및 엔트리를 포함하는 것을 나타낸 도면.
도 9는 본 발명의 실시예에 따른 소거 카운트 블록의 헤더, 예를 들면 도 8a의 소거 카운트 블록(800)의 헤더(820)를 나타낸 도면.
도 10은 본 발명의 실시예에 따른 비휘발성 메모리 시스템의 비휘발성 메모리가 먼저 포맷되었을 때 소거 카운트 블록을 초기화하는 방법을 예시하는 흐름도.
도 11은 본 발명의 실시예에 따른 초기화 요청에 응답하여 소거 카운트 블록을 갱신하는 방법을 예시하는 흐름도.
도 12는 본 발명의 실시예에 따른 예비 블록을 위한 소거 카운트를 얻는 방법을 예시하는 흐름도.
본 발명은 비휘발성 메모리 장치의 소거 카운트 블록(ECB)에서 소거 카운트들을 저장하기 위한 시스템 및 방법에 관한 것이다. 본 발명의 일측면에 따라, 비휘발성 메모리의 데이타 구조(예를들어, ECB)는 비휘발성 메모리의 다수의 블록들중 제 1 블록이 소거되는 다수의 횟수들의 표시를 제공하는 제 1 표시기를 포함한다. 데이타 구조는 또한 비휘발성 메모리의 블록들에 관한 정보를 포함하도록 배열된 헤더를 포함한다. 일실시예에서, 데이타 구조는 또한 다수의 블록들의 제 2 블록이 사용되지 못하는 표시를 제공하는 제 2 표시기를 포함한다. 다른 실시예에서, 헤더는 다수의 블록들에서 각각의 블록이 소거되는 평균 소거 횟수를 표시하는 평균 소거 카운트를 포함한다.
비휘발성 메모리 시스템의 물리적 블록들에서 이용할 수 있는 수명에 속하는 정보를 포함하는 비휘발성 메모리 장치에 블록을 유지하는 것은 물리적 블록의 수명, 심지어 소거된 물리적 블록의 수명이 효율적으로 결정되게 한다. 특히, 연관된 소거 카운트를 가진 모든 물리적 블록들의 소거 카운트들, 또는 얼마나 많이 특정 블록이 소거 카운트 블록에서 소거되는가를 식별하는 표시기를 저장함으로써, 실질적으로 임의의 물리적 블록의 소거 카운트는 소거 카운트 블록으로부터 적당한 소거 카운트 엔트리를 판독함으로써 결정될 수 있다. 이와 같이, 주어진 블록에 의해 이미 겪은 소거 사이클들의 수는 쉽게 조사될 수 있다. 특정 블록들이 이용될 수 없는지, 예를들어 팩토리 결함들 또는 성장중인 결함들을 가지는지의 표시들은 특정 블록들이 이용할 수 있는지 쉽게 결정될 수 있게 하도록 소거 카운트 블록에 저장될 수 있다.
본 발명의 다른 측면에 따라, 비휘발성 플래시 메모리 장치에 배열된 소거 카운트 클럭은 비휘발성 메모리의 제 1 물리적 블록에 대한 제 1 식별기를 가진 제 1 페이지를 포함한다. 제 1 식별기는 제 1 물리적 블록이 소거되는 다수의 횟수들을 식별한다. 소거 카운트 블록은 비휘발성 메모리내의 물리적 블록들이 소거된 평균 횟수들을 표시하는 카운트를 가진 제 2 페이지를 포함한다.
일실시예에서, 제 1 페이지는 바이트들의 4개의 그룹이 제 1 식별기를 포함하도록 다수의 바이트 그룹들로 분할된다. 상기 실시예에서, 각각의 다수의 바이트 그룹은 대략 3 바이트 및 대략 4 바이트 사이에 포함할 수 있다.
본 발명의 다른 측면에 따라, 비휘발성 메모리 시스템은 다수의 블록들을 가진 비휘발성 메모리, 시스템 메모리, 및 다수의 블록들에 포함된 각각의 사용할 수 있는 블록이 소거된 다수의 횟수들을 시스템 메모리에 표시하기 위한 수단을 포함한다. 일실시예에서, 상기 시스템은 다수의 블록들에 포함된 각각의 블록이 소거된 평균 횟수들을 시스템 메모리에 표시하기 위한 수단을 포함한다.
본 발명의 이러한 장점들 및 다른 장점들은 첨부 도면과 함께 설명하는 다음의 상세한 설명을 통해 더욱 명백해질 것이다.
플래시 메모리 저장 시스템 내에서 비휘발성 메모리 저장블록은 반복적으로 프로그램되거나 소거되며, 블록이 마모되기 전까지 각각의 블록은 일반적으로 무수히 많은 소거과정을 거치게 된다. 블록이 마모되면, 마모된 블록을 포함하는 플래시 메모리 저장 시스템의 전체 저장 용량 부분에는 상대적으로 큰 성능저하가 발생하며, 이 마모 블록이 관련된 부분에 저장된 데이터가 손실되거나 또는 상기 부분에서 데이터를 저장할 수 없게 될 수도 있다.
플래시 메모리 저장 시스템 내에서 보다 균일하게 블록이 마모되는 확률을 높이기 위해, 블록을 골고루 사용하는 방법을 택할 수도 있다. 예를 들어 소거 카운트를 이용하여 각각의 블록의 소거 횟수를 추적 유지함으로써, 시스템 내의 메모리가 더욱 균일하게 사용되도록 할 수도 있다. 소거 카운트 관리 기술을 통해 소거 카운트를 저장하여, 특정 블록이 블록과 관련된 리던던트 영역에서 몇 번이나 소거되었는지를 추적 유지할 수 있다. 상대적으로 높은 소거 카운트를 갖는 블록과 상대적으로 낮은 소거 카운트를 갖는 블록으로부터 사용중인 블록을 효과적으로 분리할 수 있는 표를 메모리에 내장할 수도 있다. 사용중인 블록이 소거될 때, 이 블록은 상대적으로 높은 소거 카운트를 갖는 블록의 표나 상대적으로 낮은 소거 카운트를 갖는 블록의 표에 적절히 "부가"될 수 있다. 이와 같이, 상대적으로 높은 소거 카운트를 갖는 블록의 표나 상대적으로 낮은 소거 카운트를 갖는 블록의 표로부터 블록을 블록 맵핑표, 즉 사용중인 일조의 블록표로 이동시켜, 재할당된 임의의 블록을 블록 맵핑표에서 교체할 수 있다.
블록을 범주화하는(categorizing) 방법에 의해, 각각의 블록의 사용을 더욱 효과적으로 관리하고 블록과 관련된 마모를 균일하게 함으로써, 더욱 균일하게 블록을 사용할 수 있다. 또한, 표로 블록을 범주화하는 것을 통해 높은 소거 카운트를 갖는 블록과 낮은 소거 카운트를 갖는 블록을 쉽게 식별하고, 이에 따라 상당량의 연산자원을 절약할 수 있다. 따라서 효율적으로 마모 레벨링을 수행할 수 있다. 결과적으로, 플래시 메모리 시스템의 성능에 크게 영향을 주지 않으면서도 플래시 메모리의 수명을 연장시킬 수 있다.
블록의 범주화를 용이하게 하기 위해, 플래시 메모리 시스템 내에 소거 카운트 블록이 할당될 수도 있다. 이러한 블록은 플래시 메모리 내에서 데이터를 저장하는데 사용되는 거의 모든 블록의 소거 카운트를 포함하도록 구성될 수 있다. 블록이 소거될 때, 통상적으로 블록의 소거 카운트는 소거된다. 소거 카운트 블록에서 관련 소거 카운트를 갖는 거의 모든 블록의 소거 카운트를 저장함으로써, 예를 들면 소거 카운트 블록으로부터 소거 카운트를 독출함으로써 소거 블록의 소거 카운트를 용이하게 얻을 수 있다.
플래시 메모리 시스템, 보다 일반적인 표현으로는 비휘발성 메모리장치는 통상 플래시 메모리 카드와 칩 세트를 포함한다. 전형적으로 플래시 메모리 시스템은 호스트 시스템과 함께 사용되며, 호스트 시스템은 플래시 메모리 시스템에 데이터를 기입하거나 플래시 메모리 시스템으로부터 데이터를 독출할 수도 있다. 그러나 일부 플래시 메모리 시스템은 내장 플래시 메모리 및 실질적으로 상기 내장형 플래시 메모리에 대한 제어기로서의 역할을 하도록 호스트상에서 실행되는 소프트웨어를 포함한다. 먼저, 도 1a를 참조하여, 비휘발성 메모리장치, 예를 들면 콤팩트플래시(CompactFlash) 메모리카드를 포함하는 일반 호스트 시스템 또는 내장형 시스템에 대해 설명한다. 일반적으로 호스트 또는 컴퓨터 시스템(100)은 마이크로 프로세서(108), 랜덤 액세스 메모리(RAM)(112), 입출력 회로(116)의 통신을 허용하는 시스템 버스(104)를 포함한다. 일반적으로 호스트 시스템(100)은 예를 들면 디스플레이 장치, 네트워크 장치와 같은 다른 소자를 포함할 수 있으며, 이는 설명을 위한 것으로 도시하지는 않는다.
일반적으로, 호스트 시스템(100)은 제한되지 않고 정지화상정보, 오디오 정보, 비디오 화상정보를 포착할 수 있다(capture). 이러한 정보는 실시간으로 포착되어 무선방식으로 호스트 시스템(100)에 전송될 수 있다. 호스트 시스템(100)은 임의의 시스템일 수 있지만 통상적으로는 디지털 카메라, 비디오 카메라, 이동 무선 통신장치, 오디오 플레이어, 비디오 플레이어와 같은 시스템일 수 있다. 그러나 이러한 호스트 시스템(100)은 데이터 또는 정보를 저장하고 검색하는 것이면 어느 것이라도 가능하다.
호스트 시스템(100)은 또한 데이터 포착용 또는 검색용의 시스템이 될 수도 있다. 즉, 호스트 시스템(100)은 데이터 저장 전용 시스템이거나, 또는 데이터 독출 전용 시스템일 수도 있다. 예를 들면, 호스트 시스템(100)은 데이터를 저장 또는 기입하기만 하는 메모리 라이터(writer)일 수 있다. 선택적으로 호스트 시스템(100)은 데이터를 포착하지 않는 데이터 독출 또는 검색 전용인 MP3 플레이어와 같은 장치일 수도 있다.
본 발명의 일 실시예에서, 제거가능한 비휘발성 메모리장치일 수 있는 비휘발성 메모리장치(120)는 정보를 저장하기 위해 버스(104)와 인터페이스되도록 배열된다. 선택적인 인터페이스 회로 블록(130)은 비휘발성 메모리장치(120)가 버스(104)에 직접 인터페이스되는 것을 가능하게 한다. 여기서, 입출력 회로 블록(116)은 버스(104)에서의 부하를 줄이는 역할을 하며, 이는 당업자에게 공지된 것이다. 비휘발성 메모리장치(120)는 비휘발성 메모리(124) 및 선택적 메모리 제어 시스템(128)을 포함한다. 일 실시예에서, 비휘발성 메모리장치(120)는 단일 칩 또는 다이(die)상에서 구현된다. 선택적으로, 비휘발성 메모리장치(120)를 멀티 칩 모듈 또는 칩 세트를 구성하면서 휘발성 메모리장치(120)와 함께 사용되는 다수의 개별 소자상에서 구현할 수도 있다. 도 1b를 참조하여 비휘발성 메모리장치(120)의 실시예에 대하여 보다 상세히 설명한다.
예를 들면 NAND 플래시 메모리와 같은 비휘발성 메모리장치(124)는 필요에 따라 액세스 및 독출이 가능하도록 데이터를 저장한다. 또한, 비휘발성 메모리(124)에 저장된 데이터는 적절히 소거될 수 있으며, 물론 일부 데이터는 소거될 수 없을 수도 있다. 데이터의 저장, 독출, 소거 프로세스는 일반적으로 메모리 제어 시스템(128)에 의해 제어되거나 또는 메모리 제어 시스템(128)이 없을 경우에는 마이크로 프로세서(108)에 의해 실행되는 소프트웨어에 의해 제어된다. 비휘발성 메모리장치(124)의 동작은 그의 수명이 최대가 되도록 관리되며, 이를 위해 비휘발성 메모리장치(124)의 섹션이 균일하게 마모되도록 하는 것이 필수적이다.
일반적으로 비휘발성 메모리장치(120)는 선택형 메모리 제어 시스템(128), 즉 제어기를 포함하는 것으로 되어 있다. 때로 비휘발성 메모리장치(120)는 비휘발성 메모리(124), 메모리 제어 시스템(128), 즉 제어기, 펑크션을 위한 개별 칩을 포함할 수도 있다. 예를 들면, PC 카드, 콤팩트플래시 카드, 멀티미디어 카드, 시큐어 디지털 카드(이것에만 제한되는 것은 아니지만)와 같은 비휘발성 메모리장치는 별도의 칩 상에서 구현되는 제어기를 포함하며, 다른 비휘발성 메모리장치는 개별 칩 상에서 구현되는 제어기를 포함하지 않는다. 비휘발성 메모리장치(120)가 개별 메모리 및 제어기 칩을 포함하지 않는 실시예에서, 메모리 및 제어기 펑크션은 단일 칩에 통합될 수 있으며, 이는 당업자에게 공지되어 있다. 선택적으로, 메모리 제어 시스템(128)의 기능은 마이크로프로세서(108)에 의해 제공되며, 예를 들면, 비휘발성 메모리장치(120)가 상기한 바와 같이 메모리 제어기(128)를 포함하지 않는다.
도 1b를 참조하여, 본 발명의 일 실시예에 따른 비휘발성 메모리장치(120)에 대해 보다 상세히 설명한다. 전술한 바와 같이, 비휘발성 메모리장치(120)는 비휘발성 메모리(124)를 포함하며, 메모리 제어 시스템(128)을 포함할 수도 있다. 메모리(124)가 내장형 NAND장치일 경우 도 1c를 참조로 아래 설명하는 바와 같이 비휘발성 메모리장치(120)가 제어 시스템(128)을 포함하지 않을 수도 있지만, 메모리(124) 및 제어 시스템(128) 또는 제어기는 비휘발성 메모리장치(120)의 기본 구성소자가 될 수 있다. 메모리(124)는 반도체 기판에 형성된 메모리 셀 어레이일 수도 있으며, 이 경우 메모리 셀의 개별 저장 소자에 2가지 이상의 충전 레벨 중 하나를 저장함으로써, 하나 이상의 데이터 비트가 각각의 개별 메모리 셀에 저장된다. 비휘발성 플래시 EEPROM(Electrically Erasable Programmable Read Only Memory)은 이러한 시스템용 메모리의 일반적 타입의 일례가 된다.
제어 시스템(128)이 제공되는 경우, 제어 시스템(128)은 데이터 저장용 메모리 시스템을 이용하는 호스트 컴퓨터 또는 기타 다른 시스템과 버스(15)를 통해 통신을 한다. 일반적으로 버스(15)는 도 1a의 버스(104)의 일부분이 된다. 또한, 제어 시스템(128)은 메모리 셀 어레이(11)를 포함할 수 있는 메모리(124)의 동작을 제어하여, 호스트에 의해 제공되는 데이터를 기입하고, 호스트에 의해 요청된 데이터를 독출하며, 동작중인 메모리(124)에서 다양한 정리작업(housekeeping) 기능을 행한다. 일반적으로 제어 시스템(128)은 관련된 비휘발성 소프트웨어 메모리, 여러 가지 논리회로 등을 갖는 범용성 마이크로프로세서를 포함한다. 특정 루틴의 성능을 제어하기 위해 하나 이상의 상태기계(state machine)도 포함한다.
통상적으로 메모리 셀 어레이(11)는 어드레스 디코더(17)를 통해 제어 시스템(128) 또는 마이크로프로세서(108)에 의해 어드레스된다. 디코더(17)는 교정 전압을 어레이(11)의 게이트 및 비트 라인에 인가하여, 제어시스템에 의해 어드레스되는 데이터를 프로그램하고, 데이터를 독출하거나, 메모리 셀 그룹을 소거할 수 있다. 부가 회로(19)로는 어드레스된 셀 그룹으로 프로그램된 데이터에 따라서 어레이의 소자에 인가되는 전압을 제어하는 프로그래밍 드라이버를 포함한다. 또한, 회로(19)는 센스 증폭기 및 어드레스된 메모리 셀 그룹으로부터 데이터를 독출하는데 필요한 다른 회로들을 포함한다. 어레이(11)에 프로그램된 데이터, 또는 어레이(11)로부터 최근 독출된 데이터는 버퍼 메모리(21)에 저장되며, 상기 버퍼 메모리(21)는 도시한 바와 같이 제어 시스템(128) 내부 또는 외부에 위치할 수도 있다. 제어 시스템(128)은 통상 명령 및 상태 데이터 등을 임시적으로 저장하기 위한 여러 가지 레지스터를 포함한다.
어레이(11)는 다수의 블록 BLOCKS 0-N의 메모리 셀로 분할된다. 일반적으로 플래시 EEPROM의 경우, 블록이 소거의 최소단위가 된다. 즉, 각각의 블록은 함께 소거되는 단위로서의 최소 개수의 메모리 셀을 포함한다. 각각의 블록은 도 2에 도시된 것처럼 다수의 페이지로 분할된다. 페이지는 프로그래밍의 최소 단위이다. 즉, 기본 프로그래밍 동작은 메모리 셀 중에서 최소 한 페이지에 대해 데이터를 기입하거나 독출할 수 있다. 통상적으로 하나 이상의 데이터 섹터가 각각의 페이지에 저장된다. 도 1b에 도시한 바와 같이, 하나의 섹터는 사용자 데이터와 오버헤드 데이터를 포함한다. 통상적으로 오버헤드 데이터는 섹터의 사용자 데이터로부터 계산된 에러 정정 코드(ECC : Error Correction Code)를 포함한다. 제어 시스템(128)의 부분(23)은 데이터가 어레이(11)로 프로그램되는 경우 EEC를 계산하고, 또한, 데이터가 어레이(11)로부터 독출되는 경우 EEC를 점검한다. 이와는 달리, EEC는 이들이 포함되어 있는 사용자 데이터 이외에 다른 페이지 또는 다른 블록에 저장될 수 있다.
통상적으로 사용자 데이터의 섹터는 512 바이트로 이는 자기 디스크 드라이브 섹터의 크기에 해당한다. 통상적으로 오버헤드 데이터는 부가적인 16 바이트이다. 대부분 각 페이지는 한 섹터의 데이터를 포함하지만, 2개 이상의 섹터가 한 페이지를 형성할 수도 있다. 일반적으로 임의의 수의 페이지가 블록을 형성할 수 있다. 예를 들면, 블록은 8페이지부터 512, 1024, 또는 그 이상의 페이지로 형성될 수 있다. 블록의 개수는 메모리 시스템에 대해 원하는 데이터 저장 용량을 제공하도록 선택된다. 어레이(11)는 몇 개의 서브어레이(미도시)로 분할될 수 있으며, 각각의 서브어레이는 일정 비율의 블록을 포함하면서 어느 정도 상호 독립적으로 동작하여 여러 가지 메모리 동작의 실행에 있어서 병렬화의 수준을 향상시키게 된다. 다수의 서브어레이의 사용예는 본 명세서의 참조 문헌인 미국특허 제5,890,192에 기재되어 있다.
본 발명의 일 실시예에서, NAND 플래시 메모리와 같은 비휘발성 메모리는 예를 들면 호스트 시스템과 같은 시스템으로 구현된다. 도 1c는 내장된 비휘발성 메모리를 포함하는 호스트 시스템의 개략도이다. 일반적으로 호스트 또는 컴퓨터 시스템(150)은 마이크로프로세서(158), RAM(162), 입/출력회로(166), 및 호스트 시스템(150)의 그 밖의 부품들을 상호 연결하는 시스템 버스(154)를 포함한다. 예를 들어 플래시 메모리와 같은 비휘발성 메모리(174)는 호스트 시스템(150) 내에 정보를 저장할 수 있게 한다. 비휘발성 메모리(174)와 버스(154) 사이에는 인터페이스(180)가 제공되어 비휘발성 메모리(174)에 대한 정보의 독출 및 기입을 가능케 한다.
비휘발성 메모리(174)는 소프트웨어 및 펌웨어 중 하나 또는 둘 다를 실행하여, 비휘발성 메모리(174)를 제어하도록 배열된 마이크로프로세서(158)에 의해 운영된다. 즉, 마이크로 프로세서(158)는 코드 장치(미도시), 예를 들어 소프트웨어 코드 장치 또는 펌웨어 코드 장치를 작동시켜 비휘발성 메모리(174)를 제어한다. 마이크로프로세서(158), 개별 플래시 ROM 내부에 또는 하기에 설명되는 비휘발성 메모리(174) 내부에 CPU와 패키지된 플래시 메모리일 수 있는 이러한 코드 장치는, 비휘발성 메모리(174)의 물리적 블록이 어드레스 되는 것을 가능케 하며, 물리적 블록에 대해 정보를 저장, 독출하고 소거할 수 있게 한다.
도 1a의 비휘발성 메모리(124)의, 예를 들어 저장 소자와 같은 특정 섹션이 예를 들어, 반복적으로 기입 및 소거되어 연속으로 프로그램되며, 일반적으로 상기 특정 영역은 연속적으로 프로그램되지 않는 영역보다 빨리 마모된다. 비휘발성 메모리(124) 내에서 여러 영역의 마모를 효과적으로 "균일성있게" 하기 위해, 마모 레벨링을 실질적으로 자동으로 실행하여 연속적으로 프로그램된 영역의 프로그램을 보다 줄이고, 연속으로 프로그램되지 않는 영역을 보다 늘리게 된다.
일반적으로, 마모 레벨링을 수행하기 위해, 예를 들어 반복적으로 프로그램되는 물리적 위치와 관련된 섹터 세트인 블록은 반복적으로 프로그램되지 않은 물리적 위치와 관련된 블록과 교환될 수 있다. 즉, 프로그램되고 반복적으로 소거된 물리적 블록은 프로그램 및 소거가 덜 이루어진 블록과 교환될 수 있다.
본 발명의 일 실시예에서, 특정 물리적 블록이 반복적으로 프로그램되고 소거되었는지 여부의 결정이 용이하도록, 소거 카운트를 블록에 저장할 수 있다. 즉, 블록의 소거 횟수를 추적 유지할 수 있는 카운터는 블록이 소거될 때마다 유지 및 증가될 수 있다. 이러한 소거 카운트는 특정 블록이 소거가 덜 이루어진 다른 블록으로 교환되어야 하는지 결정 여부를 용이하게 하는데 사용된다. 도 2는 본 발명의 실시예에 따른 플래시 메모리의 일부를 나타낸 개략도이다. 플래시 메모리(200)는 페이지들(204)로 분리될 수 있다. 일반적으로 대략 512 바이트의 사용자 데이터가 있는 각각의 페이지(204)는 리던던트(redundant) 영역(206)을 포함하며, 예를 들면 페이지(204a)는 리던던트 영역(206a)을 포함한다. 각각의 리던던트 영역(206) 또는 오버헤드 영역은 약 16 바이트로 이루어진 정보를 포함하며, 상기 정보는 제한되지 않지만 통상적으로 그룹 식별자(216), 갱신 인덱스(212), 소거 카운트(214)를 포함한다.
통상적으로, 블록(210)에는 임의의 개수의 페이지(204)가 포함된다. 설명을 용이하게 하기 위해, 페이지(204a, 204b)가 블록(210)에 포함되는 것으로 도시되었지만 블록(210)에 포함되는 페이지의 개수는 광범위하게 다양하다. 개시되는 실시예에서 블록(210)은 대략 64페이지를 포함하도록 배열된다. 예를 들면, 플래시 메모리(200)가 대략 512 메가바이트(Mb)를 포함하는 경우, 플래시 메모리(200)는 각각 64페이지를 갖는 약 2048 블록으로 분할될 수 있다.
전술한 바와 같이, 소거 카운트(214)는 사용자 데이터가 관련 블록으로부터 소거될 때마다 증가될 수 있다. 예를 들면, 블록(210)과 관련된 소거 카운트(214)는 블록(210)으로부터 데이터가 소거될 때마다 증가할 수 있다. 일반적으로 블록(210)에 포함된 각각의 페이지(204a, 204b)는 소거 카운트(214)를 포함하기 때문에, 각각의 페이지(204a, 204b)에 관련된 상기 소거 카운트(214)는 블록(210)이 소거될 때 증가된다.
일반적으로, 데이터를 포함한 블록이 소거될 때, 블록의 데이터 영역 및 리던던트 영역 모두가 소거되거나 비워진다. 통상적으로 소거 블록은 예비(spare) 블록 풀에 부가되며, 이 풀은 예를 들면 다른 테이블의 소거 블록보다는 소거 카운트가 작은 소거 블록을 포함한다. 예비 블록표는 필수적으로 최소빈도 소거 블록표이며, 이것에 대해서는 후술한다. 본 발명의 일 실시예에 따르면, 큰 소거 카운트를 갖는 소거 블록은 다른 소거 블록표에 비해 큰 소거 카운트를 갖는 소거 블록을 포함하는 풀이다. 큰 소거 블록 카운트를 갖는 소거 블록을 포함하는 풀은 최대빈도 소거 블록표이며, 이것에 대해서는 후술한다. 바로 소거된 블록의 소거 카운트는 1 만큼 증가하여 카운트의 값에 따라서 최소빈도 소거 블록표나 최대빈도 소거 블록표에 저장된다.
도 2를 참조하면, 소거 카운트 (214)와 같은 소거 카운트는 초기화 요청 동안에 액세스된다. 초기화를 요청하는 경우로는, 예를 들면 내장형 플래시 메모리를 포함하는 시스템에 전원이 공급될 때, 시스템 내에서 예비 블록의 동작성능이 저하될 때, 사용자가 블록 할당의 균형을 요청할 때, 사용자가 블록 사용을 보다 균일하게 할 것을 요청할 때 등을 들 수 있다. 도 3은 본 발명의 일실시예 따른 것으로서, 플래시 메모리 시스템에 대하여 초기화 요청을 처리하기 위한 단계를 예시하는 흐름도이다. 일반적으로 초기화 요청은 사용자에 의해서 초기화되거나 또는 플래시 메모리 시스템과 관련된 제어기에 의해 자동으로 초기화되며, 이는 주기적이거나 또는 트리거 조건이 충족될 때 발생한다. 초기화 요청에 대해 응답하는 프로세스(300)는 초기화 요청을 효과적으로 수신하는 단계(304)에서 시작된다. 초기화 요청은 제어기 또는 초기화되는 플래시 메모리와 통신하는 프로세서에 의해 수신된다. 이러한 요청은 예를 들면 전원 공급시 또는 블록 할당에 대해 균형을 잡을 때 호스트를 통해 사용자에 의해 이루어질 수 있다.
초기화 요청이 수신되면, 단계(306)에서 평균 소거 카운트가 얻어진다. 일 실시예에서, 평균 소거 카운트는 시스템과 관련된 NAND 메모리에 기입되는 소거 카운트 블록에 저장된다. 각각의 블록의 소거 카운트와 평균 소거 카운트를 포함하는 소거 카운트 블록(ECB)가 플래시 메모리 블록에 저장된다. 소거 카운트 블록이 생성될 때, 예를 들면 시스템이 초기에 포맷될 때, 표에서 평균 소거 카운트와 각각의 블록의 소거 카운트는 통상 제로값으로 초기화된다. 소거 카운트 블록은 도 8a을 참조로 아래에 설명한다. 평균 소거 카운트가 얻어진 이후, 시스템 내의 거의 모든 블록에 대한 소거 카운트가 얻어진다. 도 2를 참조로 상기 설명된 바와 같이, 데이터를 포함하는 특정 블록에 대한 소거 카운트가 상기 블록과 관련된 리던던트 영역에 저장된다. 따라서, 데이터를 포함하는 모든 블록에 대한 소거 카운트를 얻는 단계는 각각의 블록과 관련된 리던던트 영역을 액세스하고, 소거 카운트 블록에 각각의 소거 카운트를 저장하는 단계를 포함한다.
초기화 요청에서, 소거 블록의 소거 카운트는 플래시 메모리로부터의 소거 카운트 블록으로부터 얻어진다. 임의의 주어진 시간에서, 블록은 최대빈도 소거 블록표, 최소빈도 소거 블록표, 소거 카운트 블록, 또는 블록 맵핑표에 포함된다. 연관된 소거 카운트를 가진 플래시 메모리내의 모든 물리적 블록들의 소거 카운트는 플래시 메모리의 소거 카운트 블록에 저장될 수 있다. 데이타를 포함하는 블록의 소거 카운트는 블록 매핑표에 속하고 리던던트 또는 오버헤드 영역에 저장된다. 블록 매핑 표에 속하는 소거 블록의 소거 카운트는 블록이 결코 효과적으로 사용되지 않기 때문에 제로 소거 카운트를 가진다. 최소빈번 소거 블록표 또는 최대 빈번 소거 블록표의 블록들로부터 소거 카운트들을 얻는 것은 소거 블록의 수 및 그것의 소거 카운트 모두를 일반적으로 포함한다. 초기화 요청의 처리의 완료후, 소거 카운트 블록은 일반적으로 모든 블록들의 현재 소거 카운트로 업데이트된다.
단계(320)에서, 블록 맵핑표는 시스템 메모리, 예를 들면 호스트 시스템 메모리에 할당된다. 이미 공지된 바와 같이, 블록 맵핑표는 논리 블록 어드레스(LBA : Logic Block Address)와 물리적 블록 어드레스(PBA Physical Block Address) 사이에 맵핑을 제공한다. 또한, 최대빈도 소거 블록표 및 최소빈도 소거 블록표는 단계(320)에서 할당된다.
최대빈도 소거 블록표는 통상적으로 최대빈도로 소거된 소거 블록과 관련된 정보를 효과적으로 유지할 수 있는 크기로 구성된다. 즉, 최대빈도 소거 블록은 시스템에서 최대 소거 카운트와 함께 이 블록에 속하는 예를 들면 소거 카운트, 맵핑 정보 등을 유지하도록 구성된다. 유사하게, 최소빈도 소거 블록표는 일반적으로 일정 크기를 가지거나 최소 소거 카운트와 함께 이 소거 블록에 포함된 정보를 수용하도록 구성된다. 최대빈도 소거 블록표의 크기와 최소빈도 소거 블록표의 크기는 매우 다양하지만, 이들 크기는 최대빈도 소거로서 지정된 블록의 개수와 최소빈도 소거로서 지정된 블록의 개수에 의존한다. 통상 최대빈도 소거 블록표는 최소빈도 소거 블록표 보다 적은 수의 소거 블록에 대한 정보를 수용하는 크기를 갖는다. 예를 들면, 최대빈도 소거 블록표는 약 18개의 소거 블록에 대한 정보를 수용하는 크기인 반면, 최소빈도 소거 블록표는 약 17개의 소거 블록에 대한 정보를 수용하는 크기이다. 선택적으로 최대빈도 소거 블록표가 약 10개의 소거 블록에 대한 정보를 수용하는 크기인 반면, 최소빈도 소거 블록표가 약 15개의 소거 블록에 대한 정보를 수용하는 크기가 될 수도 있다.
단계(320)에서 표가 할당된 후, 단계(324)에서 소거 블록이 식별된다. 이후, 단계(328)에서 "N" 개의 소거 블록은 최대빈도 소거 블록에 할당되고, 필수적으로 최대빈도 소거 블록표에 할당된다. 일 실시예에서, "N" 소거 블록은 모든 소거 카운트와 비교하여 결정되는 최대 소거 카운트를 갖는 "N"소거 블록이다. 이와는 달리 최대빈도 소거 블록표에 저장되는 "N"소거 블록을 단계(306)에서 얻어진 평균 소거 블록과 비교하여 결정할 수도 있다. 예를 들면, "N"소거 블록은 최소한 소정의 백분율, 예를 들면 평균 소거 카운트 보다 높은 약 25%의 소거 카운트를 갖는 "N" 소거 블록이 될 수도 있다.
일단 최대빈도 소거 블록표가 유효하게 많아지면, "M" 소거 블록이 식별되어, 유효하게 단계(332)에서 최소빈도 소거 블록표에 할당된다. "M"소거 블록은 일반적으로 시스템과 관련된 모든 소거 블록 중에서 최소 소거 카운트를 갖는 "M"소거 블록이거나, 평균 소거 카운트 보다 낮은 최소한의 백분율의 소거 카운트를 갖는 "M"소거 블록일 수도 있다. "M" 소거 블록은 적절히 블록 맵핑표에 할당된 유효 예비 블록이다.
나머지 소거 블록, 즉, 최소빈도 소거 블록표 또는 최대빈소 소거 블록표에 할당되지 않은 소거 블록은 단계(336)에서 "비소거" 블록과 함께 블록 맵핑표에 할당된다. 즉, 나머지 소거 블록과 관련된 리던던트 영역 이외의 데이터를 포함하는 블록은 블록 맵핑표와 관련된 것이다.
블록 맵핑표, 최소빈도 소거 블록표, 최대빈도 소거 블록표에서 예를 들면 대응 블록에 속하는 소거 카운트와 맵핑 정보가 효과적으로 많아지면, 평균 소거 카운트를 단계(338)에서 결정한다. 평균 소거 카운트를 결정하는 것은 통상 단계 (308)에서 얻어지는 개별 블록의 소거 카운트를 합산하고, 전체 블록의 수로 상기 합을 나누는 과정이 포함된다.
단계(338)에서 계산되는 평균 소거 카운트는 시스템과 관련된 소거 카운트 블록에 저장된다. 전술한 바와 같이, 평균 소거 카운트는 시스템에 관련된 NAND 메모리로 기입된 소거 카운트 블록에 저장된다. 평균 소거 카운트를 소거 카운트 블록에 저장하면, 정적(static) 블록, 즉 데이터를 포함하고 상대적은 낮은 연관관계의 소거 카운트를 갖는 블록이 단계(342)에서 처리된다. 정적 블록을 처리하는 방법에 관한 단계를 도 4와 함께 이하에서 설명한다. 일단 정적 블록이 처리되면, 초기화 요청을 처리하는 공정이 완료된다.
플래시 메모리와 관련된 블록 그룹 내에는, 임의의 주어진 시간에서, 사용자 데이터와 같은 데이터를 포함하는 블록 및 소거된 블록이 있다. 데이터를 포함하는 블록의 일부는 "정상" 블록으로 간주될 수 있고, 그 밖의 블록은 정적 블록으로 간주될 수 있다. 정적 블록은 거의 변화가 없는 데이터를 저장하는 블록이다. 즉, 정적 블록은 거의 소거되지 않는다. 통상적으로 정적 블록은 플래시 메모리에 저장된 상대적으로 오래된 서류, 실행가능 프로그램 또는 운영체계 등과 관련이 있다. 정적 블록은 일반적으로 플래시 메모리 내에서 블록의 대부분에 대한 소거 카운트 보다 낮은 소거 카운트를 갖는다. 일 실시예에서, 블록의 소거 카운트가 특정 백분율, 예를 들면 플래시 메모리 시스템에 관련된 평균 소거 카운트의 약 20% 이하이면, 데이터를 포함하는 블록을 정적 블록으로 간주할 수 있다.
정적 블록이 변화가 거의 없는 데이터를 포함하기 때문에, 정적 블록에 포함된 데이터는 상대적으로 높은 소거 카운트를 갖는 블록으로 복사된다. 즉, 특정 물리적 블록의 콘텐츠가 상대적으로 정적(static)이고, 이에 따라 일반적으로 변화가 없으면, 콘텐츠는 상대적으로 높은 소거 카운트를 갖는 다른 물리적 블록으로 재할당되고, 상대적으로 낮은 소거 카운트를 갖는 원래의 물리적 블록은 보다 빈번히 변화하는 콘텐츠를 저장할 수 있도록 한다. 도 4를 참조하면, 정적 블록을 처리하는 것과 관련된 단계, 즉 도 3의 단계(342)를 본 발명의 실시예에 따라서 설명한다. 시스템의 정적 블록을 처리하는 프로세스(342)는 단계(404)에서 시작하며, 여기서는 비소거 블록, 예를 들면 블록 "A"가 액세스된다. 블록 "A"의 소거 카운트가 일단 액세스되면, 단계(408)에서 비소거 블록"A"의 소거 카운트가 시스템과 관련된 평균 소거 카운트에 비해 매우 낮은가의 여부를 결정한다.
비소거 블록 "A"의 소거 카운트가 평균 소거 카운트에 비해 낮은가에 대한 결정은 적절한 기준에 따라 이루어지는 것이지만, 본 발명의 일 실시예에 따르면, 이 결정을 블록" A"의 소거 카운트가 평균 소거 카운트의 일부분 값보다 낮은 값을 가지는가의 여부를 기준으로 행해질 수도 있다. 예를 들면, 소거 카운트가 평균 소거 카운트의 소정의 백분율보다 낮을 때 블록 "A"의 소거 카운트를 낮은 것으로 간주할 수도 있다.
단계(408)에서, 블록 "A"의 소거 카운트가 평균 소거 카운트에 비해 매우 낮지 않은 것으로 결정되면, 블록 "A"는 정적 블록일 가능성이 거의 없다는 것을 의미한다. 블록 "A"가 그 소거 카운트가 매우 낮은 것으로 간주되지 않아도 여전히 정적 블록이며, 이 경우 블록 "A"의 소거 카운트는 블록 "A"와 다른 블록을 교환하도록 트리거하지 않는다. 따라서, 정적 블록을 처리하는 프로세스가 된다.
이와는 달리, 단계(408)에서, 블록 "A"의 소거 카운트가 평균 소거 카운트에 비해 매우 낮은 것으로 결정되면, 블록 "A"의 콘텐츠는 상대적으로 높은 소거 카운트를 갖는 블록에 기입되어 낮은 소거 카운트를 갖는 블록 "A"는 상대적으로 빈도가 높게 변화하는 데이터를 저장하는데 자유롭다는 것을 의미한다. 즉, 블록 "A"의 소거 카운트가 평균 소거 카운트에 비해 매우 낮다는 의미는 블록 "A"가 정적 블록이라는 것을 의미한다. 이처럼, 프로세스 흐름은 단계(408) 내지 단계(412)로 이동하며 블록 "A"가 정적 블록이라는 것을 식별한다. 블록 "A"가 정적 블록으로 일단 인식되면, 단계(416)에서 최대빈도 소거 블록표에 의해 식별되는 최대빈도 소거 블록 그룹으로부터 한 블록, 예를 들면 블록 "B"가 얻어진다.
블록 "B"가 얻어지면, 단계(420)에서 블록 "A"의 콘텐츠는 블록 "B"로 복사된다. 즉, 블록 "A"에 포함된 사용자 데이터는 단계(420)에서 블록 "B"로 복사된다. 블록 "A"의 콘텐츠가 블록 "B"로 복사되면, 블록 "A"는 단계(424)에서 소거된다. 통상적으로, 블록 "A"가 소거될 때, 블록 "A"와 관련된 소거 카운터가 증가한다. 단계 (428)에서 한 블록, 예를 들면, 블록 "C"는 최소빈도 소거 블록 그룹으로부터 최대빈도 소거 블록 그룹으로 이동하여 블록 "C"의 연관성을 최소빈도 소거 블록표로부터 최대빈도 소거 블록표로 이동시킬 수도 있다. 즉, 블록 "C"는 최소빈도 소거 블록표와의 연관성을 없애고 최대빈도 소거 블록표와 관련된다. 이러한 이동을 통해 최소빈도 소거 블록표에서의 공간이 효과적으로 개방되어 낮은 소거 카운트를 갖는 블록 "A"를 수용할 수 있으며, 이에 따라서 블록 "A"는 시스템에서 최소빈도 소거 블록 중 하나가 된다. 통상 블록 "C"는 최소빈도 소거 블록표에서 최대 소거 카운트를 갖는 블록이다.
최소빈도 소거 블록 그룹으로부터 블록 "C"를 이동시키거나, 최소빈도 소거 블록표로부터 블록 "C"를 이탈시키면, 프로세스 흐름이 단계(428)로부터 단계(432)로 이동하며, 여기서 블록 "A"가 블록 맵핑표로부터 최소빈도 소거 블록표로 이동한다. 이후 단계(434)에서 블록 "A"에 앞서 포함되었던 콘텐츠를 포함하는 블록 "B"가 블록 맵핑표와 연관을 맺는다. 당 분야의 통상의 기술자라면 이해할 수 있는 바와 같이, 블록 "B"를 블록 맵핑표로 이동시키는 것은 전형적으로 블록 "A"와 연관되었던 논리 블록 어드레스의 맵핑을 갱신하여 현재 블록 "B"와 관련된 것으로 하는 과정을 포함한다. 블록 "C"에 속하는 정보가 최대빈도 소거 블록표에 존재하고, 블록 "B"에 포함된 정보는 블록 맵핑표에 존재하고, 블록 "A"에 포함된 정보는 최소빈도 소거 블록표에 존재할 때, 정적 블록을 처리하는 프로세스가 완료된다. 프로세스(342)는 실질적으로 시스템과 관련된 모든 정적 블록이 식별되고 처리될 때까지 반복된다.
초기화 요청이 전체 플래시 메모리 시스템에 송신될 때, 일반적으로, 블록 맵핑표, 최소빈도 소거 블록표, 최대빈도 소거 블록표가 시스템 메모리, 예를 들면 도 1a의 RAM(112)에서 생성된다. 표를 생성하기 위해서는 이 표를 수용하는 공간이 먼저 시스템 메모리에서 할당되어야 한다.
상기한 바와 같이, 블록 맵핑표, 최소빈도 소거 블록표, 최대빈도 소거 블록표가 평균 소거 카운트와 같이 시스템 메모리에서 생성된다. 각각의 평균 소거 카운트와 각각의 블록의 소거 카운트 또한 소거 카운트 블록에 기입된다. 도 5a는 본 발명의 일실시예에 따른 시스템 메모리의 블록도이다. 시스템 메모리(454) 및 플래시 메모리(460)는 전체 시스템에 포함되며, 예를 들면 메모리 카드의 부품이나 호스트 장치의 부품이 될 수도 있으며, 호스트 장치에 NAND 메모리와 같은 플래시 메모리(460)가 내장된다. 시스템 메모리(454)는 블록이 관련된 블록 맵핑표(462)를 저장한다. 통상적으로, 블록 맵핑표(462)는 플래시 메모리(460)와 관련된 물리적 블록와 LBA를 연관시키기 위해 사용된다.
또한, 시스템 메모리(454)는 최소빈도 소거 블록표(462)와 최대빈도 소거 블록표(470)를 유지하며, 이들 표는 블록 맵핑표(462)와 같이 일반적으로 초기화 요청에 따라서 형성된다. 플래시 메모리(460) 내에서 블록의 평균 소거 카운트를 유지하도록 작용하는 평균 소거 카운트(474)는 전체 플래시 메모리가 포맷될 때 생성된다. 일실시예에 따르면, 소거 카운트 블록(480)은 플래시 메모리(460) 내에서 모든 블록(465)의 소거 카운트를 포함하도록 구성된다. 초기화 요청이 만들어질 때마다, 갱신된 평균 소거 카운트가 계산되어 소거 카운트 블록(480)에 저장된다.
도 5b는 본 발명의 일 실시예로서, "정상" 블록 그룹과 최소빈도 소거 블록 그룹, 최대빈도 소거 블록 그룹을 나타낸 개략도이다. 블록 그룹(502)에 포함된 블록(514)은 일반적으로 사용자 데이터를 포함하는 정상 또는 정적 블록이거나, 소거가 되었지만 최대빈도 소거 블록 또는 최소빈도 소거 블록이 아닌 것이 될 수 있다. 최소빈도 소거 블록 그룹(506)은 일반적으로 전체 시스템 내에서 소거 블록의 최소 소거 카운트를 갖는 블록(518)을 포함하며, 최대빈도 소거 블록 그룹(510)은 일반적으로 전체 시스템 내에서 최대 소거 카운트를 갖는 블록(522)을 포함한다. 일반적으로, 블록(518)은 예비 블록으로 사용된다.
블록(514)이 소거될 때, 소거 블록(514)이 상대적으로 낮은 소거 카운트를 갖는가 또는 상대적으로 높은 소거 카운트를 갖는지가 결정된다. 소거 블록(514)이 상대적으로 낮은 소거 카운트를 가지면 소거 블록(514)은 최대빈도 소거 블록그룹(506)에 부가된다. 반대로, 소거 블록(514)이 상대적으로 높은 소거 카운트를 가지면, 소거 블록(514)은 최대빈도 소거 블록 그룹(510)에 재할당된다.
임의의 크기를 갖는 최대빈도 소거 블록 그룹(506)은 소트된 그룹일 수도 있다. 즉, 블록(518)은 실질적으로 소거 카운트를 기초로 소트된다. 이 소트작업은 통상적으로 블록(518)과 관련된 엔트리를 포함하는 대응 최소빈도 소거 블록표(미도시)에 반영된다. 예를 들면, 신규 블록(518)이 최소빈도 소거 블록(506)의 그룹으로 이동 또는 부가되거나 또는 이 그룹과 연관될 때마다, 블록(518)은 필수적으로 소거 카운트를 근거로 소트되어, 최소주파수 소거 블록(506)의 그룹에서 최소빈도 소거 블록(518)은 예를 들면 그룹(502)으로 재할당되는 다음 블록(518)이 되도록 한다. 즉, 데이터를 복사할 신규 블록이 필요할 때 블록(518)의 최소 소거 블록(518)은 최소빈도 소거 블록표를 이용하여 식별하며, 최소빈도 소거 블록 그룹(506)으로부터 취한다. 통상적으로, 필요없는 데이터가 포함된 블록(514)이 소거될 때, 이 블록(514)은 최소빈도 소거 블록 그룹(506)에 저장되며, 최소빈도 소거 블록표는 이에 따라서 갱신된다, 즉 부가된 블록에 대응하는 엔트리가 최소빈도 소거 블록표에 포함된다.
최소빈도 소거 블록 그룹(506)에 저장된 블록(518)과 같이 최대빈도 소거 블록 그룹(510)에서의 블록(522)은 소거 카운트에 기초하여 소트된다. 이 소트작업은 통상 블록(522)을 식별하는데 사용되는 최대빈도 소거 블록표(미도시)에서 엔트리를 소팅하는 것에 의해 수행된다. 본 발명의 일실시예에 따르면, 블록(522)과 관련된 평균 소거 카운트를 산출할 수 있다, 즉, 최대빈도 소거 블록 그룹(510)을 위한 평균 소거 카운트를 결정할 수 있다. 그룹(502)으로부터 블록(514)이 소거될 때, 그리고 소거 블록(514)의 소거 카운트가 소정의 백분율만큼 예를 들면 약 20% 이상 최대빈도 소거 블록(514)의 그룹을 위한 평균 소거 카운트를 초과할 때, 소거 블록(514)은 최대소거 블록 그룹(510)에 부가된다. 신규 블록(522)이 최대빈도 소거 블록 그룹(510)에 부가될 때, 최대빈도 소거 블록 그룹(510) 내에 최소 소거 카운트를 갖는 블록(522)이 그룹(502)에 재할당된다. 이러한 재할당은 통상 연관 블록 맵핑표, 최소빈도 소거 블록표, 최대빈도 소거 블록표(미도시)를 갱신하여 반영한다.
그룹(502)에 포함된 블록(514)이 소거 또는 갱신될 때, 그룹(502)과 최소빈도 소거 블록(506) 및 최대빈도 소거 블록 그룹(510) 간의 교환 또는 갱신이 발생한다. 이와는 달리, 불록간의 교환 또는 갱신을 그룹(502)에서 예비 블록 사용을 위해 할당할 필요가 있을 때마다 수시로 행할 수도 있다. 본 발명의 일 실시예에 따라서 도 6을 참조하여 더욱 균일하게 블록을 마모시킬 수 있도록 내장된 플래시 메모리를 갖는 호스트 시스템과 같은 전체 메모리 시스템에서 블록의 교환 또는 갱신을 행하기 위한 방법을 설명한다. 블록 교환 또는 갱신을 행하기 위한 프로세스(600)를 단계(604)에서 시작하며, 여기서 블록, 예를 들면 블록 "Y"가 블록 맵핑표에서 얻어지거나 그렇지 않으면 블록 맵핑표를 이용하여 식별된다. 얻어진 블록은 콘텐츠를 복사 또는 갱신하기 위해 블록 맵핑표로부터 효과적으로 교환되는 블록이다.
블록 "Y"가 일단 얻어지면, 단계(608)에서 예를 들면 블록 "X"가 최소빈도 소거 블록표로부터 얻어진다. 즉, 예비 블록이 최소빈도 소거 블록표를 이용하여 최소빈도 소거 블록의 그룹으로부터 얻어져 적절한 예비 블록을 식별한다. 일반적으로 블록 "X"는 최소빈도 소거 블록의 그룹에서 최소 소거 카운트를 갖는 블록이지만 최소빈도 소거 블록의 그룹과 관련된, 즉 최소빈도 소거 블록표와 관련된 임의 블록일 수도 있다. 블록 "Y"에 저장된 데이터 콘텐츠 또는 블록 "Y"의 원본 콘텐츠를 대체할 신규 콘텐츠를 단계(612)에서 블록 "X"에 복사할 수도 있다.
블록" Y"의 콘텐츠가 블록 "X"에 복사된 후, 블록 "X"는 단계(616)에서 블록 맵핑표로 이동하거나 또는 이 블록 맵핑표와 관련된다. 즉, 블록 "Y" 및 블록 "X"와 관련된 맵핑이 효과적으로 갱신되어 블록 "Y"에 미리 맵핑된 LBA가 블록 "X"로 재맵핑된다. 블록 "X"가 블록 맵핑표로 이동할 때, 블록 "Y"는 단계(620)에서 소거 된다. 즉, 블록 "Y"에 저장된 예를 들면 사용자 콘텐츠 같은 데이터 콘텐츠는 임의의 적절한 기술을 이용하여 소거된다. 블록 "Y"와 관련된 예비 영역에 저장된 소거 카운트는 이후 단계(624)에서 증가하여 블록 "Y"가 다시 한번 소거되었음을 표시한다. 본 발명의 일 실시예에 따르면 소거 카운트 블록에 유효하게 저장된 "Y"를 위한 소거 카운트는 갱신될 수 있음을 알 수 있다.
단계(628)에서, 최대빈도 소거 블록표에서 최소 소거 카운트를 갖는 블록을 식별한다. 상술한 바와 같이, 본 발명의 일 실시예에 따르면, 최대빈도 소거 블록표에서 기준으로 참조하는 블록은 그 각각의 소거 카운트에 따라서 소트된다. 블록을 소트하는 것에는 블록의 소거 카운트에 따라서 최대빈도 소거 블록표 내에서 참조기준을 블록에 위치시키는 과정을 포함한다. 따라서, 최소 소거 카운트를 갖는 블록을 식별하는데에는 최소 소거 카운트와 함께 블록 참조기준을 수용하도록 구성된 최대빈도 소거 블록 내에서 블록 참조기준을 액세스하는 과정을 포함한다.
최대빈도 소거 블록표에서 참조 기준된 최소 소거 카운트를 갖는 블록이 일단 식별되면, 프로세스 흐름은 단계(628)에서 단계(632)로 이동하며, 단계(632)에서 최대빈도 소거 블록표에서 참조된 최소 소거 카운트를 갖는 블록의 소거 카운트보다 블록 "Y"의 소거 카운트가 큰가의 여부를 결정한다. 블록 "Y"의 소거 카운트가 최대빈도 소거 블록표에서 참조된 최소 소거 카운트를 갖는 블록의 소거 카운트 보다 크지 않다고 결정되면, 블록 "Y"가 빈번히 소거된 것이 아니라고 표시한다. 따라서, 프로세스 흐름은 단계(632)에서 단계(636)로 진행하며, 이 단계(636)에서 블록 "Y"는 최소빈도 소거 블록으로 이동하고 유효하게 최소빈도 소거 블록표로 이동하며, 다시 말하면 블록 "Y"에 대응하는 엔트리가 최소빈도 소거 블록표에 부가된다. 본 발명의 일 실시예에 따르면, 최소빈도 소거 블록의 그룹으로 블록 "Y"를 이동시키는 과정은 각 블록의 소거 카운트를 이용하여 최소빈도 소거 블록표에서 모든 블록참조기준을 재소팅하는 과정을 포함한다. 블록 "Y"가 최소빈도 소거 블록표로 이동한 이후, 블록을 교환 또는 갱신하는 프로세스를 완료한다.
단계(632)에서 블록 "Y"의 소거 카운트가 최대빈도 소거 블록표와 관련된 최소소거 카운트를 초과하였다고 판단하면, 블록 "Y"은 최대빈도 소거 블록 그룹과 최대빈도 소거 블록표로 이동해야 한다고 표시한다. 최대빈도 소거 블록표에서 참조기준이 되는 블록 "Y"를 위한 공간을 위해, 예를 들면 최대빈도 소거 블록표에 참조기준이 되는 최소소거 카운트를 갖는 블록을 최대빈도 소거 블록표로부터 제거할 필요가 있다. 이와 같이, 단계(640)에서 최대빈도 소거 블록표에 참조기준이 되는 최소소거 카운트를 갖는 블록을 최소빈도 소거 블록 그룹으로 이동시키는 동시에 최소빈도 소거 블록표로도 이동시킨다. 최소빈도 소거 블록 그룹으로 블록을 이동시키는 단계는 각 블록의 소거 카운트에 따라서 최소빈도 소거 블록표에서 블록 참조기준을 재 소트하는 과정을 포함한다.
최대빈도 소거 블록표에서 최소 소거 카운트를 갖는 블록이 최대빈도 소거 블록표 밖으로 이동한 후, 블록 "Y"는 단계(644)에서 최대빈도 소거 블록표로 이동한다. 본 발명의 실시예에 따르면, 최대빈도 소거 블록으로 또한 최대빈도 소거 블록표로도 블록 "Y"를 이동시키는 단계는 블록 "Y"를 포함하여 각 블록의 소거 카운트에 따라서 최대빈도 소거 블록을 재 소트하는 과정을 포함할 수 있다. 블록 "Y"가 최대빈도 소거 블록표로 이동할 때, 블록의 교환 또는 갱신 프로세스가 완료된다.
일반적으로, 표를 유지하고, 초기화 요청을 처리하며, 마모 레벨링을 수행하는 것, 예를 들면 블록의 교환 또는 갱신에 응답하는 것과 관련된 기능은 소프트웨어, 예를 들면, 프로그램 코드 장치, 또는 호스트 시스템에 위치하는 펌웨어의 형태로 제공된다. 호스트 시스템에 제공되는 소프트 웨어 또는 펌웨어와 관련된 적절한 시스템 구조에 대한 본 발명의 일 실시예를 도 7에 도시한다. 시스템 구조체(700)는 일반적으로 여러 가지 모듈을 포함하며, 이 모듈로는 예를 들어 응용 인터페이스 모듈(704), 시스템 매니저 모듈(708), 데이터 매니저 모듈(712), 데이터 무결성 매니저모듈(716), 장치 매니저 및 인터페이스 모듈(720)을 들 수 있으나, 이것에만 한정되는 것은 아니다. 일반적으로, 시스템 구조체(700)는 소프트웨어 코드 장치 또는 펌웨어를 이용하여 구현될 수 있으며, 이들 소프트웨어 코드 장치 또는 펌웨어는 예를 들면 도 1a의 프로세서에 의해 액세스된다.
일반적으로, 응용 인터페이스 모듈(704)은 호스트, 운영체계, 또는 사용자와 직접 통신하도록 배열될 수 있다. 응용 인터페이스 모듈(704)은 또한 시스템 매니저 모듈(708) 및 데이터 매니저 모듈(712)과도 통신한다. 사용자가 플래시 메모리를 독출, 기입 또는 포맷하기 원할 때, 사용자는 운영체계에 요청을 보내며, 이 요청은 응용 인터페이스 모듈(704)을 통과한다. 응용 인터페이스 모듈(704)은 이 요청을 그 성격에 따라서 시스템 매니저 모듈(708) 또는 데이터 매니저 모듈(712)로 보낸다.
시스템 매니저 모듈(708)은 시스템 초기화 서브모듈(724), 소거 카운트 블록 관리 서브모듈(726), 파워 관리 블록 서브모듈(730)을 포함한다. 시스템 초기화 서브모듈(724)은 일반적으로 초기화 요청이 처리될 수 있도록 하고, 전형적으로 소거 카운트 블록 관리 서브모듈(726)과 통신이 가능하다. 본 발명의 일 실시예에 있어서, 시스템 초기화 서브모듈(724)은 블록의 소거 카운트가 갱신되는 것을 가능하게 하며, 실질적으로 최소빈도 소거 블록표와 최대빈도 소거 블록표를 생성하는 역할을 한다.
소거 카운트 블록 관리서브모듈(726)은 개별 소거 카운트를 이용하여 블록의 소거 카운트가 예를 들면 소거 카운트 블록에 저장되도록 하는 기능과, 평균 소거 카운트가 산출 및 갱신되도록 하는 기능이 있다. 즉, 소거 카운트 블록 관리 서브모듈(726)은 소거 카운트가 범주화되는 것을 가능하게 할 뿐만 아니라 평균 소거 카운트를 저장하는 작용을 한다. 또한, 본 발명의 일실시예에 따르면, 소거 카운트 블록 관리 서브모듈(726)은 전체 시스템의 초기화 요청 중에 소거 카운트 블록의 거의 모든 블록의 소거 카운트를 실질적으로 동기화한다. 소거 카운트 블록 관리 서브모듈(726)이 소거 카운트 블록에 평균 소거 카운트를 저장하는 기능이 있지만, 파워 관리 블록 서브모듈(730)은 대신 평균 소거 카운트가 저장될 수 있도록 한다.
응용 인터페이스 모듈(704)과 통신하는 것 외에도, 시스템 매니저 모듈(708)은 또한 데이터 매니저 모듈(712)뿐만 아니라 장치 매니저 및 인터페이스 모듈(720)과도 통신할 수 있다. 시스템 매니저 모듈(708)과 응용 인터페이스 모듈(704) 모두와 통신하는 데이터 매니저 모듈(712)은 페이지 또는 블록 맵핑을 제공하는 기능을 가질 수 있다. 데이타 관리 모듈(712)은 또한 운영체계 및 파일 시스템 인터페이스 층과 관련된 기능도 가질 수 있다.
시스템 매니저 모듈(708), 데이터 매니저(712), 데이터 보존 매니저(716)와 통신하는 장치 매니저 및 인터페이스 모듈(720)은 플래시 메모리 인터페이스를 제공하며, 예를 들면 I/O 인터페이스와 같은 하드웨어 추상화와 관련된 기능을 포함한다. 데이터 보존 매니저 모듈(716)은 다른 기능 중에서도 특히 ECC 핸들링 기능을 제공한다.
상기한 바와 같이, 비휘발성 메모리 시스템에서 각 블록을 위한 소거 카운트는 소거 카운트 블록에 저장될 수 있으며, 이 블록은 비휘발성 메모리 시스템과 관련된 시스템 또는 NAND 메모리에 저장된 반전 블록이다. 소거 카운트 블록은 또한 각 블록의 소거 카운트 외에도 평균 소거 카운트를 포함한다. 도 8a는 본 발명의 일실시예에 따른 소거 카운트 블록을 나타낸 개략도이다. 소거 카운트 블록(800)은 일반적으로 이 블록이 포함된 전체 비휘발성 시스템 내에서 각 블록, 즉 물리적 블록에 대한 특정 개수의 비트를 포함할 정도의 크기를 갖는다. 각 블록에 할당된 비트의 개수는 한 블록을 위한 전체 소거 카운트가 할당된 비트에 수용될 정도에서 선택한다. 본 발명의 일실시에 따르면, 소거 카운트 블록(800)은 각 블록 당 3개 바이트를 포함하며, 이 3개의 바이트이면 일반적으로 약 십만 차순으로 소거 카운트를 수용하기에 충분한 정도가 된다. 각 블록 당 3개의 바이트가 할당될 때, 블록 당 64페이지를 갖는 대략 2048 블록을 포함하는 512Mb 시스템에서 소거 카운트 블록(800)은 12페이지, 예를 들면 약 6000 바이트를 포함하는 크기가 된다.
소거 카운트 블록(800)이 포함하는 페이지(810)는 당 분야의 통상의 기술자라면 알 수 있는 바와 같이 소거 카운트와 같은 데이터를 저장하는데 사용되는 약 512 바이트를 포함한다. 도시한 바와 같이, 제 1 페이지(810a)는 블록' 0' 내지 '169'을 위한 소거 카운트 엔트리를 포함하고, 제 2 페이지(810b)는 블록' 170' 내지 '339'를 위한 소거 카운트 엔트리를 포함한다. 블록 '1', 즉 물리적 블록 '1'에 대한 소거 카운트가 기입 또는 판독될때, 3 내지 5 페이지(810a)의 바이트들은 액세스되는데, 왜냐하면 도 8b 및 8c에 관련하여 하기될 바와같이 블록 '1'에 대응하는 소거 카운트 엔트리를 포함하도록 3 내지 5의 제 1 페이지(810a)의 바이트들이 배열되기 때문이다.
페이지(810)를 포함하는 것 외에도, 소거 카운트 블록(800)은 이 블록 내의 임의 장소에 위치하는 헤더(820)를 포함한다. 헤더(820)(도 9를 참조하여 하기에 설명함)는 소거 카운트 블록(800)의 한 페이지이며, 페이지(810)에 저장된 소거 카운트와 관련된 블록을 포함하는 비휘발성 플래시 메모리에 관한 정보를 포함한다.
도 8b는 본 발명의 일 실시예에 따른 것으로서, 소거 카운트 블록 내의 한 페이지, 예를 들면 도 8a의 소거 카운트 블록(800)의 페이지(810a)의 구조를 나타낸 도면이다. 페이지(810a)는 약 170 물리적 블록에 대응하는 엔트리(830)를 유지한다. 도시한 바와 같이 엔트리(830)에서 블록을 위한 소거 카운트는 페이지(810a)에서의 제1엔트리(830a)가 블록'0'을 위한 소거 카운트를 포함하고, 제2엔트리(830b)는 블록'1'을 위한 소거 카운트를 포함하도록 되어 있다. 페이지(810a)에서의 최종 엔트리(830d)는 블록'169'를 위한 소거 카운트를 유지한다.
각 엔트리(830)는 실질적으로 동일한 개수의 바이트를 포함한다. 도 8c에 도시한 바와 같이, 블록'0'에 대응하는 엔트리(830a)는 페이지(810a)에서 바이트 0 내지 2이며, 블록'2'에 대응하는 엔트리(830c)는 페이지(810a)에서 바이트 6 내지 8이다. 앞에 설명한 바와 같이, 각 엔트리(830)는 약 3 바이트를 포함하지만, 페이지 810a에서 엔트리(830)의 개수는 다양할 수 있다. 예를 들면, 본 발명의 일실시예에 따라서 각 엔트리(830)는 약 4개의 바이트를 포함할 수도 있다.
페이지(810a)에서의 각 엔트리(830)가 소거 카운트를 포함하고 있지만, 엔트리(830)는 소거 카운트를 필수적으로 포함할 필요는 없다. 예를 들면, 제조상 또는 공장측의 결함으로 인해 특정 블록을 사용할 수 없어 기입 또는 독출이 되지 않을 때, 이 블록은 동일한 소거 카운트를 가질 수 없다. 도 8a의 소거 카운트 블록(800)과 같은 소거 카운트 블록은 사용불가능 블록을 위한 소거 카운트가 포함된 엔트리를 가지고 있지 않다. 소거 카운트를 유지하는 대신에 사용불가능 블록을 위한 엔트리(830)는 블록이 사용불가능하다는 것을 식별하는 표시기나 마킹을 유지할 수도 있다.
도 8d는 본 발명의 일 실시예 따른 것으로서, 소거 카운트 블록에서의 페이지, 예를 들면 도 8a의 소거 카운트 블록(800)의 페이지(810a)에 관한 구조를 나타낸 도면이며, 이 페이지(810a)는 특정 블록은 사용불가능하다고 표시하는 엔트리 및 소거 카운트를 포함한다. 블록이 사용가능할 때, 또는 기입 또는 독출이 가능할 때, 블록은 일반적으로 소거 카운트를 가지고 있다. 예를 들면, 페이지(810a)의 엔트리(830a)는 블록'0'에 대응하는 소거 카운트를 포함하며, 블록'0'이 백번 소거되었으면 '100'의 값을 갖게된다. 유사하게 페이지(810a)의 엔트리(830b)는 블록'1'이 30번 소거되었다면 '30'이라는 값을 갖게 된다.
블록'2'가 예를 들어 이 블록'2'에 저장된 마킹을 통해 사용불가능한 것으로 식별되었다면, 블록'2'에 대응하는 페이지(810a)의 엔트리(830c)는 블록'2'는 사용할 수 없다는 것을 표시하는 마킹을 포함한다. 본 발명의 일실시예에 따르면, 엔트리(830c)에서 마킹 'FFFFFF'은 블록'2'가 공장측 결함으로 사용불가능함을 표시한다. 블록의 사용불가능을 표시하는 방법으로는 여러가지 마킹이 사용될 수 있음이 자명하다.
상기한 바와 같이, 본 발명의 일실시예로서 도 8a의 소거 카운트 블록(800)과 같은 소거 카운트블록은 통상 이 블록(800) 내에서의 페이지가 되는 헤드(820)를 포함하며, 이 페이지는 비휘발성 메모리 시스템 내에서 블록에 관한 정보를 포함한다. 도 9를 참조하여, 본 발명의 일실시예에 따른 소거 카운트 블록에 대해서, 구체적으로는 도 8a의 소거 카운트 블록(800)의 헤더(820)를 예로 설명한다. 소거 카운드 블록의 임의 장소에 위치하는 헤더(820)는 정보 저장을 위한 약 512 바이트의 용량을 갖는다. 헤더(820)에 저장된 정보로는 서명(signature)(850a), 분할정보(850b)를 들 수 있다. 비휘발성 메모리의 예비 블록들(850d)의 수에 관한 정보(850d)외에, 비휘발성 메모리의 숨겨진 블록들의 수에 관한 정보(850c)는 헤더(820)에 포함될 수 있다. 정보(850f)는 비휘발성 메모리에 포함된 블록들의 총 수를 포함할 수 있고, 평균 소거 카운트는 헤더(820)의 정보(850g)로서 저장된다. 상기된 실시예에서 비록 평균 소거 카운트가 비휘발성 메모리 시스템의 시스템 메모리 어디에나 저장될 수 있지만, 평균 소거 카운트는 헤더(820)의 정보(850g)로서 저장된다.
일실시예에서, 사용되지 않은 블록들의 총 수에 관한 정보(850e)는 헤더(820)에 포함될 수 있다. 사용되지 않은 블록들의 총 수는 성장하는 결함들을 포함하는 사용되지 않은 블록들의 총 수 및 팩토리 결함들을 포함하는 사용되지 않은 블록들의 총 수를 포함할 수 있다. 헤더(820)는 비록 헤더(820)의 콘텐트들이 일반적으로 폭넓게 가변한다는 것이 인식되지만 부가적인 정보(850b)를 포함할 수 있다. 부가적인 정보(850b)는 제한되지 않지만, 비휘발성 메모리, 예를들어 NAND 플래시 메모리 칩 또는 MLC NAND 플래시 메모리내의 부분의 크기에 관한 정보를 포함할 수 있는 분할 정보(850b)를 포함할 수 있다. 분할 정보는 또한 제한되지 않지만 당업자에 의해 이해될 바와같이 실린더, 헤드 및 섹터 정보를 포함할 수 있다.
헤더(820)가 다른 콘텐트들을 포함할 수 있다는 것이 이해되어야 한다. 예를들어, 헤더(820)는 사용되거나 사용을 위하여 이용할 수 있는 총 이용 가능한 블록들의 수에 속하는 정보를 포함할 수 있다. 선택적으로, 헤더(820)는 팩토리 결함들을 가진 블록들의 수 및 성장하는 결함들을 가진 블록들의 수에 관한 정보를 유지할 수 있다. 헤더(820)에 포함된 다른 콘텐트들은 제한되지 않지만 실질적으로 소거 카운트 블록의 교정 또는 버젼을 식별하도록 배열되는 교정 수를 포함할 수 있다.
소거 카운트 블록을 포함하는 비휘발성 메모리 시스템에 전원이 먼저 공급될 때 일반적으로 소거 카운트 블록이 초기화되거나 생성된다. 즉, 비휘발성 메모리 시스템의 비휘발성 메모리가 먼저 포맷될 때, 통상적으로 소거 카운트 블록이 초기화된다. 도 10은 본 발명의 일실시예 따른 것으로서 비휘발성 메모리 시스템의 비휘발성 메모리가 먼저 초기화될 때 소거 카운트 블록을 초기화하는 방법에 관한 단계를 나타낸다. 프로세스 1000은 단계(1004)에서 시작되며, 여기서 모든 블록, 보다 구체적으로 비휘발성 메모리 시스템 내의 모든 물리적 블록을 검사한다. 블록의 검사 단계는 블록의 콘텐츠를 검사하여 어느 블록이 사용불가능인가를 결정하는 것, 즉 비휘발성 메모리 제조자에 의해 사용할 수 없는 것으로 식별되는 과정을 포함한다. 따라서, 단계(1008)에서 비휘발성 메모리 내에서 사용불가능 블록을 식별한다. 사용불가능 블록을 식별하는데는 예를 들면 'FFFFFF'와 같이 공장측결함을 갖는 블록을 식별하기 위한 특정마킹 등이 갖는 각 블록을 식별하는 과정을 포함한다.
모든 사용불가능 블록이 일단 식별되면, 단계(1012)에서 소거 카운트 블록에 사용불가능 블록을 마크하거나 식별한다. 특정 블록을 사용불가능으로 마크하는 단계는 사용불가능으로 식별된 불록을 보존하기 위한 소거 카운트 블록의 일부분에 특정 마킹 또는 코드를 배치하는 과정을 포함한다. 소거 카운트 블록에서의 사용불가능 블록을 마킹하는 단계는 소거 카운트 블록의 헤더를 갱신하여 비휘발성 메모리 내에서 사용불가능한 전체 개수의 카운트를 포함시키는 과정을 갖는다.
사용불가능 블록이 소거 카운트 블록에 마크될 때, 사용가능 블록, 또는 공장측 결함을 갖지 않으면서 소거가 되지 않는 블록은 단계(1016)에서 초기화된다. 소거 카운트를 초기화하는 단계는 소거가 되지 않은 각 블록의 소거 카운트를 0값으로 설정하는 과정을 포함한다. 블록에 대한 소거 카운트는 블록에 관련된 예비 또는 오버헤드 영역 중 최소한 한 곳 이상에 저장된다. 사용가능 블록, 즉 소거와 소거되지 않은 모두의 사용가능 블록에 대응하는 소거 카운트는 단계(1020)에서 소거 카운트 블록에 설정된다. 통상적으로, 소거 카운트 블록에 저장된 소거 카운트는 0의 값으로 설정되거나 초기화되며, 또한 소거되지 않은 블록의 경우 대응하는 소거되지 않은 블록에 저장된 것과 같은 소거 카운트로 설정되거나 초기화된다. 즉, 소거 블록을 위한 소거 카운트는 일반적으로 블록에 대응하는 위치에서 소거 카운트 블록에 저장된 소거 카운트와 일반적으로 같은 값이다. 소거 카운트가 소거 카운트 블록에서의 엔트리로서 설정되면, 단계(1034)에서 평균 소거 카운트는 소거 카운트 블록에 설정된다. 앞서 설명한 바와 같이, 평균 소거 카운트는 소거 카운트 블록의 헤드에 저장될 수도 있다. 사용가능 블록의 소거 카운트가 모드 0값으로 초기화될 때, 평균 소거 카운트는 초기에 0의 값으로 설정된다. 평균 소거 카운트가 설정된 이후 비휘발성 메모리 시스템에 포함된 비휘발성 메모리를 포맷하는 프로세스가 종료된다.
비휘발성 메모리 시스템 내에서 초기화 프로세스가 처리될 때마다 소거 카운트 블록에서의 엔트리가 갱신된다. 도 11은 본 발명의 일실시예를 나타낸 것으로서, 초기화 요청에 따라서 소거 카운트 블록을 갱신하는 방법을 설명한다. 소거 카운트 블록을 갱신하는 프로세스(1100)는 소거되지않은 사용가능 블록을 획득하는 단계(1108)에서 시작된다. 당분야의 통상의 기술자라면 누구나 알 수 있는 바와 같이, 비소거 사용가능 블록은 일반적으로 데이터를 포함하여 사용중에 있는 블록이다. 단계(1108)에서 소거 카운트 블록에서 비소거 사용가능 블록을 위해 저장된 소거 카운트가 얻어진다. 즉, 비소거 사용가능 블록의 소거 카운트에 대응하는 소거 카운트 블록에서의 엔트리를 독출한다. 단계(1108)에서 얻어진 비소거 사용가능 블록의 소거 카운트를 위한 엔트리가 일단 독출되면, 단계(1116)에서 이 소거 카운트 엔트리가 비소거 사용가능 블록에 저장된 소거 카운트 보다 작은 값을 갖는가를 결정한다.
단계(1116)에서 비소거 사용가능 블록을 위한 소거 카운트 블록에 저장된 소거 카운트 엔트리가 비소거 사용가능 블록에서 저장된 소거 카운트 보다 작다고 결정되면, 소거 카운트 블록에 저장된 소거 카운트 엔트리가 현재 없음을 표시한다. 따라서 프로세스 흐름은 단계(1116)에서 단계(1120)로 이동하며, 이 단계(1120)에서 비소거 사용가능 블록에 대응하는 엔트리로서 소거 카운트 블록에 저장된 소거 카운트가 갱신된다. 소거 카운트 엔트리를 갱신하는 단계는 비소거 사용가능 블록의 현재 소거 카운트를 소거 카운트 블록에 저장하는 과정을 포함한다. 소거 카운트 엔트리가 갱신되면, 단계(1124)에서 처리할 더 이상의 비소거 사용가능 블록이 있는가의 여부를 결정한다.
단계(1124)에서 처리할 많은 비소거 사용가능 블록이 있다고 결정하면, 프로세스 흐름은 단계(1108)로 진행하며, 여기서 다른 비소거 사용가능 블록을 얻는다. 이와는 달리, 모든 비소거 사용가능 블록이 처리되었다고 결정하면, 예를 들어 소거 카운트 블록에서 모든 비소거 사용가능 블록을 위한 소거 카운트 엔트리가 갱신되었다고 결정하면, 단계(1128)에서 비휘발성 메모리 내에서 실질적으로 모든 사용가능 블록의 평균 소거 카운트가 재산출된다. 당분야의 통상의 기술자라면 알 수 있는 바와 같이, 평균 소거 카운트는 소거 카운트 블록에 저장된 모든 소거 카운트를 합산하고, 소거 카운트 블록에 저장된 소거 카운트의 수로 나눔으로써 평균 소거 카운트가 결정될 수 있다. 평균 소거 카운트가 재산출된 후, 단계(1132)에서 재산출된 평균 소거 카운트는 소거 카운트 블록에 저장된다. 앞서 설명한 바와 같이, 평균 소거 카운트는 소거 카운트 블록의 헤더에 저장된다. 평균 소거 카운트가 저장되면, 초기화 요청에 따라서 소거 카운트 블록을 갱신하는 프로세스가 완료된다.
단계(1116)에서, 소거 카운트 블록에서의 소거 카운트 엔트리가 얻어진 비소거 사용가능 블록에 저장된 소거 카운트 보다 크다고 결정되면, 이것은 소거 카운트 블록에서 소거 카운트 엔트리가 갱신되었음을 의미한다. 이에 따라 프로세스 흐름은 단계(1116)에서 단계(1124)로 직접 이동하며, 단계(1124)에서 처리할 더 이상의 비소거 사용가능 블록이 있는가의 여부를 결정한다.
전술한 바와 같이, 블록에 대한 소거 카운트는 블록과 관련된 리던던트 영역 또는 오버헤드 영역 중에서 최소한 하나 이상에 저장된다. 예를 들면, 블록의 소거 카운트가 블록 내에서 최소한 제 1 페이지와 관련된 리던던트 영역에 저장될 수 있다. 그러나, 블록을 소거할 때, 소거 카운트를 포함하는 블록의 모든 콘텐츠가 통상 소거된다. 따라서 사용을 위해 소거 블록을 취할 때, 즉 소거 블록을 최소빈도 소거 블록표와 같은 예비 블록 풀로부터 얻을 때, 소거 블록은 소거 카운트를 포함하지 않는다.
통상적으로, 사용을 위해 예비 블록 풀로부터 얻어진 소거 블록의 소거 카운트는 소거 카운트 블록으로부터 독출된다. 도 12는 본 발명의 일실시예에 따른 것으로서, 예비 블록의 소거 카운트를 얻는 방법과 관련된 단계를 예시하는 프로세스 흐름도이다. 예비 블록의 소거 카운트를 얻기 위한 프로세스(1200)는 단계(1204)에서 여기서 얻어진 예비 블록을 위한 소거 카운트 엔트리가 소거 카운트 블록으로부터 독출된다. 즉, 예비 블록을 위한 소거 카운트에 대응하는 소거 카운트 블록에 저장된 비트가 독출된다. 단계(1208)에서는 소거 카운트 엔트리에서의 비트가 타당한가의 여부를 결정한다. 즉, 예비 블록에 대한 소거 카운트 엔트리에서의 비트가 미리 저장된 소거 카운트를 나타내는가의 여부나 예비 블록에 대한 소거 카운트 엔트리에서의 비트가 다른 어떤 것을 나타내는 가의 여부, 예를 들면, 예비 블록에 대해 성장 결점에 기인하여 이미 유용하지 않은 것으로 비트가 식별되었나의 여부를 결정하게 된다. 단계(1208)에서 소거 카운트 엔트리 또는 소거 카운트 블록으로부터 독출된 소거 카운트가 타당한 소거 카운트가 아니라고 결정하면, 프로세스 흐름은 단계(1208)에서 단계(1212)로 진행하며 이 단계(1212)에서는 소거 블록이 예비 블록 풀로부터 제거된다. 일단 블록이 예비 블록 풀로부터 제거되면, 예비 블록에 대한 소거 카운트를 얻는 과정은 효과적으로 완료된다.
이와는 달리, 단계(1208)에서 예비 블록의 소거 카운트 블록에서 소거 카운트 엔트리의 콘텐츠가 소거 카운트로서 사용하기에 타탕하지 않다고 결정하면, 프로세스 흐름은 단계(1208)에서 단계(1216)로 진행하며, 이 단계(1216)에서는 소거 카운트 엔트리의 콘텐츠를 예비 블록의 소거 카운트로 설정한다. 즉, 예비 블록의 소거 카운트로부터 독출된 소거 카운트가 타당한 소거 카운트이면, 소거 카운트 블록으로부터 독출된 소거 카운트는 예비 블록의 실질적 소거 카운트로서 설정된다. 예비 블록의 소거 카운트가 소거 카운트 블록으로부터 독출된 소거 카운트로 설정된 후 예비 블록의 소거 카운트를 얻기 위한 프로세스가 완료된다.
이상과 같이 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되지 않으며, 그 기술적 사상을 일탈하지 않고도 여러 가지 변형예를 구현할 수 있다. 예를 들면, 소거 카운트 블록의 크기와 이 소거 카운트 블록 내의 헤더의 위치는 필요에 따라 매우 다양할 수 있다. 또한, 소거 카운트 블록에서 헤더의 콘텐츠도 특정 시스템의 요구에 따라서 다양하게 변경할 수 있다.
비휘발성 메모리 시스템은 관련된 메모리 제어기에 의해 제어되거나 호스트 시스템에 연결된 소프트웨어나 펌웨어를 이용하여 제어될 수 있다고 설명하였지만, 소거 카운트 관리를 포함하는 마모 레벨링 프로세스를 비휘발성 메모리 시스템에 적용할 수 있으며, 이 비휘발성 메모리 시스템은 그 외부에 위치하는 제어기와 통신이 가능하다. 제어기를 사용하는 적절한 메모리 시스템은 PC카드, 콤팩트플래시(CompactFlash)카드, 멀티미디어 카드, 보안 디지털 카드, 플래시 메모리와 플래시메모리 제어기를 포함하는 내장형 칩세트 등을 들 수 있으나, 이것에만 국한되는 것은 아니다. 호스트 시스템에 로드된 소프트웨어나 펌웨어를 사용하여 제어되는 메모리 시스템은 내장형 메모리장치를 포함한다. 본 발명의 일실시예에 따르면, 전술한 소거 관리 기술과 소거 카운트 블록관리 기술을 이용하고 메모리 시스템과 관련된 제어기를 사용하지 않는 메모리 시스템은 호스트, 예를 들면 호스트 컴퓨터 시스템과 관련된 제어기를 사용하여 마모 레벨링을 수행할 수 있다. 즉, 호스트는 그 제어기의 사용을 통해 마모 레벨링이 발생하는 메모리를 직접 어드레스하고 관리할 수 있다.
소거 카운트 블록을 일반적으로 다수의 페이지를 포함하는 블록으로 설명하였다. 하지만 시스템 메모리에서의 적절한 데이터 구조를 통해 소거 카운트 및 평균 소거 카운트를 유지할 수도 있다.
본 발명의 일 실시예에 따르면, 소거 카운트 블록은 비휘발성 메모리 시스템 내에서 블록의 소거 카운트에 대응하는 엔트리만을 포함할 수도 있다. 이러한 실시예를 통해, 일반적으로 소거 카운트의 헤더에 포함된 정보를 데이터 구조에 저장하거나, 소거 카운트 블록과는 별도의 블록에 저장할 수도 있다. 즉, 소거 카운트 블록이 상기 블록과 관련된 소거 카운트에 속하는 엔트리만을 포함하도록 구성될 경우에는 평균 소거 카운트와 같은 정보를 소거 카운트 블록에, 보다 구체적으로는 소거 카운트 블록의 헤더에 반드시 저장할 필요는 없다. 이와는 달리, 소거 카운트 블록의 헤더에 저장하는 대신에 평균 소거 카운트를 대신 소거 카운트 블록 내의 임의 장소에 저장할 수도 있다.
일반적으로 상기 여러 가지 프로세스와 관련된 단계와 그 마모 레벨링 방법은 매우 다양하다. 본 발명의 기술적 사상의 범위를 일탈하지 않고도 상기 여러 가지 단계를 부가, 제거, 변경 및 재배열하여 상기 본 발명의 목적을 구현하기 위한 프로세스를 구성할 수 있음은 자명한 것이다. 따라서, 본 발명의 실시예는 단지 예시를 위한 것으로서, 그 기술적 사상이나 다음의 특허청구범위를 일탈하지 않고도 여러 가지 변경 및 변경이 가능하다.

Claims (29)

  1. 다수의 블록들을 포함하는 비휘발성 메모리를 구비하는 비휘발성 메모리 시스템과 연관되는 비휘발성 메모리내에 배열된 데이타 구조로서,
    다수의 블록들중 제 1 블록이 소거되는 다수의 횟수들의 표시를 제공하기 위하여 배열된 제 1 표시기; 및
    상기 다수의 블록들에 관한 정보를 포함하기 위하여 배열된 헤더를 포함하는 데이타 구조.
  2. 제 1 항에 있어서, 제 2 표시기를 더 포함하고, 상기 제 2 표시기는 상기 다수의 블록들중 제 2 블록이 제거되는 다수의 횟수들의 표시를 제공하기 위하여 배열되는 것을 특징으로 하는 데이타 구조.
  3. 제 1 항에 있어서, 제 2 표시기를 더 포함하고, 상기 제 2 표시기는 다수의 블록들의 제 2 블록이 사용되지 못하는 블록인 것의 표시를 제공하도록 배열되는 것을 특징으로 하는 데이타 구조.
  4. 제 3 항에 있어서, 제 2 표시기는 제 2 블록이 팩터 결함인 것을 표시하기 위하여 배열되는 것을 특징으로 하는 데이타 구조.
  5. 제 3 항에 있어서, 상기 제 2 표시기는 제 2 블록이 성장 결함인 것을 표시하기 위하여 배열되는 것을 특징으로 하는 데이타 구조.
  6. 제 1 항에 있어서, 상기 헤더는 평균 소거 카운트를 포함하고, 상기 평균 소거 카운트는 다수의 블록들의 각각의 블록이 소거되는 평균 소거 횟수들을 표시하기 위하여 배열되는 것을 특징으로 하는 데이타 구조.
  7. 제 1 항에 있어서, 상기 헤더는 평균 소거 카운트를 포함하고, 상기 평균 소커 카운트는 다수의 블록들의 각각의 사용 가능한 블록이 소거되는 평균 횟수들을 표시하기 위하여 배열되는 것을 특징으로 하는 데이타 구조.
  8. 제 1 항에 있어서, 상기 비휘발성 메모리는 NAND 플래시 메모리인 것을 특징으로 하는 데이타 구조.
  9. 비휘발성 메모리 시스템은 다수의 물리적 블록들을 포함하는 비휘발성 메모리를 포함하고, 다수의 물리적 블록들의 각각의 물리적 블록은 물리적 블록이 소거되는 다수의 횟수들을 식별하기 위하여 배열된 연관된 식별기를 가지는, 비휘발성 메모리 시스템과 연관된 비휘발성 메모리에 배열된 블록으로서,
    다수의 물리적 블록들의 제 1 물리적 블록에 대한 제 1 식별기를 포함하도록 배열된 제 1 페이지 - 상기 제 1 식별기는 제 1 물리적 블록이 소거되는 다수의 횟수들을 식별하기 위하여 배열됨 -; 및
    카운트를 포함하도록 배열된 제 2 페이지를 포함하고, 상기 카운트는 다수의 물리적 블록들이 소거되는 평균 횟수를 표시하기 위하여 배열되는 블록.
  10. 제 9 항에 있어서, 상기 제 1 페이지는 추가로 다수의 블록들의 제 2 물리적 블록에 대한 제 2 식별기를 포함하도록 배열되고, 상기 제 2 식별기는 제 2 물리적 블록이 소거되는 다수의 횟수들을 식별하기 위하여 배열되는 것을 특징으로 하는 블록.
  11. 제 9 항에 있어서, 상기 제 1 페이지는 실질적으로 다수의 그룹들의 바이트들로 분할되고, 상기 다수의 그룹들의 바이트들의 제 1 그룹은 제 1 식별기를 포함하도록 배열되고, 상기 제 1 그룹의 바이트들은 제 1 물리적 블록과 연관되는 것을 특징으로 하는 블록.
  12. 제 11 항에 있어서, 상기 다수의 그룹들의 바이트들은 대략 1 바이트 및 대략 4 바이트 사이인 것을 특징으로 하는 블록.
  13. 제 11 항에 있어서, 상기 다수의 그룹들의 바이트들중 제 2 그룹의 바이트들은 다수의 물리적 블록들의 제 2 물리적 블록에 대한 제 2 식별기를 포함하도록 배열되고, 상기 제 2 식별기는 제 2 물리적 블록이 소거되는 다수의 횟수를 식별하기 위하여 배열되는 것을 특징으로 하는 블록.
  14. 제 11 항에 있어서, 상기 다수의 그룹들의 바이트들중 제 2 그룹의 바이트들은 하나의 표시를 포함하도록 배열되고, 상기 표시기는 다수의 물리적 블록들중 제 2 물리적 블록이 결함인 것을 표시하도록 배열되는 것을 특징으로 하는 블록.
  15. 제 9 항에 있어서, 제 3 페이지를 더 포함하고, 상기 제 3 페이지는 다수의 물리적 블록들중 제 2 물리적 블록에 대한 제 2 식별기를 포함하도록 배열되고, 상기 제 2 식별기는 제 2 물리적 블록이 소거되는 다수의 횟수들을 식별하기 위하여 배열되는 것을 특징으로 하는 블록.
  16. 제 9 항에 있어서, 상기 제 2 페이지는 헤더이고, 상기 헤더는 추가로 소거 카운트 블록을 식별하기 위하여 배열된 서명을 포함하도록 배열되는 것을 특징으로 하는 블록.
  17. 제 9 항에 있어서, 상기 비휘발성 메모리는 NAND 플래시 메모리인 것을 특징으로 하는 블록.
  18. 비휘발성 메모리 시스템으로서,
    다수의 블록들을 포함하는 비휘발성 메모리;
    시스템 메모리; 및
    다수의 블록들에 포함된 각각의 사용 가능한 블록이 소거되는 다수의 횟수들을 시스템 메모리에 표시하기 위한 수단을 포함하는 비휘발성 메모리 시스템.
  19. 제 18 항에 있어서, 상기 다수의 블록들에 포함된 각각의 블록이 소거되는 평균 횟수들을 시스템 메모리에 표시하기 위한 수단을 더 포함하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  20. 제 19 항에 있어서, 상기 다수의 블록들에 포함된 각각 사용할 수 있는 블록이 소거되는 다수의 횟수들을 시스템 메모리에 표시하기 위한 수단은 상기 다수의 블록들에 포함된 각각의 사용 가능한 블록이 소거되는 횟수들을 시스템 메모리의 데이타 구조에 표시하기 위한 수단을 포함하고, 상기 다수의 블록들에 포함된 각각의 블록이 소거되는 평균 횟수를 시스템 메모리에 표시하기 위한 수단은 다수의 블록들에 포함된 각각의 블록이 소거되는 평균 횟수들을 데이타 구조에 표시하기 위한 수단을 포함하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  21. 제 20 항에 있어서, 상기 데이타 구조는 소거 카운트 블록인 것을 특징으로 하는 비휘발성 메모리 시스템.
  22. 제 21 항에 있어서, 상기 다수의 블록들에 포함된 제 1 블록이 사용할 수 없을때 시스템 메모리에 표시하기 위한 수단을 더 포함하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  23. 제 22 항에 있어서, 상기 다수의 블록들에 포함된 제 1 블록이 사용할 수 없을때를 비휘발성 메모리에 표시하기 위한 수단은 제 1 블록이 팩토리 결함을 포함할때를 비휘발성 메모리에 표시하기 위한 수단 및 제 1 블록이 성장하는 결함을 포함할때를 시스템 메모리에 표시하기 위한 수단을 포함하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  24. 제 18 항에 있어서, 상기 비휘발성 메모리는 NAND 플래시 메모리인 것을 특징으로 하는 비휘발성 메모리 시스템.
  25. 비휘발성 메모리 시스템이 다수의 블록들을 포함하는 비휘발성 메모리를 포함하는, 비휘발성 메모리 시스템과 연관된 비휘발성 메모리의 물리적 블록에 배열되는 데이타 구조로서,
    제 1 다수의 표시기들 - 상기 제 1 다수의 표시기들은 다수의 블록들에 포함된 블록들이 소거되는 횟수들의 표시를 제공하기 위하여 배열되고 -; 및
    다수의 페이지들을 포함하고, 상기 다수의 페이지들의 페이지들은 제 1 다수의 표시기들을 포함하도록 배열되는 바이트들의 그룹으로 분할되고, 상기 다수의 페이지들의 제 1 페이지는 상기 다수의 블록들의 제 1 블록과 연관된 제 1 다수의 표시기들의 제 1 표시기를 포함하도록 배열되는 바이트들의 그룹중 제 1 그룹을 포함하는 데이타 구조.
  26. 제 25 항에 있어서, 제 2 다수의 표시기들을 더 포함하고, 상기 제 2 다수의 표시기들은 다수의 블록들에 포함된 블록들이 실질적으로 사용할 수 없을때를 표시하기 위하여 배열되는 것을 특징으로 하는 데이타 구조.
  27. 제 26 항에 있어서, 상기 바이트들의 그룹들은 제 2 다수의 표시기들을 포함하도록 추가로 배열되는 것을 특징으로 하는 데이타 구조.
  28. 제 26 항에 있어서, 상기 제 2 다수의 표시기들은 다수의 블록들의 제 2 블록이 제조 결함을 가질때를 식별하기 위하여 배열된 제 2 표시기 및 제 2 블록이 성장하는 결함을 가질때를 식별하기 위하여 배열된 제 3 표시기를 포함하는 것을 특징으로 하는 데이타 구조.
  29. 제 26 항에 있어서, 상기 비휘발성 메모리는 NAND 플래시 메모리인 것을 특징으로 하는 데이타 구조.
KR1020057007326A 2002-10-28 2003-09-10 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치 KR100914089B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/281,696 2002-10-28
US10/281,696 US6831865B2 (en) 2002-10-28 2002-10-28 Maintaining erase counts in non-volatile storage systems

Publications (2)

Publication Number Publication Date
KR20050065632A true KR20050065632A (ko) 2005-06-29
KR100914089B1 KR100914089B1 (ko) 2009-08-27

Family

ID=32107214

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007326A KR100914089B1 (ko) 2002-10-28 2003-09-10 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치

Country Status (10)

Country Link
US (1) US6831865B2 (ko)
EP (1) EP1559016B1 (ko)
JP (1) JP4372013B2 (ko)
KR (1) KR100914089B1 (ko)
CN (1) CN100385415C (ko)
AT (1) ATE388440T1 (ko)
AU (1) AU2003270527A1 (ko)
DE (1) DE60319563T2 (ko)
TW (1) TWI261168B (ko)
WO (1) WO2004040458A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101283289B1 (ko) * 2010-04-01 2013-07-15 인텔 코오퍼레이션 고체 상태 드라이브에서의 웨어 레벨링을 위한 방법 및 시스템
US11036493B2 (en) 2018-01-25 2021-06-15 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (383)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467274B2 (en) * 2001-12-31 2008-12-16 Hewlett-Packard Development Company, L.P. Method to increase the life span of limited cycle read/write media
JP4560408B2 (ja) * 2002-10-02 2010-10-13 パナソニック株式会社 不揮発性記憶装置の制御方法
DE60316171T2 (de) * 2002-10-28 2008-05-29 SanDisk Corp., Milpitas Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem
JP4256175B2 (ja) * 2003-02-04 2009-04-22 株式会社東芝 不揮発性半導体メモリ
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
TWI220193B (en) * 2003-05-28 2004-08-11 Genesys Logic Inc Dynamic adjustment method of redundant block in non-volatile memory and related device thereof
US6906961B2 (en) * 2003-06-24 2005-06-14 Micron Technology, Inc. Erase block data splitting
US7139863B1 (en) * 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
EP1702338B1 (en) * 2003-12-30 2009-02-18 SanDisk Corporation Robust data duplication and improved update method in a multibit non-volatile memory
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US8341371B2 (en) * 2005-01-31 2012-12-25 Sandisk Il Ltd Method of managing copy operations in flash memories
US7224604B2 (en) * 2005-03-14 2007-05-29 Sandisk Il Ltd. Method of achieving wear leveling in flash memory using relative grades
US20070016721A1 (en) * 2005-07-18 2007-01-18 Wyse Technology Inc. Flash file system power-up by using sequential sector allocation
US7523381B2 (en) * 2005-09-01 2009-04-21 Micron Technology, Inc. Non-volatile memory with error detection
US7752382B2 (en) * 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
US7512864B2 (en) * 2005-09-30 2009-03-31 Josef Zeevi System and method of accessing non-volatile computer memory
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
JP2007133683A (ja) * 2005-11-10 2007-05-31 Sony Corp メモリシステム
US7546515B2 (en) * 2005-12-27 2009-06-09 Sandisk Corporation Method of storing downloadable firmware on bulk media
US7536627B2 (en) * 2005-12-27 2009-05-19 Sandisk Corporation Storing downloadable firmware on bulk media
US8194880B2 (en) * 2006-01-30 2012-06-05 Audience, Inc. System and method for utilizing omni-directional microphones for speech enhancement
US7451264B2 (en) * 2006-04-13 2008-11-11 Sandisk Corporation Cycle count storage methods
US7467253B2 (en) * 2006-04-13 2008-12-16 Sandisk Corporation Cycle count storage systems
US7971071B2 (en) * 2006-05-24 2011-06-28 Walkoe Wilbur J Integrated delivery and protection device for digital objects
US7711890B2 (en) * 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
JP2007328620A (ja) * 2006-06-08 2007-12-20 Toshiba Corp アクセス頻度評価装置およびアクセス頻度評価方法
US8060718B2 (en) * 2006-06-20 2011-11-15 International Business Machines Updating a memory to maintain even wear
TWI326028B (en) 2006-11-20 2010-06-11 Silicon Motion Inc Method for flash memory data management
US20080126685A1 (en) * 2006-11-24 2008-05-29 Radoslav Danilak System, method, and computer program product for reducing memory write operations using an instruction set
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7904764B2 (en) * 2006-11-24 2011-03-08 Sandforce, Inc. Memory lifetime gauging system, method and computer program product
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US8090980B2 (en) * 2006-12-08 2012-01-03 Sandforce, Inc. System, method, and computer program product for providing data redundancy in a plurality of storage devices
US7904672B2 (en) * 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US9153337B2 (en) 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US20080140918A1 (en) * 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7710777B1 (en) 2006-12-20 2010-05-04 Marvell International Ltd. Semi-volatile NAND flash memory
KR100817204B1 (ko) * 2006-12-22 2008-03-27 재단법인서울대학교산학협력재단 플래시 메모리의 매핑 방법 및 장치
JP4563992B2 (ja) * 2006-12-26 2010-10-20 株式会社京都ソフトウェアリサーチ 多値フラッシュメモリおよび多値フラッシュメモリへのデータ書き込み方法
TW200828320A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Method for performing static wear leveling on flash memory
US7731365B2 (en) * 2007-03-19 2010-06-08 Johnson&Johnson Vision Care, Inc. Method of fitting contact lenses
TWI368224B (en) 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
CN100538662C (zh) * 2007-07-05 2009-09-09 炬力集成电路设计有限公司 一种基于局部采样的存储器的磨损平衡方法
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
TWI373772B (en) * 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
CN101409108B (zh) * 2007-10-09 2011-04-13 群联电子股份有限公司 平均磨损方法及使用此方法的控制器
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US7916543B2 (en) 2007-10-22 2011-03-29 Micron Technology, Inc. Memory cell operation
US7849275B2 (en) * 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7903486B2 (en) 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US9183133B2 (en) 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
WO2009072102A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
JP4461170B2 (ja) 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US9477587B2 (en) 2008-04-11 2016-10-25 Micron Technology, Inc. Method and apparatus for a volume management system in a non-volatile memory device
US7924623B2 (en) * 2008-05-27 2011-04-12 Micron Technology, Inc. Method for memory cell erasure with a programming monitor of reference cells
US20100250837A1 (en) * 2008-05-28 2010-09-30 Hyperstone Gmbh Method for Addressing Page-Oriented Non-Volatile Memories
KR20110036816A (ko) * 2008-06-24 2011-04-11 샌디스크 아이엘 엘티디 고체 상태 메모리의 소거 횟수에 따라 에러를 정정하기 위한 방법과 장치
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20100017588A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for providing an extended capability to a system
US20100017566A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for interfacing computing device hardware of a computing device and an operating system utilizing a virtualization layer
TWI385669B (zh) * 2008-07-23 2013-02-11 Phison Electronics Corp 用於快閃記憶體的平均磨損方法、儲存系統與控制器
KR101103061B1 (ko) * 2008-07-28 2012-01-06 주식회사 팍스디스크 반도체 스토리지 시스템 및 그 제어 방법
US20100064093A1 (en) * 2008-09-09 2010-03-11 Radoslav Danilak System, method, and computer program product for converting data in a binary representation to a non-power of two representation
TWI385517B (zh) * 2008-12-05 2013-02-11 Apacer Technology Inc Storage device and data management method
US20100146236A1 (en) * 2008-12-08 2010-06-10 Radoslav Danilak System, method, and computer program product for rendering at least a portion of data useless in immediate response to a delete command
KR101586047B1 (ko) 2009-03-25 2016-01-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US8230159B2 (en) 2009-03-27 2012-07-24 Lsi Corporation System, method, and computer program product for sending logical block address de-allocation status information
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
US8458574B2 (en) * 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US20110004718A1 (en) * 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US9792074B2 (en) * 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
US8140712B2 (en) * 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
EP2455865B1 (en) * 2009-07-17 2020-03-04 Toshiba Memory Corporation Memory management device
US8516166B2 (en) 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8463983B2 (en) * 2009-09-15 2013-06-11 International Business Machines Corporation Container marker scheme for reducing write amplification in solid state devices
US8479061B2 (en) * 2009-09-24 2013-07-02 AGIGA Tech Solid state memory cartridge with wear indication
US8108737B2 (en) * 2009-10-05 2012-01-31 Sandforce, Inc. System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
TW201120898A (en) * 2009-12-07 2011-06-16 Jmicron Technology Corp Mehtod for wear-leveling and apparatus thereof
US9037777B2 (en) * 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8468431B2 (en) 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US20120203993A1 (en) * 2011-02-08 2012-08-09 SMART Storage Systems, Inc. Memory system with tiered queuing and method of operation thereof
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US8898373B1 (en) 2011-06-29 2014-11-25 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
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
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
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
US8627158B2 (en) * 2011-12-08 2014-01-07 International Business Machines Corporation Flash array built in self test engine with trace array and flash metric reporting
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8737130B2 (en) * 2012-02-29 2014-05-27 Sandisk Technologies Inc. System and method of determining a programming step size for a word line of a memory
US8862952B1 (en) * 2012-03-16 2014-10-14 Western Digital Technologies, Inc. Prioritized memory scanning for data storage systems
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
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
US9430339B1 (en) 2012-12-27 2016-08-30 Marvell International Ltd. Method and apparatus for using wear-out blocks in nonvolatile memory
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
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
US10013322B2 (en) * 2013-06-03 2018-07-03 Hitachi, Ltd. Storage apparatus and storage apparatus control method
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
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
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
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US11630585B1 (en) 2016-08-25 2023-04-18 Pure Storage, Inc. Processing evacuation events in a storage array that includes a plurality of storage devices
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US10725668B1 (en) * 2014-08-29 2020-07-28 SK Hynix Inc. Data separation during garbage collection and wear leveling
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9728278B2 (en) 2014-10-24 2017-08-08 Micron Technology, Inc. Threshold voltage margin analysis
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10338817B2 (en) 2014-12-30 2019-07-02 Sandisk Technologies Llc Systems and methods for storage recovery
US9766819B2 (en) 2014-12-30 2017-09-19 Sandisk Technologies Llc Systems and methods for managing storage endurance
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US11102298B1 (en) 2015-05-26 2021-08-24 Pure Storage, Inc. Locally providing cloud storage services for fleet management
US9716755B2 (en) 2015-05-26 2017-07-25 Pure Storage, Inc. Providing cloud storage array services by a local storage array in a data center
US9594678B1 (en) 2015-05-27 2017-03-14 Pure Storage, Inc. Preventing duplicate entries of identical data in a storage device
US9444822B1 (en) 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9300660B1 (en) 2015-05-29 2016-03-29 Pure Storage, Inc. Providing authorization and authentication in a cloud for a user of a storage array
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US9588691B2 (en) 2015-06-10 2017-03-07 Pure Storage, Inc. Dynamically managing control information in a storage device
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
CN106354651B (zh) * 2015-07-14 2020-05-26 群联电子股份有限公司 平均磨损方法、存储器控制电路单元及存储器储存装置
US9892071B2 (en) 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US9851762B1 (en) 2015-08-06 2017-12-26 Pure Storage, Inc. Compliant printed circuit board (‘PCB’) within an enclosure
US11625181B1 (en) 2015-08-24 2023-04-11 Pure Storage, Inc. Data tiering using snapshots
US11294588B1 (en) 2015-08-24 2022-04-05 Pure Storage, Inc. Placing data within a storage device
US10198194B2 (en) 2015-08-24 2019-02-05 Pure Storage, Inc. Placing data within a storage device of a flash array
US10514978B1 (en) 2015-10-23 2019-12-24 Pure Storage, Inc. Automatic deployment of corrective measures for storage arrays
US9384082B1 (en) 2015-10-23 2016-07-05 Pure Storage, Inc. Proactively providing corrective measures for storage arrays
US11360844B1 (en) 2015-10-23 2022-06-14 Pure Storage, Inc. Recovery of a container storage provider
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
US9740414B2 (en) 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
US10374868B2 (en) 2015-10-29 2019-08-06 Pure Storage, Inc. Distributed command processing in a flash storage system
US10353777B2 (en) 2015-10-30 2019-07-16 Pure Storage, Inc. Ensuring crash-safe forward progress of a system configuration update
US9760479B2 (en) 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US11616834B2 (en) 2015-12-08 2023-03-28 Pure Storage, Inc. Efficient replication of a dataset to the cloud
US10326836B2 (en) 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
US11347697B1 (en) 2015-12-15 2022-05-31 Pure Storage, Inc. Proactively optimizing a storage system
US10162835B2 (en) 2015-12-15 2018-12-25 Pure Storage, Inc. Proactive management of a plurality of storage arrays in a multi-array system
US10346043B2 (en) 2015-12-28 2019-07-09 Pure Storage, Inc. Adaptive computing for data compression
US9886314B2 (en) 2016-01-28 2018-02-06 Pure Storage, Inc. Placing workloads in a multi-array system
US10572460B2 (en) 2016-02-11 2020-02-25 Pure Storage, Inc. Compressing data in dependence upon characteristics of a storage system
US9760297B2 (en) 2016-02-12 2017-09-12 Pure Storage, Inc. Managing input/output (‘I/O’) queues in a data storage system
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US10101939B2 (en) * 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
US11995315B2 (en) 2016-03-16 2024-05-28 Pure Storage, Inc. Converting data formats in a storage system
US9959043B2 (en) 2016-03-16 2018-05-01 Pure Storage, Inc. Performing a non-disruptive upgrade of data in a storage system
US9841921B2 (en) 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
US11809727B1 (en) 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US9811264B1 (en) 2016-04-28 2017-11-07 Pure Storage, Inc. Deploying client-specific applications in a storage system utilizing redundant system resources
US10303390B1 (en) 2016-05-02 2019-05-28 Pure Storage, Inc. Resolving fingerprint collisions in flash storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US9507532B1 (en) 2016-05-20 2016-11-29 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US9711231B1 (en) 2016-06-24 2017-07-18 Sandisk Technologies Llc System solution for first read issue using time dependent read voltages
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US10452310B1 (en) 2016-07-13 2019-10-22 Pure Storage, Inc. Validating cabling for storage component admission to a storage array
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US10459652B2 (en) 2016-07-27 2019-10-29 Pure Storage, Inc. Evacuating blades in a storage array that includes a plurality of blades
US10474363B1 (en) 2016-07-29 2019-11-12 Pure Storage, Inc. Space reporting in a storage system
US10671439B1 (en) 2016-09-07 2020-06-02 Pure Storage, Inc. Workload planning with quality-of-service (‘QOS’) integration
US10146585B2 (en) 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US10908966B1 (en) 2016-09-07 2021-02-02 Pure Storage, Inc. Adapting target service times in a storage system
US10235229B1 (en) 2016-09-07 2019-03-19 Pure Storage, Inc. Rehabilitating storage devices in a storage array that includes a plurality of storage devices
US11481261B1 (en) 2016-09-07 2022-10-25 Pure Storage, Inc. Preventing extended latency in a storage system
US11531577B1 (en) 2016-09-07 2022-12-20 Pure Storage, Inc. Temporarily limiting access to a storage device
US11886922B2 (en) 2016-09-07 2024-01-30 Pure Storage, Inc. Scheduling input/output operations for a storage system
US11960348B2 (en) 2016-09-07 2024-04-16 Pure Storage, Inc. Cloud-based monitoring of hardware components in a fleet of storage systems
US10331588B2 (en) 2016-09-07 2019-06-25 Pure Storage, Inc. Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling
US11379132B1 (en) 2016-10-20 2022-07-05 Pure Storage, Inc. Correlating medical sensor data
US10007459B2 (en) 2016-10-20 2018-06-26 Pure Storage, Inc. Performance tuning in a storage system that includes one or more storage devices
US10162566B2 (en) 2016-11-22 2018-12-25 Pure Storage, Inc. Accumulating application-level statistics in a storage system
US11620075B2 (en) 2016-11-22 2023-04-04 Pure Storage, Inc. Providing application aware storage
CN106775474B (zh) * 2016-12-16 2020-01-10 苏州浪潮智能科技有限公司 一种Nand Flash磨损均衡方法、装置及存储器
US10198205B1 (en) 2016-12-19 2019-02-05 Pure Storage, Inc. Dynamically adjusting a number of storage devices utilized to simultaneously service write operations
US11461273B1 (en) 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
EP3367251B1 (en) * 2016-12-29 2023-06-21 Huawei Technologies Co., Ltd. Storage system and solid state hard disk
US10489307B2 (en) 2017-01-05 2019-11-26 Pure Storage, Inc. Periodically re-encrypting user data stored on a storage device
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11340800B1 (en) 2017-01-19 2022-05-24 Pure Storage, Inc. Content masking in a storage system
US10503700B1 (en) 2017-01-19 2019-12-10 Pure Storage, Inc. On-demand content filtering of snapshots within a storage system
US11163624B2 (en) 2017-01-27 2021-11-02 Pure Storage, Inc. Dynamically adjusting an amount of log data generated for a storage system
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US11169727B1 (en) 2017-03-10 2021-11-09 Pure Storage, Inc. Synchronous replication between storage systems with virtualized storage
US11675520B2 (en) 2017-03-10 2023-06-13 Pure Storage, Inc. Application replication among storage systems synchronously replicating a dataset
US10454810B1 (en) 2017-03-10 2019-10-22 Pure Storage, Inc. Managing host definitions across a plurality of storage systems
US11442825B2 (en) 2017-03-10 2022-09-13 Pure Storage, Inc. Establishing a synchronous replication relationship between two or more storage systems
US11089105B1 (en) 2017-12-14 2021-08-10 Pure Storage, Inc. Synchronously replicating datasets in cloud-based storage systems
US11803453B1 (en) 2017-03-10 2023-10-31 Pure Storage, Inc. Using host connectivity states to avoid queuing I/O requests
US10521344B1 (en) 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US11941279B2 (en) 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US10459664B1 (en) 2017-04-10 2019-10-29 Pure Storage, Inc. Virtualized copy-by-reference
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
US11868629B1 (en) 2017-05-05 2024-01-09 Pure Storage, Inc. Storage system sizing service
KR20180125694A (ko) * 2017-05-16 2018-11-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11210133B1 (en) 2017-06-12 2021-12-28 Pure Storage, Inc. Workload mobility between disparate execution environments
US11609718B1 (en) 2017-06-12 2023-03-21 Pure Storage, Inc. Identifying valid data after a storage system recovery
US10884636B1 (en) 2017-06-12 2021-01-05 Pure Storage, Inc. Presenting workload performance in a storage system
US10552090B2 (en) 2017-09-07 2020-02-04 Pure Storage, Inc. Solid state drives with multiple types of addressable memory
US11592991B2 (en) 2017-09-07 2023-02-28 Pure Storage, Inc. Converting raid data between persistent storage types
US11340939B1 (en) 2017-06-12 2022-05-24 Pure Storage, Inc. Application-aware analytics for storage systems
US11989429B1 (en) 2017-06-12 2024-05-21 Pure Storage, Inc. Recommending changes to a storage system
US10789020B2 (en) 2017-06-12 2020-09-29 Pure Storage, Inc. Recovering data within a unified storage element
US10853148B1 (en) 2017-06-12 2020-12-01 Pure Storage, Inc. Migrating workloads between a plurality of execution environments
US11422731B1 (en) 2017-06-12 2022-08-23 Pure Storage, Inc. Metadata-based replication of a dataset
US10613791B2 (en) 2017-06-12 2020-04-07 Pure Storage, Inc. Portable snapshot replication between storage systems
US10976962B2 (en) 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US11016824B1 (en) 2017-06-12 2021-05-25 Pure Storage, Inc. Event identification with out-of-order reporting in a cloud-based environment
US11442669B1 (en) 2018-03-15 2022-09-13 Pure Storage, Inc. Orchestrating a virtual storage system
CN116431072A (zh) 2017-06-12 2023-07-14 净睿存储股份有限公司 集成到大容量存储设备的可访问快速耐久存储
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US11561714B1 (en) 2017-07-05 2023-01-24 Pure Storage, Inc. Storage efficiency driven migration
US11477280B1 (en) 2017-07-26 2022-10-18 Pure Storage, Inc. Integrating cloud storage services
US10198195B1 (en) * 2017-08-04 2019-02-05 Micron Technology, Inc. Wear leveling
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US11494692B1 (en) 2018-03-26 2022-11-08 Pure Storage, Inc. Hyperscale artificial intelligence and machine learning infrastructure
US10671435B1 (en) 2017-10-19 2020-06-02 Pure Storage, Inc. Data transformation caching in an artificial intelligence infrastructure
US11861423B1 (en) 2017-10-19 2024-01-02 Pure Storage, Inc. Accelerating artificial intelligence (‘AI’) workflows
US10452444B1 (en) 2017-10-19 2019-10-22 Pure Storage, Inc. Storage system with compute resources and shared storage resources
US11455168B1 (en) 2017-10-19 2022-09-27 Pure Storage, Inc. Batch building for deep learning training workloads
US10360214B2 (en) 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
US10347315B2 (en) 2017-10-31 2019-07-09 Sandisk Technologies Llc Group read refresh
US10509581B1 (en) 2017-11-01 2019-12-17 Pure Storage, Inc. Maintaining write consistency in a multi-threaded storage system
US10671494B1 (en) 2017-11-01 2020-06-02 Pure Storage, Inc. Consistent selection of replicated datasets during storage system recovery
US10467107B1 (en) 2017-11-01 2019-11-05 Pure Storage, Inc. Maintaining metadata resiliency among storage device failures
US10484174B1 (en) 2017-11-01 2019-11-19 Pure Storage, Inc. Protecting an encryption key for data stored in a storage system that includes a plurality of storage devices
US10817392B1 (en) 2017-11-01 2020-10-27 Pure Storage, Inc. Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
JP7010667B2 (ja) * 2017-11-06 2022-01-26 キオクシア株式会社 メモリシステムおよび制御方法
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10936238B2 (en) 2017-11-28 2021-03-02 Pure Storage, Inc. Hybrid data tiering
US10990282B1 (en) 2017-11-28 2021-04-27 Pure Storage, Inc. Hybrid data tiering with cloud storage
US10795598B1 (en) 2017-12-07 2020-10-06 Pure Storage, Inc. Volume migration for storage systems synchronously replicating a dataset
US10552145B2 (en) * 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device
US11036677B1 (en) 2017-12-14 2021-06-15 Pure Storage, Inc. Replicated data integrity
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10992533B1 (en) 2018-01-30 2021-04-27 Pure Storage, Inc. Policy based path management
US10521151B1 (en) 2018-03-05 2019-12-31 Pure Storage, Inc. Determining effective space utilization in a storage system
US11861170B2 (en) 2018-03-05 2024-01-02 Pure Storage, Inc. Sizing resources for a replication target
US11972134B2 (en) 2018-03-05 2024-04-30 Pure Storage, Inc. Resource utilization using normalized input/output (‘I/O’) operations
US10942650B1 (en) 2018-03-05 2021-03-09 Pure Storage, Inc. Reporting capacity utilization in a storage system
US11150834B1 (en) 2018-03-05 2021-10-19 Pure Storage, Inc. Determining storage consumption in a storage system
US10296258B1 (en) 2018-03-09 2019-05-21 Pure Storage, Inc. Offloading data storage to a decentralized storage network
US10917471B1 (en) 2018-03-15 2021-02-09 Pure Storage, Inc. Active membership in a cloud-based storage system
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US11210009B1 (en) 2018-03-15 2021-12-28 Pure Storage, Inc. Staging data in a cloud-based storage system
US10924548B1 (en) 2018-03-15 2021-02-16 Pure Storage, Inc. Symmetric storage using a cloud-based storage system
US11288138B1 (en) 2018-03-15 2022-03-29 Pure Storage, Inc. Recovery from a system fault in a cloud-based storage system
US11095706B1 (en) 2018-03-21 2021-08-17 Pure Storage, Inc. Secure cloud-based storage system management
US11171950B1 (en) 2018-03-21 2021-11-09 Pure Storage, Inc. Secure cloud-based storage system management
US10838833B1 (en) 2018-03-26 2020-11-17 Pure Storage, Inc. Providing for high availability in a data analytics pipeline without replicas
US11392553B1 (en) 2018-04-24 2022-07-19 Pure Storage, Inc. Remote data management
US11436344B1 (en) 2018-04-24 2022-09-06 Pure Storage, Inc. Secure encryption in deduplication cluster
US11675503B1 (en) 2018-05-21 2023-06-13 Pure Storage, Inc. Role-based data access
US20190354628A1 (en) 2018-05-21 2019-11-21 Pure Storage, Inc. Asynchronous replication of synchronously replicated data
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
US11455409B2 (en) 2018-05-21 2022-09-27 Pure Storage, Inc. Storage layer data obfuscation
US10871922B2 (en) 2018-05-22 2020-12-22 Pure Storage, Inc. Integrated storage management between storage systems and container orchestrators
US11301376B2 (en) 2018-06-11 2022-04-12 Seagate Technology Llc Data storage device with wear range optimization
US11055002B2 (en) * 2018-06-11 2021-07-06 Western Digital Technologies, Inc. Placement of host data based on data characteristics
US11416298B1 (en) 2018-07-20 2022-08-16 Pure Storage, Inc. Providing application-specific storage by a storage system
US11403000B1 (en) 2018-07-20 2022-08-02 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11632360B1 (en) 2018-07-24 2023-04-18 Pure Storage, Inc. Remote access to a storage device
US11954238B1 (en) 2018-07-24 2024-04-09 Pure Storage, Inc. Role-based access control for a storage system
US11146564B1 (en) 2018-07-24 2021-10-12 Pure Storage, Inc. Login authentication in a cloud storage platform
US11860820B1 (en) 2018-09-11 2024-01-02 Pure Storage, Inc. Processing data through a storage system in a data pipeline
EP3627308A1 (en) 2018-09-20 2020-03-25 STMicroelectronics Srl A method of managing memories, corresponding circuit, device and computer program product
US10671302B1 (en) 2018-10-26 2020-06-02 Pure Storage, Inc. Applying a rate limit across a plurality of storage systems
US11340837B1 (en) 2018-11-18 2022-05-24 Pure Storage, Inc. Storage system management via a remote console
US10963189B1 (en) 2018-11-18 2021-03-30 Pure Storage, Inc. Coalescing write operations in a cloud-based storage system
US11526405B1 (en) 2018-11-18 2022-12-13 Pure Storage, Inc. Cloud-based disaster recovery
US11379254B1 (en) 2018-11-18 2022-07-05 Pure Storage, Inc. Dynamic configuration of a cloud-based storage system
US11650749B1 (en) 2018-12-17 2023-05-16 Pure Storage, Inc. Controlling access to sensitive data in a shared dataset
US11003369B1 (en) 2019-01-14 2021-05-11 Pure Storage, Inc. Performing a tune-up procedure on a storage device during a boot process
US11042452B1 (en) 2019-03-20 2021-06-22 Pure Storage, Inc. Storage system data recovery using data recovery as a service
US11221778B1 (en) 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
US11068162B1 (en) 2019-04-09 2021-07-20 Pure Storage, Inc. Storage management in a cloud data store
US11392555B2 (en) 2019-05-15 2022-07-19 Pure Storage, Inc. Cloud-based file services
US11853266B2 (en) 2019-05-15 2023-12-26 Pure Storage, Inc. Providing a file system in a cloud environment
US11327676B1 (en) 2019-07-18 2022-05-10 Pure Storage, Inc. Predictive data streaming in a virtual storage system
US11126364B2 (en) 2019-07-18 2021-09-21 Pure Storage, Inc. Virtual storage system architecture
US11861221B1 (en) 2019-07-18 2024-01-02 Pure Storage, Inc. Providing scalable and reliable container-based storage services
US11093139B1 (en) 2019-07-18 2021-08-17 Pure Storage, Inc. Durably storing data within a virtual storage system
US11797197B1 (en) 2019-07-18 2023-10-24 Pure Storage, Inc. Dynamic scaling of a virtual storage system
US11487715B1 (en) 2019-07-18 2022-11-01 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11526408B2 (en) 2019-07-18 2022-12-13 Pure Storage, Inc. Data recovery in a virtual storage system
US11086553B1 (en) 2019-08-28 2021-08-10 Pure Storage, Inc. Tiering duplicated objects in a cloud-based object store
US11693713B1 (en) 2019-09-04 2023-07-04 Pure Storage, Inc. Self-tuning clusters for resilient microservices
US11625416B1 (en) 2019-09-13 2023-04-11 Pure Storage, Inc. Uniform model for distinct types of data replication
US11797569B2 (en) 2019-09-13 2023-10-24 Pure Storage, Inc. Configurable data replication
US11573864B1 (en) 2019-09-16 2023-02-07 Pure Storage, Inc. Automating database management in a storage system
US11669386B1 (en) 2019-10-08 2023-06-06 Pure Storage, Inc. Managing an application's resource stack
US20210173945A1 (en) 2019-12-06 2021-06-10 Pure Storage, Inc. Replicating data to a storage system that has an inferred trust relationship with a client
US11720497B1 (en) 2020-01-13 2023-08-08 Pure Storage, Inc. Inferred nonsequential prefetch based on data access patterns
US11733901B1 (en) 2020-01-13 2023-08-22 Pure Storage, Inc. Providing persistent storage to transient cloud computing services
US11709636B1 (en) 2020-01-13 2023-07-25 Pure Storage, Inc. Non-sequential readahead for deep learning training
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems
US11321006B1 (en) 2020-03-25 2022-05-03 Pure Storage, Inc. Data loss prevention during transitions from a replication source
US11630598B1 (en) 2020-04-06 2023-04-18 Pure Storage, Inc. Scheduling data replication operations
US11301152B1 (en) 2020-04-06 2022-04-12 Pure Storage, Inc. Intelligently moving data between storage systems
US11494267B2 (en) 2020-04-14 2022-11-08 Pure Storage, Inc. Continuous value data redundancy
US11921670B1 (en) 2020-04-20 2024-03-05 Pure Storage, Inc. Multivariate data backup retention policies
US11431488B1 (en) 2020-06-08 2022-08-30 Pure Storage, Inc. Protecting local key generation using a remote key management service
US11349917B2 (en) 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks
US11442652B1 (en) 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system
US11853285B1 (en) 2021-01-22 2023-12-26 Pure Storage, Inc. Blockchain logging of volume-level events in a storage system
US11563744B2 (en) 2021-02-22 2023-01-24 Bank Of America Corporation System for detection and classification of intrusion using machine learning techniques
US20220365827A1 (en) 2021-05-12 2022-11-17 Pure Storage, Inc. Rebalancing In A Fleet Of Storage Systems Using Data Science
US11816129B2 (en) 2021-06-22 2023-11-14 Pure Storage, Inc. Generating datasets using approximate baselines
US11714723B2 (en) 2021-10-29 2023-08-01 Pure Storage, Inc. Coordinated snapshots for data stored across distinct storage environments
US11914867B2 (en) 2021-10-29 2024-02-27 Pure Storage, Inc. Coordinated snapshots among storage systems implementing a promotion/demotion model
US11893263B2 (en) 2021-10-29 2024-02-06 Pure Storage, Inc. Coordinated checkpoints among storage systems implementing checkpoint-based replication
US11922052B2 (en) 2021-12-15 2024-03-05 Pure Storage, Inc. Managing links between storage objects
US11847071B2 (en) 2021-12-30 2023-12-19 Pure Storage, Inc. Enabling communication between a single-port device and multiple storage system controllers
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
EP1031992B1 (en) * 1989-04-13 2006-06-21 SanDisk Corporation Flash EEPROM system
US5222109A (en) 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
JPH0750558B2 (ja) 1992-09-22 1995-05-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリ
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
JP3507132B2 (ja) 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5954828A (en) * 1995-01-05 1999-09-21 Macronix International Co., Ltd. Non-volatile memory device for fault tolerant data
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
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
JP3472008B2 (ja) * 1996-01-16 2003-12-02 株式会社東芝 フラッシュメモリ管理方法
US5860082A (en) 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
KR100533140B1 (ko) 1998-09-04 2005-12-02 하이퍼스톤 아게 제한된 소거빈도의 메모리의 액세스제어방법
US6260156B1 (en) 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6282605B1 (en) * 1999-04-26 2001-08-28 Moore Computer Consultants, Inc. File system for non-volatile computer memory
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
KR100818035B1 (ko) * 2000-05-04 2008-03-31 엔엑스피 비 브이 저장 매체 상의 데이터 관리 및 데이터 관리 시스템과 컴퓨터 판독가능한 저장 매체
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101283289B1 (ko) * 2010-04-01 2013-07-15 인텔 코오퍼레이션 고체 상태 드라이브에서의 웨어 레벨링을 위한 방법 및 시스템
US8621141B2 (en) 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
US11036493B2 (en) 2018-01-25 2021-06-15 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
EP1559016B1 (en) 2008-03-05
EP1559016A1 (en) 2005-08-03
CN1701308A (zh) 2005-11-23
KR100914089B1 (ko) 2009-08-27
ATE388440T1 (de) 2008-03-15
DE60319563D1 (de) 2008-04-17
TW200422830A (en) 2004-11-01
US20040080985A1 (en) 2004-04-29
JP2006504197A (ja) 2006-02-02
TWI261168B (en) 2006-09-01
JP4372013B2 (ja) 2009-11-25
AU2003270527A1 (en) 2004-05-25
DE60319563T2 (de) 2009-03-19
CN100385415C (zh) 2008-04-30
US6831865B2 (en) 2004-12-14
WO2004040458A1 (en) 2004-05-13

Similar Documents

Publication Publication Date Title
KR100910680B1 (ko) 소거 카운트 블록을 유지하는 방법 및 장치
KR100914089B1 (ko) 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치
KR101110901B1 (ko) 비-휘발성 저장 시스템의 소모 레벨링
EP1559112B1 (en) Maintaining an average erase count in a non-volatile storage system
US7096313B1 (en) Tracking the least frequently erased blocks in non-volatile memory systems
US6973531B1 (en) Tracking the most frequently erased blocks in non-volatile memory systems
JP4611024B2 (ja) ブロック内のページをグループ化する方法及び装置

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20120802

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130801

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140808

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150807

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 10