KR20050083850A - 비휘발성 저장 시스템들에서 자동 웨어 레벨링 - Google Patents
비휘발성 저장 시스템들에서 자동 웨어 레벨링 Download PDFInfo
- Publication number
- KR20050083850A KR20050083850A KR1020057007417A KR20057007417A KR20050083850A KR 20050083850 A KR20050083850 A KR 20050083850A KR 1020057007417 A KR1020057007417 A KR 1020057007417A KR 20057007417 A KR20057007417 A KR 20057007417A KR 20050083850 A KR20050083850 A KR 20050083850A
- Authority
- KR
- South Korea
- Prior art keywords
- zone
- physical
- blocks
- memory
- zones
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Investigating Or Analyzing Materials By The Use Of Electric Means (AREA)
- Ventilation (AREA)
- Safety Devices In Control Systems (AREA)
- Automatic Assembly (AREA)
- Moulds For Moulding Plastics Or The Like (AREA)
- Processing And Handling Of Plastics And Other Materials For Molding In General (AREA)
Abstract
비휘발성 메모리 시스템에서 웨어 레벨링(wear leveling)을 수행하는 방법들 및 장치가 서술되어 있다. 내용을 지닌 제1 메모리 요소를 갖는 제1 존 및 제2 존을 포함하는 메모리 시스템에서 웨어 레벨링을 수행하는 방법은 제1 메모리 요소를 식별하는 단계 및 상기 제1 존으로부터 상기 제1 메모리 요소를 분리시키면서 상기 제1 메모리 요소의 내용을 상기 제2 존과 관계시키는 단계를 포함한다. 일 실시예에서, 상기 제1 메모리 요소의 내용을 상기 제2 존과 관계시키는 단계는 제2 메모리 요소의 내용을 제3 메모리 요소로 이동시키고 나서, 상기 제1 메모리 요소의 내용을 상기 제2 메모리 요소로 복사시키는 단계를 포함한다.
Description
본 발명은 일반적으로 대량 디지털 데이터 저장 시스템들에 관한 것이며, 특히, 비휘발성 저장 시스템 내의 저장 에리어들과 관련된 웨어(wear)를 저장 에리어에 걸쳐서 자동적으로 확산시키는 시스템들 및 방법들에 관한 것이다.
플래시 메모리 저장 시스템들과 같은 비휘발성 메모리 시스템들의 사용은, 이와 같은 메모리 시스템들의 물리적인 크기를 소형화하고 비휘발성 메모리가 반복적으로 재프로그램되도록 하는 성능 때문에 증가하고 있다. 플래시 메모리 저장 시스템들의 콤팩트한 물리적인 크기가 장치들 내에 이와 같은 저장 시스템의 사용을 용이하게 함으로, 이 저장 시스템의 사용은 증가 일로에 있다. 플래시 메모리 저장 시스템들을 사용하는 장치들은 디지털 카메라들, 디지털 캠코더들, 디지털 음악 플레이어들, 휴대 개인용 컴퓨터들 및 위성 위치확인 장치들을 포함하지만 이에 국한되지 않는다. 플래시 메모리 저장 시스템들에 포함된 비휘발성 메모리를 반복적으로 재프로그램하는 성능은 플래시 메모리 저장 시스템들이 사용 및 재사용되도록 한다.
비휘발성 메모리, 특히, 플래시 메모리 시스템들 내의 비휘발성 메모리 저장 셀들이 반복적으로 재프로그램될 수 있고 소거될 수 있지만, 각 셀 또는 물리적인 위치는 셀이 닳아 없어지기(wear out) 전 단지 특정 횟수 소거될 수 있다. 일부 시스템들에서, 셀이 닳아 없어질 것이라고 간주되기 전, 셀은 최대 대략 1만회 소거될 수 있다. 다른 시스템들에서,셀이 닳아 없어질 것이라고 간주되기 전, 셀은 최대 대략 10만회 또는 심지어 최대 백만회 소거될 수 있다. 셀이 닳아 없어졌을 때, 플래시 메모리 시스템의 전체 저장량의 일부분에 대한 사용 손실 또는 수행성능의 상당한 저하를 초래하여, 예를 들어 저장된 데이터의 손실 또는 데이터를 저장할 수 없는 성능으로 인해 이 플래시 메모리 시스템의 사용자에게 나쁜 영향을 미칠 수 있다.
플래시 메모리 시스템 내의 셀들 또는 물리적인 위치들에 대한 웨어는 셀들 각각이 얼마나 자주 프로그램되는 지에 따라서 다르다. 셀 또는 일반적으론, 메모리 요소가 1회 프로그램되고 나서 효율적으로 결코 재프로그램되지 않는다면, 이 셀과 관련된 웨어는 통상, 상대적으로 낮게될 것이다. 그러나, 셀이 반복적으로 기록되고 소거되면, 이 셀과 관계되는 웨어는 통상, 상대적으로 높게될 것이다. 논리적인 블록 어드레스들(LBAs)이 호스트들, 예를 들어 플래시 메모리 시스템에 액세스하거나 이를 사용하는 시스템들에 의해 사용되어, 플래시 메모리 시스템에 저장된 데이터에 액세스 할 때, 호스트가 상기 LBAs를 사용하여 데이터를 기록 및 중복기록하는 경우, 플래시 메모리 시스템 내의 상기 물리적인 위치들 또는 셀들은 당업자에게 인지되는 바와 같이 반복적으로 기록 및 소거된다.
일부 셀들이 상대적으로 닳아 없어지지 않은 동안 다른 셀들이 효율적으로 닳아 없어졌을 때, 닳아 없어진 셀들의 존재는 통상, 플래시 메모리 시스템의 전체 수행성능을 손상시킨다. 닳아 없어진 셀들 자체들과 관련된 수행성능 저하 이외에도, 닳아 없어지지 않은 셀들의 불충분한 수가 원하는 데이터를 저장하는데 이용되는 경우, 플래시 메모리 시스템의 전체 수행성능에 나쁜 영향을 미칠 수 있다. 종종, 임계 수의 닳아 없어진 셀들이 플래시 메모리 시스템에 제공될 때, 심지어 플래시 메모리 시스템 내의 많은 다른 셀들이 상대적으로 웨어되지 않았을 때 조차도, 플래시 메모리 시스템은 사용될 수 없는 것으로 간주될 수 있다.
플래시 메모리 시스템 내에서 셀들이 상당히 균일하게 웨어될 확률을 증가시키기 위하여, 웨어 레벨링(wear leveling) 동작들이 종종 수행된다. 웨어 레벨링 동작들은 일반적으로, 특정 LBAs와 관련된 셀들을 변경시키도록 배치되어, 동일한 LBAs가 항상 동일한 셀들과 관련되지 않도록 한다. LBAs의 셀 관련성을 변경시킴으로써, 다른 셀들이 닳아 없어지기 전 특정 셀이 충분히 닳아 없어질 수 있는 가능성을 줄인다.
한 가지 종래 웨어 레벨링 공정은 고객 또는 호스트 LBAs의 2개의 상대적으로 큰 부분들이 매핑되는 물리적인 위치를 스와핑(swapping)하는 단계를 포함한다. 즉, 저장 셀들의 상대적으로 큰 섹션들과 관계된 LBAs가 스와핑 된다. 이와 같은 스와핑은 고객으로부터의 수동 명령을 통해서, 예를 들어, 호스트의 사용을 통해서 초기화 되고, 이에 따라서, 고객에게 투명(transparent)하게 되지 않는다. 또한, 저장 셀들의 2개의 상대적으로 큰 섹션들 간에 데이터를 이동시키는 단계를 포함하는 스와핑 동작들은 시간 소모적임으로 비효율적이다. 게다가, 전체 플래시 메모리 시스템과 관련된 예를 들어 시간 및 처리력과 같은 상당한 자원들을 소모하는 상대적으로 긴 지속기간의 스와핑 동작들로 인해, 전체 플래시 메모리 시스템의 수행성능은 나쁜 영향을 받을 수 있다. 제1 위치로부터 데이터를 이동시키는 단계는 통상, 이데이터를 또 다른 위치로 복사하는 단계 및 이 제1 위치로부터 데이터를 소거하는 단계를 포함한다.
셀들을 단지 웨어시킴으로써 웨어 레벨링을 피하도록 할 수 있다. 셀들이 효율적으로 닳아 없어지면, 섹터들과 관련된 어드레스들을 스페어 에리어들에 매핑시킴으로써 셀들에 할당된 섹터들은 재할당될 수 있다. 스페어 에리어들 또는 셀들의 수가 제한되고 가치를 지니고 있기 때문에, 사용될 수 없는 셀들과 관련된 섹터들이 매핑될 수 있는 스페어 에리어들이 항상 존재할 수 없다. 게다가, 셀들을 사용할 수 없는 이후에 만, 효율적으로 재매핑한 섹터들은 일반적으로, 전체 플래시 메모리 시스템의 수행성능을 저하시킨다.
그러므로, 플래시 메모리 저장 시스템 내에서 웨어 레벨링을 효율적으로 그리고 투명하게 수행하는 방법 및 장치가 바람직하다. 즉, 플래시 메모리 저장 시스템과 관련된 물리적인 위치들에서 더욱 균일한 웨어를 증진시키면서 플래시 메모리 저장 시스템의 수행성능에 나쁜 영향을 미치지 않는 자동 웨어 레벨링 공정이 필요로 된다.
도1a은 비휘발성 메모리 장치를 포함하는 범용 호스트 시스템을 도시한 도면.
도1b는 메모리 시스템, 예를 들어 도1a의 메모리 장치(120)를 도시한 도면.
도2는 직접 어드레싱 웨어 레벨링 방식을 구현할 수 있는 비휘발성 메모리 시스템의 실시예를 도시한 도면.
도3a는 물리적인 위치들 및 섹터들의 세트들을 포함하는 비휘발성 메모리의 실시예를 도시한 도면.
도3b는 섹터들의 세트들이 스와핑 된 후, 물리적인 위치들 및 섹터들의 세트들, 예를 들어, 도3a의 비휘발성 메모리(304)를 포함하는 비휘발성 메모리의 실시예를 도시한 도면.
도4는 웨어 레벨링 공정을 겪어야만 되는 비휘발성 메모리 내에서 섹터들의 세트들을 식별하는 단계와 관련된 단계들을 도시한 공정 흐름도.
도5는 웨어 레벨링 공정과 관련된 단계들, 즉 도4의 단계(428)를 도시한 공정 흐름도.
도6은 존들을 포함하는 비휘발성 메모리 시스템의 실시예를 도시한 도면.
도7은 내부 존 소거-풀링 컨텍스트에서 일반적인 웨어 레벨링 공정과 관계된 단계들을 도시한 공정 흐름도.
도8은 존 스와핑의 컨텍스트에서 웨어 레벨링을 수행하는 한 방법과 관계된 단계들을 도시한 공정 흐름도.
도9는 존 경계 이동을 사용하여 웨어 레벨링의 한 방법과 관계되는 단계들을 도시한 공정 흐름도.
도10은 존 경계 이동 공정, 예를 들어 도9의 공정(900) 또는 공정들 이후 메모리 장치의 초기 상태 및 메모리 장치의 상태를 도시한 도면.
도11a는 존 경계 이동 공정 전 메모리 장치의 초기 상태를 도시한 도면.'
도11b는 초기 존 경계 이동 단계들 동안 메모리 장치, 즉 도11a의 메모리 장치(1100)을 도시한 도면.
도11c는 초기 존 경계 이동 단계들이 발생된 후 메모리 장치, 즉 도11a의 메장치(1100)을 도시한 도면.
도12a는 내부 존 웨어 레벨링 공정 전 물리적인 블록들을 포함하는 존을 도시한 도면.
도12b는 내부 존 웨어 레벨링 공정 후 물리적인 블록들을 포함하는 존, 즉 도12a의 존(1200)을 도시한 도면.
도13a는 존 스와핑 웨어 레벨링 공정 전 물리적인 블록들을 포함하는 존들을 도시한 도면.
도13b는 존 스와핑 웨어 레벨링 공정 후 물리적인 블록들을 포함하는 존들, 즉 도13a의 존들(1300)을 도시한 도면.
본 발명은 비휘발성 메모리 시스템에서 자동 웨어 레벨링을 수행하는 시스템 및 방법에 관한 것이다. 본 발명의 한 양상을 따르면, 내용을 지닌 제1 메모리 요소를 갖는 제1 존 및 제2 존을 포함하는 메모리 시스템에서 웨어 레벨링을 수행하는 방법은 제1 메모리 요소를 식별하는 단계 및 상기 제1 존으로부터 상기 제1 메모리 요소를 분리시키면서 상기 제1 메모리 요소의 내용을 상기 제2 존과 관계시키는 단계를 포함한다. 일 실시예에서, 상기 제1 메모리 요소의 내용을 상기 제2 존과 관계시키는 단계는 제2 메모리 요소의 내용을 제3 메모리 요소로 복사시키고 나서, 상기 제1 메모리 요소의 내용을 상기 제2 메모리 요소로 이동시키는 단계를 포함한다.
일 실시예에서, 웨어 레벨링 공정동안 점진적이며 자동 웨어-레벨링 공정을 사용하여 상대적으로 작은 량의 데이터를 상이한 메모리 요소들, 예를 들어, 물리적인 블록들로 이동시킴으로써, 종종 기록되고 소거되는 논리적인 블록 어드레스들과 관계되는 메모리 요소들이 종종 기록되고 소거되는 논리적인 블록 어드레스들과 관계되기 전 종종 기록되고 소거되지 않은 메모리 요소들로 대체될 수 있기 때문에, 메모리 장치 내의 메모리 요소들의 더욱 균일한 웨어가 성취될 수 있다. 마찬가지로, 드물게 기록되고 소거되는 논리적인 블록 어드레스들과 관계된 메모리 요소들은 보다 자주 기록되고 소거되는 논리적인 블록 어드레스들과 관계되는 메모리 요소들로 대체될 수 있음으로써, 메모리 요소들의 웨어가 더욱 균일하게 되도록 한다.
본 발명의 또 다른 양상을 따르면, 메모리 시스템에서 자동 웨어 레벨링을 수행하는 방법은 제1 메모리 요소 및 제2 메모리 요소를 포함하는 직접 어드레싱 방식을 포함하는데, 이 방식은 제1 메모리 요소에 포함된 제1 세트의 정보를 제2 메모리 요소에 제공하는 단계 및 제2 메모리 요소에 포함되는 제2 세트의 정보를 제1 메모리 요소에 제공하는 단계를 포함한다. 예를 들어 메모리 시스템에 액세스하는 호스트 시스템으로부터 제1 세트의 정보에 대한 액세스가 바람직할 때, 그 후, 제2 메모리 요소가 액세스될 수 있고, 제2 세트의 정보에 대한 액세스가 바람직할 때, 제1 메모리 요소가 액세스될 수 있다. 일 실시예에서, 메모리 시스템과 관련된 매핑 정보는 갱신되어 제1 세트의 정보가 제2 메모리 요소에 포함된다는 것을 표시하고 제2 세트의 정보가 제1 메모리 요소에 포함된다는 것을 표시한다.
본 발명의 또 다른 실시예를 따르면, 존 이동 방식에서, 정보를 저장하는 메모리 시스템은 제1 메모리 요소를 지닌 제1 존 및 제2 메모리 요소를 지닌 제2 존을 포함한다. 제1 메모리 요소는 내용, 예를 들어, 데이터 정보를 포함하도록 배치된다. 메모리 시스템의 웨어 레벨링 프로세서는 제1 메모리 요소를 식별하여 제1 메모리 요소의 내용을 2 메모리 요소와 관계시키도록 배치된다. 일 실시예에서, 제2 존은 제3 메모리 요소를 포함하고, 웨어 레벨링 프로세서는 제2 메모리 요소의 내용을 제3 메모리 요소로 복사시키며, 제2 메모리 요소를 소거하고 제1 메모리 요소의 내용을 제2 메모리 요소로 복사시킨다. 이와 같은 실시예에서, 메모리 시스템은 웨어 레벨링 프로세서에 의해 갱신되어 제2 메모리 요소가 제1 존과 관계된다는 것을 표시하고 제1 메모리 요소가 제1 존으로부터 분리된다는 것을 표시하는 매핑 정보를 포함할 수 있다.
본 발명의 또한 다른 양상을 따르면, 메모리 시스템에서 자동 웨어 레벨링을 수행하는 방법은 메모리 시스템과 관계되는 제1 존을 식별하는 단계 및 또한 메모리 시스템과 관계되는 제2 존을 식별하는 단계를 포함하는 존 스와핑 방식을 포함한다. 제1 존은 제1 내용을 포함하는 제1 메모리 요소를 포함하고, 제2 존은 제2 내용을 포함하는 제2 메모리 요소를 포함한다. 이 방법은 또한 제1 내용을 제2 메모리 요소로 저장하는 단계 및 제2 내용을 제1 메모리 요소로 저장하는 단계를 포함한다. 내용이 저장되면, 제1 내용이 액세스될 때, 제1 내용은 제2 메모리 요소에 액세스되고, 제2 내용이 액세스될 때, 제2 내용은 제1 메모리 요소에 액세스 된다. 일 실시예에서, 제1 존 내의 메모리 요소들의 실질적으로 모든 원래 내용들은 제2 존 내의 메모리 요소들에 저장되고, 제2 존 내의 메모리 요소들의 실질적으로 모든 원래 내용은 제1 존 내의 메모리 요소들 내로 저장된다.
본 발명의 부가적인 양상들, 장점들 및 특징들은 전형적인 예들에 대한 이하의 설명들에 포함된다. 본원에 참조된 모든 특허들, 특허 출원들, 물품들, 특허 공개들 및 이외 다른 공개들은 본원 전반에 참조되어 있다.
본 발명은 첨부한 도면을 참조한 이하의 설명에 의해 최적으로 이해할 수 있을 것이다.
A. 메모리 구성 및 기본 정의들
본 발며들은 소거 및 기록 사이클들의 수가 증가될 때 시간에 따라서 수행성능이 저하될 수 있는 메모리 시스템들에서의 웨어 레벨링과 관계된다. 본원에 서술된 실시예들이 비휘발성 EEPROM 기반으로 한 메모리 시스템들을 설명하지만, 본 발명들의 각종 양상들은 "웨어"에 민감할 수 있는 임의 유형의 저장 매체에 적용될 수 있다. 예를 들어, 최신 비휘발성 메모리 기술은 상-변화 메모리(phase-change memory)이다. 정보는 소정 재료의 상을 변경시킴으로써 저장된다. 이와 같은 시스템들은 또한 "웨어"되는 경향이 있을 수 있는데, 이 웨어로 인해 저장 매체는 매체가 순환되는 횟수가 증가할 때 정보를 덜 저장할 수 있다. 본 발명들은 이와 같은 기술들에 손쉽게 적용될 수 있다.
일 실시예에서, 플래시 저장 시스템들 내의 비휘발성 메모리 저장 셀들은 반복적으로 프로그램되고 소거될 수 있지만, 셀들이 닳아 없어지기 전, 각 셀은 단지 특정 횟수 소거될 수 있다. 셀이 닳아 없어졌을 때, 닳아 없어진 셀을 포함하는 플래시 메모리 저장 시스템의 전체 저장 볼륨의 부분과 관련된 수행성능의 상대적으로 큰 저하가 발생되어 이 부분에 저장된 데이터가 손실될 수 있으며, 또는 이 부분에 데이터를 저장하는 것이 불가능하게 될 수 있다. 플래시 메모리 저장 시스템의 수행성능에 나쁜 영향을 미치치 않는 자동 웨어 레벨링 공정은 웨어 레벨링이 효율적으로 그리고 상당히 규칙적으로 이루어지도록 하다. 따라서, 플래시 메모리 저장 시스템과 관계된 셀들은 더욱 균일하게 닳아 없어질 수 있는데, 즉 특정 셀들이 대체로, 다른 셀들 보다 훨씬 더 신속하게 닳아 없어지지 않도록 한다. 그러므로, 플래시 메모리 저장 시스템의 수명은 수행성능에 큰 패널티를 주지 않고도 확장될 수 있다. 게다가, 웨어 레벨링이 실질적으로 자동적으로 이루어지기 때문에, 사용자가 웨어 레벨링 공정을 초기화하는 것을 기억할 필요가 없게 된다.
우선 도1a를 참조하면, 비휘발성 메모리 장치, 예를 들어 콤팩트플래시 메모리 카드와 같은 메모리 카드를 포함하는 범용 호스트 시스템이 설명될 것이다. 호스트 또는 컴퓨터 시스템(100)은 일반적으로, 마이크로프로세서(108), 랜덤 액세스 메모리(RAM)(112) 및 입력 출력 회로들(116)을 통신시키는 시스템 버스(104)를 포함한다. 호스트 시스템(100)은 일반적으로, 다른 구성요소들, 예를 들어 도시되지 않은 디스플레이 장치들 및 네트워킹 장치를 포함할 수 있다는 것을 인지하여야 만 된다.
일반적으로, 호스트 시스템(100)은 정지 화상 정보, 오디오 정보, 및 비디오 영상 정보를 포함하지만 이에 국한되지 않은 정보를 포착 또는 저장할 수 있다. 이와 같은 정보는 실시간으로 포착될 수 있고 무선 방식으로 호스트 시스템(100)에 전송될 수 있다. 호스트 시스템(100)이 실질적으로 임의의 시스템일 수 있지만, 호스트 시스템(100)은 통상적으로, 디지털 카메라, 비디오 카메라, 셀룰러 통신 장치, 휴대용 계산 장치, 오디오 플레이어 또는 비디오 플레이어와 같은 시스템이다. 그러나, 호스트 시스템(100)은 일반적으로, 데이터 또는 정보를 저장하고 데이터 또는 정보를 검색하는 실질적으로 모든 시스템일 수 있다. 이는 또한 단지 데이터를 포착하거나 단지 데이터를 검색하는 시스템일 수 있다. 즉, 호스트 시스템(100)은 데이터를 저장하는 전용 시스템일 수 있거나, 호스트 시스템(100)은 데이터를 판독하는 전용 시스템일 수 있다. 예로서, 호스트 시스템(100)은 단지 데이터를 기록 또는 저장하도록 배치된 메모리 라이터일 수 있다. 대안적으로, 호스트 시스템(100)은 통상적으로 데이터를 판독 또는 검색하고 데이터를 포착하지 않도록 배치된 MP3 플레이어와 같은 장치일 수 있다.
비휘발성 메모리 장치(120)는 버스(104)와 인터페이스하도록 배치되어 정보를 저장한다. 선택적인 인터페이스 회로 블록(130)은 비휘발성 메모리 장치(120)가 버스(104)와 통신하도록 할 수 있다. 제공될 때, 인터페이스 회로 블록(130), 예를 들어, 인터페이스는 버스(104)상의 부하를 감소시키도록 작용한다. 비휘발성 메모리 장치(120)는 비휘발성 메모리(124) 및 메모리 제어 시스템(128)을 포함한다. 일 실시예에서, 비휘발성 메모리 장치(120)는 단일 칩 또는 다이 상에서 구현될 수 있다. 대안적으로, 비휘발성 메모리 장치(120)는 다수 칩 모듈 또는 다수 이산 구성요소들 상에서 구현될 수 있다. 비휘발성 메모리 장치(120)의 한 가지 실시예가 도1b와 관련하여 이하에 보다 상세하게 설명될 것이다. 비휘발성 메모리 장치(120)는 실질적으로 임의의 적절한 비휘발성 메모리 장치, 예를 들어, 제거가능한 메모리 카드 또는 임베드된 서브시스템일 수 있다.
비휘발성 메모리(124)는 데이터가 필요에 따라서 액세스되어 판독될 수 있는 데이터를 저장하도록 배치된다. 데이터를 저장, 데이터를 판독 및 데이터를 소거하는 공정들은 일반적으로, 메모리 제어 시스템(128)에 의해 제어된다. 일 실시예에서, 메모리 제어 시스템(128)은 비휘발성 메모리(124)의 동작을 관리하여, 근본적으로 비휘발성 메모리(124)의 섹션들이 실질적으로 동일하게 닳아 없어지도록 함으로써 이 메모리의 수명을 실질적으로 최대가 되게 한다.
비휘발성 메모리 장치(120)는 일반적으로, 메모리 제어 시스템(128), 즉 제어기를 포함하는 것으로서 설명되었다. 특히, 비휘발성 메모리 장치(120)는 비휘발성 메모리(124) 및 제어기(128) 기능들을 위한 별도의 칩들을 포함할 수 있다. 예로서, PC 카드들, 콤팩트플래시 카드들, 멀티미디어 카드들, 및 보안 디지털 카드들을 포함하지만 이에 국한되지 않는 비휘발성 메모리 장치들은 별도의 칩 상에서 구현될 수 있는 제어기들을 포함할 수 있지만, 다른 비휘발성 장치들은 별도의 칩상에서 구현되는 제어기들을 포함하지 않을 수 있다. 비휘발성 메모리 장치(120)가 별도의 메모리 및 제어기 칩들을 포함하지 않도록 하는 실시예에서, 메모리 및 제어기 기능들은 단일 칩내로 집적될 수 있다. 게다가, 제어기는 호스트 시스템 상에 위치될 수 있고, 비휘발성 메모리 장치(120)는 커넥터 또는 이외 다른 어떤 유형의 인터페이스를 통해서 호스트 상의 제어기에 접속될 수 있다. 여하튼, 본 발명의 범위는 메모리 시스템의 모든 상이한 형태들 및 조합들을 포함하는데, 메모리 매체 내의 웨어 레벨은 제어 시스템에 의해 제어된다. 예를 들어, 제어기는 호스트 시스템의 마이크로프로세서 상의 소프트웨어 내에서 구현될 수 있다.
도1b를 참조하면, 비휘발성 메모리 장치(120)는 본 발명의 실시예에 따라서 보다 상세하게 설명될 것이다. 도1b는 단일 플래시 메모리 칩(124) 및 별도의 제어기(128)를 포함하는 비휘발성 메모리 장치(120)의 실시예를 도시한다는 것을 인지하여만 된다. 메모리(124)는 반도체 기판상에 형성된 적절한 어드레싱 및 제어 회로와 함께 메모리 셀들의 어레이일 수 있는데, 데이터의 하나 이상의 비트들은 메모리 셀들의 각 메모리 요소들에 전하의 분포들 또는 2개이상의 레벨들 중 한 레벨을 저장함으로써 각 메모리 셀들에 저장된다. 블휘발성 플래시 전기적으로 소거가능한 프로그램가능한 판독 전용 메모리(EEPROM)은 이와 같은 시스템들을 위한 통상적인 메모리 유형의 일예이다.
서술된 실시예에서, 제어기(128)는 버스(15)를 통해서 호스트 컴퓨터 또는 메모리 시스템을 사용하여 데이터를 저장하는 다른 시스템과 통신한다. 버스(15)는 일반적으로 도1a의 버스(104)의 일부분이다. 제어 시스템(128)은 또한, 메모리(124)의 동작을 제어하는데, 이 메모리는 메모리 셀 어레이(1)를 포함하여 호스트에 의해 제공되는 데이터를 기록하며, 호스트에 의해 요청되는 데이터를 판독하고 동작 메모리(124)에서 각종 하우스키핑 기능들을 수행한다. 제어 시스템(128)은 메모리, 각종 논리 회로들 등을 관련시키는 범용 마이크로프로세서 또는 마이크로제어기를 포함할 수 있다. 하나 이상의 상태 기계들은 또한 종종, 특정 루틴들의 수행성능을 제어하는데 포함된다.
메모리 셀 어레이(11)는 통상적으로, 어드레스 디코더들(17)을 통해서 제어 시스템(128)에 의해 어드레스 된다. 디코더들(17)은 교정 전압들(correct voltages)을 어레이(11)의 워드 및 비트 라인들에 인가하여 제어 시스템(128)에 의해 어드레스되는 메모리 셀들의 그룹에 데이터를 프로그램, 이 그룹으로부터 데이터를 판독 또는 이 그룹을 소거한다. 부가적인 회로들(19)은 판독 또는 기록되는 데이터를 일시적으로 저장하는 데이터 레지스터들, 어드레스된 셀들의 그룹 내로 프로그램되는 데이터에 따라서 어레이의 요소드에 인가되는 전압들을 제어하는 프로그래밍 구동기들, 및 각종 전압들 및 제어 신호들의 시퀀스를 제어하는 상태 긱계들을 포함할 수 있다. 회로들(19)은 또한, 어드레스된 메모리 셀들의 그룹으로부터 데이터를 판독하는데 필요한 감지 증폭기들 및 이외 다른 회로들을 포함할 수 있다. 어레이(11) 내로 프로그램될 데이터 또는 어레이(11)로부터 최근에 판독되는 데이터는 통상적으로, 제어 시스템(128) 내의 버퍼 메모리(1)에 저장된다. 제어 시스템(128)은 또한 통상적으로, 명령 및 상태 데이터 등을 일시적으로 저장하는 각종 레지스터들을 포함한다.
한 가지 특정 실시예에서, 어레이(11)는 메모리 셀들의 많은 수의 블록들(0-N)로 분할된다. 바람직한 실시예에서, 블록은 모두 소거되는 메모리 셀들의 최소수인, 소거 유닛이다. 각 블록은 통상적으로, 도1b에 또한 도시된 바와 같은 다수의 페이지들로 분할된다. 페이지는 최소 프로그래밍 유닛이고, 사용자 데이터의 하나 이상의 섹터들은 통상 각 페이지 내에 저장된다. 섹터는 호스트가 비휘발성 메모리에 또는 이로 부터 어드레스하거나 전달할 논리적인 데이터의 최소 유닛이다. 디스크 드라이브 장치들에서, 이는 전형적으로 512 바이트들이다. 일부 비휘발성 메모리들은 부분적 페이지 프로그래밍을 허용하는데, 이 부분적 페이지 프로그래밍에서, 제1 프로그래밍 이후의 소거된 상태로 남아 있는 각 비트들은 이 페이지를 먼저 소거함이 없이 다음 페이지 프로그램 동작들로 프로그램될 수 있다. 일부 다수상태 메모리들은 심지어, 보다 낮은 프로그램된 상태로 이미 프로그램된 비트들을 다음 페이지 프로그램 동작들에서 보다 높은 상태로 프로그램시킬 수 있다. 이들 메모리들에서, 섹터들 또는 심지어 섹터들의 부분들은 서로 다른 시간에서 프로그램될 수 있다. 그럼에도 불구하고, 한 페이지는 프로그래밍의 기본 유닛을 유지하며; 이는 단지 일부 비트들이 나중에 마스킹되어 제거되고 프로그램된다는 것이다. 본 발명들은 소거, 판독 및/또는 기록 유닛들의 물리적인 구현과 관계없이 임의의 적절한 메모리 시스템에 적용될 수 있다.
서술된 실시예의 도1b에 도시된 바와 같이, 한 페이지는 사용자 데이터 및 오버헤드 데이터 둘 다를 포함할 수 있다. 오버헤드 데이터는 통상, 페이지 내에 포함된 사용자 데이터로부터 계산되는 에러 정정 코드(ECC)를 포함하고, ECC는 오버헤드 데이터의 일부 또는 전부를 포함할 수 있다. 제어 시스템(128)의 일부(23)는 데이터가 어레이(11) 내로 프로그램될 때 ECC를 계산하고 또한 데이터가 어레이(11)로부터 판독될 때 ECC를 검사한다. 오버헤드 데이터는 또한, 사용자 데이터의 논리적인 어드레스, 페이지 및/또는 블록의 물리적인 어드레스들, 어드레스 맵 정보, 물리적인 블록에 의해 겪게되는 소거 사이클들의 수, 암호화 정보 및/또는 다른 통계들 또는 데이터를 포함할 수 있다. 오버헤드 데이터의 부분 또는 전부는 도1b에 도시된 바와 같이 각 페이지에 저장될 수 있다. 대안적으로, 오버헤드 데이터의 부분 또는 전부는 각 블록 내의 특정 위치에 저장될 수 있거나, 이는 심지어 사용자 데이터로부터 분리되는 블록에 저장될 수 있다.
데이터의 한 섹터는 각 페이지에 가장 보편적으로 포함되지만, 2개 이상의 섹터들은 대신에 페이지를 형성하거나, 페이지는 섹터보다 작을 수 있다. 예를 들어, 본원에 전반적으로 참조된 미국 특허들 5,890,192호 및 5,430,859호는 청크들의 유닛들(units of chunks)로 데이터를 프로그래밍하고 판독하는 것을 서술하는데, 여기서 청크는 섹터의 프랙션이다. 일부 메모리 시스템들에서, 한 섹터는 한 페이지에 포함되고, 한 페이지는 블록을 형성할 수 있다. 통상적으로, NAND 메모리 시스템들에서, 하나 이상의 섹터들은 각 페이지에 형성되고, 8, 16 또는 32 페이지들은 블록을 형성한다. 다른 메모리 시스템들에서, 블록들은 상대적으로 많은 수, 즉 512, 1024와 같은 페이지들 또는 심지어 이 보다 많은 페이지들로부터 형성된다. 블록들의 수는 메모리 시스템에 소망의 데이터 용량을 제공하도록 선택된다. 어레이(11)는 통상, 몇개의 서브-어레이들(도시되지 않음)로 분할되는데, 이 어레이들 각각은 블록들의 부분을 포함하는데, 이는 다소 서로에 대해 독립적으로 동작하여 각종 메모리 동작들의 실행시에 병렬화 정도를 증가시킨다. 다수의 서브-어레이들의 사용 예는 앞서 언급된 미국 특허 5,890,192호에 서술되어 있다.
비휘발성 메모리(124)의 특정 섹션, 예를 들어 메모리 요소들의 그룹이 반복적으로 프로그램되고 소거될 때, 특정 섹션은 일반적으로 연속적으로 프로그램되지 않은 섹션 보다 빠르게 닳아 없어진다. 비휘발성 메모리(124) 내의 여러 에리어들의 웨어를 효율적으로 "균일"하게 하기 위하여, 웨어 레벨링을 자동 수행함으로써, 반복적으로 프로그램 되는 섹션들이 덜 프로그램 되도록 하는 반면, 반복적으로 프로그램되는 섹션들을 과도하게 순환시키는 것이 아니라 이 보다 덜 프로그램되는 섹션들을 사용할 수 있도록 한다.
일반적으로, 웨어 레벨링을 수행하기 위하여, 하나 이상의 물리적인 위치들, 예를 들어, 소정 횟수 프로그램되는 하나 이상의 셀들 또는 메모리 요소들와 관계되는 논리적인 어드레스(예를 들어, 논리적인 블록 어드레스 및/또는 실린더-헤드-섹터 어드레스)는 반복적으로 프로그램 되지 않는 상이한 물리적인 위치와 재관계될 수 있다. 예를 들어, 최상위 프로그램된 물리적인 위치의 내용은 최하위 프로그램된 물리적인 위치의 내용과 스와핑되어, 물리적인 위치들의 웨어가 근본적으로 균일하게 되도록 한다. 이와 같은 공정은 직접 매핑 어드레싱 웨어 레벨링 방식으로 이루어질 수 있는데, 이 방식에서 소정 논리적인 어드레스는 웨어 레벨링과 같은 어떤 특정 이벤트에 의해 재할당될 때까지의 "긴" 시간 기간 동안 특정 물리적인 위치와 관계된다. 이 방식을 때때로 (정적) 어소시에이티브 매핑(associative mapping)이라 칭한다.
웨어 레벨링은 또한, 간접 어드레싱을 사용하여 시스템들에서 수행되어 논리적인 어드레스를 물리적인 어드레스에 매핑시킬 수 있다. 이들 시스템들에서, 소정 논리적인 어드레스는 상이한 시간에서 상이한 물리적인 위치들에 매핑되어, 각 논리적인 갱신으로 인해 변경된다. 통상, 일시적으로 사용되지 않지만 물리적인으로 소거되는 블록들의 집합은 소거 풀(erase pool)을 형성한다. 소거-풀링 웨어 레벨링 방식들에서, 어떤 영역에서 가장 닳아해진 물리적인 위치의 내용은 동일한 영역 내에서 소거된 물리적인 위치로 이동되어, 가장 닳아해진 물리적인 위치가 닳아 없어지는 속도를 n추거나, 이 존들이 스와핑되거나 재규정되어 특정 물리적인 위치들이 다른 물리적인 위치들 보다 훨씬 빠른 속도로 닳아 없어지는 것을 방지한다.
본 발명들은 또한, 물리적인 메모리의 존들을 사용하여 시스템들에서 구현될 수 있다. 존은 특정 범위의 논리적인 블록들이 매핑되는 물리적인 메모리 또는 메모리 시스템의 임의의 세분된 서브셋일 수 있다. 존에 매핑되는 논리적인 블록들의 수 보다 많은 수의 물리적인 블록들이 존에 포함되어, 과다 사전-소거된 블록들을 제공한다. 예를 들어, 64 메가바이트의 데이터를 저장할 수 있는 메모리 시스템은 존 당 16 메가바이트의 데이터를 저장하는 4개의 존으로 세분될 수 있다. 그 후, 논리적인 블록들의 범위는 4개의 그룹들로 분할되는데, 한 그룹은 4개의 존들 각각의 물리적인 블록들을 위한 것이다. 논리적인 블록들은 전형적인 구현방식에서 제한되어, 각 데이터가 논리적인 블록들이 매핑되는 단일 물리적인 존의 외부에 결코 기록되지 않도록 한다. 자신들의 어드레싱, 프로그래밍 및 판독 회로들을 각각 갖는 평면들(서브-어레이들)로 분할되는 메모리 셀 어레이에서, 각 존은 다수의 평면들로부터의 블록들, 전형적으로 평면들 각각으로부터의 동일한 수의 블록들을 포함하는 것이 바람직하다. 존들은 주로, 논리적인 대 물리적인 변환과 같은 어드레스 관리를 간단화하여, 보다 작은 변환 테이블들을 생성시키며, 이들 데이블들을 유지하는데 필요로 되는 RAM 메모리를 작게하고, 현재 메모리의 활성 영역을 어드레스 하도록 하는 액세스 시간을 보다 빠르게 하는데 사용될 수 있지만, 이들의 제한적인 특성으로 인해 웨어링 레벨링을 다소간 최적화하지 못한다.
메모리 시스템들의 크기들(현재 1기가바이트의 메모리를 초과)이 증가함에 따라서, 전체 물리적인 메모리에 걸쳐서 웨어 레벨링은 성가시며, 시간 소모적일 수 있고, 웨어 통계치(wear statistics)를 유지하기 위하여 과도한 메모리 공간을 필요로 할 수 있다. 그러나, 웨어 레벨링은 존 내의 소거 유닛들을 웨어 레벨링함으로써 존(내부 존) 내에서 또는 존들 간의 소거 유닛들을 웨어 레벨링함으로써 존들(내부 존) 간에서 수행될 수 있거나, 한 존이 또 다른 존 보다 더 많이 닳아해진 경우에 전체 존들을 스와핑할 수 있다. 또 다른 변형으로서, 동적 또는 오프셋 존 웨어 레벨링이 구현될 수 있다. 이와 같은 실시예에서, 존의 크기 및/또는 위치는 정적이 아니다. 예를 들어, 제1 존으로부터 제2 존으로 하나 이상의 소거 유닛들을 할당하여 제2 존이 제1 존 보다 크게 되도록 하는데 유용할 수 잇다. 게다가, 존의 물리적인 위치는 초기에, 메모리의 한 물리적인 부분에서 시작될 수 있지만, 웨어 레벨링 동작 후, 존은 오프셋 만큼 또는 완전하게 메모리 내에서 이동될 수 있다. 이는 다른 존들을 유사하게 오프셋 만큼 또는 이외 다른 어떤 증분 만큼 이동시켜 전체 물리적인 메모리를 이용하게 한다.
직접 매핑 어드레싱 방식이 도2 내지 도5와 관련하여 후술되는 반면에, 소거-풀링 방식이 도6 내지 도10과 관련하여 후술될 것이다.
B. 직접 매핑 웨어 레벨링
직접 매핑 어드레싱 방식에서, 특정 호스트 논리 어드레스(예를 들어, 논리적인 블록 어드레스 또는 LBA)과 관련된 데이터는 일반적으로 반복된 기록/소거 사이클들 후 조차도 틀정 물리적인 위치에 저장된다. 서술된 실시예는 논리 블록 어드레스들과 관련하여 서술되지만, 임의 유형의 논리 어드레스가 사용될 수 있다. 호스트 시스템이 동일한 논리 블록 어드레스에 기록 또는 재기록될 때, 데이터는 동일한 물리적인 어드레스에 기록된다. 전형적으로, 물리적인 어드레스에 위치되는 물리적인 메모리는 소거되고 나서, LBA와 관련된 새롭고 및/또는 갱신된 데이터로 재기록된다. 논리적인 대 물리적인 어드레스 관계는 일반적으로, LBA와 관련된 매핑이 예를 들어 웨어 레벨링 절차에 따라서 변경될 때까지 유지된다. 특정 LBAs가 반복적으로 프로그램될 수 있기 때문에, 이들 LBAs와 관련된 물리적인 위치들은 상대적으로 신속하게 닳아 없어질 수 있다. 반복적으로 재프로그램된 LBA를 드물게 프로그램되어 드물게 소거되는 물리적인 위치와 사전에 관련된 물리적인 위치에 재매핑함으로써, 2개의 물리적인 위치들 상에서의 웨어는 균일하게 될 수 있다.
도2는 직접 어드레싱 웨어 레벨링 방식이 구현될 수 있는 비휘발성 메모리 시스템을 도시한 도면이다. 비휘발성 메모리 시스템(200)은 메모리 제어기(208)에 의해 제어되며, 예를 들어 할당되는 비휘발성 메모리(204)를 포함한다. 웨어 레벨링 기능성을 포함할 수 있는 펌웨어(211) 또는 웨어 레벨링 프로세서(212)는 메모리 제어기(208)와 협동하여, 비휘발성 메모리(204)에 대한 웨어 레벨링 공정을 수행한다. 대안적으로, 웨어 레벨링은 회로, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합에 의해 수행될 수 있다. 매핑 정보(214)는 메모리 제어기(208)에 의해 사용되어, LBAs를 비휘발성 메모리(204) 내의 물리적인 위치들에 매핑시킨다.
비휘발성 메모리(204)는 일반적으로, 평면들(218a-218d)로 분할된다. 각 평면은 임의 수의 소거 유닛들, 예를 들어, 물리적인 페이지들을 포함하는 블록들을 포함할 수 있다. 블록(226a)은 평면(218a)과 관련된 여러 블록들 중 한 블록 이다. 유사하게 블록(226b)은 평면(218b)와 관련된 여러 블록들중 한 블록이다. 각 블록은 하나 이상의 페이지들, 즉 페이지(222a) 및 페이지(222b)를 포함하는데, 이들 페이지는 평면(218a)의 최상부 블록과 관계되는 2개의 페이지들 이다. 2개 이상의 상이한 평면들 각각으로부터의 한 블록은 메타블록을 형성하기 위하여 결합될 수 있다. 예를 들어, 블록들(226a, 226b, 226c, 및 226d)는 메타블록(226)을 형성하기 위하여 결합될 수 있다. 서술된 실시예에서, 웨어 레벨링 프로세서(212)와 협동하는 메모리 제어기(208)는 블록들 또는 메타블록들을 효율적으로 스왑하도록 배치된다. 스와핑 블록들은 블록들 내에서 데이터 내용들을 스와핑하는 것을 수반하여, 블록들의 물리적인 위치 및 어떤 예들에선, 메타블록들이 섹터들, 블록들 또는 메타블록들과 관련된 LBAs에 대해서 변경되도록 한다. 직접 매핑은 통상적으로, 일부 NOR 메모리들에서 사용되는데, 이 메모리에서 단일 페이지는 블록을 형성하기 기록 및 소거 둘 다의 기본 유닛은 1 페이지이다.
도3a는 물리적인 위치들 및 세트들을 포함하는 비휘발성 메모리 실시예를 도시한 도면이다. 비휘발성 메모리(304)는 섹터들(310)의 세트들 내의 데이터를 포함하는 물리적인 위치들(306)을 포함한다. 실질적으로 섹터들(310)의 임의의 세트들이 스와핑되거나 그렇치 않다면 변경될 수 있지만, 가장 많이 닳아해지거나 최고 사이클 카운트를 갖는 물리적인 위치(306)에 위치된 섹터들(310)의 세트는 통상, 가장 적게 닳아해진 또 다른 물리적인 위치(306)에 위치된 섹터들(310)의 세트와 스와핑된다. 사이클 카운트 정보의 부재시에, 위치들은 랜덤하게 선택될 수 있거나 알고리즘적으로 선택될 수 있다는 것을 인지하여야 한다.
설명을 위하여, 물리적인 위치"0"(306a)은 가장 많이 닳아해진 반면, 물리적인 위치 "N"(306a)은 가장 적게 닳아해진다. 즉, 물리적인 위치 "0"(306a) 내에 포함된 데이터는 상당히 자주 소거되는 반면, 물리적인 위치 "N"(306c) 내에 포함된 데이터는 보다 덜 소거된다. 그러므로, 비휘발성 메모리(304) 내의 물리적인 위치들(306)과 관련된 웨어를 균일하게 하기 위하여, 물리적인 위치 "0"(306a)의 내용은 웨어 레벨링 공정에서 물리적인 위치 "N"(306c)의 내용과 스와핑될 수 있다. 다른 말로서, 섹터들 "A"(310a)의 세트는 섹터들 "B"(310c)의 세트와 스와핑되어, 도3b에 도시된 바와 같이, 섹터들 "A"(310a)의 세트가 물리적인 위치 "N"(306c)에 저장되도록 하고 섹터들 "B"(310c)의 세트가 물리적인 위치 "0"(306a)에 저장되도록 하는데, 이는 또한 스와핑되는 호스트 논리적인 블록 어드레스들과 관련된다. 그러므로, 다음 섹터들"A"(310a)의 세트는 소거되어야만 되며, 소거 절차는 물리적인 위치 "N"(306c)에 대해서 발생될 것이다. 따라서, 물리적인 위치 "N"(306c)과 관련된 사이클 카운트는 증분될 것인데, 그 이유는 사이클 카운트가 일반적으로, 특정 물리적인 위치(306)와 관련된 소거 및 기록 사이클들의 수를 추적하기 때문이다.
일반적으로, 직접 어드레싱 방식 내에서, 웨어 레벨링 공정은 트리거링 상태가 정합될 때 자동적으로 초기화 된다. 트리거링 상태는 하나 이상의 물리적인 위치들의 사이클 카운트가 상대 또는 절대 임계 레벨에 도달되는 소정 시간 기간의 끝 일 수 있거나, 하나 이상의 물리적인 위치들이 상당히 저하된 수행성능 레벨을 나타낸다라고 결정될 때일 수 있다. 이는 특정 수의 호스트 기록 동작들이 발생될 때 트리거될 수 있다. 웨어 레벨링 공정을 초기화하기 위하여 사용되는 다른 방법들은 다수의 호스트 동작들을 추적하여 호스트 동작들의 수가 특정 수에 도달할때 웨어 레벨링을 초기화하는 단계, 및 웨어 레벨링 공정들을 개시하도록 사용되는 랜덤 또는 의사-랜덤 수들을 발생시키는 단계를 포함하지만 이에 국한되지 않는다.
도4를 참조하면, 웨어 레벨링 공정을 겪어야만 되는 비휘발성 메모리 내의 하나 이상의 섹터들을 식별하는 단계와 관련된 단계들이 설명될 것이다. 스와핑되어야만 되는 하나 이상의 섹터들을 식별하는 공정(400)은 트리거링 상태가 정합되는지 여부를 결정하는 단계(404)에서 시작된다. 즉, 웨어 레벨링 공정이 초기화되는 지에 대한 결정이 행해진다. 이와 같은 결정은 비휘발성 메모리를 제어하는 메모리 제어기에 의해 행해질 수 있다. 서술된 실시예에서, 트리거링 상태가 정합되는지에 대한 결정은 소정 시간 기간이 예를 들어 최종 웨어 레벨링 공정 이후에 경과되었는 지에 대한 결정이다. 대안적으로, 호스트 시스템은 웨어 레벨링 공정을 초기화할 때를 결정할 수 있다. 또한 다른 실시예에서, 사용자는 웨어 레벨을 초기화하는 옵션을 가질 수 있고, 이와 같은 실시예에서, 메모리 제어기 또는 호스트 시스템은 적절한 시간에서 사용자가 웨어 레벨 동작을 프롬프트하도록 할 수 있다.
소정 시간 기간이 경과되지 않는 다라고 결정하면, 또 다른 결정이 예를 들어 다소 늦은 시간에서 행해져 소정 시간 기간이 경과되었는 지를 결정할 수 있다. 대안적으로, 소정 시간 기간이 경과되었다라고 결정하면, 단계(408)에서, 비휘발성 메모리 내의 각 물리적인 위치 또는 일부 범위 내의 각 물리적인 위치에 대한 핫 카운트들(hot counts) 또는 사이클 카운트들이 구해져 탐색 시간을 제한시킨다. 핫 카운트들이 구해지면, 가장 많이 알려진 웨어를 표시하는 최고값을 지닌 핫 카운트는 단계(412)에서 식별된다. 유사하게, 최저 값 또는 가장 적게 알려진 웨어를 지닌 핫 카운트는 단계(416)에서 식별된다. 물론, 최고 또는 최저 핫 카운트에 대한 근사화(가령 충분히 높거나 충분히 낮은)는 특히 탐색 알고리즘이 사용될 때 사용될 수 있다.
단계(420)에서, 최고 핫 카운트를 지닌 물리적인 위치에 저장된 하나 이상의 섹터들은 섹터들 "A"의 세트로서 식별되는 반면에, 최저 핫 카운트를 지닌 물리적인 위치에 저장된 섹터들의 세트는 단계(424)에서 섹터 "B"의 세틀로서 식별된다. 섹터들 "A" 세트 및 섹터들 "B"의 세트가 식별되면, 웨어 레벨링 공정은 최고 및 최저 핫 카운트들을 지닌 물리적인 위치들에 대해서 단계(428)에서 식별된다. 한 가지 적절한 웨어 레벨링 공정이 도5와 관련하여 후술될 것이다. 웨어 레벨링 공정이 수행된 후, 웨어 레벨링 공정을 겪어야만 되는 섹터들의 세트들을 식별하는 공정이 완료된다.
도5는 웨어 레벨링 공정과 관련된 단계들의 일예, 즉 도4의 실시예의 단계(428)를 도시하는 공정 흐름도이다. 웨어 레벨링 공정(428)은 섹터들 "A"의 세트가 예를 들어 최고 핫 카운트를 지닌 물리적인 에리어로부터 스페어 에리어, 즉 실질적으로 정보가 현재 저장되지 않은 비휘발성 메모리 내의 에리어로 복사되는 단계(504)에서 시작된다. 섹터들 "A"의 세트가 스페어 에리어로 복사되면, 원래 섹터들 "A"의 세트와 관련된 물리적인 위치는 단계(508)에서 소거된다. 단계(512)에서, 섹터들 "B"의 세트는 섹터들 "A"의 세트에 의해 사전에 점유된 물리적인 위치로 복사된다. 섹터들 "B"의 세트가 복사되면, 섹터들 "B"의 세트를 복사하는 물리적인 위치는 단계(516)에서 소거된다. 섹터들 "B"의 세트를 복사하는 물리적인 위치가 소거된 후, 스페어 에리어에 저장되는 섹터들 "A"의 세트는 단계(520)에서 섹터들 "B"의 세트에 의해 사전 점유되는 물리적인 위치로 복사된다. 그 후, 단계(524)에서, 스페어 에리어가 소거될 수 있다.
비휘발성 메모리에 액세스하는 호스트, 즉 보다 구체적으로, 호스트 컴퓨터 시스템이 웨어 레벨링이 발생된 후 비휘발성 메모리 내에서 요청된 정보를 탐색할 수 있도록 하기 위해선, 메모리 제어기가 정확한 정보에 액세스하도록 하는 매핑 정보가 단계(528)에서 갱신된다. 매핑 정보는 갱신되어, 섹터들 "A" 및 "B"의 세트들에 저장된 정보에 액세스하도록 사용되는 호스트 LBAs가 새로운 물리적인 위치들에 액세스하도록 갱신되는데, 이 물리적인 위치들에서 섹터들 "A" 및 "B"의 세트는 웨어 레벨링 공정이 발생된 후 저장된다. 매핑 정보가 갱신되면, 웨어 레벨링 절차를 수행하는 공정이 완료된다. 매핑 정보는 도2에서 처럼 휘발성 RAM 내의 테이블(214)에 저장될 수 있으며, 및/또는 부분적으로 또는 전체적으로 비휘발성 메모리에 포함될 수 있다.
직접 어드레싱 컨텍스트에서 웨어 레벨링 공정이 2개의 섹터들의 세트들을 스와핑하는 것으로서 서술되었지만, 이와 같은 웨어 레벨링 공정은 일반적으로 임의 수의 섹터들의 세트들을 스와핑하는 단계를 포함한다. 예를 들어, 최고 핫 카운트와 관련된 물리적인 위치 내의 섹터들의 세트와 최저 핫 카운트와 관련된 물리적인 위치 내의 섹터들의 세트를 스와핑하는 것 이외에도, 제2 최고 핫 카운트와 관련된 물리적인 위치 내의 섹터들의 세트는 또한 제2 최저 핫 카운트와 관련된 물리적인 위치 내의 섹터들의 세트와 스와핑될 수 있다. 즉, 웨어 레벨링 공정의 여러 반복들은 병렬 또는 직렬중 어느 하나로 수행될 수 있다. 게다가, 웨어 레벨링 공정 동안 최고 핫 카운트와 관계된 물리적인 위치 내의 섹터들의 세트를 최저 핫 카운트와 관계된 물리적인 위치 내의 섹터들의 세트와 스와핑하는 대신에, 실질적으로 임의의 2개의 섹터들의 세트들은 스와핑될 수 있고 이들은 랜덤하게 또는 어떤 결정론적 방법을 토대로 선택될 수 있다.
C. 소거 풀링
앞서 언급된 바와 같이, 웨어 레벨링 공정을 직접 어드레싱 방식과 결합시키는 것이 아니라 오히려, 웨어 레벨링 공정은 대신, 소거-풀링 방식과 결합될 수 있다. 에러-풀링 방식에서, 섹터들은 통상적으로, 물리적인 블록들과 비통계적으로 관련된 논리 블록들로 그룹화된다. 논리 블록들은 일반적으로, 호스트 LBAs의 범위를 위한 데이터를 포함하지만, 데이터가 이들 LBAs에 기록되거나 갱신될 때마다 플래시 메모리 시스템 내의 서로 다른 물리적인 위치들에 저장된다. 각 물리적인 블록은 논리적인 어드레스 필드 또는 이 물리적인 내용의 어떤 다른 식별을 포함할 수 있다. 이와 같은 매핑 정보를 제어기에 의해 간편하게 액세스되는 휘발성 메모리 에리어 내의 테이블에 유지시키는 것이 종종 편리하다. 일부 실시예들에서, 이 테이블은 플래시 메모리 시스템이 파워-온될 때마다 형성되어, 상이한 LBAs가 액세스될 때 상이한 논리적인 블록들을 계속해서 탐색하도록 하는 필요성을 감소시킨다. 이와 같은 테이블을 구성하는데 필요한 정보는 또한, 실제 사용자 데이터 또는 이와 별도로 비휘발성 메모리에 저장될 수 있다.
한 유형의 불휘발서 메모리 시스템에서, 어레이는 존들로 구성된다. 도6은 이와 같은 존들을 포함하는 비휘발성 메모리 시스템을 도시한 도면이다. 비휘발성 메모리 시스템(600)은 메모리 제어기(608)에 의해 제어될 수 있는 비휘발성 메모리(604)를 포함한다. 메모리 제어기(608)는 웨어 레벨링 프로세서(610)를 사용하여 비휘발성 메모리(204)에 대한 웨어 레벨링 공정을 수행한다. 메모리 제어기(608)에 의해 액세스될 수 있는 휘발성 메모리(612)는 논리적인 대 물리적인 어드레스 맵과 같은 매핑 정보를 포함할 수 있다. 비휘발성 메모리(604)는 존들(614)로 분할된다. 존들(614)의 크기 뿐만 아니라 존들(614)의 수는 비휘발성 메모리(604)의 크기 및 비휘발성 메모리 시스템(600)의 요구조건들에 따라서 가변될 수 있다. 존들은 일반적으로 물리적인 블록들(618)로 분리되는데, 이 블록들은 일 실시예에서 상술된 바와 같이 메타블록들로 그룹화될 수 있다. 각 블록 또는 메타블록은 하나 이상의 데이터 섹터들 각각의 하나 이상의 그룹들(페이지들)(622)을 포함한다. 메모리 셀 어레이 존들의 전형적인 사용에서, 호스트 논리적인 블록 어드레스들(LBAs)의 특정 중첩하지 않은 범위는 물리적인 존들 각각에 매핑되고, 이 매핑은 변경되지 않는다. 존은 이 방식으로 규정되어 다수의 평면들을 사용하는 메모리 아키텍쳐에서 2개 이상의 평면들로부터의 블록들을 포함하도록 할 수 있는데, 각 존은 전형적으로 각 존들 내의 동일한 상대 물리적인 어드레스들과 동일한 수의 블록들을 포함한다. 물리적인 존은 호스트 LBAs의 이산 범위들 중 어느 한 범위가 매핑되는 블록으로 규정되고, 이와 같이 논리적인으로 재구성될 수 있다. 전형적으로, 물리적인 블록 어드레스들은 각 존에 인접하게 되도록 선택되지만 이는 요구조건이 아니다.
소거-풀링 방식에서, 웨어 레벨링은 존(614) 내 또는 존들(614)간에서 발생될 수 있다. 예로서, 존(614) 내에, 한 그룹의 섹터들(622)은 물리적인 블록들(618) 간에서 이동되어, 단일 물리적인 블록(618)이 동일한 존(614) 내의 다른 물리적인 블록들(618)보다 훨씬 신속하게 닳아 없어지지 않도록 할 수 있다. 이와 같은 내부 존 소거-풀링 방식은 도7과 관련하여 후술될 것이다. 웨어 레벨링이 2개의 존들(614)간에 발생될 때, 존들(614)의 위치는 이동되어, 도8 및 도9와 관련하여 후술되는 바와 같이 각 존(614)이 다른 존들(614) 보다 훨씬 빠르게 닳아 없지는 것을 실질적으로 방지한다.
1. 내부 존 웨어 레벨링
내부 존 웨어 레벨링 공정 동안, 논리적인 블록들은 일반적으로, 단일 존 내에 유치되고, 이에 따라서, 존을 정하는 존 경계들은 효율적으로 이동되지 않는다. 그러나, 존 내의 물리적인 어드레스들과의 논리적인 관계들은 이동된다. 도12a는 내부 존 웨어 레벨링 공정이 발생되기 전 물리적인 블록들을 포함하는 존을 도시한 것이다. 존(1200) 내의, 물리적인 블록들(1202)은 논리적인 내용 또는 논리적인 블록들(1206)과 관련된 내용을 포함할 수 있다. 초기에, 물리적인 블록(1202a)은 논리적인 블록(1206a)에 속하는 데이터를 포함할 수 있는 반면, 물리적인 블록(1202b)은 효율적으로 소거된 블럭일 수 있는데, 즉 논리적인 블록(1206b)은 실질적으로 내용을 갖지 않는다. 내부-존 웨어 레벨링은 도12b에 도시된 바와 같이 논리적인 블록들(1206)이 효율적으로 존(1200) 내에서 이동되도록 한다. 도시된 바와 같이, 내부-존 웨어 레벨링이 발생되면, 논리적인 블록(1206a)의 내용은 물리적인 블록(1202b) 내로 이동됨으로써, 물리적인 블록(1202a)을 소거시킨다. 소거된 물리적인 블록(1202a)는 내용을 실질적으로 갖지 않는 논리적인 블록(1206b)을 실질적으로 포함한다. 그러므로, 물리적인 블록(1202a)은 소거된 블록인 반면에, 물리적인 블록(1206b)은 논리적인 블록(1206a)와 관련된다. 존(1200)과 관련된 매핑 정보를 포함하는 데이터 구조가 논리적인 블록(1206a)과 관련된 새로운 데이터의 위치를 유지하도록 갱신될 수 있다.
도7을 참조하여, 내부-존 소거-풀링 컨텍스에서 일예의 일반적인 웨어 레벨링 공정과 관련된 단계들이 서술될 것이다. 공정(700)은 단계(702)에서 시작되는데, 이 단계에서 웨어 레벨링 공정이 수행되는지 여부를 결정한다. 이와 같은 결정은 각종 상이한 방법들 또는 직접 어드레싱 웨어 레벨링 공정에서 상술된 바를 포함하는 트리거링 이벤트들을 사용하여 행해질 수 있지만, 서술된 실시예에서, 이와 같은 결정은 랜덤 또는 의사 랜덤수들을 사용함으로써 행해진다. 일 실시예에서, 존은 전체 장치 또는 여러 장칟르을 포함할 수 있다.
웨어 레벨링이 수행되어야 하는지가 단계(703)에서 결정된다. 서술된 실시예에서, 이와 같은 결정은 마스크를 사용하여 트리거링 이벤트에 실제 응답할 확률을 감소시키는 것을 포함할 수 있다. 예를 들어, '1' 및 '0'의 어떤 조합들을 포함하는 수가 마스크로서 사용되어 특정 트리거링하기 위하여 사용되는 랜덤수에 대해 AND하면, 특정 트리거링 이벤트들은 무시되고 웨어 레벨링은 수행되지 않을 것이다. 그리고 나서, 공정 흐름은 웨어 레벨링을 수행하는데 적절한지 여부에 대한 또 다른 결정을 행하는 단계(702)로 복귀한다. 대안적으로, 웨어 레벨링이 수행되는지가 단계(703)에서 결정되면, 웨어 레벨링 절차는 섹터들 "A"의 세트를 섹터들 "A"의 세트와 동일한 존 내에 위치되는 소거 풀로 복사하는 단계(704)에서 시작된다. 소거 풀은 존 내의 모든 다른 소거된 블록들이다. 섹터들 "A"의 세트는 일반적으로 거의 모든 방법을 사용하여 선택될 수 있다. 예를 들어, 섹터들 "A"의 세트는 랜덤하게 선택될 수 있거나, 섹터들 "A"의 세트는 결정론적으로 선택될 수 있다.
섹터들 "A"의 세트가 소거 풀 내로 복사된 후, 단계(708)에서, 섹터들 "A"의 세트를 사전에 포함하는 물리적인 위치는 소거된다. 이와 같이, 소거된 물리적인 위치 또는 블록은 효율적으로 소거 풀의 부분이 된다. 섹터들 "A"의 세트를 사전에 포함하는 물리적인 위치가 소거되면, 소거-풀링 방식의 부분으로서 웨어-레벨링 공정을 수행하는 공정은 완료된다. 매핑 정보를 포함하는 임의의 데이터 구조들은 일반적으로 섹터들 "A"의 세트의 새로운 위치를 반영하도록 갱신된다는 것을 이해하여야 한다.
내부-존 웨어 레벨링은 일반적으로, 소정 존 내에서 웨어가 실질적으로 균일하게 확산되도록 한다. 그러나, 소정 존이 다른 존들 보다 훨씬 더 자주 프로그램되거나 소거될 때, 이 웨어는 웨어 레벨링 공정 동안 상이한 존들에 걸쳐서 확산될 수 있다. 논리적인 존들이 통상, 고정된 범위들의 호스트 LBAs를 포함하기 때문에, 상이한 존들에 걸쳐서 웨어를 확산시키는 것은 존들의 물리적인 경계들을 이동시키는 것을 포함할 수 있다.
본원에 서술된 내부-존 웨어 레벨링 기술들이 단일 존을 갖는 메모리 시스템에 적용될 수 있다는 점에 유의하여야 한다. 게다가, 단일 또는 내부-존 웨어 레벨링의 또 다른 예는 이하의 4장에 서술되어 있다.
2. 존 스와핑
실질적으로 장치의 단지 한 부분만이 과도하게 사용될 것으로 예측되는 물리적인 블록들의 웨어가 존재할 때, 과다하게 닳아해진 존을 약간 닳아해진 존과 스와핑하는 단계를 포함하는 웨어 레벨링 공정이 유용하게 사용될 수 있다. 존 스와핑을 사용하는 웨어 레벨링 공정은 2개의 존들의 물리적인 위치들을 스와핑 시킨다. 웨어 레벨링 공정 또는 동작이 초기화 되면, 각 존 내의 블록들의 내용은 다른 존 내로 복사된다. 전형적으로, 상대적으로 많은 량의 데이터를 포함하는 존들이 스와핑하는데 상당량의 시간이 걸릴 수 있기 때문에, 존 스와핑은 비휘발성 메모리 장치를 포함하는 표준 활동도(activities)의 배경에서 수행될 수 있다는 것을 인지하여야 한다.
이동되는 데이터가 액세스되는 것을 실질적으로 방지하기 위하여, 또한, 웨어 레벨링 동작 중에 비휘발성 메모리 장치의 전원 차단이 비휘발성 메모리 장치의내용이 액세스될 수 없도록 하는 것을 방지하기 위하여, 각종 데이터 구조들이 구현될 수 있다. 예를 들어, 데이터 구조들은 웨어 레벨링 공정의 어느 스테이지가 웨어 레벨링 공정의 현재 스테이지에 따라서 데이터로의 액세스가 실질적으로 제한되도록 하는 지를 표시할 수 있다. 각종 데이터 구조들은 또한 스왑 동작이 진행중일 때에 대한 결정을 행하도록 할 수 있고 차단된 스왑 동작을 계속하도록 사용될 수 있는 정보를 포함할 수 있다.
2개의 존들이 웨어 레벨링 공정 동안 위치들을 교환시키도록 랜덤하게 또는 결정론적으로 선택될 때, 각 존으로부터의 블록들은 다른 블록들로 복사될 수 있다. 존 스와핑 동안, 블록들은 한 존의 시작에서 또 다른 존으로 교호적으로 복사되어, 존 스왑 동안 각 존의 물리적인 시작이 다른 존에 속하는 블록들을 포함하도록 한다. 도13a는 존 스와핑 웨어 레벨링 공정 전, 물리적인 블록들을 포함하는 일예의 존을 도시한 도면이다. 물리적인 존들(1300)은 물리적인 블록들(1310, 1320)을 포함한다. 특히, 존 "A" (1300a)은 물리적인 블록들(1310)을 포함하는 반면에, 존 "B"(1300b)은 물리적인 블록들(1320)을 포함한다. 초기 상태에서, 논리적인 블록(1314a)을 포함하는 제1 논리적인 존은 실질적으로 완전히 존 "A"(1300a) 내에 있는 반면에, 논리적인 블록들(1314b-d)를 포함하는 제2 논리적인 존은 실질적으로 완전히 존 "B"(1300b) 내에 있다. 도시된 바와 같이, 물리적인 블록(1320c)은 초기에 소거된 블록이다.
존 스와핑 동안, 논리적인 블록들(1314)의 내용은 존들(1300)간에서 이동된다. 특정 예에서, 물리적인 블록(1320a)에 저장된 논리적인 블록(1314b)과 관계된 내용은 물리적인 블록(1320c)와 같은 동일한 존 내의 이용가능한 소거된 블록으로 이동되어 스왑을 시작한다. 그 후, 물리적인 블록(1320a)은 소거된다. 논리적인 블록(1314a)와 관련된 내용은 물리적인 블록(1310a)로부터 소거된 물리적인 블록(1320a)으로 존들 간에서 이동되고, 논리적인 블록(1314c)의 내용은 물리적인 블록(1320c)로부터 물리적인 블록(1310a) 내로 이동된다. 그 후, 물리적인 블록(1310c)은 소거될 수 있고, 존들 간에서 데이터 스왑을 위한 다음 라운드에 이용될 수 있다. 도13b는 존들(1300a 및 1300b) 간의 데이터(1314a 및 1314c)의 2개의 논리적인 블록들의 스와핑을 포함하는 이들 초기 단계들 이후의 도13a의 존들(1300)을 도시한다. 도시된 바와 같이, 논리적인 블록(1314c)은 존 "A"(1300a)와 관련되는 반면에, 논리적인 블록(1314a)은 존 "B"(1300b)와 관련된다. 존 스와핑 공정 후, 논리적인 블록들(1314b, 1314d)은 존 "B"(1300b)와 관련되어 유지되지만, 논리적인 블록들(1314b, 1314d)은 상이한 물리적인 블록들(1320) 내에 포함된다.
일반적으로, 스왑 경계는 존 스와핑 중에 이동된다. 스왑 경계는 데이터를 포함하는 실질적으로 모든 사전 블록들이 또 다른 존으로부터 복사되는 데이터를 갖도록 하는 경계를 묘사하는 소정의 존 내의 블록이다. 도13a에 도시된 존 스와핑과 관련된 초기 단계들 전에, 존 "A"(1300a) 내의 스왑 경계는 물리적인 블록(1310a)이고 존 "B"(1300b) 내의 스왑 경계는 물리적인 블록(1320a)이다. 그러나, 초기 단계들이 도13b에 도시된 바와 같은 존 스와핑과 관련된 이후에, 존 "A"(1300a) 내의 스왑 경계는 물리적인 블록(1310b)인 반면에, 존 "B"(1300b) 내의 스왑 경계는 물리적인 블록(1320b)이다.
다음에 도8을 참조하면, 존 스와핑을 포함하는 웨어 레벨링을 수행하는 일 예의 방법과 관련된 단계들이 서술될 것이다. 공정(800)은 단계(802)에서 시작되는데, 이 단계에서 웨어 레벨링 공정이 수행되는지 여부가 결정된다. 상술된 바와 같이, 이와 같은 결정이 각종 상이한 방법들을 사용하여 행해질 수 있지만, 서술된 실시예에서, 이와 같은 결정은 랜덤 또는 의사-랜덤 수들을 사용하여 행해진다. 단계(802)에서 조사된 정보를 토대로, 웨어 레벨링이 수행되어야 하는지에 관한 결정이 단계(803)에서 행해진다. 웨어 레벨링이 수행되지 않았다라고 결정하면, 공정 흐름은 단계(802)로 복귀하는데, 이 단계에서 웨어 레벨링이 적절하게 수행되는지 여부에 대한 또 다른 결정이 행해진다. 이와 같은 다음 결정은 일부 시간 량 이후에 행해질 수 있다.
대안적으로, 웨어 레벨링이 수행되었다라고 단계(803)에서 결정하면, 웨어 레벨링 절차는 제1 존, 예를 들어 존 "B"와 관련된 스왑 경계에서의 존 "B" 내의 물리적인 블록의 내용을 존 "B" 내의 소거된 블록으로 복사하는 단계(804)에서 시작된다. 존 경계에서의 물리적인 블록이 이미 소거되면, 이 단계는 필요로 되지 않는다. 공정(800)의 시작 전 스왑 경계는 존 "B"의 제1 물리적인 블록일 수 있다. 물리적인 블록의 내용이 단계(804)에서 복사되면, 존 "B" 내의 스왑 경계에서의 물리적인 블록은 단계(808)에서 소거된다. 존 "B" 내의 스왑 경계에서의 물리적인 블록을 소거하는 것은, 존 "B"의 시작에서의 공간을 효율적으로 제거한다. 존 "B" 내의 스왑 경계에서의 물리적인 블록이 소거된 후, 제2 존, 예를 들어, 스왑 경계에서의 존 "A" 내의 스왑 경계에서의 물리적인 블록의 내용은 단계(812)에서 존 "B" 내의 스왑 경계에서의 소거된 물리적인 블록으로 복사된다. 즉, "소스 블록"의 내용은 목적지 블록 내로 복사된다. 존 "A" 내의 스왑 경계에서의 물리적인 블록의 내용이 복사되면, 존 "A" 내의 스왑 경계에서의 물리적인 블록은 단계(816)에서 소거된다. 그 후, 단계(820)에서, 매핑 정보는 갱신된다. 일반적으로, 매핑 정보를 갱신하는 단계는 데이터가 복사되는 블록들 뿐만 아니라 소거되는 블록들의 소거된 상태에 대한 매핑 정보를 포함하는 임의의 데이터 구조들을 갱신하는 단계를 포함한다. 이와 같은 매핑 정보는 제어기의 비휘발성 메모리 또는 휘발성 메모리에 저장될 수 있다.
매핑 정보를 갱신시, 존 "B"와 관계된 스왑 경계에서의 물리적인 블록의 내용은 단계(824)에서 존 "A" 내의 스왑 경계에서의 소거된 블록 내로 복사된다. 존 "A"와 관련된 내용이 존 "B"와 관련된 원래 스왑 경계에서의 물리적인 블록 내로 복사될 때 스왑 경계가 효율적으로 이동되기 때문에, 단계(824)에서 존 "B"과 관련된 스왑 경계가 단계(804)에서 존 "B"와 관련된 스왑 경계와 상이하다는 점에 유의하여야 한다. 유사하게, 존 "A"와 관련된 스왑 경계는 또한, 존 "B"와 관련된 내용이 사전에 존 "A"의 부분이 되는 물리적인 블록 내로 복사될 때 효율적으로 이동한다.
단계(828)에서, 존 "B"와 관련된 스왑 경계에서의 물리적인 블록은 소거되는데, 즉 단계(824)에서 내용을 복사하는 소스 블록은 소거된다. 그 후, 단계(832)에서, 특정 정보, 예를 들어, 복사된 내용이 위치되는 물리적인 위치들을 식별하기 위하여 그리고 소거되는 물리적인 블록들과 관련된 소거된 상태를 식별하기 위하여, 매핑 정보는 갱신된다. 그 후, 존 "A" 및 존 "B"가 완전히 스와핑되었는지에 관한 결정을 단계(836)에서 행한다. 즉, 사전 존 "A" 내에 있는 모든 내용이 존 "B" 로 복사되는지 여부 및 사전에 존 "B"에 있는 모든 내용이 존 "A"로 복사되었는 지 여부가 결정된다.
존 "A" 및 존 "B"가 완전히 스와핑되었다 라고 단계(836)에서 결정할 때, 존 스와핑에서 웨어 레벨링을 수행하는 공정은 완료된다. 대안적으로, 존 "A" 및 존 "B"가 완전히 스와핑되지 않았다라고 단계(836)에서 결정하면, 공정 흐름은 존 "A"의 스왑 경계에서의 물리적인 블록의 내용을 존 "B" 내의 스왑 경계에서의 소거 블록을 복사하는 단계(812)로 복귀한다. 비휘발성 테이블 기록 프로그레스는 웨어 레벨링 공정 동안 유지되어, 이 공정이 전력 손실 이후에 또는 웨어 레벨링 공정이 일시적으로 호스트 액세스에 의해 차단되는 경우 계속되도록 할 수 있다.
존 스와핑이 발생되는 레이트는 폭넓게 변동될 수 있다. 일 실시예에서, 블록들이 내용이 스와핑되는 레이트는 스와핑이 호스트 동작들의 수에 걸쳐서 점진적으로 변동되도록 조정될 수 있다. 스와프 동작이 호스트 동작들의 배경에서 수행되면, 존들이 스와핑되는 공정에 있는 동안 동작들이 발생될 수 있다는 것을 인지하여야 한다. 이와 같은 경우에, 메모리 장치의 동작은 존의 내용의 비연속적인 물리적인 위치가 메모리 장치의 동작에 거의 영향을 미치지 않도록 된다. 즉, 존은 일시적으로 2개의 해체된 물리적인 에리어들(disjointed physical areas)를 포함하지만, 존 관리를 지시하는 알고리즘들은 동일한 방식으로 동작될 수 있다.
한 존으로부터의 논리적인 블록들이 다른 존 내로 복사되도록, 존 스와핑은 2개의 존들의 위치들의 교환과 관련하여 서술되었다. 일반적으로, 존 스와핑은 2개 이상의 존들의 위치들을 교환하는 것을 포함할 수 있다. 예를 들어, 제1 존의 내용은 제2 존으로 복사될 수 있으며, 제2 존의 내용은 제3 존으로 복사될 수 있고, 제3 존의 내용은 제1 존으로 복사될 수 있다. 실질적으로 임의수의 존들의 위치들은 효율적으로 교환될 수 있지만, 존들의 수는 수용하가능한 수행성능 패널티라고 간주되는 것을 토대로 결정될 수 있다는 것을 이해하여야 한다. 즉, 한 번에 2개 이상의 존들의 위치들의 스와핑은 어떤 경우들에선 수용될 수 없다라고 간주되는 수행성능 패널티를 발생시킬 수 있다.
유사하게, 하나 이상의 블록의 내용은 전체 존 스와핑 공정 동안 존들간에서 스와핑될 수 있다. 다른 말로서, 존 스와핑 공정이 존들 간에서 한번에 한 블록 씩 내용 스와핑을 포함하는 것으로서 서술되었지만, 2개 이상의 블록들의 내용이 대신 존들 간에서 한번에 스와핑될 수 있다는 것을 인지하여야 한다.
3. 존 경계 이행
존들, 예를 들어 존 스왑 웨어 레벨링 공정 동안 가장 작게 웨어링된(worn) 존과 가장 많이 웨어링된 존을 완전히 스와핑하는 것이 아니라 오히려, 존들은 대신 존 이동 웨어 레벨링 공정의 일부로서 효율적으로 이동될 수 있다. 즉, 존들과 관련된 경계들은 시프트되어, 원래 하나의 존의 일부인 물리적인 블록 또는 물리적인 블록들이 또 다른 존의 일부가 되도록 시프트될 수 있다. 존 경계들을 시프트시킴으로써, 사전에 반복적으로 프로그램되고 소거되는 물리적인 존들과 관련된 물리적인 블록들은 덜 빈번하게 프로그램 되고 소거되는 물리적인 블록들이 될 수 있다. 그러므로, 메모리 장치 내의 물리적인 블록들의 웨어는 장치에 걸쳐서 더욱 균일하게 확산될 수 있다. 장치에 걸쳐서 물리적인 블록들의 웨어를 확산시키는 것은 카드의 여러 에리어들이 상대적으로 과다하게 사용될 것이라 예측될 때 특히 유용하다. 이동 기간이 충분히 짧은 경우, 최소량의 웨어 레벨링이 실질적으로 보장될 수 있다.
존 경계 이동 또는 논리적인 존 경계들을 효율적으로 이동시키는 웨어 레벨링 공정은 논리적인 존들의 물리적인 위치들을 점진적으로 변경시킨다. 존 경계들은 존 크기와 실질적으로 동일한 간격들에서 블록들로부터 섹터들을 판독함으로써 위치될 수 있다. 각 블록과 관련된 헤더는 존 필드를 도시할 수 있다. 존 으로부터의 한 블록이 위치되면, 경계들은 각 방향에서 각 인접 존들의 블록이 발견될 때까지 적어도 인접 블록들의 헤더들을 판독함으로써 발견될 수 있다. 대안적으로, 실질적으로 모든 매핑 정보는 비휘발성 메모리 내에 테이블들에 저장될 수 있다. 하나의 존의 존 경계들이 고정되고, 고정된 존 크기가 공지될 때, 다른 존들과 관련된 존 경계들은 일반적으로 고정된 크기의 존들과 실질적으로 동일한 간격에서 블록들로부터 섹터들을 판독함이 없이 결정될 수 있다. 즉, 존들의 크기 및 순서가 공지되면, 논리적인 블록수 및 논리적인 존과 관련된 존 정보를 포함하는 헤더를 갖는 하나의 블록을 내용들을 판독하여 존 경계들이 위치설정되도록 할 수 있게 된다. 일반적으로, 블록의 헤더는 블록의 위치를 결정하도록 하는 절대 논리 블록수 또는 존 정보에 사용될 수 있는 상대 논리 블록 수를 포함하여, 존들의 물리적인 위치 결정을 용이하게 한다.
도9을 참조하여, 존 경계 이동을 사용하여 웨어 레벨링의 일 예의 방법과 관련된 단계들이 설명될 것이다. 공정(900)은 웨어 레벨링 공정이 수행되는 지 여부를 결정하는 단계(920)에서 시작한다. 이와 같은 결정은 각종 상이한 방법들, 예를 들어, 결정론적 방법들을 사용하여 행해질 수 있는데, 서술된 실시예에서, 이와 같은 결정은 랜덤 또는 의사 랜덤 수들의 사용을 통해서 행해진다.
웨어 레벨링이 수행되는지 여부가 단계(903)에서 결정된다. 웨어 레벨링이 수행되지 않는다라고 결정되면, 공정 흐름은 웨어 레벨링이 적절하게 수행되는지 여부에 대한 또 다른 결정을 행하는 단계(902)로 복귀된다. 대안적으로, 웨얼 레벨링이 수행된다라고 단계(903)에서 결정하면, 웨어 레벨링 절차는 논리적인 존 "X" 내에 위치된 제1 물리적인 블록이 소거되는지 여부에 관한 결정을 행하는 단계(904)에서 효율적으로 시작된다. 즉, 논리적인 존 "X"의 시작에서, 즉 존 "X"의 하부 존 경계에서 제1 물리적인 블록이 소거되는지 여부를 결정한다.
존 "X" 내의 제1 물리적인 블록이 소거되지 않았다라고 결정되면, 이 표시는 존 "X" 내의 제1 물리적인 블록이 정보를 포함한다는 것이다. 따라서, 공정 흐름은 논리적인 존 "X"의 시작에서 물리적 블록의 내용이 존 "X" 내에서 실질적으로 이용가능한 모든 블록으로 복사되는 단계(908)로 이동된다. 물리적인 블록의 내용이 존 "X" 내의 소거된 블록 내로 복사되면, 존 "X"의 시작에서의 물리적인 블록은 단계(912)에서 소거된다.
존 "X"의 시작에서 물리적인 블록이 단계(912)에서 소거된 후, 논리적인 존 "X-1"의 시작에서 제1 물리적인 블록의 내용은 존 "X" 내의 새롭게 소거된 블록으로 복사된다. 예로서, 도6을 참조하면, 존 "0"(614a)의 시작에서 물리적인 블록이 소거된 후, 존 "N"(614c)의 시작에서 제1 물리적인 블록의 내용은 소거된 블록으로 복사된다. 따라서, 논리적인 존 "X" 및 논리적인 존 "X-1" 각각은 하나의 물리적인 블록으로 효율적으로 시프트된다. 그 후, LBAs를 특정 존들 내의 물리적인 블록들로 매핑하는 것은 단계(920)에서 갱신되어, 단계(908)에서 존 "X"의 제1 물리적인 블록내에 있는 내용들이 이동되고 존 "X-1"의 시작에서 제1 물리적인 블록의 내용이 또한 이동되었다는 것을 표시한다.
물리적인 위치들의 매핑이 갱신되면, 보다 많은 존들이 시프트되는지 여부에 관한 결정이 단계(924)에서 행해진다. 시프트될 존들이 더이상 존재하지 않는다라고 결정되면, 이 표시는 모든 존들이 물리적인 블록으로 시프트되고, 존 경계들이 근본적으로 이동되도록 하는 존들을 시프팅하는 공정이 완료된다. 대안적으로, 시프트할 부가적인 존들이 존재하지 않는다라고 결정하면, 새로운 존 "X" 및 새로운 존 "X-1"은 단계(928)에서 식별된다. 그 후, 공정 흐름은 존 "X" 내의 제1 물리적인 블록이 소거되었는지 여부를 결정하는 단계(904)로 복귀된다.
단계(904)로 복귀하면, 존 "X" 내의 제1 물리적인 블록이 소거되었다라고 결정하면, 이 표시는 존 "X" 내의 제1 물리적인 블록이 복사되도록 이용될 수 있다는 것이다. 이와 같이, 공정 흐름은 존 "X-1"의 시작에서의 제1 물리적인 블록의 내용을 존 "X" 내의 제1 물리적인 블록 내로 복사하는 단계(904)로부터 단계(916)로 진행한다.
도10은 이 예의 존 경계 이동 공정 또는 공정들, 예를 들어 도9의 공정(900) 이후에 메모리 장치의 초기 상태 및 상태를 도시한 도면이다. 장치(1000')는 초기에 임의수의 존들(1004'), 예를 들어 5개의 존들로 분할된다. 존 경계 이동의 하나 이상의 사이클들 또는 반복들이 완료된 후, 예를 들어, 각 존은 하나 이상의 물리적인 블록으로 효율적으로 시프트된 후, 장치(1000") 내의 존들(1004")들이 근본적으로 하나 이상의 물리적인 블록들로 이동되도록 존 경계들은 이동된다. 도시된 바와 같이, 존 경계 이동은 존 "4" (1004e'을 비인접 물리적인 블록들로 시프트시켜 존 "4"(1004e"및 1004e''')을 형성한다.
일반적으로, 존 경계 이동 공정은 소정 존 내에 초기에 존재하는 물리적인 블록들이 존 경계 이동 공정의 다수 반복들 후 이 존내에 유지되도록 반복될 수 있다. 즉, 존들의 물리적인 위치들은 전체 메모리 장치에 걸쳐서 점진적으로 한번에 한 물리적인 블록으로 이동될 수 있다. 존 경계들은 또한 존 이동 공정의 다수 반복들 이후에 어떤 지점에서, 존들의 물리적인 위치들이 존 경계 이동 공정이 초기화되기 전 존들의 물리적인 위치들과 동일하게 되도록, 존 경계들은 또한 이동될 수 있다.
연속적인 존 경계 이동 공정들 간의 시간량은 전체 시스템의 요구조건들에 따라서 가변할 수 있다. 일 실시예에서, 존 경계 이동 공정을 사용하여 존들을 시프트시키는 레이트는 조정되어, 메모리 장치의 수명의 끝가지 소정 존이 전체 장치를 실질적으로 더이상 횡단(traverse)하지 않도록 한다. 또 다른 실시예에서, 이 레이트는 가능한 낮게되어, 존 경계 이동 공정 자체로 인해 웨어 레벨링과 관련된 수행성능 패널티를 실질적으로 최소화하고 임의의 부가적인 웨어를 효율적으로 최소화한다. 그러나, 존들이 시프트되는 레이트는 수행성능 고려사항들로 인해 조정되거나 이 레이트는 임으로 설정될 수 있다는 것을 이해하여야 한다.
도11a-c를 참조하면, 존 경계 이동 공정 동안 존 경계의 이동 예가 설명될 것이다. 도11a에 도시된 바와 같이, 물리적인 장치(1100)는 초기에 임의 수의 논리 존(1104)으로 분할된다. 서술된 실시예에서, 장치 (1100)는 3개의 논리 존들을 포함하지만, 이 존들의 수(1104)는 폭넓게 가변될 수 있다. 각각의 논리 존들(1104)은 전형적으로, 시스템 정보를 저장하기 위한 일부 블록들의 할당, 소거 풀로의 할당 및 결함 블록들의 존재로 인한 존들 전체에 걸쳐서 산재될 수 있는 과다 블록들을 제외한 존 경계들에 의해 분리되는 인접 물리적인 어드레스들을 지닌 다수의 블록들로 형성된다. 각 논리적인 존(1104)은 특정 식별된 물리적인 블록들(1106)을 포함하도록 한정된다. 호스트 데이터 논리적인 블록 어드레스들(LBAs)의 전체 범위는 전형적으로 물리적인 메모리 존들의 수와 동일한 인접 LBAs의 다수의 세그먼트들로 분할되는데, 각 LBA 세그먼트는 상이한 하나의 논리적인 존들(1104)로 매핑된다.
도11b는 서술된 실시예에 따라서 초기 존 경계 이동 단계들 동안 도11a의 장치(1100)를 도시한 도면이다. 초기에, 블록(1106a)의 내용, 즉 스왑 경계(1108c)에 위치되는 존의 제1 물리적인 블록은 화살표(124)로 표시되는 단계(1) 처럼 소거된 블록(1106c)로 이동된다. 존 (1104a) 내에 이용가능한 소거된 블록이 존재하지 않으면, 우선 전체 존에 대해 통합 공정이 수행되어 유효 데이터의 페이지들을 소수의 블록들로 채워넣어 그 후 소거되는 하나 이상의 블록들을 해제시킨다. 이는 소거된 블록을 발생시키는데 실패한 경우와 달리, 존 내의 하나의 사용된 블록이 또 다른 존으로 이동되어야만 되거나 존 경계는 소거된 블록을 발견할 수 있는 부가적인 블록들을 포함하도록 확장된다. 단계(2)에서 처럼, 블록 (1106e), 즉 스왑 경계(1108b)에 위치되는 존(1104c)과 관계되는 제1 물리적인 블록의 내용은 화살표(1126)으로 표시된 바와 같이 블록(1106a)으로 이동되고 나서, 존(1104c)의 제1 물리적인 블록(1106e)은 소거된다.
단계(3) 블록(1106d), 즉 스왑 경계(1108a)에 위치되는 존(1104b)의 제1 물리적인 블록의 내용은 존(1104c)과 관계되는 제1 물리적인 블록으로 이동됨으로써, 화살표(1128)로 표시한 바와 같이 존(1104d)의 제1 물리적인 블록을 유효하게 소거한다. 스왑 경계(1108a)에서 물리적인 블록과 관계되는 블록 (1106d)의 내용이 이동되면, 단계(4)는 블록(1106b)의 내용을 화살표(1130)로 표시된 바와 같이 존(1104b)의 제1 물리적인 블록(1106d)으로 이동시킨다.
도11c에 도시된 바와 같이, 블록 (1106)의 내용이 이동되거나 복사 및 소거되면, 논리적인 존 경계들은 효율적으로 시프트된다. 논리적인 존들(1104) 각각의 물리적인 존 경계들은 한 물리적인 블록으로 효율적으로 시프트된다. 예를 들어, 존(1104a)이 시프트되도록 논리적인 존 경계들(1108c 및 1108a)은 시프트되거나 이동된다. 마찬가지로, 존들(1104b, 1104c) 각각은 논리적인 존 경계들(1108a, 1108b 및 1108c)의이동으로 인해 또한 시프트된다. 이 시프팅 또는 이동은 서술된 바와 같이 블록들 간에 데이터를 이동시키고, 또한 각 존을 위한 LBAs의 범위를 존에 부가되는 블록을 포함하는 블록들의 세트 내로 재매핑하지만 이 존으로부터 제거되는 블록을 제거함으로써 성취된다. 존 경계 이동이 한번에 한 물리적인 블록으로 존의 경계가 이동하는 것으로 서술되었지만, 존 경계는 한번에 하나 이상의 블록으로 이동되지만, 존 내의 블록들의 수의 매우 작은 비율, 가령 10, 5 또는 심지어 2%로 이동될 수 있다. 이 목표는 호스트가 프로그램되거나 판독될 데이터를 요청하지 않을 때 및 그렇치 않다면 제어기가 보다 높은 우선순위 동작들을 수행하지 않을 때의 기간들 동안 한번에 소수의 블록들을 경계 이동을 수행하도록 한다. 따라서, 웨어 레벨링은 메모리의 전체 수행성능에 나쁜 영향을 미침이 없이 수행된다.
게다가, 존 경계 이동과 관련하여, 메모리 장치와 관련된 소거된 블록들이 분리된 풀에 유지되면, 예를 들어, 각 존들 내에 유지되지 않으면, 소거된 블록들의 풀은 존 경계 이동 동안 존으로서 처리될 수 있다.
4. 단일 존 웨어 레벨링
도9 내지 도11c와 관련하여 서술된 공정과 유사한 웨어 레벨링 공정은 또한 단일 존을 지닌 메모리 시스템에 적용될 수 있다. 상술된 시프팅되는 논리적인 경계들은 웨어 레벨링 공정을 위하여 이들에 바로 인접한 블록들을 식별하는 물리적인 포인터들이다. 단일 존으로 인해, 이와 같은 포인터는 가령 물리적인 어드레스들의 순서로 한번에 하나씩 블록들을 통해서 증분됨으로써 어떤 결정론적 방식으로 메모리 셀 블록들을 통해서 순환된다. 이 기준이 웨어 레벨링 공정을 수행하는데 부합될 때, 공정은 현재 가리키는 블록으로 초기화된다. 블록이 소거되지 않으면, 블록의 내용은 소거된 상태에 있는 존 내의 블록, 즉 소거 풀 내의 블록으로 복사된다. 그 후, 어드레스 테이블들은 복사된 데이터를 위한 위치 변경을 반영하도록 갱신되고 원래 블록은 소거된다. 그 후, 포인터는 다음 블록으로 이동하여, 다음 웨어 레벨링 사이클의 초기화를 대기하는데, 이 때에 이 공정은 다음 블록으로 반복된다. 포인트된 블록이 초기에 소거된 상태이면, 포인터는 단지 웨어 레벨링이 발생됨이 없이 다음 블록상으로 이동된다. 포인터가 멤뢰 시스템의 수명이 끝나기 전 존 내의 모든 블록들을 통해서 스텝되면, 이는 자신의 사이클을 반복할 수 있다.
이 웨어 레벨링 공정은 각 블록들이 소거되고 재프로그램되는 횟수(핫 카운트들)과 관계함이 없이 수행된다는 것을 인지할 것이다. 웨어 레벨링 동작을 수행하는 임계 조건은 최종 웨어 레벨링 동작 이후에 소거 풀 내에서 소정수의 블록들의 프로그래밍일 수 있다. 즉, 웨어 레벨링 동작들은 소정수의 블록들 프로그래밍 동작들의 간격에서 지정된 블록들에 대해서 수행된다. 한번에 취급되는 단일 블록들 대신에, 2개 이상의 블록들이 각 웨어 레벨링 동작들에 교호적으로 포함될 수 있다.
이 장의 앞서의 절들에서 서술된 공정들은 또한 웨어 레벨링이 존 경계들을 변경시킴이 없이 각 존 내에서 발생되는 다수-존 시스템에 적용될 수 있다.
5. 핫 카운트들
물리적인 블록들을 토대로 핫 카운트들을 유지하는 대신에, 핫 카운트들은 논리적인 블록들에 대해서 유지될 수 있다는 것을 인지하여야 한다. 논리적인 블록들에 대한 핫 카운트들을 유지하는 것은, 예를 들어 상대적인 핫 카운트들을 유지하는 것은, 가장 많이 최근에 이동되고 가장 적게 최근에 이동되는 논리적인 블록들이 추적되도록 한다. 일 실시예에서, 논리적인 블록들은, 블록들이 최근에 얼마나 이동되었는지를 토대로 한 세트들로 효율적으로 그룹화될 수 있다. 존 내의 모든 블록들은 초기 상대 핫 카운트 값을 제공받을 수 있고 블록이 이동될 때마다, 상대 핫 카운트는 가장 많이 최근에 이동된 세트 또는 그룹으로 갱신될 수 있는데, 이는 일반적으로 기본 값(base value)를 초과하는 값이다. 특정 수의 블록들이 가장 많이 최근에 이동된 그룹에 있다면, 가장 많이 최근에 이동된 그룹 값은 증분되고, 다음에 이동되는 임의의 블록들은 새로운 그룹 값으로 갱신될 수 있다. 따라서, 논리적인 또는 물리적인 블록들의 별개의 그룹들 또는 빈들(bins)은 가장 많이 최근에 이동되고 가장 적게 최근에 이동되는 블록들 간에 상대적으로 명확하게 구별하게 할 수 있다. 일반적으로, 블록의 상대적인 핫 카운트 값은 롤 오버(roll over) 되도록 하여 상대적으로 작은 수의 필드들을 사용하도록 한다. 이 값들은, 가장 많이 최근에 그리고 가장 적게 최근에 사용되는 값들 간의 많은 세트의 사용되지 않은 값들이 최근에 롤 오버 수치 필드로 실질적으로 항상 가장 적게 최근에 이동되는 블록을 표시하는 저값 및 가장 많이 최근에 이동되는 블록을 표시하는 저값간을 구별하도록 관리될 수 있다.
상대적인 핫 카운트들이 구현될 때, 실질적으로 모든 블록들은 8개의 가능한 값들, 특정 예에서, 예를 들어 0 내지 7의 값들이 있을 때 '0'의 기본 값에서 시작될 수 있다. 8개의 값들중 7개의 값이 사용될 수 있는 반면에, 한 값은 저장되어 가장 오래된 데이터를 포함하는 블록들을 식별하는 값으로부터 가장 최근에 프로그램된 블록들을 표시하는 값 간에 갭을 제공한다. 이 예에서, 기록되는 블록들은 '1'의 새로운 값을 수신하여 이들이 가장 최근에 프로그램되었다는 것을 표시한다. 특정한 소정수의 블록들이 새로운 값 '1'로 갱신되면, 재프로그램되는 블록들은 '2'의 새로운 값을 수신할 수 있다. 동일하거나 상이한 소정수의 블록들이 '2'의 값을 갖는다면, '3'의 값은 결국 새롭게 재프로그램된 블록들로 할당될 수 있다. 이는 각 소정수의 블록들이 재프로그램된 후 재프로그램되는 블록들에 다음 빈수를 할당하는 것을 계속한다. 어떤 지점에서, 카운트는 롤오버되는데, 그 결과 가장 적게 최근에 사용되는 블록들이 '2'의 값을 갖도록 하며, 가장 최근에 이동되는 블록들이 '0'의 값을 갖도록 하고, 가장 오래되고 가장 새로운 데이터를 지닌 블록들의 값들이 명백하게 식별되도록 값 '1'이 2 사이에 갭을 제공한다.
결국, 가장 오래된 빈 내의 모든 블록들이 재기록될 것이다. 호스트, 스크러빙 또는 이외 다른 어떤 메커니즘을 통해서 기록되지 않는다면, 웨어 레벨링에 의해 기록된다. 상기 예에서, 가장 오래된 블록들을 포함하는 빈 "2"는 비워질 것이고 이 값은 갭으로서 작용하는 반면, 빈 "1"은 가장 최근에 기록된 블록들을 식별하도록 사용될 수 있다. 값들(빈들)의 사용 범위들 간에서 1 보다 큰 갭은 적절하게 최근에 이동된 그룹으로부터의 블록들이 웨어 레벨링 동작이 가장 적게 최근에 이동된 블록들을 이동시키는 것 보다 빠른 호스트 또는 어떤 다른 메커니즘에 이해 갱신되는 경우로부터 발생될 수 있다. 시스템이 논리적인 또는 물리적인 블록 사용 정보를 사용하여 판정들을 행하는 경우에 절대 핫 카운트들이 사용될 수 있다.
내부-존 웨어 레벨링 방식에서, 블록은 소거된 블록으로 이동되도록 선택될 수 있다. 상대 논리적인 핫 카운트들이 구현될 때, 내부-존 웨어 레벨링 방식은 가장 적게 최근에 이동되는 그룹, 즉 최저값을 지닌 그룹으로부터 논리적인 블록을 선택할 수 있다. 선택된 블록이 이동되면, 선택된 블록은 가장 많이 최근에 이동된 그룹의 값을 수신한다. 일반적으로, 호스트에 의해 가장 빈번하게 액세스되는 논리적인 블록들은 블록들이 최근에 이동되었다는 것을 표시하는 값을 가져 이동될 웨어 레벨링 시스템에 의해 선택될 수 없다. 동시에, 호스트에 의해 가장 덜 빈번하게 액세스되는 논리적인 블록들은 보다 낮은 값을 갖는 경향이 있는데, 이 값은 결국 블록들이 가장 적게 최근에 이동되었다는 것을 표시한다. 가장 적게 최근에 이동되는 값을 지닌 논리적인 블록들은 통상 어떤 시간 동안 액세스되지 않고 이에 따라서, 다른 블록들은 동일한 기간에서 보다 높은 레벨의 웨어에 도달될 것이다. 덜 빈번하게 액세스되는 논리적인 블록들이 소거된 물리적인 블록들로 이동되면, 덜 빈번하게 액세스되는 논리적인 블록들은 전형적으로, 웨어 레벨링에 의해 또 다시 이동될 때까지 자신들의 현재 물리적인 위치할 것이다. 즉, 덜 빈번하게 액세스되는 논리적인 블록이 존재하는 물리적인 블록은 일반적으로 액세스되지 않는 반면에, 사전에 점유된 물리적인 블록은 장차 사용을 위하여 소거 풀로 전달됨으로 더 많은 웨어를 수신할 수 있다.
소거된 물리적인 블록들의 소거 풀은 일반적으로 존 내에 포함되는 것으로서 서술되었다. 일 실시예에서, 소거된 블록들의 풀은 메모리 장치내의 존들로부터 분리되어 유지될 수 있다. 이와 같이 소거된 블록들은 메모리 장치상의 물리적으로 인접한 블록들의 그룹으로부터 필요에 따라서 할당될 수 있다.
D. 요약
본 발명의 각종 양상들이 일반적으로 섹터들의 세트와 관련하여 서술되었지만, 섹터들의 세거터 내의 수는 1 보다 크거나 같은 임의의 적절한 수일 수 있다. 그러나, 섹터들의 세트 내의 가장 유효한 섹터들의 수는 전형적으로 소거 유닛 내의 섹터들의 수 및 물리적 메모리 어레이 내의 소거 유닛들의 수에 좌우된다.
각종 웨어 레벨링 공정은 플래시 메모리 카드들과 같은 비휘발성 메모리 시스템들에 대해서 구현하는데 적합한 것으로서 서술되었다. 일반적으로, 웨어 레벨링 공정들은 실질적으로 임의의 적절한 비휘발성 메모리 시스템에 적용될 수 있다. 적절한 비휘발성 메모리 시스템들은 임베드된 메모리 및 메모리 드라이브들을 포함하지만 이에 국한되지 않는다. 일 실시예에서, 이와 같은 비휘발성 메모리 시스템들은 호스트 시스템들에 제거가능하게 결합될 수 있고, 또 다른 실시예에서, 비휘발성 메모리 시스템은 호스트 시스템 내에서 임베드된 시스템일 수 있다. 게다가, 웨어 레벨링 공정들은 각종 비휘발성 메모리 시스템들에 적용될 수 있다.
비휘발성 메모리 시스템들이 메모리 제어기들을 포함하는 것으로서 서술되었지만, 웨어 레벨링 공정들은 메모리 제어기들을 포함하지 않는 비휘발성 메모리 시스템들에 적용될 수 있다. 제어기들을 사용하는 적절한 메모리 시스템들은 PC 카드들, 콤팩트플래시 카드들, 멀티미디어 카드들 및 보안 디지털 카드들을 포함하지만 이로 제한되지 않는다. 상술된 웨어 레벨링 공정들을 사용할 수 있고 메모리 시스템들과 관련되는 제어기들를 사용하지 않는 메모리 시스템들은 호스트, 예를 들어 호스트 컴퓨터 시스템과 관련된 제어기들을 사용하여, 스마트미디어 카드들 및 메모리스틱 카드들과 같은 웨어 레벨링을 구현한다. 다른 말로서, 호스트는 웨어 레벨링을 발생시키는 직접 메모리를 어드레스하고 관리한다. 게다가, 호스트 시스템 상에 놓이는 주 프로세서는 메모리 시스템이 제어기를 포함하는 것과 상관없이 메모리 시스템을 위한 메모리 제어기로서 작용한다.
본 발명에 대해서 단지 몇가지 실시예들이 서술되었지만, 본 발명의 원리 또는 범위를 벗어남이 없이 많은 다른 특정 형태들로 본 발명을 구현할 수 있다는 것을 이해하여야만 한다. 예로서, 직접 어드레싱에서 웨어 레벨링 및 소거 풀링은 실질적으로 자동 공정들로서 서술되었지만, 웨어 레벨링은 사용자-구동 공정일 수 있다. 다른 말로서, 사용자는 호스트 인터페이스를 통해서 명령을 발부함으로써 웨어 벨링 공정을 개시할 때를 결정할 수 있다.
일반적으로, 웨어 레벨링의 각종 공정들 및 방법들과 관련된 단계들은 폭넓게 변할 수 있다. 단계들은 일반적으로 본 발명의 원리 또는 범위를 벗어남이 없이 부가, 제거, 변경 및 기록될 수 있다. 예롤서, 존 경계들이 이동되거나 존들이 스왑될 때 매핑 정볼르 갱신하는 것을 필요로 하지 않을 수 있다. 각 물리적인 블록들이 어느 논리적인 존이 물리적인 블록들에 속하는지에 대한 어떤 표시자를 가지면, 스왑 또는 이동의 진행을 효율적으로 로그(log)하는 것이 필요로되지 않을 수 있다. 단계들은 또한 각종 방법 및 공정들에 부가되어 본 발명의 원리 또는 범위를 벗어남이 없이 각종 논리적인 블록들의 탐색을 용이하게 하는 데이터 구조들 또는 매핑들의 갱신을 수용한다. 게다가, 특정 구현방식이 다수의 실시예들에 포함될 수 있다.
그러므로, 본 예들은 예시를 위한 것이지 제한하고자 하는 것이 아니고, 본 발명은 본원에 제공된 상세사항들로 제한되는 것이 아니라 첨부된 청구범위 영역내에서 수정될 수 있다.
Claims (27)
- 존들 사이의 어드레스 경계를 갖는 존들내로 구성된 인접한 물리적인 어드레스들을 갖는 소거 가능하고 재프로그래밍 가능한 비휘발성 메모리 셀의 다수의 유닛을 포함하며, 별개의 범위의 논리적인 어드레스들이 각 존들로 매핑되는 메모리 시스템에서의 동작 방법으로서:각 존들에서 유닛들의 수를 변경시킴이 없이 각각의 존들로부터 하나 이상의 유닛을 삭제하고 상기 하나 이상의 유닛을 인접 존에 부가하기 위하여 경계 어드레스들을 재할당하는 단계,그 후에, 데이터의 논리적인 어드레스들에 따라서 상기 재할당된 메모리 셀 유닛들로 데이터를 프로그래밍하거나 상기 재할당된 메모리 셀 유닛들로부터 데이터를 판독하기 위하여 상기 존들에 액세스하는 단계, 및상기 경계 어드레스들을 반복적으로 재할당하고 적어도 상기 메모리 셀 유닛들이 자신의 존들에서 인접 존들로 이동될때까지 상기 존에 액세스함으로써, 상기 논리적인 어드레스들을 통해서 액세스된 유닛들의 사용을 확산시키는 단계를 포함하는 메모리 시스템에서의 동작 방법.
- 제1항에 있어서, 상기 경계 어드레스들을 재할당하는 단계는 상기 존들 내의 유닛들의 10 퍼센트보다 적은 각각의 존들로부터 다수의 유닛들을 삭제하고 상기 다수의 유닛들을 인접 존에 부가하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템에서의 동작 방법.
- 제1항에 있어서, 상기 존들에는 개별적인 다수의 메모리 평면들 내의 자신들의 메모리 셀 유닛들의 부분들이 형성되고, 상기 경계 어드레스들을 재할당하는 단계는 상기 각각의 메모리 평면들 내의 존들의 각 부분으로부터 하나 이상의 유닛을 삭제하고 동일한 평면 내의 다른 존의 인접 부분으로 상기 하나 이상의 유닛을 부가하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템에서의 동작 방법.
- 제1항에 있어서, 상기 메모리 셀 유닛들 각각은 다수의 동시에 소거 가능한 메모리 셀들을 포함하는 것을 특징으로 하는 메모리 시스템에서의 동작 방법.
- 제4항에 있어서, 상기 메모리 셀 유닛들 각각은 데이터로 개별적으로 프로그램될 수 있는 다수의 페이지들을 포함하는 것을 특징으로 하는 메모리 시스템에서의 동작 방법.
- 제1항에 있어서, 상기 경계 어드레스들을 재할당하는 단계는 상기 각각의 존들로부터 상기 하나 이상의 유닛 내에 저장된 임의의 데이터를 상기 인접 존의 부가된 유닛으로 복사하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템에서의 동작 방법.
- 동시에 소거 가능한 최소수의 메모리 셀들의 유닛들로 물리적으로 구성되는 소거 가능하고 재프로그래밍 가능한 비휘발성 메모리 셀의 시스템을 동작시키는 방법으로서:논리적인 메모리 어드레스들의 세 개 이상의 비중첩 범위중 한 범위 내에 데이터를 프로그램하거나 판독하기 위한 호스트 액세스 요청들을 메모리 셀 소거 유닛들의 대응하는 수의 논리적인 그룹들중 특정한 한 그룹으로 지향시키는 단계,상기 논리적인 그룹들로부터의 액세스 요청들을 다수의 소거 유닛들의 별도의 물리적인 그룹들로 매핑시키는 단계, 및호스트 액세스 요청들에 기인한 데이터 프로그래밍 또는 판독 동작들 사이에서, 하나 이상의 소거 유닛을 포함하는 개별적인 물리적 그룹들의 일부를 한번에 제거하고 상기 개별적인 물리적 그룹들 내의 일정한 수의 소거 유닛들을 유지하는 방식으로 상기 제거된 소거 유닛들을 상기 물리적 그룹들중 인접 그룹들에 부가하여 상기 논리적인 그룹들을 상기 물리적인 그룹들로 반복적으로 재매핑하는 단계를 포함함으로써, 상기 시스템을 통한 상기 소거 유닛들의 사용이 시간에 걸쳐 균일하게 되도록 하는 소거 가능하고 재-프로그래밍 가능한 비휘발성 메모리 셀의 시스템 동작 방법.
- 다수의 평면들 내에 최소수의 동시에 소거 가능한 메모리 셀들의 다수의 블럭들로 구성된 플래시 메모리 셀들의 어레이를 동작시키는 방법으로서:각각의 다수의 평면들로부터 다수의 블럭들의 일부를 각각 포함하도록 다수의 존들을 규정하는 단계,논리적인 어드레스들의 범위의 상이한 부분을 상기 존들 각각에 매핑하는 단계, 및각각의 평면 내의 존으로부터 하나 이상의 블럭을 제거하고 각각의 다수의 평면들 내의 특정한 다수의 블럭들을 갖는 다수의 존들을 유지하는 방식으로 상기 제거된 블럭을 자신들의 동일 평면들 내의 존들중 다른 존들로 부가하여 개별적인 존들을 반복적으로 재규정하는 단계를 포함함으로써, 논리적인 어드레스들의 다양한 범위에서 블럭들의 사용이 어레이를 통한 시간에서 확산되는 플래시 메모리 셀의 어레이 동작 방법.
- 함께 소거될 수 있는 재프로그래밍 가능한 비휘발성 메모리 셀들의 다수의 유닛들을 개별적으로 포함한 다수의 존들을 포함하고, 메모리 시스템에 의해 수신된 별개의 범위의 논리적인 어드레스들이 개별적인 존들로 매핑되는 메모리 시스템에서의 동작 방법으로서:상기 존들중 하나의 별개의 논리적인 어드레스 범위 내에서 논리적인 어드레스를 수신하는 단계, 및상기 수신된 논리적인 어드레스를 상기 하나의 존 내에서 소거 유닛들을 소거 및 재프로그래밍하는 다수의 사용 사이클들을 균일하게 하도록 하는 상기 하나의 존 내에서의 다수의 메모리 셀 소거 유닛의 하나 이상의 물리적인 어드레스로 변환하는 단계를 포함하는 메모리 시스템에서의 동작 방법.
- 제 9 항에 있어서, 상기 논리적인 어드레스를 상기 물리적인 어드레스로 변환하는 단계는 대응하는 논리적인 어드레스 및 물리적인 어드레스의 테이블에 대한 기준을 포함하며, 상기 하나의 존 내에서 상기 소거 유닛들의 사용 빈도를 균일하게 하도록 하기 위하여 논리적인 소거 유닛 어드레스와 물리적인 소거 유닛 어드레스 간의 대응성을 변경시키는 단계를 더 포함하는 메모리 시스템에서의 동작 방법.
- 제 10 항에 있어서, 상기 논리적인 소거 유닛 어드레스와 물리적인 소거 유닛 어드레스 간의 대응성을 변경시키는 단계는 최고 및 최저의 누적된 수의 사용 사이클들을 가지는 상기 하나의 존 내의 소거 유닛들의 물리적인 어드레스들을 스와핑하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템에서의 동작 방법.
- 제 10 항에 있어서, 상기 메모리 셀들은, 상기 메모리 셀들이 겪게되는 최대수의 사용 사이클들의 목표 내구성 한도를 가지며, 상기 논리적인 소거 유닛 어드레스와 물리적인 소거 유닛 어드레스 간의 대응성을 변경시키는 단계는 대응하는 어드레스가 변경되는 소거 유닛의 사용 사이클의 수가 상기 목표 최대의 수에 도달하기 이전에 발생하는 메모리 시스템에서의 동작 방법.
- 함께 소거할 수 있는 재-프로그래밍 가능한 비휘발성 메모리 셀들의 다수의 유닛들을 각각 포함하는 다수의 존들을 포함하고, 메모리 시스템에 의해 수신된 별개의 범위의 논리적인 어드레스들이 개별적인 존들로 매핑되는 메모리 시스템에서의 동작 방법으로서:제1의 다수의 존들 내에 저장된 데이터를 제2의 다수의 존들 내에 저장된 데이터와 교환하는 단계, 및그 후에,상기 제1 및 제2 존들중 하나의 존 내의 메모리 시스템에 액세스하는 어드레스들을 상기 제1 및 제2 존들중 다른 한 존에 액세스하는 어드레스들로 변환하는 단계를 포함하는 메모리 시스템에서의 동작 방법.
- 제13항에 있어서, 상기 데이터를 교환하는 단계는:상기 제2 존의 물리적인 어드레스들의 경계에 인접한 물리적인 어드레스를 갖는 제2 존 내의 제1 소거 유닛으로부터의 데이터를 소거되는 제2 존 내의 제2 소거 유닛으로 이동시키는 단계, 및상기 제1 존의 물리적인 어드리스들의 경계에 인접한 물리적인 어드레스를 갖는 제1 존의 소거 유닛으로부터의 데이터를 상기 제 1 유닛으로 이동시키는 단계를 포함하는 것을 특징으로 하는 메모리 시스템에서의 동작 방법.
- 동시에 소거될 수 있는 최소수의 메모리 셀들의 다수의 물리적인 블록들로 구성되며, 인입 데이터가 소거된 블록 풀로서 유지되는 상기 다수의 물리적인 블록들로 프로그램되는, 소거가능하고 재프로그램가능한 비휘발성 메모리 셀들의 시스템을 동작시키는 방법으로서,상기 다수의 물리적인 블록들의 어드레스들을 통해서 소정 순서로 순환시킴으로써 웨어 레벨링 교환을 위한 소거된 블록 풀에서 블록들과 다른 상기 다수의 물리적인 블록들중 적어도 한 블록을 한번에 식별하는 단계; 및,상기 다수의 물리적인 블록들중 식별된 적어도 한 블록을 상기 소거된 블록 풀 내에서 상기 다수의 물리적인 블록들중 대응하는 수의 적어도 한 블록으로 교환시키는 단계를 포함하는 소거가능하고 재프로그램가능한 비휘발성 메모리 셀들의 시스템을 동작시키는 방법.
- 제15항에 있어서, 상기 식별된 블록들을 교환시키는 단계는 상기 다수의 물리적인 블록들중 식별된 적어도 한 블록으로부터의 데이터를 상기 다수의 블록들중 상기 대응하는 수의 적어도 한 블록으로 복사하는 단계 및 상기 다수의 물리적인 블록들중 상기 적어도 한 블록으로부터 상기 소거된 블록 풀 내에서 상기 물리적인 블록들중 상기 대응하는 수의 적어도 한 블록으로 하나 이상의 논리적인 블록 어드레스의 매핑을 변경시키는 단계를 포함하는 소거가능하고 재프로그램가능한 비휘발성 메모리 셀들의 시스템을 동작시키는 방법
- 제16항에 있어서, 상기 데이터를 복사한 후, 상기 다수의 물리적인 블록들중 식별된 적어도 한 블록을 소거하는 단계 상기 소거된 적어도 한 블록을 상기 소거 풀에 배치하는 단계를 더 포함하는 소거가능하고 재프로그램가능한 비휘발성 메모리 셀들의 시스템을 동작시키는 방법
- 제15항에 있어서, 웨어 레벨링 교환을 위한 상기 다수의 물리적인 블록들중 적어도 한 블록을 식별하는 단계는 상기 각 물리적인 블록들에 의해 겪는 다수의 소거 사이클들과 관계없이 성취되는 소거가능하고 재프로그램가능한 비휘발성 메모리 셀들의 시스템을 동작시키는 방법
- 제15항에 있어서, 상기 다수의 물리적인 블록들중 적어도 한 블록을 한번에 식별하는 단계는 데이터가 프로그램된 상기 소거된 블록 풀 내에서 소정수의 상기 다수의 물리적인 블록들의 간격들로 행하는 것을 포함하는 소거가능하고 재프로그램가능한 비휘발성 메모리 셀들의 시스템을 동작시키는 방법
- 동시에 소거될 수 있는 최소수의 메모리 셀들의 다수의 물리적인 블록들로 구성되는 소거가능하고 재프로그램가능한 비휘발성 메모리의 시스템을 동작시키는 방법으로서,논리적인 블록 어드레스들의 범위를 부가적인 수의 물리적인 블록들이 남는 상기 다수의 물리적인 블록들의 비율의 어드레스로 매핑하여 소거된 블록 풀을 제공하는 단계;상기 범위의 논리적인 블록 어드레스들중 적어도 한 어드레스에 데이터 저장 요청들에 응답하여, 상기 하나 이상의 논리적인 블록 어드레스를 상기 소거된 블록 풀에 존재하는 상기 하나 이상의 물리적인 블록으로 변환시키고 나서 상기 데이터를 상기 소거된 블록 풀의 상기 하나 이상의 물리적인 블록내로 기록하는 단계;웨어 레벨링 교환을 위하여 상기 다수의 물리적인 블록들중 한 블록을 식별하는 단계;소정수의 메모리 프로그래밍 동작들 후, 상기 다수의 물리적인 블록들중 상기 식별된 블록을 상기 소거된 블록 풀에 존재하는 상기 수의 물리적인 블록들중 한 블록으로 교환시키는 단계; 및,소정 순서로 상기 다수의 물리적인 블록들중 다른 블록들 식별과 교환을 반복하는 단계를 포함하는 비휘발성 메모리의 시스템을 동작시키는 방법.
- 제20항에 있어서, 물리적인 블록들을 식별하는 단계는 상기 식별된 물리적인 블록이 교환되지 않은 경우에 상기 식별된 물리적인 블록이 상기 소거 블록 풀 내에 있는지 펜딩 프로그래밍 동작을 겪는지 여부를 결정하는 단계를 포함하는 비휘발성 메모리의 시스템을 동작시키는 방법.
- 제20항에 있어서, 상기 식별된 블록들을 교환시키는 단계는 상기 다수의 물리적인 블록들중 상기 식별된 블록으로부터의 데이터를 상기 소거된 블록 풀 내의 상기 대응하는 수의 물리적인 블록들로 복사하는 단계 및 상기 다수의 물리적인 블록들중 상기 적어도 한 블록으로부터의 하나 이상의 블록 어드레스를 상기 소거된 블록 풀 내에서 상기 대응하는 수의 하나 이상의 물리적인 블록들로의 매핑을 변경시키는 단계를 포함하는 비휘발성 메모리의 시스템을 동작시키는 방법.
- 제22항에 있어서, 상기 데이터를 복사한 후, 상기 다수의 물리적인 블록들중 식별된 한 블록을 소거하는 단계 및 상기 소거된 하나 이상의 블록을 상기 소거 풀 내로 배치시키는 단계를 더 포함하는 비휘발성 메모리의 시스템을 동작시키는 방법.
- 소거가능하고 전기적으로 프로그램가능한 메모리 셀들의 그룹들을 관리하는 방법으로서,각종 그룹들의 셀들로 데이터를 프로그래밍시, 소정수의 프로그래밍 인스턴스들이 발생된 후의 표시를 증분시킴으로써 선택되는 각 프로그램된 셀들의 그룹들을 위한 다수의 표시들중 한 표시를 관계시키고 저장하는 단계로서, 상기 관계되어 저장된 표시들은 소정 순서로 상기 다수의 표시들을 통해서 반복적으로 증분되며, 상기 저장된 표시들은 상기 대응하는 그룹들의 셀들의 상대적인 프로그래밍 횟수를 제공하는, 관계 및 저장 단계; 및,할당된 상대적인 수들에 따라서 상기 메모리 셀들의 그룹들에 대한 동작을 수행하는 단계를 포함하는 소거가능하고 전기적으로 프로그램가능한 메모리 셀들의 그룹들을 관리하는 방법.
- 제24항에 있어서, 상기 표시들을 관계시키고 저장하는 단계는 제1 표시가 소정수의 프로그램된 셀들의 그룹들에 할당될 때까지 프로그램되는 상기 셀들의 그룹들에 제1의 다수의 표시들을 관계시키는 단계, 그 후, 제2의 다수의 표시들이 소정수의 셀들의 그룹들에 할당될 때까지 프로그램되는 그룹들로 상기 제2의 다수의 표시들을 할당하는 단계, 그 후, 제3의 상기 다수의 표시들이 소정 수의 셀들의 그룹들과 관계될 때까지 프로그램되는 그룹들에 제3의 다수의 표시들을 관계시키는 단계를 포함하는 소거가능하고 전기적으로 프로그램가능한 메모리 셀들의 그룹들을 관리하는 방법
- 제24항에 있어서, 상기 다수의 표시들은 다수의 순차적인 수들을 포함하는 소거가능하고 전기적으로 프로그램가능한 메모리 셀들의 그룹들을 관리하는 방법
- 제24항에 있어서, 상기 메모리 셀들의 그룹들에 대해 수행되는 동작은 상기 그룹들에 의해 겪는 프로그래밍이 사이클들의 수를 균일하게 하는 방식으로 상기 그룹들에 적용되는 상대적인 표시들에 따라서 프로그래밍하기 위한 상기 셀들의 그룹들을 선택하는 것을 포함하는 소거가능하고 전기적으로 프로그램가능한 메모리 셀들의 그룹들을 관리하는 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US42217302P | 2002-10-28 | 2002-10-28 | |
US60/422,173 | 2002-10-28 | ||
PCT/US2003/032050 WO2004040586A1 (en) | 2002-10-28 | 2003-10-09 | Automated wear leveling in non-volatile storage systems |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117014901A Division KR101174308B1 (ko) | 2002-10-28 | 2003-10-09 | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050083850A true KR20050083850A (ko) | 2005-08-26 |
KR101122511B1 KR101122511B1 (ko) | 2012-03-15 |
Family
ID=32230329
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057007417A KR101122511B1 (ko) | 2002-10-28 | 2003-10-09 | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 |
KR1020117014901A KR101174308B1 (ko) | 2002-10-28 | 2003-10-09 | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117014901A KR101174308B1 (ko) | 2002-10-28 | 2003-10-09 | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 |
Country Status (9)
Country | Link |
---|---|
US (2) | US7120729B2 (ko) |
EP (1) | EP1556868B1 (ko) |
JP (1) | JP4518951B2 (ko) |
KR (2) | KR101122511B1 (ko) |
CN (1) | CN100483552C (ko) |
AT (1) | ATE372578T1 (ko) |
AU (1) | AU2003282544A1 (ko) |
DE (1) | DE60316171T2 (ko) |
WO (1) | WO2004040586A1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100848315B1 (ko) * | 2005-12-08 | 2008-07-24 | 한국전자통신연구원 | 이중 저널링을 이용한 데이터 저장 공간 확보 방법 |
US7797481B2 (en) | 2007-06-14 | 2010-09-14 | Samsung Electronics Co., Ltd. | Method and apparatus for flash memory wear-leveling using logical groups |
US8473668B2 (en) | 2008-07-31 | 2013-06-25 | Samsung Electronics Co., Ltd. | Memory device and wear leveling method |
KR20170084194A (ko) * | 2014-11-13 | 2017-07-19 | 마이크론 테크놀로지, 인크. | 메모리 마모 레벨링 |
Families Citing this family (263)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8171203B2 (en) * | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
US6901498B2 (en) * | 2002-12-09 | 2005-05-31 | Sandisk Corporation | Zone boundary adjustment for defects in non-volatile memories |
TWI243303B (en) * | 2003-11-14 | 2005-11-11 | Hon Hai Prec Ind Co Ltd | System and method for managing flash file stored in a flash memory |
JP4347707B2 (ja) * | 2004-01-09 | 2009-10-21 | パナソニック株式会社 | 情報記録媒体のフォーマット方法および情報記録媒体 |
JP2006024024A (ja) * | 2004-07-08 | 2006-01-26 | Toshiba Corp | 論理ディスク管理方法及び装置 |
JP4561246B2 (ja) * | 2004-08-31 | 2010-10-13 | ソニー株式会社 | メモリ装置 |
US7590918B2 (en) * | 2004-09-10 | 2009-09-15 | Ovonyx, Inc. | Using a phase change memory as a high volume memory |
US7509526B2 (en) * | 2004-09-24 | 2009-03-24 | Seiko Epson Corporation | Method of correcting NAND memory blocks and to a printing device employing the method |
US7441067B2 (en) * | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
US7412560B2 (en) * | 2004-12-16 | 2008-08-12 | Sandisk Corporation | Non-volatile memory and method with multi-stream updating |
US7386655B2 (en) | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
US7366826B2 (en) * | 2004-12-16 | 2008-04-29 | Sandisk Corporation | Non-volatile memory and method with multi-stream update tracking |
US7315916B2 (en) * | 2004-12-16 | 2008-01-01 | Sandisk Corporation | Scratch pad block |
US7395404B2 (en) * | 2004-12-16 | 2008-07-01 | Sandisk Corporation | Cluster auto-alignment for storing addressable data packets in a non-volatile memory array |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
JP4665539B2 (ja) * | 2005-01-31 | 2011-04-06 | ソニー株式会社 | メモリ制御装置、メモリ制御方法、プログラム |
US8108691B2 (en) | 2005-02-07 | 2012-01-31 | Sandisk Technologies Inc. | Methods used in a secure memory card with life cycle phases |
US8321686B2 (en) | 2005-02-07 | 2012-11-27 | Sandisk Technologies Inc. | Secure memory card with life cycle phases |
US8423788B2 (en) | 2005-02-07 | 2013-04-16 | Sandisk Technologies Inc. | Secure memory card with life cycle phases |
US20060236025A1 (en) * | 2005-04-18 | 2006-10-19 | Intel Corporation | Method and apparatus to control number of erasures of nonvolatile memory |
US7685360B1 (en) | 2005-05-05 | 2010-03-23 | Seagate Technology Llc | Methods and structure for dynamic appended metadata in a dynamically mapped mass storage device |
US7916421B1 (en) * | 2005-05-05 | 2011-03-29 | Seagate Technology Llc | Methods and structure for recovery of write fault errors in a dynamically mapped mass storage device |
US7748031B2 (en) | 2005-07-08 | 2010-06-29 | Sandisk Corporation | Mass storage device with automated credentials loading |
WO2007013372A1 (ja) | 2005-07-29 | 2007-02-01 | Matsushita Electric Industrial Co., Ltd. | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法 |
US7680980B2 (en) * | 2005-08-12 | 2010-03-16 | Kabushiki Kaisha Toshiba | Image forming apparatus |
KR101014179B1 (ko) * | 2005-09-14 | 2011-02-14 | 디스크레틱스 테크놀로지스 엘티디. | 플래시 대용량 저장 메모리를 가진 보안 장치를 위한 보안 및 적응형 시스템 구조 |
US7536540B2 (en) * | 2005-09-14 | 2009-05-19 | Sandisk Corporation | Method of hardware driver integrity check of memory card controller firmware |
US7934049B2 (en) | 2005-09-14 | 2011-04-26 | Sandisk Corporation | Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory |
US8291295B2 (en) | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US7631245B2 (en) | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
JP2007164318A (ja) * | 2005-12-12 | 2007-06-28 | Renesas Technology Corp | 記憶装置 |
US20070150644A1 (en) * | 2005-12-28 | 2007-06-28 | Yosi Pinto | System for writing non-volatile memories for increased endurance |
US7245556B1 (en) * | 2005-12-28 | 2007-07-17 | Sandisk Corporation | Methods for writing non-volatile memories for increased endurance |
US7599261B2 (en) * | 2006-01-18 | 2009-10-06 | International Business Machines Corporation | Removable storage media with improved data integrity |
US20070174549A1 (en) * | 2006-01-24 | 2007-07-26 | Yevgen Gyl | Method for utilizing a memory interface to control partitioning of a memory module |
US8756399B2 (en) * | 2006-01-25 | 2014-06-17 | Seagate Technology Llc | Mutable association of a set of logical block addresses to a band of physical storage blocks |
US20070208904A1 (en) * | 2006-03-03 | 2007-09-06 | Wu-Han Hsieh | Wear leveling method and apparatus for nonvolatile memory |
US8296497B2 (en) * | 2006-03-14 | 2012-10-23 | Stmicroelectronics Pvt. Ltd. | Self-updating memory controller |
US20070255889A1 (en) * | 2006-03-22 | 2007-11-01 | Yoav Yogev | Non-volatile memory device and method of operating the device |
JP4863749B2 (ja) * | 2006-03-29 | 2012-01-25 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム |
KR101185617B1 (ko) | 2006-04-04 | 2012-09-24 | 삼성전자주식회사 | 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법 |
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 |
FR2901035B1 (fr) * | 2006-05-11 | 2008-07-11 | St Microelectronics Sa | Procede et dispositif de gestion d'une table de correspondance d'acces a une memoire |
JP4804218B2 (ja) * | 2006-05-11 | 2011-11-02 | 株式会社日立製作所 | 記憶媒体への書き込み回数を管理する計算機システム及びその制御方法 |
US7778077B2 (en) * | 2006-05-15 | 2010-08-17 | Sandisk Corporation | Non-volatile memory system with end of life calculation |
US7523013B2 (en) * | 2006-05-15 | 2009-04-21 | Sandisk Corporation | Methods of end of life calculation for non-volatile memories |
EP2024839B1 (en) | 2006-05-15 | 2014-07-02 | SanDisk Technologies Inc. | Non-volatile memory system with end of life calculation |
US7349254B2 (en) * | 2006-05-31 | 2008-03-25 | Qimonda Flash Gmbh & Co. Kg | Charge-trapping memory device and methods for its manufacturing and operation |
US20080046630A1 (en) * | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US20080046641A1 (en) * | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US20080072058A1 (en) * | 2006-08-24 | 2008-03-20 | Yoram Cedar | Methods in a reader for one time password generating device |
US20080052524A1 (en) * | 2006-08-24 | 2008-02-28 | Yoram Cedar | Reader for one time password generating device |
US20080091901A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Method for non-volatile memory with worst-case control data management |
US20080091871A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Non-volatile memory with worst-case control 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 |
US7904764B2 (en) * | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | Memory lifetime gauging system, method and computer program product |
US7747813B2 (en) * | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
US7809900B2 (en) * | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
US7904619B2 (en) * | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
US7904672B2 (en) * | 2006-12-08 | 2011-03-08 | Sandforce, Inc. | System and method for providing data redundancy after reducing memory writes |
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 |
US9153337B2 (en) * | 2006-12-11 | 2015-10-06 | Marvell World Trade Ltd. | Fatigue management system and method for hybrid nonvolatile solid state memory system |
KR100881669B1 (ko) * | 2006-12-18 | 2009-02-06 | 삼성전자주식회사 | 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치 |
US7710777B1 (en) | 2006-12-20 | 2010-05-04 | Marvell International Ltd. | Semi-volatile NAND flash memory |
DE112006004187B4 (de) * | 2006-12-27 | 2015-09-10 | Intel Corporation | Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher |
TW200828320A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Method for performing static wear leveling on flash memory |
US8423794B2 (en) | 2006-12-28 | 2013-04-16 | Sandisk Technologies Inc. | Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications |
CN100504814C (zh) * | 2007-01-17 | 2009-06-24 | 忆正存储技术(深圳)有限公司 | 闪存的区块管理方法 |
KR20080072201A (ko) * | 2007-02-01 | 2008-08-06 | 삼성전자주식회사 | 메모리 포맷이 가능한 디지털 전자기기, 메모리 포맷 방법,그리고, 저장기능을 가지는 디지털 전자기기 및 저장방법 |
KR100882740B1 (ko) * | 2007-02-22 | 2009-02-09 | 삼성전자주식회사 | 맵 히스토리 기반의 불휘발성 메모리의 매핑 방법 및 저장장치 |
US7731365B2 (en) * | 2007-03-19 | 2010-06-08 | Johnson&Johnson Vision Care, Inc. | Method of fitting contact lenses |
US7689762B2 (en) | 2007-05-03 | 2010-03-30 | Atmel Corporation | Storage device wear leveling |
US20080294813A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
JP4444314B2 (ja) | 2007-07-13 | 2010-03-31 | 株式会社東芝 | 半導体メモリ情報蓄積装置とその書き込み制御方法 |
CN100538662C (zh) * | 2007-07-05 | 2009-09-09 | 炬力集成电路设计有限公司 | 一种基于局部采样的存储器的磨损平衡方法 |
JP5039463B2 (ja) * | 2007-07-12 | 2012-10-03 | 株式会社日立製作所 | 記録装置および記録方法 |
KR101447188B1 (ko) * | 2007-07-31 | 2014-10-08 | 삼성전자주식회사 | 플래시 메모리에 최적화된 입출력 제어 방법 및 장치 |
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 | 群联电子股份有限公司 | 平均磨损方法及使用此方法的控制器 |
US20090106522A1 (en) * | 2007-10-18 | 2009-04-23 | Sony Corporation | Electronic system with dynamic selection of multiple computing device |
CN101419834B (zh) * | 2007-10-22 | 2011-03-30 | 群联电子股份有限公司 | 平均磨损方法及使用此方法的控制器 |
US8296498B2 (en) * | 2007-11-13 | 2012-10-23 | Sandisk Technologies Inc. | Method and system for virtual fast access non-volatile RAM |
CA2706099C (en) * | 2007-11-19 | 2014-08-26 | Nexxus Lighting, Inc. | Apparatus for housing a light assembly |
WO2009067556A2 (en) * | 2007-11-19 | 2009-05-28 | Nexxus Lighting, Inc. | Apparatus and methods for thermal management of light emitting diodes |
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 |
US7636258B2 (en) * | 2007-12-12 | 2009-12-22 | Qimonda Flash Gmbh | Integrated circuits, memory controller, and memory modules |
US8656083B2 (en) * | 2007-12-21 | 2014-02-18 | Spansion Llc | Frequency distributed flash memory allocation based on free page tables |
US8352671B2 (en) | 2008-02-05 | 2013-01-08 | Spansion Llc | Partial allocate paging mechanism using a controller and a buffer |
US8275945B2 (en) | 2008-02-05 | 2012-09-25 | Spansion Llc | Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer |
US8209463B2 (en) * | 2008-02-05 | 2012-06-26 | Spansion Llc | Expansion slots for flash memory based random access memory subsystem |
US8332572B2 (en) * | 2008-02-05 | 2012-12-11 | Spansion Llc | Wear leveling mechanism using a DRAM buffer |
US8095724B2 (en) * | 2008-02-05 | 2012-01-10 | Skymedi Corporation | Method of wear leveling for non-volatile memory and apparatus using via shifting windows |
US8423739B2 (en) * | 2008-02-06 | 2013-04-16 | International Business Machines Corporation | Apparatus, system, and method for relocating logical array hot spots |
US8914340B2 (en) * | 2008-02-06 | 2014-12-16 | International Business Machines Corporation | Apparatus, system, and method for relocating storage pool hot spots |
DE102008009768B4 (de) * | 2008-02-19 | 2011-04-07 | Texas Instruments Deutschland Gmbh | Inkrementierender Zähler mit verlängerter Schreiblebensdauer |
JP5010505B2 (ja) * | 2008-03-01 | 2012-08-29 | 株式会社東芝 | メモリシステム |
US8560761B2 (en) * | 2008-03-31 | 2013-10-15 | Spansion Llc | Memory resource management for a flash aware kernel |
KR101437123B1 (ko) * | 2008-04-01 | 2014-09-02 | 삼성전자 주식회사 | 메모리 시스템 및 그것의 마모도 관리 방법 |
US20090254729A1 (en) * | 2008-04-07 | 2009-10-08 | Skymedi Corporation | Method of wear leveling for a non-volatile memory |
US20090259819A1 (en) * | 2008-04-09 | 2009-10-15 | Skymedi Corporation | Method of wear leveling for non-volatile memory |
JP4439569B2 (ja) * | 2008-04-24 | 2010-03-24 | 株式会社東芝 | メモリシステム |
US8082385B2 (en) * | 2008-05-02 | 2011-12-20 | Sony Corporation | Systematic memory shift for pre-segmented memory |
US8055835B2 (en) * | 2008-06-23 | 2011-11-08 | International Business Machines Corporation | Apparatus, system, and method for migrating wear spots |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
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 |
US20100017588A1 (en) * | 2008-07-15 | 2010-01-21 | Radoslav Danilak | System, method, and computer program product for providing an extended capability to a system |
US20100017807A1 (en) * | 2008-07-15 | 2010-01-21 | Radoslav Danilak | System, method, and computer program product for transparent communication between a storage device and an application |
TWI389125B (zh) * | 2008-07-18 | 2013-03-11 | A Data Technology Co Ltd | 記憶體儲存裝置及其控制方法 |
CN101640069B (zh) * | 2008-08-01 | 2013-12-18 | 群联电子股份有限公司 | 用于闪速存储器的平均磨损方法与平均磨损系统 |
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 |
MX2011002697A (es) * | 2008-09-11 | 2011-04-12 | Nexxus Lighting Inc | Luz y proceso para manufacturar una luz. |
TWI364661B (en) * | 2008-09-25 | 2012-05-21 | Silicon Motion Inc | Access methods for a flash memory and memory devices |
KR100974215B1 (ko) * | 2008-10-02 | 2010-08-06 | 주식회사 하이닉스반도체 | 반도체 스토리지 시스템 및 그 제어 방법 |
TWI470428B (zh) * | 2008-10-03 | 2015-01-21 | Phison Electronics Corp | 用於非揮發性記憶體的資料程式規劃系統、記憶體管理方法及其控制器 |
US9128821B2 (en) * | 2008-10-10 | 2015-09-08 | Seagate Technology Llc | Data updating in non-volatile memory |
US8285970B2 (en) | 2008-11-06 | 2012-10-09 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
US8275933B2 (en) * | 2008-11-10 | 2012-09-25 | Fusion-10, Inc | Apparatus, system, and method for managing physical regions in a solid-state storage device |
US20100125696A1 (en) * | 2008-11-17 | 2010-05-20 | Prasanth Kumar | Memory Controller For Controlling The Wear In A Non-volatile Memory Device And A Method Of Operation Therefor |
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 |
WO2010067361A1 (en) | 2008-12-10 | 2010-06-17 | Amir Ban | Method and device of managing a reduced wear memory |
US8316201B2 (en) * | 2008-12-18 | 2012-11-20 | Sandisk Il Ltd. | Methods for executing a command to write data from a source location to a destination location in a memory device |
US7940568B1 (en) | 2008-12-30 | 2011-05-10 | Micron Technology, Inc. | Dynamic polarization for reducing stress induced leakage current |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8040744B2 (en) | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US8244960B2 (en) | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8250293B2 (en) * | 2009-01-19 | 2012-08-21 | Qimonda Ag | Data exchange in resistance changing memory for improved endurance |
US20100199020A1 (en) * | 2009-02-04 | 2010-08-05 | Silicon Storage Technology, Inc. | Non-volatile memory subsystem and a memory controller therefor |
KR20100091544A (ko) * | 2009-02-10 | 2010-08-19 | 삼성전자주식회사 | 메모리 시스템 및 그 마모도 관리 방법 |
JP5185156B2 (ja) * | 2009-02-24 | 2013-04-17 | 株式会社東芝 | メモリコントローラおよび半導体記憶装置 |
US8239614B2 (en) | 2009-03-04 | 2012-08-07 | Micron Technology, Inc. | Memory super block allocation |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
KR101038991B1 (ko) * | 2009-03-10 | 2011-06-03 | 주식회사 하이닉스반도체 | 메모리 영역의 균등한 사용을 위한 반도체 스토리지 시스템및 그 제어 방법 |
KR101586047B1 (ko) * | 2009-03-25 | 2016-01-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
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 |
US8671258B2 (en) | 2009-03-27 | 2014-03-11 | Lsi Corporation | Storage system logical block address de-allocation management |
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 |
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 |
US8176295B2 (en) | 2009-04-20 | 2012-05-08 | Imation Corp. | Logical-to-physical address translation for a removable data storage device |
US8065469B2 (en) | 2009-04-20 | 2011-11-22 | Imation Corp. | Static wear leveling |
US8250282B2 (en) * | 2009-05-14 | 2012-08-21 | Micron Technology, Inc. | PCM memories for storage bus interfaces |
US20100318719A1 (en) * | 2009-06-12 | 2010-12-16 | Micron Technology, Inc. | Methods, memory controllers and devices for wear leveling a memory |
US8639877B2 (en) * | 2009-06-30 | 2014-01-28 | International Business Machines Corporation | Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks |
US20110004720A1 (en) * | 2009-07-02 | 2011-01-06 | Chun-Ying Chiang | Method and apparatus for performing full range random writing on a non-volatile 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 |
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 |
US8601202B1 (en) * | 2009-08-26 | 2013-12-03 | Micron Technology, Inc. | Full chip wear leveling in memory device |
US8036016B2 (en) * | 2009-09-01 | 2011-10-11 | Micron Technology, Inc. | Maintenance process to enhance memory endurance |
US8234520B2 (en) | 2009-09-16 | 2012-07-31 | International Business Machines Corporation | Wear leveling of solid state disks based on usage information of data and parity received from a raid controller |
US8169833B2 (en) * | 2009-10-01 | 2012-05-01 | Micron Technology, Inc. | Partitioning process to improve memory cell retention |
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 |
US8526605B2 (en) * | 2009-10-09 | 2013-09-03 | Seagate Technology Llc | Data encryption to provide data security and memory cell bit wear leveling |
EP2317443A1 (en) | 2009-10-29 | 2011-05-04 | Incard SA | Method for executing data updates in an IC Card |
US8013762B2 (en) * | 2009-11-03 | 2011-09-06 | Seagate Technology Llc | Evaluating alternative encoding solutions during data compression |
US8560770B2 (en) * | 2009-11-13 | 2013-10-15 | Seagate Technology Llc | Non-volatile write cache for a data storage system |
US8495281B2 (en) * | 2009-12-04 | 2013-07-23 | International Business Machines Corporation | Intra-block memory wear leveling |
US8285946B2 (en) | 2009-12-15 | 2012-10-09 | International Business Machines Corporation | Reducing access contention in flash-based memory systems |
TWI484334B (zh) * | 2009-12-24 | 2015-05-11 | Univ Nat Taiwan | 非揮發記憶體的區域式管理方法 |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8595411B2 (en) * | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
TWI447735B (zh) * | 2010-02-05 | 2014-08-01 | Phison Electronics Corp | 記憶體管理與寫入方法及其可複寫式非揮發性記憶體控制器與儲存系統 |
JP2011164994A (ja) * | 2010-02-10 | 2011-08-25 | Toshiba Corp | メモリシステム |
US8856488B2 (en) | 2010-02-11 | 2014-10-07 | Memory Technologies Llc | Method for utilizing a memory interface to control partitioning of a memory module |
JP5130313B2 (ja) * | 2010-04-02 | 2013-01-30 | 株式会社日立製作所 | 管理システム及び計算機システムの管理方法 |
CN102375693A (zh) * | 2010-08-16 | 2012-03-14 | 成都市华为赛门铁克科技有限公司 | 损耗均衡处理方法和系统以及固态硬盘 |
CN102446071B (zh) * | 2010-09-30 | 2014-10-08 | 环鸿科技股份有限公司 | 取得一存储器状态资讯的接取方法、电子装置及程序产品 |
WO2012065112A2 (en) * | 2010-11-12 | 2012-05-18 | Apple Inc. | Apparatus and methods for recordation of device history across multiple software emulations |
TWI473105B (zh) * | 2011-01-18 | 2015-02-11 | Macronix Int Co Ltd | 具有錯誤自動檢查與更正位元之三維記憶體結構 |
US9286204B2 (en) | 2011-01-31 | 2016-03-15 | Mitsubishi Electric Corporation | Memory controller |
WO2012106362A2 (en) | 2011-01-31 | 2012-08-09 | Fusion-Io, Inc. | Apparatus, system, and method for managing eviction of data |
CN102081576B (zh) * | 2011-03-01 | 2012-07-11 | 华中科技大学 | 一种闪存的磨损平衡方法 |
US8732538B2 (en) | 2011-03-10 | 2014-05-20 | Icform, Inc. | Programmable data storage management |
JP2012203443A (ja) | 2011-03-23 | 2012-10-22 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
US8495386B2 (en) | 2011-04-05 | 2013-07-23 | Mcafee, Inc. | Encryption of memory device with wear leveling |
US8762625B2 (en) * | 2011-04-14 | 2014-06-24 | Apple Inc. | Stochastic block allocation for improved wear leveling |
US8862902B2 (en) * | 2011-04-29 | 2014-10-14 | Seagate Technology Llc | Cascaded data encryption dependent on attributes of physical memory |
US8806171B2 (en) * | 2011-05-24 | 2014-08-12 | Georgia Tech Research Corporation | Systems and methods providing wear leveling using dynamic randomization for non-volatile memory |
US20120303878A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to |
US9514838B2 (en) * | 2011-05-31 | 2016-12-06 | Micron Technology, Inc. | Apparatus including memory system controllers and related methods for memory management using block tables |
KR20120136197A (ko) * | 2011-06-08 | 2012-12-18 | 삼성전자주식회사 | 비휘발성 메모리에 대한 웨어 레벨링 방법 |
CN102841852B (zh) | 2011-06-24 | 2015-06-17 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息系统 |
US8626991B1 (en) * | 2011-06-30 | 2014-01-07 | Emc Corporation | Multi-LUN SSD optimization system and method |
JP5673396B2 (ja) * | 2011-07-04 | 2015-02-18 | 富士通株式会社 | 情報処理システム、情報処理プログラム、情報処理方法 |
CN102955743A (zh) * | 2011-08-25 | 2013-03-06 | 建兴电子科技股份有限公司 | 固态储存装置及其损耗平均控制方法 |
CN102439572B (zh) * | 2011-10-27 | 2014-04-02 | 华为技术有限公司 | 控制缓存映射的方法及缓存系统 |
CN103959258B (zh) * | 2011-12-05 | 2017-03-29 | 英特尔公司 | 背景重排序——具有有限开销的预防性的磨损控制机制 |
US9208070B2 (en) * | 2011-12-20 | 2015-12-08 | Sandisk Technologies Inc. | Wear leveling of multiple memory devices |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
JP5952036B2 (ja) * | 2012-03-13 | 2016-07-13 | 株式会社メガチップス | 半導体メモリのリユース処理装置、及び半導体メモリ |
JP5956791B2 (ja) * | 2012-03-13 | 2016-07-27 | 株式会社メガチップス | 半導体メモリのリユース処理装置、及び半導体メモリ |
US11024352B2 (en) | 2012-04-10 | 2021-06-01 | Samsung Electronics Co., Ltd. | Memory system for access concentration decrease management and access concentration decrease method |
US8750045B2 (en) | 2012-07-27 | 2014-06-10 | Sandisk Technologies Inc. | Experience count dependent program algorithm for flash memory |
TWI509615B (zh) * | 2012-08-03 | 2015-11-21 | Phison Electronics Corp | 資料儲存方法、記憶體控制器與記憶體儲存裝置 |
KR20140031688A (ko) * | 2012-09-05 | 2014-03-13 | 삼성전자주식회사 | 스토리지 시스템을 위한 마모 관리 장치 및 방법 |
US20140129758A1 (en) * | 2012-11-06 | 2014-05-08 | Spansion Llc | Wear leveling in flash memory devices with trim commands |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9430339B1 (en) | 2012-12-27 | 2016-08-30 | Marvell International Ltd. | Method and apparatus for using wear-out blocks in nonvolatile memory |
CN103914401B (zh) * | 2013-01-06 | 2017-05-10 | 北京忆恒创源科技有限公司 | 具有多处理器的存储设备 |
CN103914409B (zh) * | 2013-01-06 | 2017-05-10 | 北京忆恒创源科技有限公司 | 用于具有多处理器的存储设备的方法 |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US9465732B2 (en) * | 2013-03-15 | 2016-10-11 | Sandisk Technologies Llc | Binning of blocks for dynamic linking |
US9195590B2 (en) * | 2013-08-29 | 2015-11-24 | Micron Technology, Inc. | Sub-sector wear leveling in memories |
US10019352B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for adaptive reserve storage |
GB201322075D0 (en) | 2013-12-13 | 2014-01-29 | Ibm | Device for selecting a level for at least one read voltage |
KR20150095360A (ko) * | 2014-02-13 | 2015-08-21 | 에스케이하이닉스 주식회사 | 저항성 메모리 장치 및 동작 방법 |
TWI548991B (zh) * | 2014-02-14 | 2016-09-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
US9230689B2 (en) | 2014-03-17 | 2016-01-05 | Sandisk Technologies Inc. | Finding read disturbs on non-volatile memories |
US10068639B2 (en) | 2014-04-29 | 2018-09-04 | International Business Machines Corporation | Out-of-place presetting based on indirection table |
US9471428B2 (en) | 2014-05-06 | 2016-10-18 | International Business Machines Corporation | Using spare capacity in solid state drives |
US20150339223A1 (en) * | 2014-05-22 | 2015-11-26 | Kabushiki Kaisha Toshiba | Memory system and method |
US9471451B2 (en) | 2014-06-18 | 2016-10-18 | International Business Machines Corporation | Implementing enhanced wear leveling in 3D flash memories |
US10261899B2 (en) * | 2014-09-03 | 2019-04-16 | Infineon Technologies Ag | Method, device and system for data processing using dedicated mapping between logical and physical addresses |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9875039B2 (en) | 2014-09-30 | 2018-01-23 | Sandisk Technologies Llc | Method and apparatus for wear-leveling non-volatile memory |
US9563373B2 (en) | 2014-10-21 | 2017-02-07 | International Business Machines Corporation | Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management |
US10365859B2 (en) * | 2014-10-21 | 2019-07-30 | International Business Machines Corporation | Storage array management employing a merged background management process |
CN107077883B (zh) | 2014-11-25 | 2021-04-27 | 三星电子株式会社 | 基于概率信息检测半导体存储器的被最频繁存取的地址的方法 |
US9990279B2 (en) | 2014-12-23 | 2018-06-05 | International Business Machines Corporation | Page-level health equalization |
US10339048B2 (en) | 2014-12-23 | 2019-07-02 | International Business Machines Corporation | Endurance enhancement scheme using memory re-evaluation |
US10055267B2 (en) * | 2015-03-04 | 2018-08-21 | Sandisk Technologies Llc | Block management scheme to handle cluster failures in non-volatile memory |
US10013177B2 (en) * | 2015-04-20 | 2018-07-03 | Hewlett Packard Enterprise Development Lp | Low write amplification in solid state drive |
US9760437B2 (en) | 2015-07-01 | 2017-09-12 | International Business Machines Corporation | Error correction based on thermal profile of flash memory device |
KR102513491B1 (ko) * | 2015-07-15 | 2023-03-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9942324B2 (en) * | 2015-08-05 | 2018-04-10 | Futurewei Technologies, Inc. | Rebalancing and elastic storage scheme with elastic named distributed circular buffers |
WO2017058184A1 (en) * | 2015-09-30 | 2017-04-06 | Hewlett Packard Enterprise Development Lp | Remapping operations |
US9971685B2 (en) * | 2016-04-01 | 2018-05-15 | Intel Corporation | Wear leveling based on a swapping operation between sets of physical block addresses of a non-volatile memory |
US10031845B2 (en) * | 2016-04-01 | 2018-07-24 | Intel Corporation | Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device |
US9842059B2 (en) * | 2016-04-14 | 2017-12-12 | Western Digital Technologies, Inc. | Wear leveling in storage devices |
US10121555B2 (en) * | 2016-05-26 | 2018-11-06 | Advanced Micro Devices, Inc. | Wear-limiting non-volatile memory |
US10248571B2 (en) * | 2016-08-11 | 2019-04-02 | Hewlett Packard Enterprise Development Lp | Saving position of a wear level rotation |
US11556462B2 (en) * | 2016-08-24 | 2023-01-17 | Futurewei Technologies, Inc. | Wear-leveling method for cross-point memory for multiple data temperature zones |
US10261876B2 (en) * | 2016-11-08 | 2019-04-16 | Micron Technology, Inc. | Memory management |
US10430085B2 (en) | 2016-11-08 | 2019-10-01 | Micron Technology, Inc. | Memory operations on data |
US10248333B1 (en) * | 2017-02-07 | 2019-04-02 | Crossbar, Inc. | Write distribution techniques for two-terminal memory wear leveling |
US10409714B1 (en) | 2017-02-09 | 2019-09-10 | Crossbar, Inc. | Logical to physical translation for two-terminal memory |
US10019332B1 (en) * | 2017-03-10 | 2018-07-10 | Western Digital Technologies, Inc. | Non-volatile memory with program failure recovery |
US10198195B1 (en) * | 2017-08-04 | 2019-02-05 | Micron Technology, Inc. | Wear leveling |
US10459662B1 (en) | 2017-09-27 | 2019-10-29 | Amazon Technologies, Inc. | Write failure handling for a memory controller to non-volatile memory |
US10642727B1 (en) | 2017-09-27 | 2020-05-05 | Amazon Technologies, Inc. | Managing migration events performed by a memory controller |
US20190129627A1 (en) * | 2017-10-31 | 2019-05-02 | EMC IP Holding Company LLC | Method and system for wear-leveling using a multi-gap progress field |
US10606743B2 (en) * | 2017-12-05 | 2020-03-31 | Micron Technology, Inc. | Data movement operations in non-volatile memory |
US11048644B1 (en) | 2017-12-11 | 2021-06-29 | Amazon Technologies, Inc. | Memory mapping in an access device for non-volatile memory |
CN107918530A (zh) * | 2018-01-12 | 2018-04-17 | 江苏华存电子科技有限公司 | 一种非易失性存储器的磨损均衡方法和装置 |
US10635327B2 (en) * | 2018-01-31 | 2020-04-28 | Western Digital Technologies, Inc. | Data availability during memory inaccessibility |
US10585795B2 (en) * | 2018-05-31 | 2020-03-10 | Micron Technology, Inc. | Data relocation in memory having two portions of data |
CN108920386B (zh) * | 2018-07-20 | 2020-06-26 | 中兴通讯股份有限公司 | 面向非易失性内存的磨损均衡及访问方法、设备和存储介质 |
US10761739B2 (en) * | 2018-08-23 | 2020-09-01 | Micron Technology, Inc. | Multi-level wear leveling for non-volatile memory |
US11537307B2 (en) * | 2018-08-23 | 2022-12-27 | Micron Technology, Inc. | Hybrid wear leveling for in-place data replacement media |
KR102545189B1 (ko) | 2018-09-07 | 2023-06-19 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 |
US10902929B1 (en) * | 2019-08-29 | 2021-01-26 | Micron Technology, Inc. | Zone swapping for wear leveling memory |
WO2021113420A1 (en) * | 2019-12-03 | 2021-06-10 | Burlywood, Inc. | Adaptive wear leveling using multiple partitions |
CN111639041B (zh) * | 2020-05-29 | 2022-04-08 | 深圳宏芯宇电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制器 |
US11429543B2 (en) * | 2020-10-22 | 2022-08-30 | Micron Technology, Inc. | Managed NAND flash memory region control against endurance hacking |
CN112558878B (zh) * | 2020-12-16 | 2023-07-04 | 北京华弘集成电路设计有限责任公司 | 一种基于不同类型存储机制的空间调换方法 |
US11842062B2 (en) | 2022-02-09 | 2023-12-12 | Western Digital Technologies, Inc. | Method of handling irregular MetaBlock wear leveling and UGSD boot time improvement |
Family Cites Families (119)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4093985A (en) * | 1976-11-05 | 1978-06-06 | North Electric Company | Memory sparing arrangement |
DE2840305C3 (de) | 1978-09-15 | 1981-03-26 | Siemens AG, 1000 Berlin und 8000 München | Verfahren zum Programmieren von wiederholt beschreibbaren Festwertspeichern |
JPS5580164A (en) * | 1978-12-13 | 1980-06-17 | Fujitsu Ltd | Main memory constitution control system |
JPS5764383A (en) * | 1980-10-03 | 1982-04-19 | Toshiba Corp | Address converting method and its device |
DE3123444A1 (de) * | 1981-06-12 | 1983-01-05 | Siemens AG, 1000 Berlin und 8000 München | Verfahren und anordnung zum nichtfluechtigen speichern des zaehlerstandes einer elektronischen zaehlschaltung |
DE3123654A1 (de) * | 1981-06-15 | 1983-01-20 | Vdo Adolf Schindling Ag, 6000 Frankfurt | Schaltungsanordnung zur speicherung eines mehrstelligen dekadischen zaehlwerts einer von einem fahrzeug zurueckgelegten wegstrecke |
US4430727A (en) * | 1981-11-10 | 1984-02-07 | International Business Machines Corp. | Storage element reconfiguration |
DE3200872A1 (de) | 1982-01-14 | 1983-07-21 | Sartorius GmbH, 3400 Göttingen | Elektronische waage |
US4530054A (en) * | 1982-03-03 | 1985-07-16 | Sperry Corporation | Processor-addressable timestamp for indicating oldest written-to cache entry not copied back to bulk memory |
JPS58189890A (ja) * | 1982-04-30 | 1983-11-05 | Hitachi Ltd | 階層記憶装置 |
JPS58215795A (ja) | 1982-06-08 | 1983-12-15 | Toshiba Corp | 不揮発性メモリ装置 |
JPS58215794A (ja) | 1982-06-08 | 1983-12-15 | Toshiba Corp | 不揮発性メモリ装置 |
NL8202365A (nl) * | 1982-06-11 | 1984-01-02 | Philips Nv | Serie-parallel-serie schuifregistergeheugen, hetwelk redundante parallelgeschakelde opslagregisters bevat, en afbeeldtoestel, voorzien van een zodanig georganiseerd beeldgeheugen. |
JPS5945695A (ja) | 1982-09-07 | 1984-03-14 | Fujitsu Ltd | Icメモリ |
JPS59162695A (ja) | 1983-03-07 | 1984-09-13 | Nec Corp | 記憶装置 |
JPS6049218A (ja) * | 1983-08-30 | 1985-03-18 | Nippon Denso Co Ltd | 車両用走行距離計 |
US4612640A (en) * | 1984-02-21 | 1986-09-16 | Seeq Technology, Inc. | Error checking and correction circuitry for use with an electrically-programmable and electrically-erasable memory array |
JPS60179857A (ja) | 1984-02-28 | 1985-09-13 | Fujitsu Ltd | キヤツシユ装置の制御方式 |
GB2171543B (en) * | 1985-02-27 | 1988-04-20 | Hughes Microelectronics Ltd | Counting circuit which provides for extended counter life |
US4718041A (en) * | 1986-01-09 | 1988-01-05 | Texas Instruments Incorporated | EEPROM memory having extended life |
US4953073A (en) * | 1986-02-06 | 1990-08-28 | Mips Computer Systems, Inc. | Cup chip having tag comparator and address translation unit on chip and connected to off-chip cache and main memories |
JPH07109717B2 (ja) | 1986-05-31 | 1995-11-22 | キヤノン株式会社 | メモリ書き込み制御方法 |
JP2685173B2 (ja) | 1986-05-31 | 1997-12-03 | キヤノン株式会社 | メモリ書き込み制御方法 |
JPS63183700A (ja) | 1987-01-26 | 1988-07-29 | Mitsubishi Electric Corp | Eepromアクセス方法 |
US4899272A (en) * | 1987-10-23 | 1990-02-06 | Chips & Technologies, Inc. | Addressing multiple types of memory devices |
US4924375A (en) | 1987-10-23 | 1990-05-08 | Chips And Technologies, Inc. | Page interleaved memory access |
JPH0778997B2 (ja) * | 1987-10-30 | 1995-08-23 | 株式会社東芝 | 不揮発性半導体メモリ |
US4803707A (en) * | 1987-12-21 | 1989-02-07 | Ncr Corporation | Nonvolatile electronic odometer with excess write cycle protection |
JPH0793823B2 (ja) * | 1988-02-01 | 1995-10-09 | 株式会社日立製作所 | 電圧形インバータのpwm制御装置 |
US5053990A (en) * | 1988-02-17 | 1991-10-01 | Intel Corporation | Program/erase selection for flash memory |
JPH01235075A (ja) | 1988-03-14 | 1989-09-20 | Fuji Xerox Co Ltd | ディスクメモリ制御装置 |
US4922456A (en) * | 1988-04-29 | 1990-05-01 | Scientific-Atlanta, Inc. | Method of reducing wearout in a non-volatile memory with double buffer |
US5043940A (en) * | 1988-06-08 | 1991-08-27 | Eliyahou Harari | Flash EEPROM memory systems having multistate storage cells |
US5168465A (en) * | 1988-06-08 | 1992-12-01 | Eliyahou Harari | Highly compact EPROM and flash EEPROM devices |
US5095344A (en) | 1988-06-08 | 1992-03-10 | Eliyahou Harari | Highly compact eprom and flash eeprom devices |
US5268870A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
JP2685825B2 (ja) * | 1988-08-12 | 1997-12-03 | 株式会社東芝 | 不揮発性半導体メモリ |
JPH0283892A (ja) * | 1988-09-20 | 1990-03-23 | Fujitsu Ltd | 半導体記憶装置 |
US5193071A (en) * | 1988-12-22 | 1993-03-09 | Digital Equipment Corporation | Memory apparatus for multiple processor systems |
JPH02189790A (ja) | 1989-01-18 | 1990-07-25 | Mitsubishi Electric Corp | ダイナミック形半導体記憶装置 |
US4947410A (en) * | 1989-02-23 | 1990-08-07 | General Motors Corporation | Method and apparatus for counting with a nonvolatile memory |
DE69033438T2 (de) * | 1989-04-13 | 2000-07-06 | Sandisk Corp., Santa Clara | Austausch von fehlerhaften Speicherzellen einer EEprommatritze |
US5163021A (en) * | 1989-04-13 | 1992-11-10 | Sundisk Corporation | Multi-state EEprom read and write circuits and techniques |
US5172338B1 (en) * | 1989-04-13 | 1997-07-08 | Sandisk Corp | Multi-state eeprom read and write circuits and techniques |
WO1994027382A1 (en) | 1993-05-11 | 1994-11-24 | Norand Corporation | Premises, peripheral and vehicular local area networking |
JPH0373496A (ja) | 1989-05-16 | 1991-03-28 | Seiko Epson Corp | Eeprom書込装置 |
JPH0692898B2 (ja) * | 1989-05-31 | 1994-11-16 | 日本精機株式会社 | 電子式オドメータ |
FR2647941B1 (fr) * | 1989-06-06 | 1991-08-30 | Gemplus Card Int | Procede d'effacement de points memoire, dispositif destine a sa mise en oeuvre, et son utilisation dans un dispositif a memoire non alimente |
JPH0325798A (ja) | 1989-06-23 | 1991-02-04 | Ricoh Co Ltd | Eepromを使用した記憶装置 |
JPH0330034A (ja) | 1989-06-28 | 1991-02-08 | Hitachi Ltd | 光デイスクフアイル管理方法 |
JPH0748320B2 (ja) * | 1989-07-24 | 1995-05-24 | セイコー電子工業株式会社 | 半導体不揮発性メモリ |
US5065364A (en) * | 1989-09-15 | 1991-11-12 | Intel Corporation | Apparatus for providing block erasing in a flash EPROM |
US5200959A (en) | 1989-10-17 | 1993-04-06 | Sundisk Corporation | Device and method for defect handling in semi-conductor memory |
US5134589A (en) * | 1989-10-30 | 1992-07-28 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor memory device having a flash write function |
JPH03283094A (ja) | 1990-03-29 | 1991-12-13 | Nec Corp | 半導体メモリ |
JPH0498342A (ja) * | 1990-08-09 | 1992-03-31 | Mitsubishi Electric Corp | 半導体記憶装置 |
JPH04123243A (ja) | 1990-09-14 | 1992-04-23 | Toshiba Corp | データ書込装置 |
US5303198A (en) * | 1990-09-28 | 1994-04-12 | Fuji Photo Film Co., Ltd. | Method of recording data in memory card having EEPROM and memory card system using the same |
US5222193A (en) * | 1990-12-26 | 1993-06-22 | Intel Corporation | Training system for neural networks and the like |
US5222109A (en) | 1990-12-28 | 1993-06-22 | Ibm Corporation | Endurance management for solid state files |
GB2251324B (en) | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
GB2251323B (en) | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
JP3137993B2 (ja) | 1991-01-16 | 2001-02-26 | 富士通株式会社 | 不揮発性半導体記憶装置 |
US5272669A (en) * | 1991-02-20 | 1993-12-21 | Sundisk Corporation | Method and structure for programming floating gate memory cells |
US5295255A (en) * | 1991-02-22 | 1994-03-15 | Electronic Professional Services, Inc. | Method and apparatus for programming a solid state processor with overleaved array memory modules |
US5270979A (en) * | 1991-03-15 | 1993-12-14 | Sundisk Corporation | Method for optimum erasing of EEPROM |
US5663901A (en) * | 1991-04-11 | 1997-09-02 | Sandisk Corporation | Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems |
FR2675287B1 (fr) | 1991-04-15 | 1993-06-18 | Bull Sa | Circuit coupleur et son utilisation dans une carte et procede. |
DE4215063C2 (de) | 1991-05-10 | 1999-11-25 | Intel Corp | Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher |
JP2582487B2 (ja) | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
JP2549034B2 (ja) | 1991-07-22 | 1996-10-30 | 株式会社メルコ | 記憶装置 |
US5430859A (en) * | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
US5245572A (en) * | 1991-07-30 | 1993-09-14 | Intel Corporation | Floating gate nonvolatile memory with reading while writing capability |
US6230233B1 (en) * | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US5263003A (en) * | 1991-11-12 | 1993-11-16 | Allen-Bradley Company, Inc. | Flash memory circuit and method of operation |
JP3231832B2 (ja) | 1991-11-26 | 2001-11-26 | 株式会社日立製作所 | フラッシュメモリを記憶媒体とした半導体ディスク |
JPH05151097A (ja) | 1991-11-28 | 1993-06-18 | Fujitsu Ltd | 書換回数制限型メモリのデータ管理方式 |
JP3122201B2 (ja) | 1991-11-30 | 2001-01-09 | 株式会社東芝 | メモリカード装置 |
JPH05176564A (ja) * | 1991-12-26 | 1993-07-13 | Aisin Seiki Co Ltd | 放射圧を利用したアクチュエータ |
US5267218A (en) * | 1992-03-31 | 1993-11-30 | Intel Corporation | Nonvolatile memory card with a single power supply input |
US5341489A (en) * | 1992-04-14 | 1994-08-23 | Eastman Kodak Company | Memory card with programmable interleaving |
KR0121800B1 (ko) | 1992-05-08 | 1997-11-22 | 사또오 후미오 | 메모리 카드장치 |
US5280447A (en) * | 1992-06-19 | 1994-01-18 | Intel Corporation | Floating gate nonvolatile memory with configurable erasure blocks |
JP3105092B2 (ja) * | 1992-10-06 | 2000-10-30 | 株式会社東芝 | 半導体メモリ装置 |
JP3177015B2 (ja) * | 1992-10-14 | 2001-06-18 | 株式会社東芝 | 半導体メモリ装置の制御方法 |
EP0680634B1 (en) * | 1993-01-21 | 1997-05-14 | Apple Computer, Inc. | Apparatus and method for backing up data from networked computer storage devices |
US5388083A (en) * | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
DE69321245T2 (de) * | 1993-12-29 | 1999-04-29 | Stmicroelectronics S.R.L., Agrate Brianza, Mailand/Milano | Integrierte Programmierschaltung für eine elektrisch programmierbare Halbleiterspeicheranordnung mit Redundanz |
US5726937A (en) * | 1994-01-31 | 1998-03-10 | Norand Corporation | Flash memory system having memory cache |
JP3507132B2 (ja) * | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
JP3219699B2 (ja) * | 1996-09-17 | 2001-10-15 | 三洋電機株式会社 | 半導体メモリ装置 |
GB2317721B (en) * | 1996-09-30 | 2001-09-12 | Nokia Mobile Phones Ltd | Memory device |
JP3130258B2 (ja) * | 1996-10-25 | 2001-01-31 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | ディスク装置及びデータ・リアサイン方法 |
US5890192A (en) * | 1996-11-05 | 1999-03-30 | Sandisk Corporation | Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM |
US6034897A (en) * | 1999-04-01 | 2000-03-07 | Lexar Media, Inc. | Space management for managing high capacity nonvolatile memory |
DE19718479C1 (de) * | 1997-04-30 | 1998-09-24 | Siemens Ag | Chipkarte mit Speicherzugriffsmaximierung und Protokollierung |
US5930167A (en) * | 1997-07-30 | 1999-07-27 | Sandisk Corporation | Multi-state non-volatile flash memory capable of being its own two state write cache |
JP4079506B2 (ja) * | 1997-08-08 | 2008-04-23 | 株式会社東芝 | 不揮発性半導体メモリシステムの制御方法 |
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
US6085102A (en) * | 1997-08-29 | 2000-07-04 | Motorola, Inc. | Method and apparatus for providing coverage in a selective messaging system |
JP3544859B2 (ja) * | 1998-05-11 | 2004-07-21 | 富士通株式会社 | 不揮発性半導体メモリを使用した2次記憶装置 |
FR2787601A1 (fr) * | 1998-12-22 | 2000-06-23 | Gemplus Card Int | Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire |
JP2000285688A (ja) * | 1999-04-01 | 2000-10-13 | Mitsubishi Electric Corp | 不揮発性半導体記憶装置 |
JP2001067258A (ja) * | 1999-08-25 | 2001-03-16 | Mitsubishi Electric Corp | フラッシュメモリ内蔵半導体装置及びフラッシュメモリアドレス変換方法 |
US6141251A (en) * | 2000-01-28 | 2000-10-31 | Silicon Storage Technology, Inc. | Non-volatile memory array having an index used in programming and erasing |
US6535851B1 (en) * | 2000-03-24 | 2003-03-18 | Speechworks, International, Inc. | Segmentation approach for speech recognition systems |
KR100644602B1 (ko) * | 2000-10-11 | 2006-11-10 | 삼성전자주식회사 | 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 |
US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US6676281B2 (en) * | 2001-05-23 | 2004-01-13 | Sea Gull Lighting Products, Inc. | Rail lighting system |
US6675281B1 (en) * | 2002-01-22 | 2004-01-06 | Icreate Technologies Corporation | Distributed mapping scheme for mass storage system |
US6985992B1 (en) * | 2002-10-28 | 2006-01-10 | Sandisk Corporation | Wear-leveling in non-volatile storage systems |
US7103732B1 (en) * | 2002-10-28 | 2006-09-05 | Sandisk Corporation | Method and apparatus for managing an erase count block |
US7039788B1 (en) * | 2002-10-28 | 2006-05-02 | Sandisk Corporation | Method and apparatus for splitting a logical block |
US6973531B1 (en) * | 2002-10-28 | 2005-12-06 | Sandisk Corporation | Tracking the most frequently erased blocks in non-volatile memory systems |
US7096313B1 (en) * | 2002-10-28 | 2006-08-22 | Sandisk Corporation | Tracking the least frequently erased blocks in non-volatile memory systems |
US6831865B2 (en) * | 2002-10-28 | 2004-12-14 | Sandisk Corporation | Maintaining erase counts in non-volatile storage systems |
US7035967B2 (en) * | 2002-10-28 | 2006-04-25 | Sandisk Corporation | Maintaining an average erase count in a non-volatile storage system |
US7254668B1 (en) * | 2002-10-28 | 2007-08-07 | Sandisk Corporation | Method and apparatus for grouping pages within a block |
US7234036B1 (en) * | 2002-10-28 | 2007-06-19 | Sandisk Corporation | Method and apparatus for resolving physical blocks associated with a common logical block |
-
2003
- 2003-10-09 AT AT03774734T patent/ATE372578T1/de not_active IP Right Cessation
- 2003-10-09 KR KR1020057007417A patent/KR101122511B1/ko active IP Right Grant
- 2003-10-09 WO PCT/US2003/032050 patent/WO2004040586A1/en active IP Right Grant
- 2003-10-09 KR KR1020117014901A patent/KR101174308B1/ko not_active IP Right Cessation
- 2003-10-09 CN CNB2003801047151A patent/CN100483552C/zh not_active Expired - Fee Related
- 2003-10-09 DE DE60316171T patent/DE60316171T2/de not_active Expired - Lifetime
- 2003-10-09 AU AU2003282544A patent/AU2003282544A1/en not_active Abandoned
- 2003-10-09 EP EP03774734A patent/EP1556868B1/en not_active Expired - Lifetime
- 2003-10-09 JP JP2004548368A patent/JP4518951B2/ja not_active Expired - Fee Related
- 2003-10-14 US US10/686,399 patent/US7120729B2/en not_active Expired - Lifetime
-
2006
- 2006-10-10 US US11/539,972 patent/US7552272B2/en not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100848315B1 (ko) * | 2005-12-08 | 2008-07-24 | 한국전자통신연구원 | 이중 저널링을 이용한 데이터 저장 공간 확보 방법 |
US7797481B2 (en) | 2007-06-14 | 2010-09-14 | Samsung Electronics Co., Ltd. | Method and apparatus for flash memory wear-leveling using logical groups |
US8473668B2 (en) | 2008-07-31 | 2013-06-25 | Samsung Electronics Co., Ltd. | Memory device and wear leveling method |
KR20170084194A (ko) * | 2014-11-13 | 2017-07-19 | 마이크론 테크놀로지, 인크. | 메모리 마모 레벨링 |
Also Published As
Publication number | Publication date |
---|---|
DE60316171T2 (de) | 2008-05-29 |
US20070083698A1 (en) | 2007-04-12 |
EP1556868B1 (en) | 2007-09-05 |
JP4518951B2 (ja) | 2010-08-04 |
KR101174308B1 (ko) | 2012-08-16 |
CN100483552C (zh) | 2009-04-29 |
US7552272B2 (en) | 2009-06-23 |
AU2003282544A1 (en) | 2004-05-25 |
KR20110093916A (ko) | 2011-08-18 |
US20040083335A1 (en) | 2004-04-29 |
JP2006504201A (ja) | 2006-02-02 |
DE60316171D1 (de) | 2007-10-18 |
EP1556868A1 (en) | 2005-07-27 |
ATE372578T1 (de) | 2007-09-15 |
KR101122511B1 (ko) | 2012-03-15 |
US7120729B2 (en) | 2006-10-10 |
CN1720590A (zh) | 2006-01-11 |
WO2004040586A1 (en) | 2004-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101174308B1 (ko) | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 | |
US6985992B1 (en) | Wear-leveling in non-volatile storage systems | |
US6973531B1 (en) | Tracking the most frequently erased blocks in non-volatile memory systems | |
US7096313B1 (en) | Tracking the least frequently erased blocks in non-volatile memory systems | |
US7631138B2 (en) | Adaptive mode switching of flash memory address mapping based on host usage characteristics | |
US6831865B2 (en) | Maintaining erase counts in non-volatile storage systems | |
US8364883B2 (en) | Scheduling of housekeeping operations in flash memory systems | |
US20060149896A1 (en) | Maintaining an average erase count in a non-volatile storage system | |
US20090157974A1 (en) | System And Method For Clearing Data From A Cache | |
EP1559015A1 (en) | Method and apparatus for managing an erase count block | |
EP1713085A1 (en) | Automated wear leveling in non-volatile storage systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
A107 | Divisional application of patent | ||
AMND | Amendment | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150130 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160212 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170201 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180201 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20190129 Year of fee payment: 8 |