KR102193946B1 - 적응성 마모 균등화 - Google Patents

적응성 마모 균등화 Download PDF

Info

Publication number
KR102193946B1
KR102193946B1 KR1020170077442A KR20170077442A KR102193946B1 KR 102193946 B1 KR102193946 B1 KR 102193946B1 KR 1020170077442 A KR1020170077442 A KR 1020170077442A KR 20170077442 A KR20170077442 A KR 20170077442A KR 102193946 B1 KR102193946 B1 KR 102193946B1
Authority
KR
South Korea
Prior art keywords
blocks
block
sets
active
block sets
Prior art date
Application number
KR1020170077442A
Other languages
English (en)
Other versions
KR20180013702A (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 KR20180013702A publication Critical patent/KR20180013702A/ko
Application granted granted Critical
Publication of KR102193946B1 publication Critical patent/KR102193946B1/ko

Links

Images

Classifications

    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

적응성 마모 균등화를 제공하는 장치는 적어도 하나의 프로세서를 포함한다. 적어도 하나의 프로세서는 데이터 저장 동작을 위해 플래시 메모리 회로의 블록 세트를 사용하며, 각각의 블록 세트는 각각의 플래시 메모리 회로로부터의 블록을 포함하고, 블록 중 적어도 일부는 데이터 저장 동작을 위해 활성으로 마킹된다. 적어도 하나의 프로세서는 활성으로 마킹된 블록이 데이터 저장 동작을 위해 사용되는 동안 각각의 블록의 품질 메트릭을 모니터링한다. 적어도 하나의 프로세서는 블록의 품질 메트릭이 언제 최소 레벨 아래로 떨어지는지를 결정하고, 블록을 일시적 비활성으로 마킹하며, 블록은 일시적 비활성으로 마킹되는 동안에는 데이터 저장 동작을 위해 사용되지 않는다. 적어도 하나의 프로세서는 기준이 충족될 때 블록을 활성으로 마킹하며, 따라서 블록은 데이터 저장 동작을 위해 다시 사용될 수 있다.

Description

적응성 마모 균등화{ADAPTIVE WEAR LEVELLING}
관련 출원의 상호 참조
본 출원은 2016년 7월 29일자로 출원된 "적응성 마모 균등화(Adaptive Wear Levelling)"라는 발명의 명칭의 미국 특허 가출원 제62/368,967호의 이익을 청구하며, 이 가출원은 이에 의해 모든 목적을 위해 그 전체가 참조로 포함된다.
기술 분야
본 설명은 일반적으로 플래시 메모리 장치에 대한 적응성 마모 균등화를 포함하는 마모 균등화에 관한 것이다.
플래시 메모리 시스템에서, 높은 내구성을 달성하기 위해, 시스템은 통상적으로 누적 프로그램/소거(P/E) 사이클의 엄격한 범위 내에 모든 물리 블록을 유지하는 마모 균등화 알고리즘을 사용한다. (오버 프로비저닝에 의해 보상되는 약한 블록을 무시할 때) 물리 블록 모두가 동일한 내구성을 가지며, 따라서 모두가 실질적으로 동시에 마모될 것으로 가정한다. 그러나 실제로는 물리 블록 모두가 동일한 내구성을 갖지는 않는다. 따라서, 플래시 메모리 시스템은 그의 지정된 수명 종료에 도달할 수 있지만, 많은 물리 블록은 여전히 사용 가능하다.
개시되는 주제는 적어도 하나의 프로세서를 포함하는 장치에 관한 것이다. 적어도 하나의 프로세서는 데이터 저장 동작을 위해 플래시 메모리 회로의 블록 세트를 사용하도록 구성될 수 있으며, 블록 세트 각각은 플래시 메모리 회로 각각으로부터의 적어도 하나의 블록을 포함하고, 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록은 활성으로 마킹되고, 활성으로 마킹되는 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록은 데이터 저장 동작을 위해 사용된다. 적어도 하나의 프로세서는 활성으로 마킹되는 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록이 데이터 저장 동작을 위해 사용되는 동안 블록 세트 각각의 블록 각각의 품질 메트릭을 모니터링하도록 더 구성될 수 있다. 적어도 하나의 프로세서는 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록의 품질 메트릭이 언제 최소 품질 레벨 아래로 떨어지는지를 결정하도록 더 구성될 수 있다. 적어도 하나의 프로세서는 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록을 일시적 비활성으로 마킹하도록 더 구성될 수 있으며, 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록은 일시적 비활성으로 마킹되는 동안에는 데이터 저장 동작에 사용되지 않는다. 적어도 하나의 프로세서는 적어도 하나의 기준이 충족될 때 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록을 활성으로 마킹하도록 더 구성될 수 있으며, 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록은 활성으로 마킹되는 동안 데이터 저장 동작을 위해 다시 사용된다.
다른 양태에서, 방법은 데이터 저장 동작을 위해 복수의 플래시 메모리 회로의 블록 세트를 사용하는 단계를 포함할 수 있으며, 블록 세트 각각은 복수의 플래시 메모리 회로 각각으로부터의 적어도 하나의 블록을 포함하고, 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록은 활성으로 마킹되고, 활성으로 마킹되는 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록은 데이터 저장 동작을 위해 사용된다. 방법은 활성으로 마킹되는 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록이 데이터 저장 동작을 위해 사용되는 동안 블록 세트 각각의 블록 각각의 잔여 사이클 카운트를 모니터링하는 단계를 더 포함할 수 있으며, 블록 세트 각각의 블록 각각의 잔여 사이클 카운트는 블록 세트 각각의 블록 각각을 포함하는 복수의 플래시 메모리 회로 각각과 관련된 예상 사이클 카운트에 적어도 부분적으로 기초한다. 방법은 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록의 잔여 사이클 카운트가 적어도 하나의 제1 기준을 충족시킬 때 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록을 일시적 비활성으로 마킹하는 단계를 더 포함할 수 있으며, 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록은 일시적 비활성으로 마킹되는 동안에는 데이터 저장 동작에 사용되지 않는다. 방법은 적어도 하나의 제2 기준이 충족될 때 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록을 활성으로 마킹하는 단계를 더 포함할 수 있으며, 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록은 활성으로 마킹되는 동안 데이터 저장 동작을 위해 다시 사용된다.
다른 양태에서, 컴퓨터 프로그램 제품은 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 코드를 포함한다. 코드는 복수의 플래시 메모리 회로 각각의 각각의 물리 블록의 각각의 품질 메트릭이 최소 품질 레벨 아래로 떨어질 때까지 복수의 플래시 메모리 회로 각각의 각각의 물리 블록을 신속하게 사이클링하기 위한 코드를 포함할 수 있다. 코드는 복수의 플래시 메모리 회로 각각의 각각의 물리 블록의 각각의 품질 메트릭이 최소 품질 레벨 아래로 떨어지게 하는 데 사용되는 고속 사이클의 수에 적어도 부분적으로 기초하여 복수의 플래시 메모리 회로 각각에 대한 예상 사이클 카운트를 결정하기 위한 코드를 더 포함할 수 있다. 코드는 적어도 하나의 랜덤 액세스 메모리 회로에, 복수의 플래시 메모리 회로 각각의 물리 블록과 개별적으로 관련하여 복수의 플래시 메모리 회로 각각에 대한 예상 사이클 카운트를 저장하기 위한 코드를 더 포함할 수 있다.
다른 양태에서, 시스템은 각각이 블록을 포함하는 복수의 플래시 메모리 회로, 복수의 플래시 메모리 회로 각각의 블록 각각의 상태를 포함하는 데이터 구조를 저장하도록 구성된 랜덤 액세스 메모리(RAM) - 복수의 플래시 메모리 회로 각각의 블록 각각의 상태는 적어도 복수의 플래시 메모리 회로 각각의 블록 각각이 활성으로 마킹되는지 또는 일시적 비활성으로 마킹되는지를 지시함 -, 호스트 장치에 통신적으로 결합된 인터페이스, 및 제어기를 포함할 수 있다. 제어기는 호스트 장치에 의해 지시된 데이터 저장 동작을 위해 복수의 플래시 메모리 회로의 블록 세트를 사용하도록 구성될 수 있으며, 블록 세트 각각은 복수의 플래시 메모리 회로 각각으로부터의 적어도 하나의 블록을 포함하고, 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록은 데이터 구조에서 활성으로 마킹되고, 데이터 구조에서 활성으로 마킹되는 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록은 데이터 저장 동작을 위해 사용된다. 제어기는 데이터 구조에서 활성으로 마킹되는 블록 세트 중 적어도 일부 블록 세트의 블록 중 적어도 일부 블록이 데이터 저장 동작을 위해 사용되는 동안 블록 세트 각각의 블록 각각의 품질 메트릭을 모니터링하도록 더 구성될 수 있다. 제어기는 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록의 품질 메트릭이 언제 최소 품질 레벨 아래로 떨어지는지를 결정하도록 더 구성될 수 있다. 제어기는 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록을 데이터 구조에 일시적 비활성으로 마킹하도록 더 구성될 수 있고, 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록은 데이터 구조에 일시적 비활성으로 마킹되는 동안에는 데이터 저장 동작에 사용되지 않는다. 제어기는 적어도 하나의 기준이 충족될 때 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록을 데이터 구조에 활성으로 마킹하도록 더 구성될 수 있고, 블록 세트 중 하나의 블록 세트의 블록 중 하나의 블록은 데이터 구조에 활성으로 마킹되는 동안 데이터 저장 동작을 위해 다시 사용된다.
본 기술의 다른 구성들은 하기의 상세한 설명으로부터 본 기술분야의 기술자들에게 쉽게 명백해질 것이며, 본 기술의 다양한 구성들이 예시로서 도시되고 기술되어 있는 것으로 이해된다. 이해될 바와 같이, 본 기술은 다른 및 상이한 구성들이 가능하고, 그 몇몇의 세부 사항들은, 모두가 본 기술의 범위를 벗어나지 않으면서, 다양한 다른 점들에서 수정이 가능하다. 따라서, 도면 및 상세한 설명은 제한적인 것이 아니라 본질적으로 예시적인 것으로 간주되어야 한다.
본 기술의 소정 특징은 첨부된 청구범위에서 제시된다. 그러나, 설명의 목적으로, 본 기술의 여러 실시예가 다음의 도면에 제시된다.
도 1은 하나 이상의 구현에 따른, 적응성 마모 균등화를 제공하는 시스템을 구현할 수 있는 예시적인 플래시 메모리 시스템을 도시한다.
도 2는 하나 이상의 구현에 따른, 예시적인 플래시 메모리 장치 내의 플래시 메모리 회로의 물리 블록의 예시적인 논리 그룹핑을 도시한다.
도 3은 하나 이상의 구현에 따른, 코드 레이트 시프팅을 사용하는 적응성 마모 균등화의 예시적인 프로세스의 흐름도를 도시한다.
도 4는 하나 이상의 구현에 따른, 경험적으로 결정된 예상 사이클 카운트를 사용하는 적응성 마모 균등화의 예시적인 프로세스의 흐름도를 도시한다.
이하에 설명되는 상세한 설명은 본 기술의 다양한 구성들에 대한 설명으로서 의도된 것이고 본 기술이 실시될 수 있는 유일한 구성을 나타내기 위한 것이 아니다. 첨부된 도면은 본 명세서에 통합되어 상세한 설명의 일부를 구성한다. 상세한 설명은 본 기술에 대한 철저한 이해를 제공하기 위해 특정 세부 사항들을 포함한다. 그러나, 본 기술은 본 명세서에서 제시되는 특정 상세로 한정되지 않으며, 하나 이상의 구현을 사용하여 실시될 수 있다. 하나 이상의 예에서, 구조 및 컴포넌트는 본 기술의 개념을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다.
적응성 마모 균등화를 위한 본 시스템에서, 데이터 저장을 위해 플래시 저장 시스템의 플래시 메모리 회로를 사용하기 전에, 각각의 플래시 메모리 회로 상의 단일 물리 블록(예를 들어, 단일 플래시 메모리 다이/칩)은 물리 블록과 관련된 품질 메트릭(예로서, 에러 카운트, 에러 레이트, 프로그램 시간)이 최소 품질 레벨 아래로 떨어질 때까지 빠르게 사이클링된다(P/E 사이클링된다). 각각의 각자 플래시 메모리 회로의 각각의 물리 블록의 품질 메트릭이 최소 품질 레벨 아래로 떨어지게 하는 데 사용되는 사이클의 수는 각각의 플래시 메모리 회로의 모든 물리 블록에 대한 예상 사이클 카운트로서 저장된다. 따라서, 단일 플래시 메모리 회로의 물리 블록 간의 내구성 편차가 최소라고 가정한다.
플래시 메모리 회로의 물리 블록으로부터 배열된 블록 세트(또는 수퍼블록)가 데이터 저장 목적을 위해 사용되는 동안, 본 시스템은 물리 블록 각각에 대한 예상 잔여 사이클 수를 모니터링한다. 주어진 블록에 대한 예상 잔여 사이클 수는 블록에 대한 예상 사이클 카운트로부터 블록에 대한 현재 사이클 카운트를 뺌으로써 결정될 수 있다. 본 시스템은 주어진 블록 세트의 블록의 예상 잔여 사이클 수가 언제 주어진 블록 세트의 다른 블록의 예상 잔여 사이클 수에 뒤떨어지는지를 결정한다. 이 예에서, 본 시스템은 블록을 일시적 비활성으로 마킹하며, 이는 블록이 데이터 저장 동작에 사용되는 것을 방지한다. 블록 세트 내의 다른 블록의 예상 잔여 사이클 카운트가 블록의 예상 잔여 사이클 카운트를 따라잡을 때, 본 시스템은 블록을 활성으로 마킹하며, 이는 블록이 다시 데이터 저장 동작을 위해 사용될 수 있게 한다. 본 시스템은 또한 예상 잔여 사이클 카운트와 관계없이, 예로서 아래에서 더 설명되는 다른 저장 조건을 충족시키기 위해 블록을 활성으로 마킹할 수 있다.
대안으로 또는 추가로, 본 시스템은 코드 레이트 시프팅을 사용함으로써 적응성 마모 균등화를 제공할 수도 있다. 이 예에서, 본 시스템은 플래시 메모리 회로 각각의 각각의 블록의 초기 고속 사이클링을 수행하는 것이 아니라, 대신 블록 세트가 데이터 저장 동작을 위해 사용되는 동안 블록 각각의 품질 메트릭을 모니터링할 수 있다. 블록의 품질 메트릭이 최소 품질 레벨 아래로 떨어질 때, 블록은 일시적 비활성으로 마킹된다. 주어진 블록 세트의 소정 수의 블록이 일시적 비활성으로 마킹되었을 때, 주어진 블록 세트에 대한 코드 레이트는 일시적으로 비활성인 블록의 품질 저하를 보상하기 위해 감소된다. 주어진 블록 세트에 대해 코드 레이트가 감소된 후, 주어진 블록 세트의 모든 블록이 활성으로 마킹된다. 본 시스템은 또한 비활성으로 마킹된 주어진 세트의 블록의 수에 관계없이, 예로서 아래에서 더 설명되는 다른 저장 조건을 충족시키기 위해, 주어진 블록 세트의 코드 레이트를 감소시키고, 주어진 블록 세트의 블록을 활성으로 마킹할 수 있다.
하나 이상의 구현에서, 본 시스템은 플래시 메모리 회로 각각으로부터의 각각의 블록의 초기 고속 사이클링 및 코드 레이트 시프팅 양자를 구현하여 적응성 마모 균등화를 제공할 수 있다. 예를 들어, 본 시스템은 각각의 블록의 품질 메트릭이 현재 코드 레이트에서 최소 품질 레벨 아래로 떨어지기 전에 블록 세트의 각각의 블록에 대해 예상 사이클 수를, 예로서 각각의 블록에 대한 예상 사이클 카운트에 기초하여 추정할 수 있다. 이어서, 본 시스템은 예로서 필요에 따라 블록 중 하나 이상을 일시적으로 비활성화함으로써 블록 세트의 블록의 사용된 사이클을 관리할 수 있으며, 따라서 블록 세트의 블록의 대부분은 주어진 코드 레이트에 대해 실질적으로 동시에 최소 품질 레벨에 도달할 것이다. 이어서, 블록 세트에 대한 코드 레이트가 감소되고, 블록 세트의 모든 블록이 활성으로 마킹되고, 데이터 저장 동작을 위해 다시 사용될 수 있다.
도 1은 하나 이상의 구현에 따른, 적응성 마모 균등화를 제공하기 위한 시스템을 구현할 수 있는 예시적인 플래시 메모리 시스템(100)을 도시한다. 그러나, 도시된 컴포넌트 모두가 요구되지는 않을 수 있으며, 하나 이상의 구현은 도면에 도시되지 않은 추가 컴포넌트를 포함할 수 있다. 컴포넌트의 배열 및 타입의 변화가 본 명세서에서 설명되는 바와 같은 청구범위의 사상 또는 범위를 벗어나지 않고 이루어질 수 있다. 추가 컴포넌트, 다른 컴포넌트 또는 더 적은 컴포넌트가 제공될 수 있다.
시스템(100)은 플래시 메모리 장치(110) 및 호스트 장치(130)를 포함한다. 플래시 메모리 장치(110)는 하나 이상의 플래시 메모리 회로(112A-N), 제어기(114), 랜덤 액세스 메모리(RAM)(122) 및 인터페이스(124)를 포함한다. 제어기(114)는 에러 정정 코드(ECC) 디코더와 같은 하나 이상의 디코더(116) 및 ECC 인코더와 같은 하나 이상의 인코더(118)를 포함한다. 하나 이상의 디코더(116) 및/또는 하나 이상의 인코더(118)는 제어기(114)의 하나 이상의 전용 회로일 수 있고/있거나, 제어기(114) 상에서 실행되는 펌웨어를 통해 구현될 수 있다.
플래시 메모리 장치(110)의 인터페이스(124)는 플래시 메모리 장치(110)를 호스트 장치(130)에 결합한다. 인터페이스(124)는 PCMCIA(Personal Computer Memory Card International Association) 인터페이스, SATA(Serial AT Attachment) 인터페이스, USB(universal serial bus) 인터페이스 또는 일반적으로 임의의 유선 인터페이스와 같은 유선 인터페이스일 수 있다. 대안으로 또는 추가로, 인터페이스(124)는 무선 SATA, 블루투스 또는 일반적으로 임의의 무선 인터페이스와 같은 무선 인터페이스일 수 있다.
제어기(114)는 플래시 메모리 회로(112A-N)로부터 데이터를 판독하고 플래시 메모리 회로(112A-N)에 데이터를 기입하도록 동작 가능하다. 예를 들어, 제어기(114)는 데이터의 스트림과 같은 데이터를 인터페이스(124)를 통해 호스트 장치(130)로부터 수신하며, 이어서 데이터는 하나 이상의 플래시 메모리 회로(112A-N)에 기입된다. 플래시 메모리 회로(112A-N)는 각각 NAND 블록 및/또는 NOR 블록과 같은 하나 이상의 물리 블록을 포함할 수 있다. 물리 블록은 각각 하나 이상의 물리 페이지를 포함할 수 있다. 제어기(114)는 RAM(122)을 사용하여 플래시 메모리 회로(112A-N)로부터의/로의 데이터의 판독/기입을 돕는다. 예를 들어, RAM(122)은 레이트 제어를 위한 버퍼로서 사용될 수 있거나, 그렇지 않으면 플래시 메모리 회로(112A-N)로부터의/로의 데이터의 판독/기입을 위해 제어기(114)에 의해 사용되는 정보(예를 들어, 변수, 물리 블록 상태, 논리-물리 어드레스 매핑 테이블, 내구성/보유력 데이터, 설정 등)를 저장하는 데 사용될 수 있다. RAM(122)은 휘발성 메모리일 수 있으므로, 제어기(114)는 하나 이상의 플래시 메모리 회로(112A-N)에 정보를 영구적으로 저장할 수 있다. 플래시 메모리 장치(110)의 전원이 켜지면, 제어기(114)는 하나 이상의 플래시 메모리 회로(112A-N)로부터 정보를 검색하고 RAM(122)에 정보를 저장할 수 있다.
제어기(114)는 보안 기술(예를 들어, 암호화), 에러 정정 코딩 기술(예를 들어, LDPC), 압축 기술, 중복 기술(예로서, RAID(redundant array of independent disks) 기술) 등과 같은 하나 이상의 알고리즘 또는 기술을 플래시 메모리 회로(112A-N)에 대한 데이터의 판독 및/또는 기입과 관련하여 구현할 수 있다. 예를 들어, 제어기(114)는 스트라이프, 수퍼블록 또는 블록 세트로서 지칭될 수 있는, 다수의 플래시 메모리 회로(112A-N)에 걸친 물리 블록의 논리적 세트를 생성함으로써 중복 기술을 사용할 수 있다. 제어기(114)는 단일 유닛으로서의 주어진 블록 세트에 데이터를 기입할 수 있다. 이러한 방식으로, 데이터는 다수의 플래시 메모리 회로(112A-B)에 걸쳐 확산되고, 따라서 하나 이상의 플래시 메모리 회로가 고장날 경우에 복구될 수 있다. 플래시 메모리 회로(112A-N)의 물리 블록의 예시적인 논리적 그룹핑이 도 2와 관련하여 이하에서 더 설명된다.
플래시 메모리 회로(112A-N)의 무결성은 시간이 지남에 따라 사용에 따라 저하되어, 플래시 메모리 회로(112A-N)로부터 판독되는 데이터와 관련된 원시 비트 에러 레이트(RBER)를 증가시키므로, 인코더(118)에 의해 각각의 데이터 아이템을 인코딩하는 데 사용되는 ECC 코드 레이트 또는 임의의 다른 코드 레이트와 같은 코드 레이트는 인코딩된 데이터 아이템이 기입되고 있는 블록 세트의 무결성에 따라 달라질 수 있다. 예를 들어, 플래시 메모리 회로(112A-N)는 최대 수의 데이터 전송 동작, 예로서 프로그램-소거(P/E) 사이클 및/또는 판독/기입 동작을 신뢰성 있게 수행하도록 설계될 수 있으며, 플래시 메모리 회로(112A-N)의 무결성은 사이클 카운트가 증가하고/하거나 플래시 메모리 회로(112A-N)가 판독 및/또는 기입 동작의 최대 수에 접근하거나 초과함에 따라 저하될 수 있다. 시간/사용에 따른 이러한 저하를 해결하기 위해, 제어기(114)는 플래시 메모리 회로(112A-N)의 무결성이 저하됨에 따라 인코더(118)에 의해 사용되는 코드 레이트가 감소하는 가변 코드 레이트 에러 보정 코딩을 사용하며, 따라서 데이터에 대한 추가적인 보호를 제공한다.
주어진 블록 세트에 데이터를 기입하기 위해 사용할 적절한 코드 레이트를 결정하기 위해, 제어기(114)는 플래시 메모리 회로(112A-N)의 블록 세트의 블록의 무결성을 모니터링할 수 있다. 모니터링은 예를 들어 플래시 메모리 회로(112A-N)로부터 판독된 데이터와 관련된 RBER에 기초할 수 있다. 제어기(114)가 플래시 메모리 회로(112A-N)의 블록 세트의 블록의 무결성이 임계량 아래로 저하된 것으로 결정하면, 제어기(114)는 블록 세트에 대한 에러 정정 코딩을 수행하기 위해 인코더(118)에 의해 사용되는 코드 레이트를 변경할 수 있다(예로서, 감소시킬 수 있다). 코드 레이트의 변경은 코드 레이트 시프팅으로 지칭될 수 있다.
그러나, 각각의 블록 세트가 상이한 플래시 메모리 회로(112A-N)로부터의 블록을 포함하기 때문에, 각각의 블록 세트의 블록 각각은 상이한 레이트로 저하될 수 있다. 따라서, 주어진 블록 세트의 블록의 품질 메트릭이 최소 허용 가능 품질 레벨 아래로 떨어짐에 따라, 제어기(114)는 블록 세트의 소정 수의 블록이 비활성화될 때까지 블록을 일시적으로 비활성화한다. 이때, 제어기(114)는 전체 블록 세트에 대한 코드 레이트를 감소시키고 블록 세트의 모든 블록을 재활성화한다. 코드 레이트 시프팅을 사용하는 적응성 마모 균등화의 예시적인 프로세스가 도 3과 관련하여 아래에서 더 설명된다. 설명의 목적으로, 본 명세서에서는 코드 레이트가 일반적으로 참조되지만, 코드 레이트는 ECC 코드 레이트 또는 일반적으로 임의의 코드 레이트를 지칭할 수 있다.
제어기(114)는 또한 예를 들어 시동시에 플래시 메모리 회로(112A-N) 각각으로부터의 단일 블록에 대해 다수의 프로그램/소거(P/E) 사이클을 빠르게 수행할 수 있다. 제어기는 품질 메트릭이 최소 허용 가능 품질 레벨 아래로 떨어지기 전에 얼마나 많은 사이클이 수행되는지를 경험적으로 결정하기 위해 블록의 품질 메트릭(예를 들어, RBER, 에러 카운트, 프로그램 시간)을 모니터링할 수 있다. 제어기(114)는 예를 들어 RAM(122)에 블록에 대해 수행되는 사이클의 수를, 블록을 포함하는 플래시 메모리 회로의 모든 블록에 대한 예상 사이클 카운트로서 저장할 수 있다. 이어서, 제어기(114)는 주어진 블록 세트의 모든 블록이 실질적으로 동시에 예상 수명 종료에 도달하는 것을 보장하기 위해 필요에 따라 블록을 일시적으로 비활성화할 수 있다. 따라서, 하나 이상의 구현에서, 예상 사이클 카운트는 예를 들어 수명 종료 사이클 카운트를 지칭할 수 있다. 경험적으로 결정된 예상 사이클 카운트를 사용하는 적응성 마모 균등화의 예시적인 프로세스가 도 4와 관련하여 아래에서 더 설명된다.
하나 이상의 구현에서, 제어기(114), 디코더(116), 인코더(118) 및/또는 인터페이스(124) 중 하나 이상 및/또는 이들의 하나 이상의 부분은 소프트웨어(예로서, 펌웨어, 서브루틴 및/또는 코드)로 구현될 수 있고/있거나, 하드웨어(예로서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 프로그래머블 논리 장치(PLD), 제어기, 상태 머신, 게이트형 논리, 개별 하드웨어 컴포넌트 및/또는 임의의 다른 적절한 장치)로 구현될 수 있고/있거나, 이들 양자의 조합일 수 있다.
도 2는 하나 이상의 구현에 따른, 예시적인 플래시 메모리 장치(110) 내의 플래시 메모리 회로(112A-N)의 물리 블록의 예시적인 논리 그룹핑을 도시한다. 그러나, 도시된 컴포넌트 모두가 요구되지는 않을 수 있으며, 하나 이상의 구현은 도면에 도시되지 않은 추가 컴포넌트를 포함할 수 있다. 컴포넌트의 배열 및 타입의 변화가 본 명세서에서 설명되는 바와 같은 청구항의 사상 또는 범위를 벗어나지 않고 이루어질 수 있다. 추가 컴포넌트, 다른 컴포넌트 또는 더 적은 컴포넌트가 제공될 수 있다.
예시적인 플래시 메모리 장치(110)는 인터페이스(124), 제어기(114) 및 하나 이상의 플래시 메모리 회로(112A-N)를 포함한다. 플래시 메모리 회로(112A-N)는 각각 블록(202A-P)으로도 지칭될 수 있는 플래시 메모리의 하나 이상의 물리 블록(202A-P)을 포함한다. 플래시 메모리 회로(112A)는 블록(202A-D)을 포함하고, 플래시 메모리 회로(112B)는 블록(202E-H)을 포함하고, 플래시 메모리 회로(112C)는 블록(202I-L)을 포함하고, 플래시 메모리 회로(112N)는 블록(202M-P)을 포함한다.
도 2에 도시된 바와 같이, 제어기(114)는 플래시 메모리 회로(112A-N)의 블록(202A-P)을 논리 블록 세트(210A-N)로 논리적으로 그룹핑하며, 블록 세트(210A-N) 각각은 플래시 메모리 회로(112A-N) 각각으로부터의 적어도 하나의 블록을 포함한다. 제어기(114)는 개별 블록 세트(210A-N) 내의 하나 이상의 블록(202A-P)이 열화되는 경우에 데이터 복구를 허용하기 위해 패리티/ECC 데이터와 함께 개별 RAID 스트라이프로서 블록 세트(210A-N) 각각을 사용할 수 있다. 이러한 방식으로, 플래시 메모리 회로(112A-N)에 기입된 데이터는 하나 이상의 플래시 메모리 회로(112A-N) 및/또는 그 안의 하나 이상의 블록(202A-P)이 고장날 때 여전히 복구될 수 있다. 블록 세트(210A-N) 각각은 논리 유닛으로서 제어기(114)에 의해 프로그래밍되고 소거된다. 하나 이상의 구현에서, 블록 세트(210A-N)는 스트라이프, 수퍼블록, 논리 유닛 등으로 지칭될 수 있다. 블록 세트(210A-N) 각각은 상이한 코드 레이트와 관련될 수 있다. 블록 세트(210A-N)는 모두 초기에 동일한 코드 레이트와 관련될 수 있지만, 블록 세트(210A-N)와 관련된 코드 레이트는 시간이 지남에 따라 변할 수 있고 따라서 다를 수 있다.
도 2에 도시된 바와 같이, 블록 세트(210A)는 플래시 메모리 회로(112A)의 블록(202A), 플래시 메모리 회로(112B)의 블록(202E), 플래시 메모리 회로(112C)의 블록(202I) 및 플래시 메모리 회로(112N)의 블록(202M)을 포함한다. 블록 세트(210B)는 플래시 메모리 회로(112A)의 블록(202B), 플래시 메모리 회로(112B)의 블록(202F), 플래시 메모리 회로(112C)의 블록(202J) 및 플래시 메모리 회로(112N)의 블록(202N)을 포함한다. 블록 세트(210C)는 플래시 메모리 회로(112A)의 블록(202C), 플래시 메모리 회로(112B)의 블록(202G), 플래시 메모리 회로(112C)의 블록(202K) 및 플래시 메모리 회로(112N)의 블록(202O)을 포함한다. 블록 세트(210N)는 플래시 메모리 회로(112A)의 블록(202D), 플래시 메모리 회로(112B)의 블록(202H), 플래시 메모리 회로(112C)의 블록(202L) 및 플래시 메모리 회로(112N)의 블록(202P)을 포함한다.
블록(202A-P)은 예를 들어 제어기(114)에 의해 RAM(122)에 저장될 수 있는 상태와 각각 관련될 수 있다. 블록의 상태는 예를 들어 활성 블록, 퇴거된 블록, 제조자 불량 블록(MBB), 성장된 불량 블록(GBB), 또는 휴가중 블록(OVB)으로도 지칭될 수 있는 일시적 비활성 블록을 포함할 수 있다. 활성인 블록은 데이터 저장 동작(예로서, 판독/기입)을 위해 사용 가능할 수 있지만, 퇴거된, MBB인, GBB인 또는 일시적 비활성인 블록은 데이터 저장 동작에 사용 가능하지 않을 수 있다. 도 2에서, 음영 처리된 블록(202B, G, H, N)은 일시적으로 비활성인 블록이고, 따라서 데이터 저장 동작에 사용 가능하지 않다.
하나 이상의 구현에서, 제어기(114) 및/또는 인터페이스(124) 중 하나 이상 및/또는 이들의 하나 이상의 부분은 소프트웨어(예로서, 펌웨어, 서브루틴 및/또는 코드)로 구현될 수 있고/있거나, 하드웨어(예로서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 프로그래머블 논리 장치(PLD), 제어기, 상태 머신, 게이트형 논리, 개별 하드웨어 컴포넌트 및/또는 임의의 다른 적절한 장치)로 구현될 수 있고/있거나, 이들 양자의 조합일 수 있다.
도 3은 하나 이상의 구현에 따른, 코드 레이트 시프팅을 사용하는 적응성 마모 균등화의 예시적인 프로세스(300)의 흐름도를 도시한다. 설명의 목적을 위해, 예시적인 프로세스(300)는 본 명세서에서 도 1 및 2의 제어기(114)와 관련하여 설명되지만, 예시적인 프로세스(300)는 도 1 및 2의 제어기(114)로 한정되지 않으며, 예시적인 프로세스(300)의 하나 이상의 블록은 제어기(114)의 하나 이상의 다른 컴포넌트에 의해 수행될 수 있다. 또한, 설명의 목적을 위해, 예시적인 프로세스(300)의 블록은 본 명세서에서 직렬로 또는 선형으로 발생하는 것으로 설명된다. 그러나, 예시적인 프로세스(300)의 다수의 블록이 병렬로 발생할 수 있다. 또한, 예시적인 프로세스(300)의 블록은 도시된 순서대로 수행될 필요는 없고/없거나, 예시적인 프로세스(300)의 블록 중 하나 이상은 수행될 필요가 없다.
제어기(114)는 플래시 메모리 회로(112A-N)에 대해 임의의 데이터 저장 동작을 수행하기 전에, 플래시 메모리 회로(112A-N)의 블록(202A-P)을 블록 세트(210A-N)로 배열하며, 각각의 블록 세트(210A-N)는 플래시 메모리 회로(112A-N) 각각으로부터의 블록(202A-P) 중 하나를 포함하고, 블록 세트(210A-N) 각각은 코드 레이트와 관련된다(302). 예를 들어, 제어기(114)는 시동시에 블록 세트(210A-N)를 배열할 수 있고/있거나, 제어기(114)는 블록 세트(210A-N)의 배열을 갖도록 미리 구성될 수 있다. 하나 이상의 구현에서, 제어기(114)는 플래시 메모리 회로(112A-N) 각각에서 동일한 물리 블록 어드레스에 있는 블록을 사용하여 블록 세트(210A-N) 각각을 형성할 수 있다. 코드 레이트는 초기에 블록 세트(210A-N) 각각에 대해 동일할 수 있지만, 시간이 지남에 따라 사용과 더불어 변할 수 있다. 플래시 메모리 회로(112A-N)의 블록(202A-P)은 임의의 제조자 불량 블록을 제외하고 모두 초기에 활성으로 마킹될 수 있다.
제어기(114)는 블록 세트(210A-N)를 사용하여, 호스트 장치(130)에 의해 지시된 데이터 저장 동작을 수행한다(304). 데이터 저장 동작은 블록 세트(210A-N) 중 하나 이상에 대한 하나 이상의 판독 및/또는 기입 동작을 포함할 수 있고, 데이터 저장 동작은 활성으로 마킹되는 블록 세트(210A-N)의 블록(202A-P)으로 제한될 수 있다. 데이터 저장 동작은 또한 블록 세트(210A-N) 중 하나 이상의 블록 세트에 관한 하나 이상의 프로그램/소거 사이클을 포함할 수 있는 쓰레기 수집과 같은 하나 이상의 배경 동작을 초래할 수 있다.
제어기(114)는 블록 세트(210A-N) 각각의 블록(202A-P) 각각의 품질 메트릭을 모니터링한다(306). 품질 메트릭은 예를 들어 RBER, 에러 카운트, 프로그램 시간 등을 포함할 수 있다. 제어기(114)는 블록 세트(210B)와 같은 하나의 블록 세트의 블록(202B)과 같은 블록에 대한 품질 메트릭이 최소 품질 레벨 아래로 떨어지는지를 결정한다(308). 최소 품질 레벨은 예를 들어 판독 및/또는 기입 시간과 같은 미리 결정된 성능 제약을 충족시키면서 유지될 수 있는 최대 RBER일 수 있다.
블록 세트(210B)의 블록(202B)과 같은 블록 세트 중 하나의 블록 세트의 블록의 품질 메트릭이 최소 품질 레벨 아래로 떨어지는 것으로 제어기(114)가 결정하면(308), 제어기(114)는 블록(202B) 내의 임의의 유효 데이터를, 예를 들어 다른 활성 블록에 재배치한다(310). 이어서, 제어기(114)는 블록(202B)을 일시적 비활성으로 마킹한다(312). 예를 들어, 제어기(114)는 RAM(122)에 저장된 블록(202B)의 상태를 변경하여, 블록(202B)이 일시적으로 비활성이고, 따라서 프로그래밍/소거에 사용될 수 없다는 것을 나타낼 수 있다.
이어서, 제어기(114)는 블록 세트(210B)의 잔여 활성 블록(202F, J)의 수가 활성 블록 최소 수 임계치 아래인지를 결정한다. 임계치는 블록 세트(210B)와 관련된 코드 레이트에 기초할 수 있다(314). 예를 들어, 제어기(114)는 블록 세트(210A-N) 각각에 의해 유지되는 최소 가용 데이터 용량을 설정할 수 있다. 주어진 블록 세트에 대한 가용 데이터 용량은 현재 활성인 블록 세트 내의 블록 수 및 블록 세트와 관련된 주어진 코드 레이트에서의 각각의 블록의 데이터 용량에 기초하여 결정될 수 있다.
제어기(114)가 블록 세트(210B)의 잔여 활성 블록(202F, J)의 수가 코드 레이트에 대한 활성 블록 최소 수 임계치 아래인 것으로 결정하면(314), 제어기(114)는 블록 세트(210B)의 일시적 비활성 블록(202B, N)의 품질 감소를 보상하기 위해 블록 세트(210B)와 관련된 코드 레이트를 감소시킨다(320). 코드 레이트를 감소시킨 후에(320), 제어기(114)는 블록(202B, N)이 데이터 저장 동작을 위해 다시 사용 가능하도록 블록 세트(210B)의 일시적 비활성 블록(202B, N) 모두를 활성으로 마킹한다(322).
제어기(114)가 블록 세트(210B) 내의 활성 블록(202F, J)의 수가 활성 블록 최소 수 임계치 아래로 떨어지지 않은 것으로 결정하면(314), 제어기(114)는 플래시 메모리 회로(112A-N) 모두에 걸친 활성 블록(202A-P)의 총 수가 활성 블록 최소 수 임계치 아래로 떨어졌는지를 결정한다(316). 예를 들어, 활성 블록의 수가 활성 블록 최소 수 임계치 아래로 떨어지면, 플래시 메모리 장치(110)의 오버 프로비저닝은 최소 레벨에 도달할 수 있고, 따라서 더 많은 블록이 활성화되는 것이 필요할 수 있다.
제어기(114)가 플래시 메모리 회로(112A-N)에 걸친 활성 블록(202A-P)의 총 수가 활성 블록 최소 수 임계치 아래로 떨어진 것으로 결정하면, 제어기(114)는 하나 이상의 일시적 비활성 블록을 갖는 블록 세트(210B)와 같은 블록 세트(210A-N) 중 하나를 검색한다(318). 예를 들어, 제어기(114)는 다른 블록 세트(210A-N)에 비해 최고 수의 일시적 비활성 블록을 갖는 블록 세트(210A-N) 중 하나를 검색할 수 있다. 블록 세트(210B)를 식별하면, 제어기(114)는 식별된 블록 세트(210B)의 코드 레이트를 감소시키고(320), 블록 세트(210B)의 모든 일시적 비활성 블록(202B, N)을 활성으로 마킹하고(322), 모든 플래시 메모리 회로(112A-N)에 걸친 활성 블록의 총 수가 활성 블록 최소 수 임계치를 초과할 때까지(316) 프로세스(318-322)를 반복한다.
도 4는 하나 이상의 구현에 따른, 경험적으로 결정된 예상 사이클 카운트를 사용하는 적응성 마모 균등화의 예시적인 프로세스(400)의 흐름도를 도시한다. 설명의 목적을 위해, 예시적인 프로세스(400)는 본 명세서에서 도 1 및 2의 제어기(114)와 관련하여 설명되지만, 예시적인 프로세스(400)는 도 1 및 2의 제어기(114)로 한정되지 않으며, 예시적인 프로세스(400)의 하나 이상의 블록은 제어기(114)의 하나 이상의 다른 컴포넌트에 의해 수행될 수 있다. 또한, 설명의 목적을 위해, 예시적인 프로세스(400)의 블록은 본 명세서에서 직렬로 또는 선형으로 발생하는 것으로 설명된다. 그러나, 예시적인 프로세스(400)의 다수의 블록이 병렬로 발생할 수 있다. 또한, 예시적인 프로세스(400)의 블록은 도시된 순서대로 수행될 필요는 없고/없거나, 예시적인 프로세스(400)의 블록 중 하나 이상은 수행될 필요가 없다.
제어기(114)는 플래시 메모리 회로(112A-N)에 대해 임의의 데이터 저장 동작을 수행하기 전에, 플래시 메모리 장치(110)의 제1 플래시 메모리 회로(112A)를 선택한다(402). 제어기(114)는 블록(202A)과 관련된 품질 메트릭이 최소 품질 레벨 아래로 떨어질 때까지 제1 플래시 메모리 회로(112A)로부터의 하나의 블록(202A)에 대해 고속 프로그램/소거(P/E) 사이클을 수행한다(404). 품질 메트릭은 예를 들어 RBER, 에러 카운트, 프로그램 시간 등일 수 있다. 이어서, 제어기(114)는 블록(202A)이 데이터 저장 동작에 사용 가능하지 않도록 블록(202A)을 비활성 또는 퇴거로 마킹한다(406). 제어기(114)는 블록(202A)의 품질 메트릭이 최소 품질 레벨 아래로 떨어지게 한 P/E 사이클의 수를, 플래시 메모리 회로(112A)의 잔여 블록(202B-D)의 예상 사이클 카운트로서 저장한다(408).
제어기(114)는 플래시 메모리 장치(110)에 임의의 추가 플래시 메모리 회로(112B-N)가 있는지를 결정한다(410). 제어기(114)가 플래시 메모리 장치(110)에 추가 플래시 메모리 회로(112B-N)가 있다고 결정하면, 제어기(114)는 다음 플래시 메모리 회로(112B)를 선택하고(412), 프로세스(404-408)를 반복한다. 제어기(114)가 플래시 메모리 장치(110)에 더 이상의 플래시 메모리 회로(112A-N)가 없다고 결정하면, 제어기(114)는 플래시 메모리 회로(112A-N)의 블록(202A-P)을 블록 세트(210A-N)로 배열하며, 블록 세트(210A-N) 각각은 플래시 메모리 회로(112A-N) 각각으로부터의 블록을 포함한다(418).
제어기(114)는 블록 세트(210A-N)를 사용하여, 호스트 장치(130)에 의해 지시된 데이터 저장 동작을 수행한다(420). 데이터 저장 동작은 블록 세트(210A-N) 중 하나 이상에 대한 하나 이상의 판독 및/또는 기입 동작을 포함할 수 있고, 데이터 저장 동작은 활성으로 마킹되는 블록 세트(210A-N)의 블록(202A-P)으로 제한될 수 있다. 데이터 저장 동작은 또한 블록 세트(210A-N) 중 하나 이상의 블록 세트에 관한 하나 이상의 프로그램/소거 사이클을 포함할 수 있는 쓰레기 수집과 같은 하나 이상의 배경 동작을 초래할 수 있다.
제어기(114)는 블록 세트(210A-N) 각각의 블록(202A-P) 각각의 예상 잔여 사이클 카운트를 모니터링한다(422). 블록(202A-P) 각각의 예상 잔여 사이클 카운트는 블록(202A-P) 각각에 대해 저장된 예상 사이클 카운트에서 블록(202A-P) 각각에 대한 현재 사이클 카운트(또는 사용된 사이클의 수)를 뺀 값에 기초하여 결정될 수 있다. 제어기(114)는 블록 세트(210A-N) 각각의 블록(202A-P)의 균형화된 잔여 사이클 카운트를 유지하면서 블록 세트(210A-N) 각각에 대한 활성 블록의 최소 수를 또한 유지하기 위해 필요에 따라 블록 세트(210A-N) 각각의 하나 이상의 블록(202A-P)을 일시적으로 비활성화한다(424).
예를 들어, 블록(202A)의 예상 잔여 사이클 카운트가 블록 세트(210A) 내의 블록(202E, I, M) 중 다른 하나의 예상 잔여 사이클 카운트를 임계량만큼 따라가면, 블록(202A)은 일시적 비활성으로 설정될 수 있다. 블록(202A)은 블록 세트(210A)의 다른 블록(202E, I, M) 중 하나 이상의 블록의 예상 잔여 사이클 카운트가 블록(202A)의 예상 잔여 사이클 카운트를 따라잡을 때까지(또는 임계량 안에 있을 때까지) 일시적 비활성으로 유지될 수 있다. 이때, 블록(202A)은 활성으로 마킹될 수 있고, 따라서 데이터 저장 동작을 위해 다시 사용될 수 있다. 그러나, 블록 세트(210A)에 대한 활성 블록(202E, I, M)의 총 수가 블록 세트(210A)에 대한 활성 블록의 최소 수 아래로 떨어지면, 블록(202A)은 다른 블록(202E, I, M)의 예상 잔여 사이클이 블록(202A)을 따라잡는지에 관계없이 활성으로 마킹될 수 있다.
제어기(114)는 플래시 메모리 장치(110) 내의 활성 블록(202A-P)의 총 수가 활성 블록의 최소 수 아래로 떨어졌는지를 결정한다(426). 제어기(114)가 플래시 메모리 장치(110) 내의 활성 블록(202A-P)의 총 수가 활성 블록의 최소 수 아래로 떨어졌다고 결정하면(426), 제어기(114)는 예를 들어 예상 잔여 사이클에 관계없이 블록 세트(210A-N) 중 적어도 일부 블록 세트의 일시적 비활성 블록 중 일부를 활성화하여, 플래시 메모리 장치(110) 내의 활성 블록의 총 수를 활성 블록 최소 수 임계치 위로 증가시킨다(428).
본 개시의 범위 내의 구현은 하나 이상의 명령어를 인코딩하는 유형적인 컴퓨터 판독 가능 저장 매체(또는 하나 이상의 타입의 다수의 유형적인 컴퓨터 판독 가능 저장 매체)를 사용하여 부분적으로 또는 전체적으로 실현될 수 있다. 유형적인 컴퓨터 판독 가능 저장 매체는 또는 사실상 비일시적일 수 있다.
컴퓨터 판독 가능 저장 매체는 명령어를 실행할 수 있는 임의의 처리 전자 장치 및/또는 처리 회로를 포함하는 범용 또는 특수 목적 컴퓨팅 장치에 의해 판독, 기입 또는 액세스될 수 있는 임의의 저장 매체일 수 있다. 예를 들어, 제한 없이, 컴퓨터 판독 가능 매체는 RAM, DRAM, SRAM, T-RAM, Z-RAM 및 TTRAM과 같은 임의의 휘발성 반도체 메모리를 포함할 수 있다. 컴퓨터 판독 가능 매체는 ROM, PROM, EPROM, EEPROM, NVRAM, 플래시, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, 레이스 트랙 메모리, FJG 및 밀리페드 메모리(Millipede memory)와 같은 임의의 비휘발성 반도체 메모리도 포함할 수 있다.
또한, 컴퓨터 판독 가능 저장 매체는 광 디스크 저장소, 자기 디스크 저장소, 자기 테이프, 다른 자기 저장 장치와 같은 임의의 비반도체 메모리 또는 하나 이상의 명령어를 저장할 수 있는 임의의 다른 매체를 포함할 수 있다. 일부 구현에서, 유형적인 컴퓨터 판독 가능 저장 매체는 컴퓨팅 장치에 직접 결합될 수 있는 반면, 다른 구현에서 유형적인 컴퓨터 판독 가능 저장 매체는 예를 들어 하나 이상의 유선 접속, 하나 이상의 무선 접속 또는 이들의 임의의 조합을 통해 컴퓨팅 장치에 간접적으로 결합될 수 있다.
명령어는 직접 실행될 수 있거나, 실행 가능한 명령어를 개발하는 데 사용될 수 있다. 예를 들어, 명령어는 실행 가능하거나 실행 불가능한 기계 코드로서 또는 실행 가능하거나 실행 불가능한 기계 코드를 생성하도록 컴파일될 수 있는 고급 언어의 명령어로서 실현될 수 있다. 게다가, 명령어는 또한 데이터로서 실현되거나 데이터를 포함할 수 있다. 또한, 컴퓨터 실행 가능한 명령어는 루틴, 서브루틴, 프로그램, 데이터 구조, 객체, 모듈, 애플리케이션, 애플릿, 함수 등을 포함하는 임의의 포맷으로 구성될 수 있다. 본 기술분야의 기술자에 의해 인식되는 바와 같이, 명령어의 수, 구조, 시퀀스 및 구성을 포함하지만 이에 한정되지 않는 상세는 기본 논리, 기능, 처리 및 출력을 변경하지 않고 크게 달라질 수 있다.
위의 설명은 주로 소프트웨어를 실행하는 마이크로프로세서 또는 멀티 코어 프로세서를 참조하지만, 하나 이상의 구현은 주문형 집적 회로(ASIC) 또는 필드 프로그래머블 게이트 어레이(FPGA)와 같은 하나 이상의 집적 회로에 의해 수행된다. 하나 이상의 구현에서, 이러한 집적 회로는 회로 자체에 저장된 명령어를 실행한다.
본 기술분야의 기술자는 본 명세서에서 설명되는 다양한 예시적인 블록, 모듈, 요소, 컴포넌트, 방법 및 알고리즘이 전자 하드웨어, 컴퓨터 소프트웨어 또는 이들의 조합으로서 구현될 수 있다는 것을 알 것이다. 하드웨어와 소프트웨어의 이러한 교환 가능성을 설명하기 위해, 다양한 예시적인 블록, 모듈, 요소, 컴포넌트, 방법 및 알고리즘은 일반적으로 그들의 기능과 관련하여 위에서 설명되었다. 이러한 기능이 하드웨어 또는 소프트웨어로 구현되는지는 특정 응용 및 전체 시스템에 부과되는 설계 제약에 의존한다. 기술자는 설명되는 기능을 각각의 특정 응용을 위해 다양한 방식으로 구현할 수 있다. 다양한 컴포넌트 및 블록은 모두 본 기술의 범위를 벗어나지 않고 다르게 배열될 수 있다(예를 들어, 상이한 순서로 배열되거나 다른 방식으로 분할될 수 있다).
개시되는 프로세스 내의 블록의 임의의 특정 순서 또는 계층 구조는 예시적인 접근법의 예시라는 것을 이해한다. 설계 선호에 기초하여, 프로세스 내의 블록의 특정 순서 또는 계층 구조가 재배열될 수 있거나, 도시된 모든 블록이 수행될 수 있는 것으로 이해된다. 임의의 블록이 동시에 수행될 수 있다. 하나 이상의 구현에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다. 또한, 전술한 실시예에서의 다양한 시스템 컴포넌트의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되지 않아야 하며, 설명되는 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품 안에 패키징될 수 있는 것으로 이해되어야 한다.
본 출원의 명세서 및 임의의 청구항에서 사용되는 바와 같이, 용어 "기지국", "수신기", "컴퓨터", "서버", "프로세서" 및 "메모리"는 모두 전자 또는 다른 기술적 장치를 지칭한다. 이들 용어는 사람 또는 사람 그룹을 제외한다. 명세서의 목적을 위해, 용어 "표시" 또는 "표시하기"는 전자 장치 상에 표시하는 것을 의미한다.
본 명세서에서 사용되는 바와 같이, 임의의 아이템을 분리하기 위한 용어 "및" 또는 "또는"과 함께 일련의 아이템에 후행하는 문구 "적어도 하나"는 리스트의 각각의 멤버(즉, 각각의 아이템)가 아니라 리스트 전체를 수식한다. "적어도 하나"라는 문구는 나열된 각각의 아이템 중 적어도 하나의 선택을 요구하지 않으며, 오히려 이 문구는 아이템 중 임의의 하나 중 적어도 하나 및/또는 아이템의 임의의 조합 중 적어도 하나 및/또는 아이템 각각 중 적어도 하나를 포함하는 의미를 허용한다. 예를 들어, "A, B 및 C 중 적어도 하나" 또는 "A, B 또는 C 중 적어도 하나"라는 문구는 각각 단지 A, 단지 B 또는 단지C; A, B 및 C의 임의의 조합; 및/또는 A, B 및 C 각각 중 적어도 하나를 지칭한다.
"구성된", "동작 가능한" 및 "프로그래밍된"이라는 술어 단어는 대상의 임의의 특정한 유형적인 또는 무형적인 수정을 암시하는 것이 아니라, 오히려 교환 가능하게 사용되도록 의도된다. 하나 이상의 구현에서, 동작 또는 컴포넌트를 모니터링하고 제어하도록 구성된 프로세서는 또한 동작을 모니터링 및 제어하도록 프로그래밍되는 프로세서 또는 동작을 모니터링 및 제어하도록 동작 가능한 프로세서를 의미할 수 있다. 마찬가지로, 코드를 실행하도록 구성된 프로세서는 코드를 실행하도록 프로그래밍되거나 코드를 실행하도록 동작 가능한 프로세서로서 해석될 수 있다.
양태, 그 양태, 다른 양태, 일부 양태, 하나 이상의 양태, 구현, 그 구현, 다른 구현, 일부 구현, 하나 이상의 구현, 실시예, 그 실시예, 다른 실시예, 일부 실시예, 하나 이상의 실시예, 구성, 그 구성, 다른 구성, 일부 구성, 하나 이상의 구성, 본 기술, 개시, 본 개시, 이들의 변형 등과 같은 문구는 편의를 위한 것이며, 그러한 문구(들)와 관련된 개시가 본 기술에 필수적이거나 그러한 개시가 본 기술의 모든 구성에 적용된다는 것을 암시하지 않는다. 그러한 문구(들)와 관련된 개시는 모든 구성 또는 하나 이상의 구성에 적용될 수 있다. 그러한 문구(들)와 관련된 개시는 하나 이상의 예를 제공할 수 있다. 양태 또는 일부 양태와 같은 문구는 하나 이상의 양태를 지칭할 수 있고, 그 반대일 수도 있으며, 이는 다른 전술한 문구에 유사하게 적용된다.
"예시적인"이라는 단어는 본 명세서에서 "예, 사례 또는 예시의 역할을 하는"을 의미하기 위해 사용된다. "예시적인" 또는 "예"로서 본 명세서에서 설명되는 임의의 실시예는 다른 실시예보다 바람직한 또는 유리한 것으로 해석될 필요는 없다. 또한, 포괄한다(include)", "갖는다(have)" 등의 용어가 설명 또는 청구항들에서 사용되는 경우, 그러한 용어는 "포함한다(comprise)"가 청구항에서 전이어(transitional word)로서 사용될 때 해석되는 바와 같이 "포함한다"라는 용어와 유사한 방식으로 포괄적인 것으로 의도된다.
본 기술분야의 통상의 기술자들에게 공지되거나 추후 공지될 이 개시의 전반에 걸쳐 기술된 다양한 양태의 요소에 대한 모든 구조적 및 기능적 등가물들은 명백히 본 명세서에 참고로 포함되며 청구항들에 의해 포함되는 것으로 의도된다. 또한, 본 명세서에 개시된 어떠한 것도 그러한 개시가 청구항들에 명시적으로 기재되었는지의 여부에 관계없이 대중에 헌정되도록 의도되지 않는다. 어떠한 청구항 요소도 그 요소가 명백히 "~를 위한 수단"이라는 어구를 사용하여 기재되거나, 방법 청구항의 경우에, 그 요소가 "~를 위한 단계"라는 어구를 사용하여 기재되지 않는 한, 35 U.S.C. §112, 여섯 번째 단락의 규정에 따라 해석되어서는 안된다.
전술한 설명은 본 기술분야의 임의의 기술자가 본 명세서에 설명된 다양한 양태를 실시할 수 있게 하기 위해 제공된다. 이러한 양태들에 대한 다양한 변형들이 본 기술분야의 기술자들에게 용이하게 명백할 것이며, 본 명세서에서 정의된 일반적인 원리들은 다른 양태들에 적용될 수 있다. 따라서, 청구항들은 본 명세서에 도시된 양태들로 제한되는 것으로 의도되지 않고, 언어 청구항들과 일치하는 전체 범위가 주어져야 하며, 단수의 요소에 대한 언급은 구체적으로 그렇게 진술되지 않는 한 "하나 그리고 단 하나"를 의미하는 것으로 의도되지 않으며, "하나 이상"을 의미한다. 구체적으로 다르게 진술되지 않는 한, "일부"라는 용어는 하나 이상을 언급한다. 남성의 대명사(예를 들어, 그의)는 여성 및 중성의 성별(예를 들어, 그녀의 및 그것의)을 포함하고 그 반대도 마찬가지이다. 제목 및 부제목은, 존재할 경우에, 편의상 사용될 뿐이며, 본 개시를 제한하지 않는다.

Claims (22)

  1. 장치로서,
    적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    데이터 저장 동작들을 위해 플래시 메모리 회로들의 블록 세트들을 사용하고 - 상기 블록 세트들 각각은 상기 플래시 메모리 회로들 각각으로부터의 적어도 하나의 블록을 포함하고, 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들은 활성으로 마킹되고, 활성으로 마킹되는 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들은 상기 데이터 저장 동작들을 위해 사용됨 -;
    활성으로 마킹되는 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들이 상기 데이터 저장 동작들을 위해 사용되는 동안 상기 블록 세트들 각각의 블록 각각의 품질 메트릭들을 모니터링하고;
    상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록의 품질 메트릭이 언제 최소 품질 레벨 아래로 떨어지는지를 결정하고;
    상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록을 일시적 비활성으로 마킹하고 - 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록은 일시적 비활성으로 마킹되는 동안에는 상기 데이터 저장 동작들을 위해 사용되지 않음 -;
    활성으로 마킹되는 상기 블록 세트들 중 하나의 블록 세트의 블록들의 수가 상기 블록 세트들 중 하나의 블록 세트와 관련된 코드 레이트에 대한 활성 블록들의 최소 수 아래로 떨어질 때 적어도 하나의 기준이 충족되는 것으로 결정하고 - 상기 블록 세트들 각각이 상기 코드 레이트와 관련됨 -;
    상기 적어도 하나의 기준이 충족될 때, 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록을 활성으로 마킹하도록 - 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록은 활성으로 마킹되는 동안 상기 데이터 저장 동작들을 위해 다시 사용됨 -
    구성되는, 장치.
  2. 제1항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 기준이 충족되는 것으로 결정하는 것에 응답하여, 상기 블록 세트들 중 하나의 블록 세트와 관련된 상기 코드 레이트를 감소시키고;
    상기 코드 레이트를 감소시키는 것에 응답하여, 일시적 비활성으로 마킹된 상기 블록 세트들 중 하나의 블록 세트의 임의의 블록들을 활성으로 마킹하도록 - 활성으로 마킹된 상기 블록 세트들 중 하나의 블록 세트의 임의의 블록들은 상기 데이터 저장 동작들을 위해 다시 사용됨 -
    추가로 구성되는, 장치.
  3. 제2항에 있어서, 상기 코드 레이트에 대한 활성 블록들의 최소 수는 상기 감소된 코드 레이트에 대한 활성 블록들의 다른 최소 수보다 작은, 장치.
  4. 제2항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 블록 세트들 모두에 걸친 현재 저장 용량이 최소 저장 용량 아래로 떨어질 때 상기 적어도 하나의 기준이 충족되는 것으로 결정하고;
    상기 기준이 충족되는 것으로 결정하는 것에 응답하여, 적어도 하나의 블록이 일시적 비활성으로 마킹되는 상기 블록 세트들 중 적어도 하나의 블록 세트를 식별하고;
    식별된 상기 블록 세트들 중 적어도 하나의 블록 세트와 관련된 상기 코드 레이트를 감소시키고;
    상기 코드 레이트를 감소시키는 것에 응답하여, 일시적 비활성으로 마킹된 상기 블록 세트들 중 적어도 하나의 블록 세트의 임의의 블록들을 활성으로 마킹하도록 - 활성으로 마킹된 상기 블록 세트들 중 적어도 하나의 블록 세트의 임의의 블록들은 상기 데이터 저장 동작들을 위해 다시 사용됨 - 추가로 구성되는, 장치.
  5. 제4항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 블록 세트들 모두에 걸친 현재 저장 용량이 상기 최소 저장 용량을 초과할 때까지 상기 식별, 감소 및 마킹을 반복하도록 추가로 구성되는, 장치.
  6. 제4항에 있어서, 상기 적어도 하나의 프로세서는,
    활성으로 마킹된 상기 블록 세트들 각각의 블록들의 수 및 상기 블록 세트들 각각과 관련된 상기 코드 레이트에 적어도 부분적으로 기초하여 상기 현재 저장 용량을 결정하도록 추가로 구성되는, 장치.
  7. 제4항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 블록 세트들 중 상기 적어도 하나의 블록 세트가 상기 블록 세트들 중 다른 블록 세트들에 비해 최대 수의 일시적 비활성 블록들을 포함하는 것으로 결정함으로써 적어도 하나의 블록이 일시적 비활성으로 마킹되는 상기 블록 세트들 중 적어도 하나의 블록 세트를 식별하도록 추가로 구성되는, 장치.
  8. 제1항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록을 일시적 비활성으로 마킹하기 전에 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록 내의 임의의 유효 데이터를 재배치(relocate)하도록 추가로 구성되는, 장치.
  9. 제1항에 있어서, 상기 장치는 적어도 하나의 랜덤 액세스 메모리 회로 및 상기 플래시 메모리 회로들을 추가로 포함하고, 상기 블록들은 상기 플래시 메모리 회로들의 물리 블록들을 포함하고, 상기 적어도 하나의 프로세서는,
    상기 플래시 메모리 회로들의 블록 세트들을 사용하여 호스트 장치에 의해 지시되는 바와 같은 상기 데이터 저장 동작들을 수행하고;
    상기 적어도 하나의 랜덤 액세스 메모리 회로에 저장된 데이터 구조를 유지하도록 - 상기 데이터 구조는 상기 블록 세트들 각각의 각각의 블록의 상태를 포함하고, 상기 블록 세트들 각각의 각각의 블록의 상태는 상기 블록 세트들 각각의 각각의 블록이 활성으로 마킹되는지 또는 일시적 비활성으로 마킹되는지를 적어도 지시함 - 추가로 구성되는, 장치.
  10. 제1항에 있어서, 품질은 에러 카운트, 에러 레이트, 또는 프로그래밍할 시간 중 적어도 하나를 포함하는, 장치.
  11. 제1항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 플래시 메모리 회로들의 블록들을 상기 블록 세트들로 배열하도록 구성되는, 장치.
  12. 프로세서에 의해 수행되는 방법으로서,
    데이터 저장 동작들을 위해 복수의 플래시 메모리 회로들의 블록 세트들을 사용하는 단계 - 상기 블록 세트들 각각은 상기 복수의 플래시 메모리 회로들 각각으로부터의 적어도 하나의 블록을 포함하고, 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들은 활성으로 마킹되고, 활성으로 마킹되는 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들은 상기 데이터 저장 동작들을 위해 사용됨 -;
    활성으로 마킹되는 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들이 상기 데이터 저장 동작들을 위해 사용되는 동안 상기 블록 세트들 각각의 블록들 각각의 잔여 사이클 카운트를 모니터링하는 단계 - 상기 블록 세트들 각각의 블록들 각각의 잔여 사이클 카운트는 상기 블록 세트들 각각의 블록들 각각을 포함하는 상기 복수의 플래시 메모리 회로들 각각과 관련된 예상 사이클 카운트에 적어도 부분적으로 기초함 -;
    상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록의 잔여 사이클 카운트가 적어도 하나의 제1 기준을 충족시킬 때, 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록을 일시적 비활성으로 마킹하는 단계 - 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록은 일시적 비활성으로 마킹되는 동안에는 상기 데이터 저장 동작들을 위해 사용되지 않음 -;
    활성으로 마킹되는 상기 블록 세트들 중 하나의 블록 세트의 블록들의 수가 상기 블록 세트들 중 하나의 블록 세트와 관련된 코드 레이트에 대한 활성 블록들의 최소 수 아래로 떨어질 때 적어도 하나의 제2 기준이 충족되는 것으로 결정하는 단계 - 상기 블록 세트들 각각이 상기 코드 레이트와 관련됨 -; 및
    상기 적어도 하나의 제2 기준이 충족될 때, 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록을 활성으로 마킹하는 단계 - 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록은 활성으로 마킹되는 동안 상기 데이터 저장 동작들을 위해 다시 사용됨 -
    를 포함하는, 프로세서에 의해 수행되는 방법.
  13. 제12항에 있어서, 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록의 잔여 사이클 카운트가 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 다른 블록의 다른 잔여 사이클 카운트와 임계 사이클 수만큼 다를 때 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록의 잔여 사이클 카운트는 상기 적어도 하나의 제1 기준을 충족시키는, 프로세서에 의해 수행되는 방법.
  14. 제13항에 있어서,
    상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록과 관련된 잔여 사이클 카운트가 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 다른 블록과 관련된 다른 잔여 사이클 카운트와 동일할 때 상기 적어도 하나의 제2 기준이 충족되는 것으로 결정하는 단계를 추가로 포함하는, 프로세서에 의해 수행되는 방법.
  15. 제12항에 있어서,
    기입 또는 판독 동작들을 위해 상기 블록 세트들 중 임의의 블록 세트의 블록들 중 임의의 블록을 사용하기 전에, 상기 복수의 플래시 메모리 회로들 각각의 각자의 블록의 각자의 품질 메트릭이 최소 품질 레벨 아래로 떨어질 때까지 상기 복수의 플래시 메모리 회로들 각각의 각자의 블록을 사이클링하는 단계;
    상기 복수의 플래시 메모리 회로들 각각의 각자의 블록의 각자의 품질 메트릭이 상기 최소 품질 레벨 아래로 떨어지게 야기하는 데 사용되는 고속 사이클들의 수에 적어도 부분적으로 기초하여 상기 복수의 플래시 메모리 회로들 각각에 대한 상기 예상 사이클 카운트를 결정하는 단계; 및
    상기 복수의 플래시 메모리 회로들 각각의 블록들 각각과 관련하여 상기 복수의 플래시 메모리 회로들 각각에 대한 상기 예상 사이클 카운트를 저장하는 단계를 추가로 포함하는, 프로세서에 의해 수행되는 방법.
  16. 제15항에 있어서,
    상기 복수의 플래시 메모리 회로들 각각의 각자의 블록을 사이클링한 후에 상기 복수의 플래시 메모리 회로들 각각의 각자의 블록을 비활성으로 마킹하는 단계를 추가로 포함하는, 프로세서에 의해 수행되는 방법.
  17. 제15항에 있어서,
    상기 블록 세트들 각각의 블록들 각각과 관련된 상기 예상 사이클 카운트 및 상기 블록 세트들 각각의 블록들 각각에 대한 상기 데이터 저장 동작들을 위해 사용된 사이클들의 수에 적어도 부분적으로 기초하여 상기 블록 세트들 각각의 상기 블록들 각각에 대한 잔여 사이클 카운트를 결정하는 단계를 추가로 포함하는, 프로세서에 의해 수행되는 방법.
  18. 제12항에 있어서,
    상기 블록 세트들 모두에 걸친 현재 저장 용량이 최소 저장 용량 아래로 부족할 때 상기 적어도 하나의 제2 기준이 충족되는 것으로 결정하는 단계를 추가로 포함하는, 프로세서에 의해 수행되는 방법.
  19. 코드가 저장된 컴퓨터 판독 가능 저장 매체로서,
    상기 코드는,
    데이터 저장 동작들을 위해 플래시 메모리 회로들의 블록 세트들을 사용하는 코드 - 상기 블록 세트들 각각은 상기 플래시 메모리 회로들 각각으로부터의 적어도 하나의 블록을 포함하고, 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들은 활성으로 마킹되고, 활성으로 마킹되는 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들은 상기 데이터 저장 동작들을 위해 사용됨 -;
    활성으로 마킹되는 상기 블록 세트들 중 적어도 일부 블록 세트들의 블록들 중 적어도 일부 블록들이 상기 데이터 저장 동작들을 위해 사용되는 동안 상기 블록 세트들 각각의 블록 각각의 품질 메트릭들을 모니터링하는 코드;
    상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록의 품질 메트릭이 언제 최소 품질 레벨 아래로 떨어지는지를 결정하는 코드;
    상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록을 일시적 비활성으로 마킹하는 코드 - 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록은 일시적 비활성으로 마킹되는 동안에는 상기 데이터 저장 동작들을 위해 사용되지 않음 -;
    활성으로 마킹되는 상기 블록 세트들 중 하나의 블록 세트의 블록들의 수가 상기 블록 세트들 중 하나의 블록 세트와 관련된 코드 레이트에 대한 활성 블록들의 최소 수 아래로 떨어질 때 적어도 하나의 기준이 충족되는 것으로 결정하는 코드 - 상기 블록 세트들 각각이 상기 코드 레이트와 관련됨 -; 및
    상기 적어도 하나의 기준이 충족될 때, 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록을 활성으로 마킹하는 코드 - 상기 블록 세트들 중 하나의 블록 세트의 블록들 중 하나의 블록은 활성으로 마킹되는 동안 상기 데이터 저장 동작들을 위해 다시 사용됨 -
    를 포함하는, 컴퓨터 판독 가능 저장 매체.
  20. 제19항에 있어서, 상기 코드는,
    상기 기준이 충족될 때 상기 블록 세트들 중 하나의 블록 세트와 관련된 코드 레이트를 감소시키는 코드; 및
    상기 코드 레이트가 감소될 때 일시적 비활성으로 마킹되는 상기 블록 세트들 중 하나의 블록 세트의 임의의 블록들을 활성으로 마킹하는 코드 - 활성으로 마킹되는 상기 블록 세트들 중 하나의 블록 세트의 임의의 블록들은 상기 데이터 저장 동작들을 위해 다시 사용됨 -
    를 추가로 포함하는, 컴퓨터 판독 가능 저장 매체.
  21. 시스템으로서,
    블록들을 각각 포함하는 복수의 플래시 메모리 회로들;
    상기 복수의 플래시 메모리 회로들 각각의 블록들 각각의 상태를 포함하는 데이터 구조를 저장하도록 구성된 랜덤 액세스 메모리(RAM) - 상기 복수의 플래시 메모리 회로들 각각의 블록들 각각의 상태는 상기 복수의 플래시 메모리 회로들 각각의 블록들 각각이 활성으로 마킹되는지 또는 일시적 비활성으로 마킹되는지를 적어도 지시함 -;
    호스트 장치에 통신적으로 결합된 인터페이스; 및
    제어기
    를 포함하고,
    상기 제어기는,
    상기 호스트 장치에 의해 지시되는 데이터 저장 동작들을 위해 상기 복수의 플래시 메모리 회로들의 블록들의 세트들을 사용하고 - 상기 블록들의 세트들 각각은 상기 복수의 플래시 메모리 회로들 각각으로부터의 적어도 하나의 블록을 포함하고, 상기 블록들의 세트들 중 적어도 일부 세트들의 블록들 중 적어도 일부 블록들은 상기 데이터 구조에 활성으로 마킹되고, 활성으로 마킹되는 상기 블록들의 세트들 중 적어도 일부 세트들의 블록들 중 적어도 일부 블록들은 상기 데이터 저장 동작들을 위해 사용됨 -;
    상기 데이터 구조에 활성으로 마킹되는 상기 블록들의 세트들 중 적어도 일부 세트들의 블록들 중 적어도 일부 블록들이 상기 데이터 저장 동작들을 위해 사용되는 동안 상기 블록들의 세트들 각각의 블록들 각각의 품질 메트릭을 모니터링하고;
    상기 블록들의 세트들 중 하나의 세트의 블록들 중 하나의 블록의 품질 메트릭이 언제 최소 품질 레벨 아래로 떨어지는지를 결정하고;
    상기 블록들의 세트들 중 하나의 세트의 블록들 중 하나의 블록을 상기 데이터 구조에 일시적 비활성으로 마킹하고 - 상기 블록들의 세트들 중 하나의 세트의 블록들 중 하나의 블록은 상기 데이터 구조에 일시적 비활성으로 마킹되는 동안에는 상기 데이터 저장 동작들을 위해 사용되지 않음 -;
    활성으로 마킹되는 상기 블록들의 세트들 중 하나의 세트의 블록들의 수가 상기 블록들의 세트들 중 하나의 세트와 관련된 코드 레이트에 대한 활성 블록들의 최소 수 아래로 떨어질 때 적어도 하나의 기준이 충족되는 것으로 결정하고 - 상기 블록들의 세트들 각각이 상기 코드 레이트와 관련됨 -;
    상기 적어도 하나의 기준이 충족될 때, 상기 블록들의 세트들 중 하나의 세트의 블록들 중 하나의 블록을 상기 데이터 구조에 활성으로 마킹하도록 - 상기 블록들의 세트들 중 하나의 세트의 블록들 중 하나의 블록은 상기 데이터 구조에 활성으로 마킹되는 동안 상기 데이터 저장 동작들을 위해 다시 사용됨 -
    구성되는, 시스템.
  22. 삭제
KR1020170077442A 2016-07-29 2017-06-19 적응성 마모 균등화 KR102193946B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662368967P 2016-07-29 2016-07-29
US62/368,967 2016-07-29
US15/331,552 US10282111B2 (en) 2016-07-29 2016-10-21 Adaptive wear levelling
US15/331,552 2016-10-21

Publications (2)

Publication Number Publication Date
KR20180013702A KR20180013702A (ko) 2018-02-07
KR102193946B1 true KR102193946B1 (ko) 2020-12-22

Family

ID=61009714

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170077442A KR102193946B1 (ko) 2016-07-29 2017-06-19 적응성 마모 균등화

Country Status (3)

Country Link
US (1) US10282111B2 (ko)
KR (1) KR102193946B1 (ko)
CN (1) CN107665094B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223022B2 (en) * 2017-01-27 2019-03-05 Western Digital Technologies, Inc. System and method for implementing super word line zones in a memory device
US10942662B2 (en) * 2018-11-30 2021-03-09 International Business Machines Corporation Relocating and/or re-programming blocks of storage space based on calibration frequency and resource utilization
CN111276179B (zh) * 2020-02-14 2022-02-18 苏州浪潮智能科技有限公司 一种NAND Flash错误率的分组测试装置
CN111552582B (zh) * 2020-04-24 2022-10-14 江苏芯盛智能科技有限公司 筛选闪存弱块的方法、装置和固态硬盘
CN113934360B (zh) * 2020-06-29 2024-04-12 戴尔产品有限公司 多存储设备生命周期管理系统
US12026042B2 (en) * 2022-06-01 2024-07-02 Micron Technology, Inc. Adaptive wear leveling for endurance compensation
US12056378B1 (en) * 2023-01-27 2024-08-06 Dell Products L.P. Storage management system and method
CN117785025B (zh) * 2023-11-17 2024-05-10 青海师范大学 Ecc与raid5混合编码优化ssd读性能的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090276602A1 (en) 2006-03-31 2009-11-05 Olivier Chedru Memory management system for reducing memory fragmentation
US20100228928A1 (en) 2009-03-04 2010-09-09 Micron Technology, Inc. Memory block selection
US20110029715A1 (en) 2009-07-29 2011-02-03 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
US20120311237A1 (en) 2011-05-30 2012-12-06 Young-Jin Park Storage device, storage system and method of virtualizing a storage device
JP2013041547A (ja) 2011-08-19 2013-02-28 Toshiba Corp 情報処理装置、性能評価ツール、外部記憶装置の性能評価方法
US20160054937A1 (en) 2014-08-20 2016-02-25 Sandisk Technologies Inc. Temperature accelerated stress time

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US8171380B2 (en) * 2006-10-10 2012-05-01 Marvell World Trade Ltd. Adaptive systems and methods for storing and retrieving data to and from memory cells
US8499227B2 (en) * 2010-09-23 2013-07-30 Micron Technology, Inc. Memory quality monitor based compensation method and apparatus
US8738846B2 (en) 2010-10-15 2014-05-27 Arkologic Limited File system-aware solid-state storage management system
US8356153B2 (en) 2010-11-19 2013-01-15 International Business Machines Corporation Adaptive wear leveling via monitoring the properties of memory reference stream
US9569320B2 (en) * 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US8626989B2 (en) * 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
US8898373B1 (en) 2011-06-29 2014-11-25 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US8832506B2 (en) 2012-01-20 2014-09-09 International Business Machines Corporation Bit error rate based wear leveling for solid state drive memory
US8862810B2 (en) 2012-09-27 2014-10-14 Arkologic Limited Solid state device write operation management system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090276602A1 (en) 2006-03-31 2009-11-05 Olivier Chedru Memory management system for reducing memory fragmentation
US20100228928A1 (en) 2009-03-04 2010-09-09 Micron Technology, Inc. Memory block selection
US20110029715A1 (en) 2009-07-29 2011-02-03 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
US20120311237A1 (en) 2011-05-30 2012-12-06 Young-Jin Park Storage device, storage system and method of virtualizing a storage device
JP2013041547A (ja) 2011-08-19 2013-02-28 Toshiba Corp 情報処理装置、性能評価ツール、外部記憶装置の性能評価方法
US20160054937A1 (en) 2014-08-20 2016-02-25 Sandisk Technologies Inc. Temperature accelerated stress time

Also Published As

Publication number Publication date
US20180032268A1 (en) 2018-02-01
KR20180013702A (ko) 2018-02-07
CN107665094A (zh) 2018-02-06
US10282111B2 (en) 2019-05-07
CN107665094B (zh) 2020-06-23

Similar Documents

Publication Publication Date Title
KR102193946B1 (ko) 적응성 마모 균등화
CN108269604B (zh) 用于读取干扰检测以及处理的方法和装置
KR101679530B1 (ko) 이용 가능한 메모리 공간에 기초한 이중화 저장 장치 구성의 선택
Mahdisoltani et al. Proactive error prediction to improve storage system reliability
US9003224B2 (en) Managing unreliable memory in data storage systems
CN107179961B (zh) 存储系统中错误校正编码数据的冗余
US8799747B2 (en) Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
TWI674767B (zh) 用於nand快閃記憶體的渦輪乘積碼
US11055215B2 (en) Memory system and control method for garbage collection in a memory system
US20180246794A1 (en) Methods for monitoring and managing memory devices
US9639419B2 (en) Read voltage level estimating method, memory storage device and memory control circuit unit
US20170139761A1 (en) Variable-Term Error Metrics Adjustment
US20140229655A1 (en) Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure
US20100235713A1 (en) Non-volatile memory generating read reclaim signal and memory system
TWI566252B (zh) 非揮發性記憶體裝置進行耗損管理之方法
US9069695B2 (en) Correction of block errors for a system having non-volatile memory
TW201415468A (zh) 在一非揮發性記憶體中測量平均抹除之記憶體胞損壞
US9214963B1 (en) Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US20200089563A1 (en) Error Recovery Handling
US10481809B2 (en) Read disturb compensation using weighted programming patterns
US9026893B1 (en) Dynamically assigning inactive pages not used in Reed-Solomon code in non-volatile solid-state storage array
US9880926B1 (en) Log structured reserved zone for a data storage device
CN106980464B (zh) 利用过采样读取的系统最优化方法
US12026042B2 (en) Adaptive wear leveling for endurance compensation
TWI592801B (zh) 資料儲存裝置及其資料維護方法

Legal Events

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