KR101996072B1 - 플래시 메모리 디바이스들을 위한 웨어 관리 - Google Patents

플래시 메모리 디바이스들을 위한 웨어 관리 Download PDF

Info

Publication number
KR101996072B1
KR101996072B1 KR1020160114019A KR20160114019A KR101996072B1 KR 101996072 B1 KR101996072 B1 KR 101996072B1 KR 1020160114019 A KR1020160114019 A KR 1020160114019A KR 20160114019 A KR20160114019 A KR 20160114019A KR 101996072 B1 KR101996072 B1 KR 101996072B1
Authority
KR
South Korea
Prior art keywords
flash memory
memory devices
blocks
value
block
Prior art date
Application number
KR1020160114019A
Other languages
English (en)
Other versions
KR20170031052A (ko
Inventor
마이클 스티븐 로스버그
Original Assignee
에이취지에스티 네덜란드 비.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이취지에스티 네덜란드 비.브이. filed Critical 에이취지에스티 네덜란드 비.브이.
Publication of KR20170031052A publication Critical patent/KR20170031052A/ko
Application granted granted Critical
Publication of KR101996072B1 publication Critical patent/KR101996072B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50004Marginal testing, e.g. race, voltage or current testing of threshold voltage
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50016Marginal testing, e.g. race, voltage or current testing of retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

플래시 저장 시스템을 관리하는 기계 구현 방법은 데이터 작동에 대한 커맨드를 수신하는 단계를 포함한다. 방법은 플래시 저장 시스템의 복수의 플래시 메모리 디바이스 각각에 대한 예상 수명값을 결정하는 단계를 포함하며, 복수의 플래시 메모리 디바이스 중 적어도 하나에 대한 예상 수명값은 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에 대한 예상 수명값보다 더 높다. 방법은 또한 복수의 플래시 메모리 디바이스에 대한 각각의 예상 수명값에 기반하여 데이터 작동에 대해 복수의 플래시 메모리 디바이스 중 하나에서의 플래시 메모리 블록을 선택하는 단계를 포함한다.

Description

플래시 메모리 디바이스들을 위한 웨어 관리{WEAR MANAGEMENT FOR FLASH MEMORY DEVICES}
본 발명은 플래시 저장 시스템에 관한 것으로, 보다 상세하게는, 플래시 메모리 디바이스에 대한 최적화된 웨어 레벨링에 관한 것이다.
고체 상태 드라이브(SSD)와 같은 플래시 저장 시스템은 비휘발성 저장 매체로서 플래시 메모리를 사용한다. 플래시 저장 시스템은 다수의 플래시 메모리 디바이스를 포함할 수 있다. 플래시 메모리 디바이스는 플래시 메모리 디바이스 상의 공간이 자유로워질 때, 데이터가 저장되고, 소거됨에 따라, 프로그래밍된다(예를 들어, 기록된다). 플래시 메모리 디바이스는 사용 불가능해지기 전에, 플래시 메모리 디바이스가 견딜 수 있는 제한된 수의 프로그램/소거(P/E) 사이클을 갖는다.
본 논제 기술은 플래시 메모리 디바이스에 대해 예상 수명값에 기반하여 데이터 작동을 위한 플래시 메모리 디바이스를 선택함으로써 플래시 저장 시스템에서의 데이터 웨어 레벨링을 최적화한다. 예상 수명값은 플래시 메모리 디바이스를 테스트하는 것을 통해 결정될 수 있다.
본 논제 기술의 양태들에 따르면, 플래시 저장 시스템을 관리하는 기계구현 방법이 제공된다. 방법은 데이터 작동에 대한 커맨드를 수신하는 단계를 포함한다. 방법은 또한 플래시 저장 시스템의 복수의 플래시 메모리 디바이스 각각에 대한 예상 수명값을 결정하는 단계를 포함하며, 복수의 플래시 메모리 디바이스 중 적어도 하나에 대한 예상 수명값은 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에 대한 예상 수명값보다 더 높다. 방법은 또한 복수의 플래시 메모리 디바이스에 대한 각각의 예상 수명값에 기반하여 데이터 작동에 대해 복수의 플래시 메모리 디바이스 중 하나에서의 플래시 메모리 블록을 선택하는 단계를 포함한다.
본 논제 기술의 다른 양태들에 따르면, 플래시 저장 시스템이 제공된다. 플래시 저장 시스템은 복수의 플래시 메모리 디바이스 및 제어기를 포함한다. 복수의 플래시 메모리 디바이스 각각은 예상 수명값을 가지며, 복수의 플래시 메모리 디바이스 중 적어도 하나에 대한 예상 수명값은 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에 대한 예상 수명값보다 더 높다. 제어기는 데이터 작동에 대한 커맨드를 수신하고, 복수의 플래시 메모리 블록을 포함하는 복수의 플래시 메모리 디바이스에 대한 각각의 예상 수명값에 기반하여 데이터 작동에 대해 복수의 플래시 메모리 디바이스 중 하나에서의 플래시 메모리 블록을 선택하도록 구성된다.
본 논제 기술의 다른 양태들에 따르면, 기계 판독 가능 매체는 프로세서에 의해 실행될 때, 프로세서가 작동들을 수행하게 하는 실행 가능 명령어들로 인코딩된다. 작동들은 플래시 저장 시스템의 복수의 플래시 메모리 디바이스 각각에 대한 예상 수명값에 기반하여 복수의 플래시 메모리 디바이스의 순서를 결정하는 것을 포함하며, 복수의 플래시 메모리 디바이스 중 적어도 하나에 대한 예상 수명값은 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에 대한 예상 수명값보다 더 높다. 작동들은 또한 데이터 작동에 대한 커맨드를 수신하는 것을 포함한다. 작동들은 또한 복수의 플래시 메모리 디바이스의 순서에 기반하여 복수의 플래시 메모리 디바이스 중 하나를 선택하는 것을 포함한다. 작동들은 또한 데이터 작동에 대한 복수의 플래시 메모리 디바이스 중 선택된 하나에서의 플래시 메모리 블록을 선택하는 것을 포함한다.
본 논제 기술의 다양한 구성이 예시를 통하여 나타내어지고 설명되는 이하의 상세한 설명으로부터 본 논제 기술의 다른 구성들이 당업자에게 손쉽게 명백해질 것이라는 점이 이해된다. 본 논제 기술은 다른 상이한 구성들이 가능하고 본 논제 기술의 여러 가지 상세는 모두 본 논제 기술의 범위로부터 벗어나지 않는 범위 내에서 다양한 다른 관점에서 변경이 가능하다는 점을 인식할 것이다. 따라서, 도면들 및 상세한 설명은 제한적인 것이 아닌 본질적으로 예시적인 것으로 간주되어야 한다.
도 1은 본 논제 기술의 양태들에 따른 플래시 저장 시스템의 구성 요소들을 도시하는 블록도이다.
도 2는 본 논제 기술의 양태들에 따른 플래시 저장 시스템을 관리하는 방법을 도시하는 흐름도이다.
도 3a는 본 논제 기술의 양태들에 따른 균등한 웨어 레벨링 방식에서의 P/E 사이클들을 나타내는 표이다.
도 3b는 본 논제 기술의 양태들에 따른 최적화된 웨어 레벨링 방식에서의 P/E 사이클들을 나타내는 표이다.
도 4는 본 논제 기술의 양태들에 따른 플래시 저장 시스템을 관리하는 방법을 도시하는 흐름도이다.
이하에 제시되는 상세한 설명은 본 논제 기술의 다양한 구성을 설명하기 위한 것이며 본 논제 기술이 실행될 수 있는 구성들만을 나타내려는 것이 아니다. 첨부 도면들은 본원에 포함되고 상세한 설명의 일부를 구성한다. 상세한 설명은 본 논제 기술의 철저한 이해를 제공하기 위해 구체적 상세들을 포함한다. 그러나, 본 논제 기술은 이러한 구체적 상세들 없이 실행될 수 있다. 일부 경우에, 구조들 및 구성 요소들은 본 논제 기술의 개념들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다.
고체 상태 드라이브(SSD)와 같은 플래시 저장 시스템은 각각이 하나 이상의 다이를 포함할 수 있는 하나 이상의 플래시 메모리 디바이스를 포함한다. 각각의 플래시 메모리 디바이스 또는 다이는 플래시 메모리 셀들의 어레이를 포함한다. 각각의 메모리 셀은 하나 이상의 비트의 데이터를 저장하는데 사용되는 부동 게이트 트랜지스터를 포함한다. 플래시 메모리 셀들은 블록들로 체계화될 수 있고, 각각의 물리적 블록은 다수의 페이지를 포함한다. 데이터는 페이지들의 기록 단위들로 플래시 메모리에 기록된다. 데이터는 블록들의 소거 단위들로 플래시 메모리로부터 소거된다. 각각의 P/E 사이클은 블록의 플래시 메모리 셀들을 물리적으로 열화시키거나 웨어링시킬 수 있어 각각의 블록은 웨어가 블록에서의 데이터 저장의 무결성 및 신뢰성을 악화시키기 전에, 한정된 수의 P/E 사이클을 갖는다.
플래시 저장 시스템들은 플래시 저장 시스템에서 블록들의 P/E 사이클 한계들에 상응하는 기대 수명에 기반하여 등급이 정해지거나 계층화될 수 있다. 일정 기대 수명의 플래시 저장 시스템을 구성하기 위해, 유사한 기대 수명들을 갖는 플래시 메모리 디바이스들이 플래시 저장 시스템에 대해 선택된다. 플래시 메모리 디바이스들의 제조자들은 테스트를 위해 다이들의 배치(batch)로부터 다이들의 작은 샘플을 선택하고, 테스트에 기반하여 제조자 수명값으로 배치에서의 모든 다이를 지정할 수 있다. 제조자 수명값은 배치에서 다이들에 대한 최저 예상 수명값(예를 들어, P/E 사이클의 수)에 상응할 수 있다. 즉, 제조자 수명값은 적어도 최소 수의 블록이 예상되는 P/E 사이클의 수(90% 또는 99%와 같은 높은 정도의 확실성)에 상응하여 P/E 사이클의 수의 성능을 제공할 수 있다. 다이에서의 각각의 블록, 또는 다이에서의 최소 수의 블록, 또는 다이에서 블록들에 걸친 평균 블록은 적어도 지정된 제조자 수명값만큼 오래 지속되는 것으로 예상된다. 예를 들어, 제조자는 30,000 P/E 사이클로 테스트된 배치의 등급을 정할 수 있다. 테스트된 배치에서 플래시 메모리 디바이스들의 각각의 블록은 적어도 30,000 P/E 사이클 동안 지속되는 것으로 평균적으로 예상된다. 예를 들어, 일정 블록들은 30,000 P/E 사이클 초과 동안 지속될 수 있고, 일정 다른 블록들은 30,000 P/E 사이클 미만 동안 지속될 수 있지만, 평균적으로 블록들은 30,000 P/E 사이클 동안 지속될 수 있다.
플래시 저장 시스템은 제조자 수명값에 기반하여 플래시 메모리 디바이스들을 활용할 수 있다. 그러나, 플래시 저장 시스템의 각각의 플래시 메모리 디바이스는 제조자 수명값들과 상이한 실제 수명값들을 가질 수 있다. 개별 디바이스 테스트를 통해 결정되는 실제 수명값들의 추정치들일 수 있는 각각의 플래시 메모리 디바이스에 대한 예상 수명값들은 제조자 수명값들보다 실제 수명값들의 더 정확한 표현들일 수 있다. 플래시 저장 시스템은 상이하게 예상 수명값들에 기반하여 플래시 메모리 디바이스들을 활용할 수 있다.
통상적 웨어 레벨링 방식들은 제조자 수명값에 기반하여 플래시 저장 시스템의 모든 플래시 메모리 디바이스가 동일한 기대 수명을 갖는다는 가정 하에 작동할 수 있다. 플래시 메모리 디바이스의 동일한 블록이 플래시 저장 시스템의 다른 블록들보다 더 흔하게 데이터 작동에 대해 선택되면(예를 들어, 프로그래밍되면/소거되면), 선택된 블록은 다른 블록들보다 훨씬 더 빠르게 고장날 수 있다. 플래시 메모리 디바이스의 충분한 수의 블록이 고장나면, 플래시 메모리 디바이스는 사용 불가능하게 될 수 있다. 플래시 저장 시스템들은 웨어를 더 양호하게 분포시키기 위해 데이터 작동에 대해 플래시 메모리 디바이스의 블록을 선택할 때, 웨어 레벨링 방식들을 활용하고, 하나 이상의 블록 및/또는 플래시 메모리 디바이스가 플래시 저장 시스템의 다른 블록들 및/또는 플래시 메모리 디바이스들보다 상당히 더 빠르게 고장나는 것을 방지한다. 블록들 및/또는 플래시 메모리 디바이스의 고장은 플래시 저장 시스템의 성능을 손상시킨다.
웨어 레벨링 방식들은 플래시 메모리 디바이스들 모두가 대략 동시에 고장나도록 웨어를 분포시킬 수 있으며, 이는 통상적으로 제조자 수명값에 상응한다. 그러나, 제조자 수명값이 최저 예상 수명값을 나타내는 적게 잡은 하한값일 수 있으므로, 각각의 플래시 메모리 디바이스에 대한 실제 수명값은 제조자 수명값과 상이할 수 있다. 하나 이상의 플래시 메모리 디바이스의 실제 수명값들이 제조자 수명값보다 더 클 때, 부가 수명(예를 들어, 제조자 수명값을 초과하는 P/E 사이클들)은 사용되지 않을 수 있다. 웨어 레벨링 방식은 플래시 메모리 디바이스들의 상이한 실제 수명값들을 이용하기 위해 상이하게 예상 수명값들에 기반하여 플래시 메모리 디바이스들을 활용함으로써 최적화될 수 있다.
도 1은 본 논제 기술의 양태들에 따른 플래시 저장 시스템(110)의 구성 요소들을 도시하는 블록도이다. 도 1에 도시된 바와 같이, 플래시 저장 시스템(110)은 인터페이스(115), 제어기(120), 플래시 메모리 디바이스(130A) 및 플래시 메모리 디바이스(130B)(집합적으로 플래시 메모리 디바이스들(130)), 그리고 메모리(125)를 포함한다. 인터페이스(115)는 플래시 저장 시스템(110)과 호스트(150) 사이의 데이터, 커맨드들 및/또는 제어 신호들의 통신을 용이하게 한다. 제어기(120)는 호스트(150)로부터 수신되는 커맨드들에 따라 플래시 메모리 디바이스들(130)에서 데이터를 저장하고 회수하도록 플래시 저장 시스템(110)의 작동을 제어한다. 제어기(120)는 프로세서를 포함할 수 있다. 랜덤 액세스 메모리(RAM)일 수 있는 메모리(125)는 호스트(150)와 플래시 메모리 디바이스들(130) 사이에서 커맨드들을 처리하고 데이터를 전송하도록 제어기(120)에 대한 임시 저장 공간을 제공한다. 이러한 구성 요소들 각각의 작동을 보다 상세히 후술한다.
인터페이스(115)는 호스트(150)와 플래시 저장 시스템(110) 사이에 물리적이고 전기적인 연결들을 제공한다. 인터페이스(115)는 물리적이고 전기적인 연결들을 통하여 호스트(150)와 플래시 저장 시스템(110) 사이에 데이터, 커맨드들 및/또는 제어 신호들의 통신을 용이하게 하도록 구성된다. 인터페이스(115)와의 연결 및 통신은 범용 직렬 버스(USB), 소형 컴퓨터 시스템 인터페이스(SCSI), 직렬 고급 기술 결합(SATA) 등과 같은 표준 인터페이스에 기반할 수 있다. 대안적으로, 연결 및/또는 통신이 전매의 인터페이스에 기반할 수 있더라도, 본 논제 기술은 임의의 특정 타입의 인터페이스에 제한되지 않는다.
호스트(150)는 컴퓨터/서버, 스마트폰, 또는 플래시 저장 시스템(110)으로부터 데이터를 판독하고 이것에 데이터를 기록하는 임의의 다른 전자 디바이스와 같은 컴퓨팅 디바이스일 수 있다. 호스트(150)는 판독 및 기록 커맨드들을 플래시 저장 시스템(110)으로 발행하는 작동 시스템 또는 다른 소프트웨어를 가질 수 있다. 플래시 저장 시스템(110)은 호스트(150)와 통합될 수 있거나 호스트(150)의 외부에 있을 수 있다. 플래시 저장 시스템(110)은 호스트(150)에 무선으로 연결될 수 있거나, 호스트(150)에 물리적으로 연결될 수 있다.
도 1은 2개의 플래시 메모리 디바이스(130)(플래시 메모리 디바이스(130A) 및 플래시 메모리 디바이스(130B))를 도시한다. 그러나, 플래시 저장 시스템(110)은 2개보다 더 많은 플래시 메모리 디바이스(130)를 포함할 수 있고 2개의 플래시 메모리 디바이스(130)에 제한되지 않는다. 플래시 메모리 디바이스들(130)은 각각 단일 플래시 메모리 칩 또는 다이를 포함할 수 있다. 플래시 메모리 디바이스들(130)은 데이터가 제어기(120)에 의해 플래시 메모리 디바이스들(130)로부터 판독되고 이것들에 기록되는 다수의 채널 중에서 체계화되거나, 단일 채널에 결합될 수 있다. 플래시 메모리 디바이스들(130)은 NAND 플래시 메모리를 사용하여 구현될 수 있다. 플래시 메모리 디바이스들(130)은 각각의 플래시 메모리 디바이스(130)의 작동 파라미터들과 같은 데이터를 저장하는 하나 이상의 레지스터일 수 있는 레지스터(135)를 각각 포함할 수 있다. 작동 파라미터들은: 초기 펄스값, 증분 펄스값 및 펄스폭과 같은 기록 작동 파라미터들; 초기 펄스값, 증분 펄스값 및 펄스폭과 같은 소거 작동 파라미터들; 그리고 판독 레벨 전압과 같은 판독 작동 파라미터들을 포함할 수 있다.
플래시 메모리 디바이스들(130)은 플래시 메모리 블록들(140)과 같은 저장 블록들로 분포되는 다수의 메모리 셀을 포함할 수 있다. 도 1이 2개의 플래시 메모리 블록(140)을 각각 갖는 플래시 메모리 디바이스들(130)을 도시하지만, 플래시 메모리 디바이스들(130)은 더 많거나 더 적은 플래시 메모리 블록(140)을 가질 수 있고, 플래시 메모리 디바이스들(130)은 동일하거나 상이한 수들의 플래시 메모리 블록(140)을 각각 가질 수 있다. 플래시 메모리 블록들(140)은 데이터 블록들 또는 메모리 블록들로 지칭될 수 있고 물리적 블록 어드레스를 사용하여 제어기(120)에 의해 어드레싱 가능하다. 플래시 메모리 블록들(140) 각각은 물리적 페이지 어드레스를 사용하여 제어기(120)에 의해 어드레싱 가능하거나 참조된 페이지를 포함하는 저장 블록의 물리적 블록 어드레스로부터 파생되는 다수의 데이터 세그먼트 또는 페이지로 추가로 분할된다. 페이지들은 섹터들 또는 다른 호스트 데이터 유닛들을 저장할 수 있다. 플래시 메모리 블록들(140)은 단일 소거 작동으로 플래시 메모리 디바이스들(130) 내에서 소거되는 데이터의 유닛들을 나타낸다. 페이지들은 판독 또는 기록 작동으로 플래시 메모리 디바이스들(130)로부터 판독되거나 이것들에 기록되는 데이터의 유닛들을 나타낸다. 플래시 메모리 디바이스들(130)을 블록들 및 페이지들에 관하여 설명하지만, 다른 전문 용어가 플래시 저장 디바이스 내의 이러한 데이터 유닛들을 지칭하는데 사용될 수 있다.
본 논제 기술은 임의의 특정 용량의 플래시 메모리에 제한되지 않는다. 예를 들어, 저장 블록들은 32개, 64개, 128개 또는 512개의 페이지, 또는 임의의 다른 수의 페이지를 각각 포함할 수 있다. 게다가, 페이지들은 예를 들어, 512 바이트, 2 KB, 4 KB 또는 32 KB를 각각 포함할 수 있다. 섹터들은 예를 들어, 512 바이트, 4 KB 또는 다른 크기들을 각각 포함할 수 있다. 페이지 당 하나 이상의 섹터가 있을 수 있다.
도 1에서, 메모리(125)는 플래시 저장 시스템(110)의 작동 동안 제어기(120)에 결합되고 이것에 의해 사용되는 휘발성 메모리를 나타낸다. 제어기(120)는 메모리(125)에 커맨드들 및/또는 데이터를 버퍼링할 수 있다. 제어기(120)는 호스트(150)에 의해 사용되는 논리 데이터 어드레스들을 플래시 메모리 디바이스들(130)의 부분들에 상응하는 가상 및/또는 물리적 어드레스들로 변환하는데 사용되는 어드레스 매핑 테이블들 또는 룩업 테이블들을 저장하기 위해 메모리(125)를 사용할 수도 있다. 플래시 메모리 디바이스들(130)을 관리하는데 사용되는 다른 타입들의 표들, 데이터, 상태 표시기들 등이 제어기(120)에 의해 메모리(125)에 저장될 수도 있다. 예를 들어, 플래시 메모리 디바이스들(130)의 특성치들은 각각의 플래시 메모리 블록(140)에 대한 P/E 사이클 카운트들, 각각의 플래시 메모리 블록(140)에 대한 오류 카운트들, 및 각각의 플래시 메모리 블록(140)에 대한 보유 시간들과 같은 웨어 레벨링에 사용되는 데이터를 포함한다. 메모리(125)는 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 또는 본 논제 기술의 범위로부터 벗어나지 않는 범위 내에서 다른 타입들의 휘발성 랜덤 액세스 메모리를 사용하여 구현될 수 있다. 제어기(120)는 예를 들어, 플래시 저장 시스템(110)이 전원 차단되기 전에, 하나 이상의 지정된 플래시 메모리 블록(140)으로 메모리(125)의 콘텐츠를 주기적으로 저장할 수 있다.
제어기(120)는 호스트(150)와 플래시 메모리 디바이스들(130) 사이의 데이터의 흐름을 관리한다. 제어기(120)는 호스트(150)로부터 인터페이스(115)를 통하여 커맨드들 및 데이터를 수신하도록 구성된다. 예를 들어, 제어기(120)는 플래시 메모리 디바이스들(130)에 데이터를 기록하기 위해 호스트(150)로부터 데이터 및 기록 커맨드를 수신할 수 있다. 제어기(120)는 인터페이스(115)를 통하여 호스트(150)로 데이터를 송신하도록 추가로 구성된다. 예를 들어, 제어기(120)는 판독 커맨드에 응하여 플래시 메모리 디바이스들(130)로부터 데이터를 판독하고 데이터를 호스트(150)로 송신할 수 있다. 제어기(120)는 내부 제어 알고리즘들 또는 호스트(150)로부터 수신될 수 있는 다른 타입들의 커맨드들에 기반하여 플래시 메모리 디바이스들(130) 및 메모리(125)에 저장되는 데이터를 관리하도록 추가로 구성된다. 예를 들어, 제어기(120)는 가비지 수집(GC), 오류 정정 및 웨어 레벨링과 같은 작동들을 수행하도록 구성된다. 당업자는 플래시 저장 디바이스에서 제어기에 의해 수행되는 다른 작동들에 친숙할 것이며, 이 다른 작동들은 본원에 상세히 설명하지 않을 것이다.
제어기(120)는 범용 프로세서, 마이크로 제어기, 디지털 신호 프로세서(DSP), 시스템 온 칩(SoC), 주문형 반도체(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 또는 다른 프로그램 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직 디바이스, 이산 하드웨어 구성 요소들, 또는 본원에 설명하는 작동들 및 기능들을 수행하도록 설계되고 구성되는 이들의 임의의 조합으로 구현될 수 있다. 제어기(120)는 기계/컴퓨터 판독 가능 매체 상에 저장되는 하나 이상의 시퀀스의 명령어들을 실행시킴으로써 본원에 설명하는 작동들 및 기능들을 수행할 수 있다. 기계/컴퓨터 판독 가능 매체는 플래시 메모리 디바이스들(130), 메모리(125), 또는 제어기(120)가 명령어들 또는 코드를 판독할 수 있는 다른 타입들의 매체일 수 있다. 예를 들어, 플래시 저장 시스템(110)은 플래시 저장 시스템(110)의 작동 동안 제어기(120)에 의해 판독되고 실행되는 하나 이상의 시퀀스의 명령어들을 포함하는 펌웨어/소프트웨어로 인코딩되는 EPROM 또는 EEPROM과 같은 읽기 전용 메모리(ROM)를 포함할 수 있다.
제어기(120)는 예를 들어, 호스트(150)로부터의 커맨드들 사이의 유휴 시간들 동안 플래시 메모리 디바이스들(130) 상에서 유지 관리 작동들을 수행할 수 있다. 예를 들어, 제어기(120)는 GC가 데이터 작동을 위해 플래시 메모리 블록들(140) 중 하나를 해제하는 것이 필요하다고 판단할 수 있다. 플래시 메모리 블록(140)은 웨어 레벨링 방식에 기반하여 GC에 대해 선택될 수 있다. 블록들의 제한된 P/E 사이클들 때문에, 다른 블록들보다 더 흔하게 특정 블록을 사용하는 것은 특정 블록이 다른 블록들보다 먼저 고장나게 할 수 있다. 블록이 복구 불능 판독 오류들을 생성한다면, 고장이 결정될 수 있다.
제어기(120)는 웨어 레벨링을 위해 각각의 플래시 메모리 블록(140)의 P/E 사이클 카운트를 파악할 수 있다. 균등한 웨어 레벨링 방식에서, 최저 P/E 사이클 카운트를 갖는 플래시 메모리 블록들(140)을 갖는 플래시 메모리 디바이스(130)는 P/E 사이클들로부터 웨어를 균등하게 분포시키기 위해 데이터 작동에 대해 선택될 수 있다. 균등한 웨어 레벨링 방식들은 플래시 메모리 디바이스들의 실제이거나 예상 수명값들을 고려하지 않고, 가능한 변화의 책임을 지지 않고 플래시 저장 시스템(110)이 유사한 기대 수명들을 갖는 플래시 메모리 디바이스들을 일반적으로 포함한다는 가정 하에 작동할 수 있다.
그러나, 각각의 개별 플래시 메모리 디바이스(130)는 제조자 수명값 초과 또는 미만의 실제 수명값을 가질 수 있다. 그러므로, 균등한 웨어 레벨링 방식들은 최적의 성능 미만을 야기할 수 있다. 예를 들어, 하나 이상의 플래시 메모리 디바이스(130)가 제조자 수명값 미만의 실제 수명값을 갖는다면, 플래시 저장 시스템(110)은 예상되는 것보다 더 이르게 고장날 수 있다. 하나 이상의 플래시 메모리 디바이스(130)가 제조자 수명값 초과의 실제 수명값을 갖는다면, 제조자 수명값을 넘는 부가 P/E 사이클들이 활용되지 않을 수 있다. 최적의 웨어 레벨링 방식은 제조자 수명값을 넘는 부가 사이클들을 이용하기 위해 플래시 메모리 디바이스들에 대한 실제 수명값들과 유사할 수 있는 예상 수명값들에 기반할 수 있다.
게다가, 플래시 저장 시스템은 플래시 저장 시스템의 기대 수명에 기반하여 등급이 정해지거나 분류될 수 있다. 많은 P/E 사이클 기대량들을 갖는 플래시 메모리 디바이스들은 기업 저장 시스템에서의 사용을 위해 긴 수명을 갖는 것으로 예상될 수 있거나, 더 빠른 프로그램/소거 속도를 위해 긴 수명을 희생시키는 높은 성능 시스템에 사용될 수 있다. 적은 P/E 사이클 기대량들을 갖는 플래시 메모리 디바이스들은 더 낮은 기대 수명들 또는 더 느린 속도들을 갖는 낮은 성능 시스템들에 사용될 수 있다.
예상 수명값은 플래시 메모리 블록들의 고장 이전에 플래시 메모리 디바이스의 플래시 메모리 블록들 상에 수행되는 것으로 예상되는 P/E 사이클의 수에 상응할 수 있다. 각각의 플래시 메모리 디바이스의 개별 테스트는 예상 수명값들을 결정할 수 있으며, 예상 수명값들은 제조자 수명값보다 실제 수명값들의 더 정확한 추정치들일 수 있다.
배치 테스트 동안 제조자들에 의해 사용되는 통상적 테스트 방법들은 각각의 플래시 메모리 디바이스를 개별적으로 테스트하기에 비실용적이거나 실현 불가능할 수 있다. 통상적 테스트는 통상적 파라미터들에 기반한 통상적 기록 또는 소거 전압을 인가하는 것에 기반할 수 있다. 플래시 메모리 디바이스들 상에서 이용 가능한 통상적 파라미터들은 플래시 메모리 디바이스의 조립의 테스트를 가능하게 할 수 있다. 높은 전압은 통상적 기록 전압 및 통상적 소거 전압 중 하나 또는 둘 다보다 더 큰 전압 예를 들어, 플래시 메모리 디바이스 상에서 이용 가능한 최대 전압일 수 있다.
높은 전압 테스트는 통상적 테스트들보다 더 빠를 수 있고, 그러므로, 각각의 개별 플래시 메모리 디바이스 상에서 행하기에 더 실현 가능할 수 있다. 높은 전압 테스트는 블록의 메모리 셀들에서의 전하 캡처를 가속시키고 전하 캡처의 포화점에 도달하기 위해 오랜 지속 기간들(예를 들어, 통상적 펄스 지속 기간들보다 더 오랜 지속 시간들) 동안의 높은 전압 및/또는 다수의 펄스를 인가하는 것을 포함할 수 있다. 게다가, 펄스들 사이의 냉각 기간을 기다리는 것보다는 오히려, 펄스들은 연속하여 인가될 수 있으며, 이는 포화점에 도달하는 시간을 더 빠르게 할 수 있다. 높은 전압에서 펄스의 수와 같은 전압 파라미터들이 측정되고 제조자 수명값보다 실제 수명값에 더 근접한 예상 수명값을 결정하는데 사용될 수 있다. 예를 들어, 경험적 데이터는 포화점들을 기대 수명과 상관시키는 시뮬레이션 또는 실험실 데이터로부터 유도될 수 있거나, 전압 파라미터들, 포화점에 도달하는 시간 및 다른 특성치들을 예상된 P/E 사이클 카운트들과 상관시키기 위해 다양한 플래시 메모리 디바이스 상에서 높은 전압 테스트를 수행하는 것으로부터 수집될 수 있다. 예상 수명값은 예상된 P/E 사이클 카운트에 상응한다.
높은 전압 테스트는 테스트되는 블록의 수명의 끝부분까지 계속될 수 있으며, 이는 테스트되는 블록을 사용 불가능하게 한다. 그러나, 플래시 메모리 디바이스들은 블록 고장들을 처리하거나 유지 관리 작동들에서 사용할 추가 블록들로 제조될 수 있다. 블록들 내에서의 위치 변화의 영향들을 감소시키기 위해, 각각의 플래시 메모리 디바이스 상의 동일한 위치들 상의 동일한 블록들이 테스트될 수 있다.
예상 수명값들을 사용하여, 플래시 메모리 디바이스들은 플래시 저장 시스템들의 조립을 위해 더 양호하게 부합될 수 있다. 대안적으로, 플래시 저장 시스템들은 각각의 플래시 메모리 디바이스에 대한 예상 수명값이 테스트되기 전에, 조립될 수 있다. 예상 수명값들은 플래시 저장 시스템의 성능 계층을 더 양호하게 결정할 수 있다. 예를 들어, 플래시 저장 시스템의 플래시 메모리 디바이스들의 예상 수명값들이 (플래시 저장 시스템의 초기 조립에 사용되었을 수 있는) 제조자 수명값에 기반하여 예상되는 것보다 일반적으로 모두 더 높거나 모두 더 낮으면, 플래시 저장 시스템은 그에 상응하게 더 높은 계층 또는 더 낮은 계층으로 등급이 정해질 수 있다. 일부 예상 수명값이 제조자 수명값보다 더 높고, 일부 예상 수명값이 제조자 수명값보다 더 낮도록 예상 수명값들이 섞이면, 제조자 수명값보다 더 높은 예상 수명값들을 갖는 플래시 메모리 디바이스들의 더 높은 성능은 제조자 수명값보다 더 낮은 예상 수명값들을 갖는 플래시 메모리 디바이스들의 더 낮은 성능을 상쇄할 수 있고, 플래시 저장 시스템은 평균화된 성능에 기반하여 그에 상응하게 등급이 정해질 수 있다.
최적의 웨어 레벨링 방식은 제조자 수명값을 초과하는 이용 가능한 P/E 사이클들의 사용을 최적화할 수 있다. 도 2는 본 논제 기술의 양태들에 따른 웨어 레벨링 방식에 대한 흐름도(200)를 도시한다. 도 2의 프로세스는 예를 들어, 플래시 저장 시스템(110)의 제어기(120)에 의해 수행될 수 있다. 플래시 저장 시스템(110)은 동일하거나 유사한 제조자 수명값을 갖는 복수의 플래시 메모리 디바이스(130)로 조립된다. 각각의 플래시 메모리 디바이스(130)는 메모리(125)에 저장되고, 메모리(125)와 연관된 지정된 플래시 메모리 블록(140)에 저장될 수 있는 각각의 예상 수명값을 결정하도록 높은 전압 테스트로 개별적으로 테스트된다. 예상 수명값들은 (예상 수명값이 전해지거나 각각의 플래시 메모리 블록(140)과 연관되도록) 각각의 플래시 메모리 디바이스(130)에 대하여 저장되거나 상응하는 플래시 메모리 디바이스(130)에 기반한 각각의 플래시 메모리 블록(140)에 대하여 저장될 수 있다. 예상 수명값들 중 적어도 하나는 제조자 수명값과 상이하다. 예를 들어, 플래시 메모리 디바이스(130A)의 예상 수명값은 제조자 수명값보다 더 높다.
210에서, 데이터 작동에 대한 커맨드가 수신된다. 제어기(120)는 호스트(150)로부터 플래시 메모리 블록(140)으로 호스트 데이터를 기록하는 기록 작동과 같은 호스트(150)로부터의 판독, 기록 또는 소거 커맨드를 수신할 수 있다. 대안적으로, 호스트로부터 커맨드를 수신하는 것보다는 오히려, 커맨드는 플래시 메모리 블록(140)에서 무효한 메모리 위치들을 재생시키는 GC 프로세스와 같은 제어기(120)에 의해 수행되는 유지 관리 작동에 대한 것일 수 있다.
220에서, 예상 수명값은 플래시 저장 시스템의 복수의 플래시 메모리 디바이스 각각에 대해 결정되며, 복수의 플래시 메모리 디바이스 중 적어도 하나에 대한 예상 수명값은 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에 대한 예상 수명값보다 더 높다. 플래시 메모리 디바이스들이 유사한 제조자 수명값들에 기반하여 플래시 저장 시스템에 포함되도록 초기에 선택되었을 수 있지만, 개별 다이 테스트는 각각의 플래시 메모리 디바이스에 대한 예상 수명값들의 변화들을 드러낼 수 있다. 개별 다이 테스트는 예상 수명값들이 제조자 수명값과 다르고, 플래시 메모리 디바이스들 중에서 다를 수도 있다는 것을 드러낼 수 있다.
예상 수명값은 높은 전압 테스트를 통해 이전에 계산되었고, 플래시 저장 시스템의 메모리에 저장되었을 수 있다. 예상 수명값은 제어기와 연관된 메모리와 같은 메모리에 저장되거나, 상응하는 플래시 메모리 디바이스 상의 지정된 블록에 저장되거나, 플래시 저장 시스템의 다른 메모리 상에 저장되는 값을 판독하는 것을 통해 결정될 수 있다. 대안적으로, 예상 수명값은 간접적으로 결정될 수 있다. 예를 들어, 제어기는 데이터 구조를 통해 플래시 메모리 디바이스들을 파악할 수 있다. 제어기는 예상 수명값들에 기반하여 링크된 목록에 플래시 메모리 디바이스들을 순서화할 수 있다. 링크된 목록에서의 플래시 메모리 디바이스에 대한 위치는 상응하는 플래시 메모리 디바이스의 예상 수명값에 상응할 수 있어, 더 많은 남은 사이클을 갖는 플래시 메모리 디바이스들이 링크된 목록의 처음 근처에 위치될 수 있다. 링크된 목록은 데이터 작동에 대해 선택되는 플래시 메모리 디바이스가 데이터 작동 후에 링크된 목록에 재위치될 수 있도록 각각의 데이터 작동 후에 업데이트될 수 있다. 재위치 선정은 남은 사이클들에 대해 업데이트된 값에 기반할 수 있다.
플래시 저장 시스템(110)에서, 제어기(120)는 메모리(125)에 저장되는 플래시 메모리 디바이스(130)에 대한 예상 수명값을 판독함으로써 플래시 메모리 디바이스(130)의 예상 수명값을 결정한다. 이후에 메모리(125)로 판독될 수 있는 예상 수명값들은 지정된 플래시 메모리 블록(140) 상에 이전에 저장되었을 수 있다. 플래시 메모리 디바이스(130)에 대한 예상 수명값은 각각의 플래시 메모리 디바이스(130) 상의 각각의 플래시 메모리 블록(140)과 연관된다. 예상 수명값은 상응하는 플래시 메모리 디바이스(130)에서 플래시 메모리 블록(140)의 고장 이전에 상응하는 플래시 메모리 디바이스(130)에서 플래시 메모리 블록들(140) 상에 수행되는 것으로 예상되는 P/E 사이클의 수에 상응할 수 있다. 도 1에서, 플래시 메모리 디바이스(130A)는 플래시 메모리 디바이스(130B)의 예상 수명값보다 더 높은 예상 수명값을 갖는다.
230에서, 복수의 플래시 메모리 디바이스 중 하나에서의 플래시 메모리 블록은 복수의 플래시 메모리 디바이스에 대한 각각의 예상 수명값에 기반하여 데이터 작동에 대해 선택된다. 플래시 메모리 블록은 모든 블록에 대한 사용된 수명의 백분율(예를 들어, 예상 수명값 중에서 사용된 사이클의 수)이 일정 범위 예를 들어, 5% 또는 10% 내에 남도록 선택될 수 있다. 예를 들어, 블록이 블록의 예상된 수명의 25%를 사용했으면(예를 들어, 사용된 사이클의 수가 예상 수명값의 25%와 동등하면), 선택된 블록은 데이터 작동이 수행된 후에, 모든 블록이 20 내지 30% 내의 사용된 수명의 백분율들을 갖도록 선택될 수 있다. 블록들 중 적어도 2개가 상이한 예상 수명값들을 가지므로, 블록들은 상이한 사용된 사이클 카운트들을 갖지만, 여전히 사용된 수명의 백분율의 범위에 있을 수 있다. 대안적으로, 남은 수명(예를 들어, 예상 수명값 중에서 남은 사이클의 수)의 최고 백분율을 갖는 블록은 데이터 작동이 수행된 후에, 모든 블록이 5% 또는 10%와 같은 범위 내에 남은 수명의 백분율을 갖도록 선택될 수 있다.
플래시 메모리 블록(140)은 플래시 메모리 블록(140)과 연관된 예상 수명값 및 P/E 사이클 카운트에 기반하여 결정되는 남은 수의 P/E 사이클에 기반하여 선택될 수 있다. 예를 들어, 남은 수의 P/E 사이클은 각각의 플래시 메모리 블록(140)에 대한 예상 수명값과 P/E 사이클 카운트 사이의 차이로부터 결정될 수 있다. 구현들에서, 최고 남은 수의 P/E 사이클을 갖는 플래시 메모리 블록(140)이 그 때 선택될 수 있다. 링크된 목록을 사용하는 구현들에서, 링크된 목록의 처음 근처의 플래시 메모리 디바이스의 플래시 메모리 블록이 선택될 수 있다. 예를 들어, 링크된 목록의 처음 근처의 플래시 메모리 디바이스가 선택될 수 있고, 선택된 메모리 디바이스의 플래시 메모리 블록이 선택될 수 있다. 플래시 메모리 블록들은 링크된 목록들과 같은 각각의 데이터 구조로 순서화될 수 있다. 플래시 메모리 블록들은 링크된 목록들이 각각의 데이터 작동 후에 업데이트될 수 있도록 플래시 메모리 디바이스들과 마찬가지로 파악될 수 있다.
하나의 플래시 메모리 디바이스(130)가 다른 플래시 메모리 디바이스(130)보다 더 높은 예상 수명값을 가질 때, 더 높은 예상 수명값을 갖는 플래시 메모리 디바이스(130)의 플래시 메모리 블록들(140)은 더 낮은 예상 수명값을 갖는 플래시 메모리 디바이스(130)의 플래시 메모리 블록들(140)보다 데이터 작동들에 대해 더 흔하게 선택될 수 있다. 예를 들어, 도 1에서, 플래시 메모리 디바이스(130B) 상의 플래시 메모리 블록들(140)이 선택되는 비율과 비교하여 플래시 메모리 디바이스(130A) 상의 플래시 메모리 블록들(140)이 선택되는 비율은 플래시 메모리 디바이스(130A)의 예상 수명값 대 플래시 메모리 디바이스(130B)의 예상 수명값의 비율에 상응할 수 있다.
플래시 메모리 디바이스(130A)의 예상 수명값이 36,000 사이클이고, 플래시 메모리 디바이스(130B)의 예상 수명값이 24,000 사이클이면, 비율은 3:2일 수 있다. 플래시 메모리 디바이스(130A)의 플래시 메모리 블록들(140)은 플래시 메모리 디바이스(130B)의 플래시 메모리 블록들(140)이 2번 선택될 때마다 3번 선택될 수 있다. 예를 들어, 플래시 메모리 디바이스들(130A 및 130B)은 각각의 플래시 메모리 디바이스로가 선택될 때 증분되는 카운터들과 각각 연관될 수 있다. 링크된 목록을 사용하는 구현들에서, 링크된 목록에서 플래시 메모리 디바이스의 위치는 더 높은 예상 수명값들을 갖는 플래시 메모리 디바이스들이 더 낮은 예상 수명값들을 갖는 플래시 메모리 디바이스들과 비교하여 링크된 목록의 처음 근처에서 비율에 따라 일반적으로 더 흔하게 배치되도록 비율에 기반할 수 있다. 대안적으로, 링크된 목록은 플래시 메모리 디바이스(130A)에 대해 3개의 엔트리 그리고 플래시 메모리 디바이스(130B)에 대해 2개의 엔트리와 같은 비율에 기반하여 각각의 플래시 메모리 디바이스에 대한 다수의 엔트리가 상주될 수 있다.
제어기(120)는 일반적으로 3:2 비율을 고수할 수 있더라도, 실제 선택들은 웨어 레벨링에 우선할 수 있는 다른 고려 사항들로 인해 엄밀히 3:2 비율을 고수하지 않을 수 있다. 플래시 메모리 디바이스(130)가 예상 수명값에 기반하여 선택에 대한 후보군이더라도, 데이터 작동은 다른 플래시 메모리 디바이스(130)가 선택되는 것을 필요로 할 수 있다. 예를 들어, GC 작동에서, (더 낮은 예상 수명값을 갖는) 플래시 메모리 디바이스(130B)는 플래시 메모리 디바이스(130B)가 플래시 메모리 디바이스(130A)보다 더 높은 백분율의 무효한 메모리 위치들을 포함한다면, (더 높은 예상 수명값을 갖는) 플래시 메모리 디바이스(130A)에 우선하여 선택될 수 있다.
제어기(120)가 플래시 메모리 블록(140)을 선택한 후에, 제어기(120)는 플래시 메모리 블록(140) 상에서 데이터 작동을 수행할 수 있다. 데이터 작동은 GC 프로세스, 기록 작동 또는 다른 유지 관리 작동일 수 있다. 선택된 플래시 메모리 블록(140)에 상응하는 플래시 메모리 디바이스(130)에 대한 특성치들 및/또는 파라미터들은 업데이트될 수 있다. 예를 들어, P/E 사이클 카운트 또는 남은 사이클 카운트가 업데이트될 수 있다. 대안적으로, 링크된 목록에서 플래시 메모리 디바이스(130)의 위치는 비율에 기반하여 조정될 수 있다.
도 3a는 균등한 웨어 레벨링 방식의 단순화된 예에서 상이한 플래시 메모리 디바이스들로부터의 2개의 블록에 대한 P/E 사이클들의 표(310)를 도시한다. 블록 1은 24K의 예상 수명값을 갖고, 블록 2는 36K의 예상 수명값을 갖는다. 그러나, 각각의 블록에 대한 제조자 수명값은 30K 사이클이어서 60K 사이클의 총사용량이 디바이스에 대해 예상된다. 0 P/E 사이클이 경과하였던 처음에, 블록 1은 남은 24K 사이클 및 사용된 0 사이클을 갖는다. 남은 사이클들은 예상 수명값에서 사용된 사이클들을 감산함으로써 계산될 수 있다. 블록 2는 남은 36K 사이클 및 사용된 0 사이클을 갖는다. 24K 사이클이 경과한 후에, 24K 사이클은 블록 1과 블록 2 사이에서 균등하게 분포되어, 각각의 블록은 사용된 12K 사이클을 갖는다. (48K 사이클로의) 24K 더 많은 사이클 후에, 사이클들은 각각의 블록이 사용된 24K 사이클을 갖도록 다시 균등하게 분포되었다. 그러나, 블록 1은 남은 0 사이클을 갖는다. 다음 24K 사이클에 대한 성능은 블록 1이 더 이상 이용 가능하지 않으므로 반으로 준다. 즉, 전체 성능은 처음 48K 사이클에 대해서만 이용 가능할 수 있다. 대안적으로, 제조자 수명값이 (디바이스에 대한 48K 사이클의 총사용량에 대해) 24K 사이클이었으면, 그 때 48K 사이클 후에, 24K 사이클을 넘어서는 블록 2의 사이클들은 사용되지 않은 상태로 남을 것이다.
도 3b는 본 논제 기술에 따른 최적의 웨어 레벨링 방식의 단순화된 예에서 도 3a에서의 2개의 블록에 대한 60K P/E 사이클의 표(320)를 도시한다. 0 P/E 사이클이 경과하였던 처음에, 블록 1은 남은 24K 사이클 및 사용된 0 사이클을 갖는다. 블록 2는 남은 36K 사이클 및 사용된 0 사이클을 갖는다. 20K 사이클이 경과한 후에, 20K 사이클이 각각의 예상 수명값에 기반하여 블록 1과 블록 2 사이에 분포되어, 블록 1은 사용된 8K 사이클을 갖고 블록 2는 사용된 12K 사이클을 갖는다. 8K:12K(2:3)의 비율은 예상 수명값들 24K:36K(2:3)에 상응한다. (40K 사이클로의) 20K 더 많은 사이클 후에, 사이클들은 블록 1이 사용된 16K 사이클을 갖고, 블록 2가 사용된 24K 사이클을 갖도록 예상 수명값들에 의해 다시 분포되었다. 사용량 16:24는 2:3 비율에 상응한다. (60K 사이클로의) 다른 20K 사이클 후에, 블록들 둘 다는 남은 0 사이클을 갖는다. 즉, 전체 성능이 플래시 저장 시스템의 전체 60K 사이클 수명에 이용 가능할 수 있다. 그러므로, 균등한 웨어 레벨링 방식들과 달리, 최적의 웨어 레벨링 방식은 블록들로부터 더 많은 사이클을 활용하기 위해 예상 수명값들을 사용한다.
도 4는 본 논제 기술의 양태들에 따른 웨어 레벨링 방식에 대한 흐름도(400)를 도시한다. 도 4의 프로세스는 예를 들어, 플래시 저장 시스템(110)의 제어기(120)에 의해 수행될 수 있다. 플래시 저장 시스템(110)은 동일하거나 유사한 제조자 수명값을 갖는 복수의 플래시 메모리 디바이스(130)로 조립된다. 각각의 플래시 메모리 디바이스(130)는 메모리(125)에 저장되고, 메모리(125)와 연관된 지정된 플래시 메모리 블록(140)에 저장될 수 있는 각각의 예상 수명값을 결정하도록 높은 전압 테스트로 개별적으로 테스트된다. 예상 수명값들은 (예상 수명값이 전해지거나 각각의 플래시 메모리 블록(140)과 연관되도록) 각각의 플래시 메모리 디바이스(130)에 대하여 저장되거나 상응하는 플래시 메모리 디바이스(130)에 기반한 각각의 플래시 메모리 블록(140)에 대하여 저장될 수 있다. 예상 수명값들 중 적어도 하나는 제조자 수명값과 상이하다. 예를 들어, 플래시 메모리 디바이스(130A)의 예상 수명값은 제조자 수명값보다 더 높다.
410에서, 플래시 저장 시스템에서 플래시 메모리 디바이스들의 순서는 각각의 플래시 메모리 디바이스에 대한 각각의 예상 수명값에 기반하여 결정된다. 플래시 메모리 디바이스들 중 적어도 하나는 복수의 플래시 메모리 디바이스 중 적어도 다른 하나의 예상 수명값보다 더 높은 예상 수명값을 갖는다. 제어기(120)는 예상 수명값들에 기반하여 플래시 메모리 디바이스들(130)의 순서화된 목록을 유지할 수 있다. 순서화된 목록에서 플래시 메모리 디바이스들(130)의 위치는 더 많은 남은 수명 사이클을 갖는 플래시 메모리 디바이스들이 링크된 목록의 처음 근처에 위치될 수 있고 데이터 작동에 대해 선택될 가능성이 더 높도록 예상 수명값들에 기반할 수 있다.
420에서, 데이터 작동에 대한 커맨드가 수신된다. 예를 들어, 제어기(120)는 기록 또는 소거 커맨드를 수신할 수 있다. 430에서, 플래시 메모리 디바이스들 중 하나가 플래시 메모리 디바이스들의 순서에 기반하여 선택된다. 예를 들어, 제어기(120)는 링크된 목록에서 제1 플래시 메모리 디바이스(130)를 선택할 수 있다. 440에서, 선택된 플래시 메모리 디바이스 상의 플래시 메모리 블록이 데이터 작동에 대해 선택된다. 예를 들어, 제어기(120)는 각각의 플래시 메모리 디바이스(130)의 플래시 메모리 블록들(140)에 대한 링크된 목록들을 유지할 수 있으며, 이 링크된 목록들은 플래시 메모리 디바이스들의 링크된 목록과 마찬가지로 예상 수명값들에 기반하여 순서화될 수 있다. 데이터 작동이 수행되는 동안 또는 수행된 후에, 플래시 메모리 디바이스들의 순서는 업데이트될 수 있다. 예를 들어, 제어기(120)는 다른 플래시 메모리 블록들의 남은 사이클들과 비교할 때 남은 사이클들에 기반하여 링크된 목록의 마지막에 더 근접하게 선택된 플래시 메모리 블록(140)을 이동시킬 수 있다. 제어기(120)는 플래시 메모리 블록들의 링크된 목록들을 마찬가지로 업데이트할 수도 있다.
본원에 설명하는 다양한 예시적인 블록, 모듈, 요소, 구성 요소, 방법 및 알고리즘은 전자 하드웨어, 컴퓨터 소프트웨어 또는 둘 다의 조합들로서 구현될 수 있다. 하드웨어 및 소프트웨어의 이러한 상호 교환 가능성을 예시하기 위해, 다양한 예시적인 블록, 모듈, 요소, 구성 요소, 방법 및 알고리즘을 이들의 기능성의 면에서 일반적으로 상술하였다. 그러한 기능성이 하드웨어로서 구현되는지 아니면 소프트웨어로서 구현되는지는 전체 시스템에 부과되는 특정 응용 및 설계 제약들에 따른다. 설명한 기능성은 각각의 특정 응용에 대해 여러 방식으로 구현될 수 있다. 다양한 구성 요소 및 블록은 본 논제 기술의 범위로부터 벗어나지 않는 범위 내에서 모두 상이하게 구성될 수 있다(예를 들어, 상이한 순서로 배열되거나, 상이한 방식으로 분할될 수 있다).
개시된 프로세스들의 단계들의 특정 순서 또는 체계가 예시적인 접근법들의 예시라는 점이 이해된다. 설계 선호도들에 기반하여, 프로세스들의 단계들의 특정 순서 또는 체계가 재구성될 수 있다는 점이 이해된다. 단계들 중 일부는 동시에 수행될 수 있다. 수반하는 방법 청구항들은 샘플 순서로 다양한 단계의 요소들을 제공하고, 제공되는 특정 순서 또는 체계에 제한되는 것으로 의미되지 않는다.
앞선 설명은 당업자가 본원에 설명하는 다양한 양태를 실행하는 것을 가능하게 하도록 제공된다. 이러한 양태들에 대한 다양한 변경이 당업자에게 손쉽게 명백할 것이고, 본원에 정의되는 포괄적 원리들이 다른 양태들에 적용될 수 있다. 따라서, 청구항들은 본원에 나타낸 양태들에 제한되는 것으로 의도되지 않고, 표현 청구항들과 일치하는 전체 범위가 부여될 것이며, 단수형의 요소에 대한 언급은 상세하게 그렇게 진술되지 않는다면, “하나 및 단지 하나(one and only one)”를 의미하는 것으로 의도되지 않고, 오히려 “하나 이상(one or more)”을 의미하는 것으로 의도된다. 상세하게 달리 진술되지 않는다면, “일부(some)”란 용어는 하나 이상을 지칭한다. 남성형 단어의 대명사들(예를 들어, 그의(his))은 여성형 단어 및 중성 단어(예를 들어, 그녀의(her) 및 그것의(its))를 포함하고 그 반대도 그렇다. 제목들 및 부제목들은 존재한다면, 편의를 위해서만 사용되고 본 발명을 제한하지 않는다.
“양태(aspect)”와 같은 어구는 그러한 양태가 본 논제 기술에 필수적이거나 그러한 양태가 본 논제 기술의 모든 구성에 적용된다는 것을 의미하지 않는다. 일 양태와 관련하는 개시는 모든 구성, 또는 하나 이상의 구성에 적용될 수 있다. 일 양태와 같은 어구는 하나 이상의 양태를 지칭할 수 있고 그 반대도 그렇다. “구성(configuration)”과 같은 어구는 그러한 구성이 본 논제 기술에 필수적이거나 그러한 구성이 본 논제 기술의 모든 구성에 적용된다는 것을 의미하지 않는다. 구성과 관련하는 개시는 모든 구성, 또는 하나 이상의 구성에 적용될 수 있다. 구성과 같은 어구는 하나 이상의 구성을 지칭할 수 있고 그 반대도 그렇다.
“예시적인(exemplary)”이란 단어는 “일 예 또는 예시로서의 역할을 하는(serving as an example or illustration)”을 의미하도록 본원에 사용된다. “예시적인” 것으로서 본원에 설명하는 임의의 양태 또는 설계는 다른 양태들 또는 설계들보다 바람직하거나 유리한 것으로 반드시 해석되지는 않는다.
당업자에게 알려져 있거나 이후에 알려지게 되는 본 발명 전체에 걸쳐 설명하는 다양한 양태의 요소들에 대한 모든 구조적 및 기능적 동등물은 명확히 참조로 본원에 포함되고 청구항들에 의해 포함되는 것으로 의도된다. 더욱이, 본원에 개시되는 어떤 것도 그러한 개시가 청구항들에 명확히 열거되는지 여부에 관계 없이 대중에게 전용인 것으로 의도되지 않는다. 어떤 청구항 요소도 요소가 “~에 대한 수단(means for)”이란 어구를 사용하여 명확히 열거되거나, 방법 청구항의 경우에, 요소가 “~에 대한 단계(step for)”란 어구를 사용하여 열거되지 않는다면, 35 U.S.C. §112, 제6항의 조항들 하에서 해석되지 않아야 한다. 더욱이, “포괄하다(include),” “가지다(have)” 등의 용어가 상세한 설명 또는 청구항들에 사용되는 결과로, 그러한 용어는 “포함하다(comprise)”가 청구항에서의 연결어로서 채용될 때, 해석됨에 따라, “포함하다”란 용어와 유사한 방식으로 포괄적인 것으로 의도된다.

Claims (20)

  1. 데이터 작동에 대한 커맨드를 수신하는 단계;
    플래시 저장 시스템의 복수의 플래시 메모리 디바이스 각각에 대한 예상 수명값을 상기 복수의 플래시 메모리 디바이스 각각에서의 각각의 테스트 플래시 메모리 블록으로부터 측정되는 테스트값에 기반하여 결정하는 단계로서, 각각의 플래시 메모리 디바이스에 대한 상기 예상 수명값은 복수의 플래시 메모리 블록 각각 - 상기 복수의 플래시 메모리 블록은 상기 각각의 플래시 메모리 디바이스에서의 상기 테스트 플래시 메모리 블록과 상이한 것임 - 과 연관되고, 상기 복수의 플래시 메모리 디바이스 중 적어도 하나에 대한 상기 예상 수명값은 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에 대한 상기 예상 수명값보다 더 높고, 상기 테스트값은, 상기 각각의 테스트 플래시 메모리 블록의 메모리 셀들이 전하 캡처의 포화점에 도달할 때까지 상기 복수의 플래시 메모리 디바이스 각각에서의 가능한 최대 전압에서 상기 각각의 테스트 플래시 메모리 블록에 인가되는 펄스들의 수를 포함하는 것인, 단계;
    상기 복수의 플래시 메모리 디바이스 중 하나 이상의 상기 예상 수명값에 기반하여 상기 복수의 플래시 메모리 디바이스의 순서를 결정하는 단계;
    상기 복수의 플래시 메모리 디바이스의 순서에 기반하여, 상기 복수의 플래시 메모리 디바이스 중의 플래시 메모리 디바이스를 선택하는 단계; 및
    상기 선택된 플래시 메모리 디바이스에서의 상기 복수의 플래시 메모리 블록 각각에 대하여:
    상기 복수의 플래시 메모리 블록 중 하나의 플래시 메모리 블록의 기사용된 수명값을 결정하는 단계;
    상기 하나의 플래시 메모리 블록의 상기 기사용된 수명값에 기반하여, 상기 데이터 작동이 상기 하나의 플래시 메모리 블록에서 수행된 후의 상기 하나의 플래시 메모리 블록의 예상 사용된 수명값을 예측하는 단계; 및
    상기 예상 사용된 수명값이 상기 선택된 플래시 메모리 디바이스에서의 상기 복수의 플래시 메모리 블록 중의 다른 플래시 메모리 블록들의 기사용된 수명값의 임계치 범위 내에 있는 경우, 상기 데이터 작동에 대해 상기 하나의 플래시 메모리 블록을 선택하는 단계
    를 포함하는, 플래시 저장 시스템을 관리하는 기계 구현 방법.
  2. 제1항에 있어서,
    상기 예상 수명값은 상응하는 플래시 메모리 디바이스의 각각의 플래시 메모리 블록들의 고장 전에 상응하는 플래시 메모리 디바이스의 상기 각각의 플래시 메모리 블록들 상에 수행되는 것으로 예상되는 프로그램-소거 사이클의 수인, 플래시 저장 시스템을 관리하는 기계 구현 방법.
  3. 제2항에 있어서,
    상기 플래시 메모리 블록은 상기 플래시 메모리 블록과 연관된 상기 예상 수명값 및 프로그램-소거 사이클 카운트에 기반하여 결정되는 남은 수의 프로그램-소거 사이클에 기반하여 선택되는, 플래시 저장 시스템을 관리하는 기계 구현 방법.
  4. 제1항에 있어서,
    상기 선택된 플래시 메모리 디바이스에서의 플래시 메모리 블록들은 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에서의 플래시 메모리 블록들보다 데이터 작동들에 대해 더 자주 선택되는, 플래시 저장 시스템을 관리하는 기계 구현 방법.
  5. 제4항에 있어서,
    상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에서의 상기 플래시 메모리 블록들이 선택되는 비율과 비교하여 상기 선택된 플래시 메모리 디바이스에서의 상기 플래시 메모리 블록들이 선택되는 비율은, 상기 선택된 플래시 메모리 디바이스 및 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나의 상기 예상 수명값들의 비율에 상응하는, 플래시 저장 시스템을 관리하는 기계 구현 방법.
  6. 제1항에 있어서,
    상기 선택된 플래시 메모리 블록 상에서 상기 데이터 작동을 수행하는 단계를 더 포함하며,
    상기 데이터 작동은 상기 선택된 플래시 메모리 블록에서의 무효한 메모리 위치들을 재생시키는 가비지 수집 프로세스 또는 호스트로부터 상기 선택된 플래시 메모리 블록으로 수신되는 호스트 데이터를 기록하는 기록 작동을 포함하는, 플래시 저장 시스템을 관리하는 기계 구현 방법.
  7. 삭제
  8. 복수의 플래시 메모리 디바이스로서, 상기 복수의 플래시 메모리 디바이스 각각은 상기 복수의 플래시 메모리 디바이스 각각에서의 각각의 테스트 플래시 메모리 블록으로부터 측정되는 테스트값에 기반하여 결정되는 예상 수명값을 가지며, 각각의 플래시 메모리 디바이스에 대한 상기 예상 수명값은 복수의 플래시 메모리 블록 각각 - 상기 복수의 플래시 메모리 블록은 상기 각각의 플래시 메모리 디바이스에서의 상기 테스트 플래시 메모리 블록과 상이한 것임 - 과 연관되고, 상기 복수의 플래시 메모리 디바이스 중 적어도 하나의 상기 예상 수명값은 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나의 상기 예상 수명값보다 더 높고, 상기 테스트값은, 상기 각각의 테스트 플래시 메모리 블록의 메모리 셀들이 전하 캡처의 포화점에 도달할 때까지 상기 복수의 플래시 메모리 디바이스 각각에서의 가능한 최대 전압에서 상기 각각의 테스트 플래시 메모리 블록에 인가되는 펄스들의 수를 포함하는 것인, 복수의 플래시 메모리 디바이스; 및
    제어기
    를 포함하고, 상기 제어기는,
    데이터 작동에 대한 커맨드를 수신하고;
    상기 복수의 플래시 메모리 디바이스 중 하나 이상의 상기 예상 수명값에 기반하여 상기 복수의 플래시 메모리 디바이스의 순서를 결정하고;
    상기 복수의 플래시 메모리 디바이스의 순서에 기반하여, 상기 복수의 플래시 메모리 디바이스 중의 플래시 메모리 디바이스를 선택하고;
    상기 선택된 플래시 메모리 디바이스에서의 상기 복수의 플래시 메모리 블록 각각에 대하여:
    상기 복수의 플래시 메모리 블록 중 하나의 플래시 메모리 블록의 기사용된 수명값을 결정하고;
    상기 하나의 플래시 메모리 블록의 상기 기사용된 수명값에 기반하여, 상기 데이터 작동이 상기 하나의 플래시 메모리 블록에서 수행된 후의 상기 하나의 플래시 메모리 블록의 예상 사용된 수명값을 예측하고;
    상기 예상 사용된 수명값이 상기 선택된 플래시 메모리 디바이스에서의 상기 복수의 플래시 메모리 블록 중의 다른 플래시 메모리 블록들의 기사용된 수명값의 임계치 범위 내에 있는 경우, 상기 데이터 작동에 대해 상기 하나의 플래시 메모리 블록을 선택
    하도록 구성되는, 플래시 저장 시스템.
  9. 제8항에 있어서,
    상기 예상 수명값은 상응하는 플래시 메모리 디바이스의 각각의 플래시 메모리 블록들의 고장 전에 상응하는 플래시 메모리 디바이스의 상기 각각의 플래시 메모리 블록들 상에 수행되는 것으로 예상되는 프로그램-소거 사이클의 수인, 플래시 저장 시스템.
  10. 제9항에 있어서,
    상기 플래시 메모리 블록은 상기 플래시 메모리 블록과 연관된 상기 예상 수명값 및 프로그램-소거 사이클 카운트에 기반하여 결정되는 남은 수의 프로그램-소거 사이클에 기반하여 선택되는, 플래시 저장 시스템.
  11. 제8항에 있어서,
    상기 선택된 플래시 메모리 디바이스에서의 플래시 메모리 블록들은 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에서의 플래시 메모리 블록들보다 데이터 작동들에 대해 더 자주 선택되는, 플래시 저장 시스템.
  12. 제11항에 있어서,
    상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에서의 상기 플래시 메모리 블록들이 선택되는 비율과 비교하여 상기 선택된 플래시 메모리 디바이스에서의 상기 플래시 메모리 블록들이 선택되는 비율은, 상기 선택된 플래시 메모리 디바이스 및 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나의 상기 예상 수명값들의 비율에 상응하는, 플래시 저장 시스템.
  13. 제8항에 있어서,
    상기 제어기는 또한, 상기 선택된 플래시 메모리 블록 상에서 상기 데이터 작동을 수행하도록 구성되며,
    상기 데이터 작동은 상기 선택된 플래시 메모리 블록에서의 무효한 메모리 위치들을 재생시키는 가비지 수집 프로세스 또는 호스트로부터 상기 선택된 플래시 메모리 블록으로 수신되는 호스트 데이터를 기록하는 기록 작동을 포함하는, 플래시 저장 시스템.
  14. 삭제
  15. 프로세서에 의해 실행될 때, 상기 프로세서가:
    플래시 저장 시스템의 복수의 플래시 메모리 디바이스 각각에 대한 예상 수명값에 기반하여 상기 플래시 저장 시스템의 복수의 플래시 메모리 디바이스의 순서를 결정하는 작동으로서, 상기 복수의 플래시 메모리 디바이스 각각에 대한 상기 예상 수명값은 상기 복수의 플래시 메모리 디바이스 각각에서의 각각의 테스트 플래시 메모리 블록으로부터 측정되는 테스트값에 기반하여 결정되고, 각각의 플래시 메모리 디바이스에 대한 상기 예상 수명값은 복수의 플래시 메모리 블록 각각 - 상기 복수의 플래시 메모리 블록은 상기 각각의 플래시 메모리 디바이스에서의 상기 테스트 플래시 메모리 블록과 상이한 것임 - 과 연관되고, 상기 복수의 플래시 메모리 디바이스 중 적어도 하나의 상기 예상 수명값은 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나의 상기 예상 수명값보다 더 높고, 상기 테스트값은, 상기 각각의 테스트 플래시 메모리 블록의 메모리 셀들이 전하 캡처의 포화점에 도달할 때까지 상기 복수의 플래시 메모리 디바이스 각각에서의 가능한 최대 전압에서 상기 각각의 테스트 플래시 메모리 블록에 인가되는 펄스들의 수를 포함하는 것인, 작동;
    데이터 작동에 대한 커맨드를 수신하는 작동;
    상기 복수의 플래시 메모리 디바이스의 상기 순서에 기반하여 상기 복수의 플래시 메모리 디바이스 중 하나의 플래시 메모리 디바이스를 선택하는 작동; 및
    상기 선택된 플래시 메모리 디바이스에서의 상기 복수의 플래시 메모리 블록 각각에 대하여:
    상기 복수의 플래시 메모리 블록 중 하나의 플래시 메모리 블록의 기사용된 수명값을 결정하는 작동;
    상기 하나의 플래시 메모리 블록의 상기 기사용된 수명값에 기반하여, 상기 데이터 작동이 상기 하나의 플래시 메모리 블록에서 수행된 후의 상기 하나의 플래시 메모리 블록의 예상 사용된 수명값을 예측하는 작동; 및
    상기 예상 사용된 수명값이 상기 선택된 플래시 메모리 디바이스에서의 상기 복수의 플래시 메모리 블록 중의 다른 플래시 메모리 블록들의 기사용된 수명값의 임계치 범위 내에 있는 경우, 상기 데이터 작동에 대해 상기 하나의 플래시 메모리 블록을 선택하는 작동
    을 수행하게 하는, 실행 가능 명령어들로 인코딩되는 기계 판독 가능 매체.
  16. 제15항에 있어서,
    상기 예상 수명값은 상응하는 플래시 메모리 디바이스의 각각의 플래시 메모리 블록들의 고장 전에 상응하는 플래시 메모리 디바이스의 상기 각각의 플래시 메모리 블록들 상에 수행되는 것으로 예상되는 프로그램-소거 사이클의 수인, 기계 판독 가능 매체.
  17. 제16항에 있어서,
    상기 순서는 상기 플래시 메모리 블록과 연관된 상기 예상 수명값 및 프로그램-소거 사이클 카운트에 기반하여 결정되는 남은 수의 프로그램-소거 사이클에 기반하여 결정되는, 기계 판독 가능 매체.
  18. 제15항에 있어서,
    상기 선택된 플래시 메모리 디바이스에서의 플래시 메모리 블록들은 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에서의 플래시 메모리 블록들보다 데이터 작동들에 대해 더 자주 선택되는, 기계 판독 가능 매체.
  19. 제18항에 있어서,
    상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나에서의 상기 플래시 메모리 블록들이 선택되는 비율과 비교하여 상기 선택된 플래시 메모리 디바이스에서의 상기 플래시 메모리 블록들이 선택되는 비율은, 상기 선택된 플래시 메모리 디바이스 및 상기 복수의 플래시 메모리 디바이스 중 적어도 다른 하나의 상기 예상 수명값들의 비율에 상응하는, 기계 판독 가능 매체.
  20. 삭제
KR1020160114019A 2015-09-04 2016-09-05 플래시 메모리 디바이스들을 위한 웨어 관리 KR101996072B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/846,540 US20170068467A1 (en) 2015-09-04 2015-09-04 Wear management for flash memory devices
US14/846,540 2015-09-04

Publications (2)

Publication Number Publication Date
KR20170031052A KR20170031052A (ko) 2017-03-20
KR101996072B1 true KR101996072B1 (ko) 2019-07-03

Family

ID=57140035

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160114019A KR101996072B1 (ko) 2015-09-04 2016-09-05 플래시 메모리 디바이스들을 위한 웨어 관리

Country Status (8)

Country Link
US (1) US20170068467A1 (ko)
JP (1) JP2017084341A (ko)
KR (1) KR101996072B1 (ko)
CN (1) CN106502917A (ko)
AU (1) AU2016225779B2 (ko)
CA (1) CA2941172C (ko)
DE (1) DE102016010717A1 (ko)
GB (1) GB2542934B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180095788A1 (en) * 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
US10754578B2 (en) 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
US11275510B2 (en) * 2020-02-07 2022-03-15 Samsung Electronics Co., Ltd. Systems and methods for storage device block-level failure prediction
US11734093B2 (en) 2020-06-23 2023-08-22 Samsung Electronics Co., Ltd. Storage device block-level failure prediction-based data placement
US11687248B2 (en) * 2021-05-13 2023-06-27 Micron Technology, Inc. Life time extension of memory device based on rating of individual memory units

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010512569A (ja) * 2006-12-11 2010-04-22 マーベル ワールド トレード リミテッド ハイブリッド不揮発性固体メモリシステム
US20150113203A1 (en) * 2013-10-18 2015-04-23 Sandisk Enterprise Ip Llc Device and Method for Managing Die Groups
WO2015073467A1 (en) * 2013-11-15 2015-05-21 Microsoft Technology Licensing, Llc Inexpensive solid-state storage through write throttling
US20150186055A1 (en) * 2013-12-30 2015-07-02 Sandisk Technologies Inc. Method and system for predicting block failure in a non-volatile memory

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100631770B1 (ko) * 1999-09-07 2006-10-09 삼성전자주식회사 플래시 메모리의 실시간 처리방법
US20050055495A1 (en) * 2003-09-05 2005-03-10 Nokia Corporation Memory wear leveling
US20070141731A1 (en) * 2005-12-20 2007-06-21 Hemink Gerrit J Semiconductor memory with redundant replacement for elements posing future operability concern
US7512847B2 (en) * 2006-02-10 2009-03-31 Sandisk Il Ltd. Method for estimating and reporting the life expectancy of flash-disk memory
CN101364437A (zh) * 2007-08-07 2009-02-11 芯邦科技(深圳)有限公司 一种可使闪存损耗均衡的方法及其应用
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
US8910002B2 (en) * 2009-08-24 2014-12-09 OCZ Storage Solutions Inc. NAND flash-based storage device with built-in test-ahead for failure anticipation
JP2011070346A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
KR101662273B1 (ko) * 2009-11-27 2016-10-05 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 마모도 관리 방법
JP2011198433A (ja) * 2010-03-23 2011-10-06 Toshiba Corp メモリシステム
GB2490991B (en) * 2011-05-19 2017-08-30 Ibm Wear leveling
US8717826B1 (en) * 2012-12-11 2014-05-06 Apple Inc. Estimation of memory cell wear level based on saturation current
US9450876B1 (en) * 2013-03-13 2016-09-20 Amazon Technologies, Inc. Wear leveling and management in an electronic environment
US9965199B2 (en) * 2013-08-22 2018-05-08 Sandisk Technologies Llc Smart dynamic wear balancing between memory pools
US9495101B2 (en) * 2014-01-29 2016-11-15 Sandisk Technologies Llc Methods for balancing write operations of SLC blocks in different memory areas and apparatus implementing the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010512569A (ja) * 2006-12-11 2010-04-22 マーベル ワールド トレード リミテッド ハイブリッド不揮発性固体メモリシステム
US20150113203A1 (en) * 2013-10-18 2015-04-23 Sandisk Enterprise Ip Llc Device and Method for Managing Die Groups
WO2015073467A1 (en) * 2013-11-15 2015-05-21 Microsoft Technology Licensing, Llc Inexpensive solid-state storage through write throttling
US20150186055A1 (en) * 2013-12-30 2015-07-02 Sandisk Technologies Inc. Method and system for predicting block failure in a non-volatile memory

Also Published As

Publication number Publication date
DE102016010717A1 (de) 2017-03-09
CA2941172A1 (en) 2017-03-04
AU2016225779B2 (en) 2018-08-02
US20170068467A1 (en) 2017-03-09
JP2017084341A (ja) 2017-05-18
CA2941172C (en) 2019-03-12
CN106502917A (zh) 2017-03-15
GB2542934B (en) 2020-01-08
GB2542934A (en) 2017-04-05
GB201615003D0 (en) 2016-10-19
AU2016225779A1 (en) 2017-03-23
KR20170031052A (ko) 2017-03-20

Similar Documents

Publication Publication Date Title
KR101996072B1 (ko) 플래시 메모리 디바이스들을 위한 웨어 관리
US10963166B2 (en) Operating parameters for flash memory devices
US9298534B2 (en) Memory system and constructing method of logical block
TWI622985B (zh) 基於記憶體壽命週期具有可變邏輯容量之固態儲存裝置
US7797481B2 (en) Method and apparatus for flash memory wear-leveling using logical groups
EP2758882B1 (en) Adaptive mapping of logical addresses to memory devices in solid state drives
CN106909318B (zh) 固态硬盘使用方法及装置
US20170039141A1 (en) Mapping table updating method, memory storage device and memory control circuit unit
KR101086876B1 (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US9465537B2 (en) Memory system and method of controlling memory system
JP2011522350A (ja) ハイブリッドメモリ管理
US10628257B2 (en) Memory management method and storage controller
KR20100138896A (ko) 하이브리드 비휘발성 고체 상태 메모리 시스템에 대한 피로 관리 시스템 및 방법
US10379769B2 (en) Continuous adaptive calibration for flash memory devices
US9455040B2 (en) Mitigating reliability degradation of analog memory cells during long static and erased state retention
US20120144145A1 (en) Apparatus and method for measuring lifespan of memory device
US9613705B1 (en) Method for managing programming mode of rewritable non-volatile memory module, and memory storage device and memory control circuit unit using the same
CN111373480A (zh) 通过单元探测进行故障预测
JP2011159138A (ja) 記憶装置及び記憶装置の制御方法
US8924601B2 (en) Apparatus and method for defect revectoring in a multi-channel mass storage device

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant