KR20210038692A - 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링 - Google Patents

비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링 Download PDF

Info

Publication number
KR20210038692A
KR20210038692A KR1020217008684A KR20217008684A KR20210038692A KR 20210038692 A KR20210038692 A KR 20210038692A KR 1020217008684 A KR1020217008684 A KR 1020217008684A KR 20217008684 A KR20217008684 A KR 20217008684A KR 20210038692 A KR20210038692 A KR 20210038692A
Authority
KR
South Korea
Prior art keywords
wear leveling
data
memory
memory component
leveling operation
Prior art date
Application number
KR1020217008684A
Other languages
English (en)
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 KR20210038692A publication Critical patent/KR20210038692A/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/065Replication 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/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
    • 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
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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)
  • Memory System (AREA)

Abstract

메모리 서브 시스템은 제1 간격 후에 메모리 컴포넌트의 복수의 개별 데이터 유닛들 사이에서 제1 웨어 레벨링 동작을 수행하고 제2 간격 후에 메모리 컴포넌트의 제1 복수의 데이터 유닛 그룹들 사이에서 제2 웨어 레벨링 동작을 수행하며, 제1 복수의 그룹들의 제1 그룹은 복수의 개별 데이터 유닛들을 포함한다. 메모리 서브 시스템은 제3 간격 후에 메모리 컴포넌트의 제2 복수의 데이터 유닛 그룹들 사이에서 제3 웨어 레벨링 동작을 더 수행하며, 제2 복수의 그룹들의 제2 그룹은 제1 복수의 데이터 유닛 그룹들을 포함한다.

Description

비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링
본 개시의 실시예들은 일반적으로 메모리 서브 시스템에 관한 것으로, 보다 구체적으로는, 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링에 관한 것이다.
메모리 서브 시스템은 솔리드 스테이트 드라이브(SSD)와 같은 저장 시스템일 수 있으며, 데이터를 저장하는 하나 이상의 메모리 컴포넌트들을 포함할 수 있다. 메모리 컴포넌트들은, 예를 들어, 비휘발성 메모리 컴포넌트들 및 휘발성 메모리 컴포넌트들일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브 시스템을 사용하여 메모리 컴포넌트들에 데이터를 저장하고 메모리 컴포넌트들로부터 데이터를 검색할 수 있다.
본 개시는 이하의 상세한 설명 및 본 개시의 다양한 구현예들의 첨부 도면들로부터 보다 완전하게 이해될 것이다. 그러나, 도면들은 본 개시를 특정 실시예들로 제한하는 것으로 받아들여져서는 안되며, 단지 설명 및 이해를 위한 것이다.
도 1은 본 개시의 일부 구현예들에 따른, 메모리 시스템을 포함하는 예시적인 컴퓨팅 환경을 예시한다.
도 2a는 본 개시의 일부 구현예들에 따른, 메모리 컴포넌트에서의 상이한 계층적 데이터 유닛들의 레벨들을 예시한다.
도 2b는 본 개시의 일부 구현예들에 따른, 대수 맵핑을 사용하여 수행될 웨어 레벨링을 예시한다.
도 2c는 본 개시의 일부 구현예들에 따른, 간접적 맵핑을 사용하여 수행될 웨어 레벨링을 예시한다.
도 3은 본 개시의 일부 실시예들에 따른, 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링을 수행하는 예시적인 방법의 흐름도이다.
도 4는 본 개시의 일부 실시예들에 따른, 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링을 수행하는 예시적인 방법의 흐름도이다.
도 5는 본 개시의 구현예들이 동작될 수 있는 컴퓨터 시스템의 예시적인 기계의 블록도이다.
본 개시의 측면들은 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링에 관한 것이다. 메모리 서브 시스템은 이하에서 "메모리 장치"로도 지칭된다. 메모리 서브 시스템의 예로는 솔리드 스테이트 드라이브(SSD)와 같은 저장 시스템이 있다. 일부 실시예들에서, 메모리 서브 시스템은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 컴포넌트들을 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있으며 메모리 서브 시스템에 검색될 데이터를 요청할 수 있다.
메모리 서브 시스템에 의해 사용되는 메모리 컴포넌트들은 메모리 서브 시스템의 동작에 문제들을 제공하는 특정 속성들을 가질 수 있다. 예를 들어, 비휘발성 메모리 컴포넌트들과 같은 일부 메모리 컴포넌트들은 제한된 내구성을 갖는다. 메모리 컴포넌트들의 개별 세그먼트들, 데이터 유닛들 또는 블록들은 물리적 마모로 인해 메모리 컴포넌트들이 고장 나기 전에 한정된 횟수만큼만 기입, 판독 및/또는 소거될 수 있다. 메모리 컴포넌트들의 이러한 제한된 내구성에 대응하기 위해, 메모리 컴포넌트들의 마모를 관리하는 기술들이 개발되었다.
기존 메모리 서브 시스템에서 내구성을 관리하는 한 가지 기술은 웨어 레벨링이다. 웨어 레벨링 동작은 판독, 기입 및 소거 동작들을 균등하게 분산시키고, 이에 따라 해당 물리적 마모를 메모리 컴포넌트들에 걸쳐 분산시키려고 시도할 수 있다. 하나의 메모리 컴포넌트는 각각 물리적 마모를 경험하는 메모리 컴포넌트의 페이지들 또는 블록들과 같은 몇 개의 개별 데이터 유닛들로 나눌 수 있다. 이러한 데이터 유닛들은 단일 동작으로 기입하거나 소거될 수 있는 메모리 컴포넌트의 개별 세그먼트를 나타낼 수 있다. 기입 카운트(예를 들어, 데이터 유닛에 데이터를 기입하는 기입 동작이 데이터 유닛의 수명 동안 데이터 유닛에서 수행되는 횟수), 판독 카운트(예를 들어, 데이터 유닛으로부터의 데이터를 판독하는 판독 동작이 데이터 유닛의 수명 동안 데이터 유닛에서 수행되는 횟수) 데이터 유닛이 데이터 유닛의 수명 동안 데이터 유닛에 대해 수행됨) 또는 삭제 카운트 (예를 들어, 데이터 유닛에서 데이터를 지우는 지우기 작업이 데이터의 수명 동안 데이터 유닛에서 수행되는 횟수) 단위)는 메모리 컴포넌트들의 데이터 유닛에 대한 강력한 마모 지표들이 될 수 있다. 따라서, 기존 웨어 레벨링 기술들은 종종 소팅(sorting) 프로세스를 사용하여 판독 또는 기입 카운트들이 높은 데이터 유닛들 및 판독 카운트 또는 기입 카운트들이 낮은 데이터 유닛들을 찾는다. 높은 판독 또는 기입 카운트를 갖는 데이터 유닛으로부의 데이터는 메모리 컴포넌트의 데이터 유닛들에 걸쳐 마모를 고르게 분산시키려고 시도 시 낮은 판독 또는 기입 카운트를 갖는 데이터 유닛의 데이터와 스왑될 수 있다.
그러나, 상이한 유형의 메모리 컴포넌트들은 다양한 수의 데이터 유닛들을 포함할 수 있다. 예를 들어, 비휘발성 메모리 셀들의 교차점 어레이는 플래시 기반 메모리 컴포넌트보다 훨씬 더 작은 데이터 유닛 크기를 가질 수 있으며, 따라서 유사한 용량의 메모리 컴포넌트에 대해 훨씬 더 많은 수의 데이터 유닛들을 가질 수 있다. 비휘발성 메모리 셀들의 교차점 어레이는 스택 가능한 크로스 그리드 데이터 액세스 어레이(stackable cross-gridded data access array)와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 교차점 비휘발성 메모리는 기입 인-플레이스 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 따라서, 이러한 메모리 컴포넌트들은 "인-플레이스" 데이터 대체를 수행할 수 있다. 이러한 메모리 컴포넌트의 데이터 유닛들의 수가 많기 때문에, 메모리 컴포넌트와 관련된 다양한 카운트 값들을 검색, 저장 및 소팅하는 데 상당한 양의 컴퓨팅 리소스들(예를 들어, 처리 및 메모리 리소스들)이 사용된다. 추가로, 많은 수의 데이터 유닛들을 검색, 저장 및 소팅하는 데는 비례적으로 많은 시간이 소요되며, 이는 메모리 서브 시스템의 레이턴시에 크게 기여한다.
본 개시의 측면들은 비휘발성 메모리에 대한 멀티-레벨 웨어 레벨링을 구현함으로써 상기 및 다른 결함들을 해결한다. 한 구현예에서, 멀티-레벨 웨어 레벨링은 크기가 다른 데이터 유닛들의 레벨들의 계층을 활용한다. 예를 들어, 제1 레벨은 데이터 블록 또는 메모리 컴포넌트의 페이지(이는 본원에서 "관리 유닛"이라고도 함)와 같은 개별 데이터 유닛들을 나타낼 수 있는 반면, 제2 레벨은 다수의 데이터 유닛 그룹(이는 본원에서 "수퍼 관리 유닛"이라고도 함)을 나타낼 수 있다. 제3 레벨은 제2 레벨의 여러 데이터 유닛 그룹들의 그룹(즉, 수퍼 관리 유닛 그룹)을 나타낼 수 있다. 실시예에 따라, 계층에는 임의 개수의 상이한 레벨들이 있을 수 있으며, 각각은 연속적으로 더 큰 데이터 유닛 그룹들에서 동작한다. 웨어 레벨링은 서로 다른 웨어 레벨링 기술들과 서로 다른 빈도들을 사용하여 계층의 각 레벨에서 수행될 수 있다. 예를 들어, 멀티-레벨 웨어 레벨링은 5분마다 또는 1000회의 호스트 기입마다 제1 함수에 의해 구현되는 대수 매핑을 사용하는 제1 레벨에서의 웨어 레벨링, 및 30분마다 또는 5000회의 호스트 기입마다 제2 함수에 의해 구현되는 대수 맵핑을 사용하는 제2 레벨에서의 웨어 레벨링을 포함할 수 있다. 제1 맵핑 함수는 실시예에 따라 제1 매핑 함수와 동일하거나 다를 수 있다. 제3 레벨에서의 웨어 레벨링은 제3 함수에 의해 구현되는 대수 맵핑을 사용하거나 1시간마다 도는 10,000회의 호스트 기입마다 룩업 테이블에 의해 구현되는 간접적 완전 연관 맵핑을 사용하여 수행될 수 있다. 다른 구현예들에서, 웨어 레벨링 기술들 및/또는 관련 빈도들은 적절하게 변할 수 있다. 본원에 설명된 멀티-레벨 웨어 레벨링 방식은 인-플레이스 데이터 대체 매체가 사용될 때와 같이, 많은 수의 데이터 유닛들을 가지며, 제3 레벨에서 사용되는 룩업 테이블이 크기가 지나치게 커지지 않도록 대량의 저장 용량을 갖는 메모리 서브 시스템들에서 효율적이고 효과적인 웨어 레벨링을 가능하게 한다. 데이터 액세스 레이턴시들뿐만 아니라 웨어 레벨링에 사용되는 처리 및 메모리 리소스들은 감소되는 반면, 메모리 서브 시스템의 다수의 메모리 컴포넌트들의 마모(예를 들어, 메모리 컴포넌트에서 수행되는 동작들의 수 및/또는 메모리 컴포넌트에 기입된 데이터의 양)는 보다 균등하게 분산되어, 메모리 서브 시스템의 다른 메모리 컴포넌트들에 비해 메모리 서브 시스템의 특정 메모리 컴포넌트의 조기 고장을 방지할 수 있다. 게다가, 기입 증폭 오버헤드가 적고 웨어 레벨링에 사용되는 메모리 풋프린트가 감소된다. 하이브리드 웨어 레벨링의 추가 세부사항들은 도 1 내지 5와 관련하여 하기에 제공된다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 환경(100)을 예시한다. 메모리 서브 시스템(110)은 메모리 컴포넌트들(112A 내지 112N)과 같은 매체를 포함할 수 있다. 메모리 컴포넌트들(112A 내지 112N)은 휘발성 메모리 컴포넌트들, 비휘발성 메모리 컴포넌트들 또는 이들의 조합일 수 있다. 일부 실시예들에서, 메모리 서브 시스템은 저장 시스템이다. 저장 시스템의 예로는 SSD가 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 컴퓨팅 환경(100)은 메모리 서브 시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 데이터를 메모리 서브 시스템(110)에 기입하고 메모리 서브 시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 장치(120)는 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 장치, 또는 메모리와 처리 장치를 포함하는 이러한 컴퓨팅 장치와 같은 컴퓨팅 장치일 수 있다. 호스트 시스템(120)은 호스트 시스템(120)이 메모리 서브 시스템(110)로부터 데이터를 판독하거나 이에 데이터를 기입할 수 있도록 메모리 서브 시스템(110)을 포함하거나 이에 결합될 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 본원에 사용된 바와 같이, "~에 결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 중간 컴포넌트들이 없는) 직접 통신 연결일 수 있는, 컴포넌트들 사이의 연결을 지칭한다. 물리적 호스트 인터페이스의 예들은, 이에 제한되는 것은 아니나, 직렬 고급 기술 결합(SATA) 인터페이스, 주변 컴포넌트 인터커넥트 익스프레스(PCIe) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 광섬유 채널, 직렬 결합된 SCSI(SAS) 등을 포함한다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합되는 경우 NVM 익스프레스(NVMe) 인터페이스를 추가로 이용하여 메모리 컴포넌트들(112A 내지 112N)에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 컴포넌트들(112A 내지 112N)은 상이한 유형의 비휘발성 메모리 컴포넌트들 및/또는 휘발성 메모리 컴포넌트들의 임의의 조합을 포함할 수 있다. 비휘발성 메모리 컴포넌트들의 예는 네거티브-앤드(NAND)형 플래시 메모리를 포함한다. 메모리 컴포넌트들(112A 내지 112N) 각각은 단일 레벨 셀(single level cells; SLC)들 또는 멀티 레벨 셀(multi-level cells; MLC)들(예를 들어, 트리플 레벨 셀(triple level cells; TLC)들 또는 쿼드 레벨 셀(quad-level cells; QLC)들)과 같은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 일부 실시예들에서, 특정 메모리 컴포넌트는 메모리 셀들의 SLC 부분 및 MLC 부분 둘 다를 포함할 수 있다. 메모리 셀 각각은 호스트 시스템(120)에 의해 사용된 하나 이상의 데이터 비트들(예를 들어, 데이터 블록들)을 저장할 수 있다. NAND형 플래시 메모리와 같은 비휘발성 메모리 컴포넌트들이 설명되어 있지만, 메모리 컴포넌트들(112A 내지 112N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 실시예들에서, 메모리 컴포넌트들(112A 내지 112N)은, 이에 제한되는 것은 아니나, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), 네거티브-오어(NOR) 플래시 메모리, 전기 소거 가능한 프로그래밍 가능 읽기 전용 메모리(EEPROM) 및 비휘발성 메모리 셀들의 교차점 어레이일 수 있다. 비휘발성 메모리의 교차점 어레이는 스택 가능한 크로스 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 교차점 비휘발성 메모리는 기입 인-플레이스 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 게다가, 메모리 컴포넌트들(112A 내지 112N)의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 컴포넌트의 단위를 지칭할 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹화될 수 있다.
메모리 시스템 컨트롤러(115)(이하 "컨트롤러"라 함)는 메모리 컴포넌트들(112A 내지 112N)에서 데이터를 판독하거나, 데이터를 기입하거나 데이터를 소거하는 것과 같은 동작들 및 다른 이러한 동작들을 수행하기 위해 메모리 컴포넌트들(112A 내지 112N)과 통신할 수 있다. 컨트롤러(115)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(115)는, 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(FPGA), 어플리케이션별 집적 회로(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다. 컨트롤러(115)는 로컬 메모리(119)에 저장된 인스트럭션들을 실행하도록 구성된 프로세서(처리 장치)(117)를 포함할 수 있다. 예시된 예에서, 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들 및 루틴들을 수행하기 위한 인스트럭션들을 저장하도록 구성된 임베디드된 메모리를 포함한다. 일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터, 페치 데이터(fetched data) 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 읽기 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브 시스템(110)은 컨트롤러(115)를 포함하는 것으로 예시되어 있지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(110)은 컨트롤러(115)를 포함하지 않을 수 있으며, 대신 (예를 들어, 외부 호스트에 의해 또는 메모리 서브 시스템으로부터 분리된 프로세서나 컨트롤러에 의해 제공된) 외부 제어에 의존할 수 있다.
일반적으로, 컨트롤러(115)는 호스트 시스템(120)으로부터 명령들 또는 동작들을 수신할 수 있으며, 메모리 컴포넌트들(112A 내지 112N)에 대한 원하는 액세스를 달성하기 위해 명령들 또는 동작들을 인스트럭션들 또는 적절한 명령들로 변환할 수 있다. 컨트롤러(115)는 웨어 레벨링 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들 및 메모리 컴포넌트들(112A 내지 112N)과 관련되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환들과 같은 다른 동작들을 담당할 수 있다. 컨트롤러(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 컴포넌트들(112A 내지 112N)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 뿐만 아니라, 호스트 시스템으로부터 수신된 명령들을 메모리 컴포넌트들(112A 내지 112N)에 액세스하기 위한 명령 인스트럭션들로 변환할 수 있다.
메모리 서브 시스템(110)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 컨트롤러(115)로부터 어드레스를 수신하고 메모리 컴포넌트들(112A 내지 112N)에 액세스하기 위해 어드레스를 디코딩할 수 있는 캐시나 버퍼(예를 들어, DRAM) 및 어드레스 회로부(예를 들어, 행 디코더 또는 열 디코더)를 포함할 수 있다.
메모리 서브 시스템(110)은 메모리 서브 시스템(110)의 메모리 컴포넌트들(112A 내지 112N)에 걸쳐 멀티-레벨 웨어 레벨링을 구현하는 데 사용될 수 있는 웨어 레벨링 관리 컴포넌트(113)를 포함한다. 일부 실시예들에서, 컨트롤러(115)는 웨어 레벨링 관리 컴포넌트(113)의 적어도 일부를 포함한다. 예를 들어, 컨트롤러(115)는 본원에 설명된 동작들을 수행하기 위해 로컬 메모리(119)에 저장된 인스트럭션들을 실행하도록 구성된 프로세서(처리 장치)(117)를 포함할 수 있다. 일부 실시예들에서, 웨어 레벨링 관리 컴포넌트(113)는 호스트 시스템(120), 어플리케이션 또는 운영 체제의 일부이다.
웨어 레벨링 관리 컴포넌트(113)는 서로 다른 크기들을 갖는 데이터 유닛들의 레벨들의 계층을 사용하여 멀티-레벨 웨어 레벨링을 수행할 수 있다.
예를 들어, 제1 레벨은 메모리 컴포넌트(즉, 관리 유닛)의 데이터 블록 또는 페이지와 같은 개별 데이터 유닛들을 나타낼 수 있는 반면, 제2 레벨은 다수의 데이터 유닛(즉, 수퍼 관리 유닛) 그룹을 나타낼 수 있다. 제3 레벨은 제2 레벨의 여러 데이터 유닛 그룹들의 그룹(즉, 수퍼 관리 유닛 그룹)을 나타낼 수 있다. 실시예에 따라, 계층에는 임의 개수의 상이한 레벨들이 있을 수 있으며, 각각은 연속적으로 더 큰 데이터 유닛 그룹들에서 동작한다. 웨어 레벨링은 서로 다른 웨어 레벨링 기술들과 서로 다른 빈도들을 사용하여 계층의 각 레벨에서 수행될 수 있다. 예를 들어, 웨어 레벨링 관리 컴포넌트(113)는 제1 빈도로 제1 레벨에서 제1 함수를 사용하여 대수 매핑을 구현할 수 있고, 제2 빈도로 제2 레벨에서 제2 함수를 사용하여 대수 매핑을 구현할 수 있다. 추가로, 웨어 레벨링 관리 컴포넌트(113)는 제3 함수를 사용하여 대수 맵핑을 구현하거나 제3 빈도로 제3 레벨에서 룩업 데이터에 의해 구현되는 간접적 완전 연관 맵핑을 구현할 수 있다. 각각의 레벨에서 사용된 대수 맵핑 함수들은 실시예에 따라 동일하거나 다를 수 있다. 한 구현예에서, 웨어 레벨링은 제1 레벨의 관리 유닛들이 제2 레벨의 수퍼 관리 유닛들보다 크기가 더 작기 때문에 제2 레벨보다 제1 레벨에서 더 자주 수행되며, 또한 제3 레벨보다 제2 레벨에서 더 자주 수행된다. 웨어 레벨링 관리 컴포넌트(113)의 동작들에 관한 추가 세부 사항들이 아래에 설명된다.
구현예들에서, 웨어 레벨링 동작은 메모리 컴포넌트들(112A-112N)(일반적으로 본원에서 "메모리 컴포넌트(들)(112)"이라고 함)의 서비스 수명을 연장시키는 동작을 포함할 수 있다. 예를 들어, 웨어 레벨링 동작은 메모리 컴포넌트들(112)의 데이터 유닛 세트에 걸쳐 물리적 마모를 고르게 분산시키려고 시도할 수 있다. 데이터 유닛은 메모리 컴포넌트들(112)의 물리적 메모리의 양을 지칭할 수 있다.
도 2a는 메모리 컴포넌트들(112) 내의 상이한 레벨의 계층적 데이터 유닛을 예시한다. 관리 유닛들(MU들)은 데이터 유닛의 한 예이다. 예를 들어, 관리 유닛은 비휘발성 메모리의 교차점 어레이의 페이지(예를 들어, 교차점 어레이레 기입되거나 그로부터 판독될 수 있는 가장 작은 데이터 유닛) 또는 플래시 기반 메모리의 블록(예를 들어, 플래시 기반 메모리에서 소거될 수 있는 가장 작은 데이터 유닛)일 수 있다. 수퍼 관리 유닛들(SMU들)은 데이터 유닛들의 다른 예이며, 다수의 관리 유닛 세트(예를 들어, 1000개의 MU들)를 포함할 수 있다. 데이터 유닛 세트는 하나 이상의 메모리 컴포넌트들(112)을 구성하는 데이터 유닛들일 수 있다. 예를 들어, 메모리 컴포넌트들(112)의 데이터 유닛 세트는 메모리 컴포넌트들(112)의 페이지들 또는 블록들의 전부 또는 대부분일 수 있다. 도 2a는 멀티-레벨 계층에서 세 개의 레벨들의 예를 예시한다. 제1(최저) 레벨에서, 웨어 레벨링 관리 컴포넌트(113)는 단일 수퍼 관리 유닛(210) 내의 다수의 개별 데이터 유닛들(즉, 관리 유닛들(212, 214, 216 및 218)) 사이에서 웨어 레벨링을 수행한다. 계층은 실제로 다수의 수퍼 관리 유닛들을 포함할 수 있지만, 웨어 레벨링 관리 컴포넌트(113)는 제1 레벨에서 개별적으로 각각에서 동작한다. 추가로, 제한된 수의 관리 유닛들만 예시되어 있지만, 실제로는 각각이 임의 개수의 관리 유닛들(예를 들어, 500개, 1000개, 2000개)을 포함하는, 임의 개수의 수퍼 관리 유닛들이 있을 수 있다. 계층의 제2(중간) 레벨에서, 웨어 레벨링 관리 컴포넌트(113)는 각각이 다수의 개별 관리 유닛들을 포함하는, 다수의 데이터 유닛 그룹들(즉, 수퍼 관리 유닛들(210 및 220)) 사이에서 웨어 레벨링을 수행한다. 일 실시예에서, 데이터 유닛 그룹들은 세트(250)으로 지칭되는 대규모 그룹의 일부이다. 계층의 제3(상부) 레벨에서, 웨어 레벨링 관리 컴포넌트(113)는 각각이 다수의 수퍼 관리 유닛들을 포함하는, 데이터 유닛 그룹들의 다수의 그룹들(즉, 세트들(250 및 260)) 사이에서 웨어 레벨링을 수행한다. 예를 들어, 세트(250)는 수퍼 관리 유닛들(210 및 220)을 포함하는 반면, 세트(260)는 수퍼 관리 유닛들(230 및 240)을 포함한다. 일 실시예에서, 더 큰 데이터 유닛 세트 그룹들은 수퍼세트(270)로 지칭된다.
일 실시예에서, 하이브리드 웨어 레벨링 관리 컴포넌트(113)는 상이한 웨어 레벨링 기술들을 사용하고 상이한 빈도들로 계층의 각 레벨에서 웨어 레벨링을 수행할 수 있다. 예를 들어, 하이브리드 웨어 레벨링 관리 컴포넌트(113)는 제1 빈도로 제1 대수 맵핑 함수를 사용하여 제1 레벨에서 수퍼 관리 유닛(210)의 관리 유닛들(212, 214, 216 및 218) 사이에서 SMU 내 웨어 레벨링을 수행할 수 있다. 추가로, 하이브리드웨어 레벨링 관리 컴포넌트(113)는 덜 빈번한 제2 빈도로 제1 대수 맵핑 함수를 사용하여 수퍼 관리 유닛들(210 및 220) 사이에서 SMU 간 웨어 레벨링을 수행할 수 있다. 더욱이, 하이브리드 웨어 레벨링 관리 컴포넌트(113)는 제3 대수 맵핑 함수를 사용하거나 또는 훨씬 덜 빈번한 제3 빈도로 룩업 테이블에 의해 구현되는 간접적 완전 연관 맵핑을 사용하여 수퍼 관리 유닛 세트들(250 및 260) 사이에서 세트 간 웨어 레벨링을 수행할 수 있다.
일부 구현예들에서, 웨어 레벨링 동작은 마모 메트릭이 높은 데이터 유닛의 데이터를 마모 메트릭이 낮은 다른 데이터 유닛으로 다시 기입할 수 있으며, 그 반대의 경우(예를 들어, 마모 메트릭이 낮은 데이터 유닛의 데이터를 마모 메트릭이 높은 다른 데이터 유닛으로 다시 기입)도 마찬가지이다. 구현예들에서, 마모 메트릭은 데이터 유닛의 물리적 마모 레벨을 나타낼 수 있다. 마모 메트릭의 일부 예에는 기입 카운트, 판독 카운트 또는 기입 카운트와 판독 카운트의 조합을 포함할 수 있다.
일부 구현예들에서, 마모 메트릭은 기입 카운트와 판독 카운트의 조합을 포함할 수 있다. 예를 들어, 마모 메트릭은 기입 카운트와 판독 카운트가 하나 이상의 방정식들을 사용하여 조합되는 특정 데이터 유닛에 대한 기입 카운트와 판독 카운트 둘 다를 포함할 수 있다. 판독 동작으로 인한 데이터 유닛의 물리적 마모는 기입 동작으로 인한 물리적 마모보다 적을 수 있다. 데이터 유닛에 대한 판독 카운트와 기입 카운트를 조합하기 위해, 데이터 유닛에 대한 판독 카운트 또는 기입 카운트는 기입 카운트 또는 판독 카운트에 가중치를 부여함으로써 정규화(예를 들어, 다른 스케일로 측정된 카운트를 공통 스케일로 조정)될 수 있다. 예를 들어, 데이터 유닛에 대한 판독 카운트는 분수(예를 들어, 0.8)를 곱해 마모 측면에서 판독 카운트들이 나타내는 기입 카운트들의 동등한 수를 결정할 수 있다. 데이터 유닛에 대한 가중된 판독 카운트 및 기입 카운트는 조합(예를 들어, 추가) 될 수 있으며 특정 데이터 유닛의 물리적 마모를 나타내는 마모 메트릭으로 사용될 수 있다.
일부 구현예들에서, 메모리 컴포넌트들(112)은 비휘발성 메모리 셀들의 교차점 어레이를 포함하는 비휘발성 메모리 장치들과 같은 비휘발성 메모리 장치들을 포함할 수 있다. 상기에 언급된 바와 같이, 비휘발성 메모리의 교차점 어레이는 스택 가능한 크로스 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가로, 아웃 오브 플레이스(out-of-place) 동작을 수행하는 많은 플래시 기반 메모리들과 달리(예를 들어, 기입될 위치의 데이터가 다른 데이터가 해당 위치에 프로그래밍될 수 있기 전에 소거됨), 교차점 비휘발성 메모리는 비휘발성 메모리 셀이 이전에 소거되지 않고 비휘발성 메모리 셀이 프로그래밍될 수 있는 기입 인-플레이스 동작을 수행할 수 있다. 교차점 비휘발성 메모리에 대한 마모 메트릭은 기입 인 플레이스 동작들을 수행하는 교차점 비휘발성 메모리의 능력으로 인해 소거 카운트를 포함하지 않을 수 있다는 것에 유의할 수 있다. 소거 카운트는 데이터 유닛의 데이터를 소거하는 소거 동작과 같은 메모리 동작이 데이터 유닛의 수명 동안 데이터 유닛에 대해 수행되는 횟수를 나타내는 값일 수 있다. 본 개시의 측면들은 다른 유형의 비휘발성 메모리 장치들 또는 다른 유형의 메모리 장치들에 적용될 수 있다.
도 2b는 본 개시의 일부 구현예들에 따른, 대수 맵핑을 사용하여 수행될 웨어 레벨링을 예시한다. 일 실시예에서, 대수 함수는 웨어 레벨렝 동작에서 데이터가 이동될 수 있는 적절한 물리적 위치를 결정하는 데 사용될 수 있다(예를 들어, Fn(논리적 MU 인덱스) = 물리적 MU 인덱스). 실시예에 따라, 맵핑 함수는 스왑 함수, 순환 시프트 함수, 기본 포인터 값과 자유 포인터 값을 이용하는 선형 함수, 또는 일부 다른 적절한 함수 중 적어도 하나를 포함할 수 있다. 이 함수는 논리적 인덱스를 새로운 물리적 위치에 대수 매핑하기 때문에, 이러한 웨어 레벨링은 높은 레벨들보다 계층의 제1 레벨 또는 제2 레벨에서 더 자주 그리고 낮은 리소스 활용률로 수행될 수 있다. 일 실시예에서, 웨어 레벨링 관리 컴포넌트(113)는 관리 유닛들(282, 284, 286 및 288)을 포함하는 수퍼 관리 유닛(280)에 대한 기본 포인터 값(281) 및 자유 포인터 값(285)을 유지한다. 기본 포인터 값(281)은 슈퍼 관리 유닛(280)의 시작 위치(즉, 제1 관리 유닛(282)의 위치)를 나타낸다. 자유 포인터 값(285)은 수퍼 관리 유닛(280) 내의 데이터 저장을 위한 가용 공간의 위치(즉, 관리 유닛(286)의 위치)를 나타낸다. 일 실시예에서, 웨어 레벨링 관리 컴포넌트(113)는 모든 N_자유 기입들 후에 자유 포인터 값(285)을 증가시키며, 여기서 N_자유는 고정된 수, 난수 또는 의사 난수일 수 있다. 웨어 레벨링 관리 컴포넌트(113)는 매 N_기본 단계들 후에 기본 포인터 값(281)을 추가로 감소시키며, 여기서 N_기본은 수퍼 관리 유닛(280)의 크기를 나타낸다. 따라서, 일 실시예에서, 대수 맵핑 함수는 다음과 같이 나타낼 수 있다:
if (로지컬 MU 인덱스 + 기본 포인터) mod SMU 크기 > 자유 포인터,
물리적 MU 인덱스 = (논리적 MU 인덱스 + 기본 포인터r) mod SMU 크기;
else,
물리적 MU 인덱스 = (논리적 MU 인덱스 + 기본 포인터) mod SMU 크기 + 1
도 2c는 본 개시의 일부 구현예들에 따른, 간접적 맵핑을 사용하여 수행될 웨어 레벨링을 예시한다. 간접적 맵핑을 사용하여, 추가 정보가 메모리 컴포넌트(112) 상의 타겟 물리적 위치를 결정하는 데 사용된다. 일 실시예에서, 웨어 레벨링 관리 컴포넌트(113)는 수퍼 관리 유닛으로부터 메모리 컴포넌트(112) 상의 이용 가능한 물리적 위치로 데이터를 복사한다. 이 물리적 위치는 기입 카운트가 가장 적은 위치, 최근에 가장 적게 액세스된 위치 등과 같은 임의의 다수의 방식들로 결정될 수 있다. 사용 가능한 위치 목록은 로컬 메모리(119)에 저장된 자유 풀에서 유지될 수 있다. 데이터를 복사할 때, 웨어 레벨링 관리 컴포넌트(113)는 수퍼 관리 유닛으로부터의 데이터와 연관된 논리적 인덱스를 룩업 테이블(290)에 이용 가능한 물리적 인덱스로 매핑하는 것을 기록한다. 일 실시예에서, 룩업 테이블(290)은 컨트롤러(115)의 로컬 메모리(119)에 유지된다. 따라서, 논리적 인덱스가 룩업 테이블(290)에 적용되면, 해당 물리적 어드레스가 출력된다. 다른 실시예들에서, 맵핑은 어레이, 링크 목록 등과 같은 일부 다른 유형의 데이터 구조에서 유지될 수 있다. 간접적 맵핑은 로컬 메모리(119)를 이용하고 관련된 액세스 레이턴시를 갖기 때문에, 이러한 웨어 레벨링 동작은 더 낮은 레벨들에서보다 계층의 제3 레벨에서 덜 자주 수행될 수 있다.
도 3은 본 개시의 일부 실시예들에 따른, 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링을 수행하는 예시적인 방법(300)의 흐름도이다. 방법(300)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 인스트럭션들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(300)은 도 1의 웨어 레벨링 관리 컴포넌트(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하고, 예시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병행하여 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
블록(310)에서, 처리 장치는 제1 트리거의 발생을 검출한다. 제1 트리거는 웨어 레벨링 관리 컴포넌트(113)가 도 2a에 도시된 레벨들의 계층의 제1 레벨에 대한 웨어 레벨링 동작을 개시하게 할 수 있다. 일 실시예에서, 제1 레벨은 계층에서 가장 낮은 레벨일 수 있고 컨트롤러(115)에 의해 제어 가능한 메모리 컴포넌트(112)의 가장 작은 데이터 유닛들을 포함할 수 있다. 일 실시예에서, 이러한 데이터 유닛들은 메모리 컴포넌트(112)의 데이터 블록 또는 페이지와 같은 관리 유닛들을 포함할 수 있다. 일 실시예에서, 제1 트리거는 이전 웨어 레벨링 동작 이후 경과된 시간 기간 또는 이전 웨어 레벨링 동작이 수행된 이후 호스트 시스템(120)의 요청에 따라 메모리 컴포넌트(112)에서 수행된 데이터 기입 동작 수 중 적어도 하나에 기반한다. 일 실시예에서, 컨트롤러(115)는 웨어 레벨링 동작이 제1 레벨에서 수행될 때마다 리셋되는 타이머를 포함한다. 컨트롤러(115)는 타이머가 만료되거나 미리 결정된 값에 도달할 때마다 웨어 레벨링 관리 컴포넌트(113)에 통지할 수 있다. 타이머는 특정 메모리 서브 시스템(110)(예를 들어, 1분, 5분, 10분 등)에 따라 조정될 수 있는 구성 가능한 값을 가질 수 있다. 이 통지는 웨어 레벨링 동작을 개시하기 위해 웨어 레벨링 관리 컴포넌트(113)를 트리거할 수 있다. 일 실시예에서, 컨트롤러(115)는 기입 요청이 호스트 시스템(120)으로부터 수신되고 메모리 컴포넌트(112)에서 실행될 때마다 증가(또는 감소)되는 카운터를 포함한다. 컨트롤러(115)는 카운터가 미리 결정된 값(예를 들어, 500회 기입, 1000회 기입, 2000회 기입 등)에 도달할 때마다 웨어 레벨링 관리 컴포넌트(113)에 통지할 수 있다. 이 통지는 웨어 레벨링 동작을 개시하기 위해 웨어 레벨링 관리 컴포넌트(113)를 트리거할 수 있다.
블록(320)에서, 처리 장치는 매핑 함수에 따라 제1 데이터 유닛 그룹 내의 복수의 데이터 유닛들을 메모리 컴포넌트(112A) 상의 상이한 물리적 위치들로 재분배한다. 대수 맵핑 함수는 웨어 레벨링 동작의 일부가 될 수 있으며 그 자체로 완전하고 메모리 컴포넌트(112A)에서 타겟 물리적 위치를 결정하기 위해 임의의 추가 정보를 사용해야 하는 대수 함수와 같은 임의의 수학적 함수를 포함할 수 있다. 일 실시예에서, 웨어 레벨링 관리 컴포넌트(113)는 계층의 제1 레벨에 있는 데이터 유닛들 중 하나로부터의 데이터와 연관된 제1 논리 인덱스를 맵핑 함수에 적용하여 메모리 컴포넌트(112A)의 물리적 위치에 대응하는 물리적 인덱스를 결정한 다음 데이터 관리 유닛에서 해당 물리적 위치로 데이터를 복사한다. 일 실시예에서, 대수 맵핑 함수는 스왑 함수, 순환 시프트 함수, 기본 포인터 값과 자유 포인터 값을 이용한 선형 함수, 또는 일부 다른 적절한 함수 중 적어도 하나를 포함한다. 이 함수는 논리적 인덱스를 새로운 물리적 위치에 대수 매핑이 되므로, 이 웨어 레벨링 동작은 높은 레벨들보다 계층의 제1 레벨에서 더 자주 그리고 낮은 리소스 활용률로 수행될 수 있다.
블록(330)에서, 처리 장치는 제2 트리거의 발생을 검출하며, 여기서 제2 트리거는 제1 트리거보다 덜 자주 발생한다. 제2 트리거는 웨어 레벨링 관리 컴포넌트(113)가 레벨들의 계층의 제2 레벨에 대한 웨어 레벨링 동작을 개시하게 할 수 있다. 일 실시예에서, 제2 레벨은 계층에서 높은 레벨일 수 있고 컨트롤러(115)에 의해 제어 가능한 메모리 컴포넌트(112A)의 더 많은 데이터 유닛들을 포함할 수 있다. 일 실시예에서, 이러한 데이터 유닛들은 메모리 컴포넌트(112A)의 데이터 블록 또는 페이지 그룹과 같은 수퍼 관리 유닛들을 포함할 수 있다. 일 실시예에서, 제2 트리거는 또한 이전 웨어 레벨링 동작 이후 경과된 시간 기간 또는 이전 웨어 레벨링 동작이 수행된 이후 호스트 시스템(120)의 요청에 따라 메모리 컴포넌트(112A)에서 수행된 데이터 기입 동작 수 중 적어도 하나에 기반한다. 예를 들어, 컨트롤러(115)는 타이머가 만료되거나 미리 결정된 값(예를 들어, 1시간, 2시간, 12시간, 24시간 등)에 도달할 때마다 또는 기입 카운터가 미리 결정된 값(예를 들어, 5000회 기입, 10,000회 기입, 20,000회 기입 등)에 도달할 때마다 웨어 레벨링 관리 컴포넌트(113)에 통지할 수 있다. 이 통지는 웨어 레벨링 동작을 개시하기 위해 웨어 레벨링 관리 컴포넌트(113)를 트리거할 수 있다.
블록(340)에서, 처리 장치는 대수 맵핑 함수에 따라 제1 복수의 데이터 유닛 그룹들을 메모리 컴포넌트(112A) 상의 상이한 물리적 위치로 재분배하며, 제1 복수의 그룹들의 제1 그룹은 복수의 개별 데이터 유닛들을 포함한다. 상기에 논의된 바와 같이, 대수 맵핑 함수는 웨어 레벨링 동작의 일부 일 수 있으며 메모리 컴포넌트(112A)에서 타겟 물리적 위치를 결정하기 위해, 대수 함수와 같은, 임의의 수학적 함수를 포함할 수 있다. 일 실시예에서, 웨어 레벨링 관리 컴포넌트(113)는 계층의 제2 레벨에 있는 데이터 유닛 그룹들 중 하나로부터의 데이터와 연관된 제1 논리 인덱스를 대수 맵핑 함수에 적용하여 메모리 컴포넌트(112A)의 물리적 위치에 대응하는 물리적 인덱스를 결정한 다음 데이터를 수퍼 관리 유닛에서 해당 물리적 위치로 복사한다. 일 실시예에서, 대수 맵핑 함수는 스왑 함수, 순환 시프트 함수, 기본 포인터 값과 자유 포인터 값을 이용한 선형 함수, 또는 일부 다른 적절한 함수 중 적어도 하나를 포함한다. 일 실시예에 따라, 블록(340)에서 사용되는 대수 맵핑 함수는 블록(320)에서 사용되는 대수 맵핑 함수와 동일하거나 상이할 수 있다.
블록(350)에서, 처리 장치는 제3 트리거의 발생을 검출하며, 여기서 제3 트리거는 제2 트리거보다 덜 자주 발생한다. 제3 트리거는 웨어 레벨링 관리 컴포넌트(113)가 레벨들의 계층의 제3 레벨에 대한 웨어 레벨링 동작을 개시하게 할 수 있다. 일 실시예에서, 제3 레벨은 계층에서 높은 레벨일 수 있고 컨트롤러(115)에 의해 제어 가능한 메모리 컴포넌트(112A)의 더 많은 데이터 유닛들을 포함할 수 있다. 일 실시예에서, 이러한 데이터 유닛들은 수퍼 관리 유닛 그룹들을 포함할 수 있다. 일 실시예에서, 제3 트리거는 또한 이전 웨어 레벨링 동작 이후 경과된 시간 기간 또는 이전 웨어 레벨링 동작이 수행된 이후 호스트 시스템(120)의 요청에 따라 메모리 컴포넌트(112A)에서 수행된 데이터 기입 동작 수 중 적어도 하나에 기반한다.
블록(360)에서, 처리 장치는 제2 복수의 데이터 유닛 그룹들을 메모리 컴포넌트(112A) 상의 상이한 물리적 위치들로 재분배하며, 제2 복수의 그룹들의 제2 그룹은 제1 복수의 데이터 유닛들을 포함한다. 일 실시예에 따라, 웨어 레벨링 관리 컴포넌트(113)는 제3 대수 맵핑 함수를 사용하거나 간접적 맵핑을 사용한다. 간접적 맵핑을 사용하여, 메모리 컴포넌트(112A) 상의 타겟 물리적 위치를 타겟팅하기 위해 추가 정보가 요구된다. 일 실시예에서, 웨어 레벨링 관리 컴포넌트(113)는 데이터를 수퍼 관리 유닛 그룹으로부터 메모리 컴포넌트(112A) 상의 이용 가능한 물리적 위치로 복사한다. 이 물리적 위치는 기입 카운트가 가장 적은 위치, 최근에 가장 적게 액세스된 위치 등과 같은 임의의 다수의 방식들로 결정될 수 있다. 데이터를 복사할 때, 웨어 레벨링 관리 컴포넌트(113)는 수퍼 관리 유닛 그룹으로부터의 데이터와 연관된 논리적 인덱스를 룩업 테이블의 이용 가능한 물리적 위치로 매핑하는 것을 기록한다. 일 실시예에서, 룩업 테이블은 컨트롤러(115)의 로컬 메모리(119)에 유지된다. 다른 실시예들에서, 맵핑은 어레이, 링크 목록 등과 같은 일부 다른 유형의 데이터 구조에서 유지될 수 있다. 간접적 맵핑은 로컬 메모리(119)를 이용하고 관련된 액세스 레이턴시를 갖기 때문에, 이러한 웨어 레벨링 동작은 더 낮은 레벨들에서보다 계층의 제3 레벨에서 덜 자주 수행될 수 있다.
도 4는 본 개시의 일부 실시예들에 따른, 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링을 수행하는 예시적인 방법(400)의 흐름도이다. 방법(400)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 인스트럭션들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(400)은 도 1의 웨어 레벨링 관리 컴포넌트(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하고, 예시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병행하여 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
블록(410)에서, 처리 장치는 제1 간격 후에 메모리 컴포넌트(112A)의 복수의 개별 데이터 유닛들 사이에서 제1 웨어 레벨링 동작을 개시한다. 웨어 레벨링 관리 컴포넌트(113)는 대수 맵핑 함수를 사용할 수 있으며, 이는 예컨대 그 자체로 완전하고 메모리 컴포넌트(112A)에서 타겟 물리적 위치를 결정하기 위해 임의의 추가 정보를 사용해야 하는 대수 함수와 같은, 임의의 수학적 함수를 포함할 수 있다. 제1 웨어 레벨링 동작은 제1 간격 후에 대수 매핑을 사용하여 제1 레벨에서 발생할 수 있으며, 이는 5분마다 또는 1000회의 호스트 기입과 같이 특정 구현예들에 구성할 수 있다.
블록(420)에서, 처리 장치는 계층의 제1 레벨에 있는 개별 데이터 유닛들 중 하나로부터의 데이터와 연관된 제1 논리 인덱스를 직접적 맵핑 함수에 적용하여 메모리 컴포넌트(112A) 상의 물리적 위치에 대응하는 물리적 인덱스를 결정한다. 일 실시예에서, 대수 맵핑 함수는 스왑 함수, 순환 시프트 함수, 기본 포인터 값과 자유 포인터 값을 이용한 선형 함수 등 이들 중 적어도 하나를 포함한다. 블록(430)에서, 처리 장치는 데이터를 개별 데이터 관리 유닛으로부터 해당 물리적 위치로 복사한다.
블록(440)에서, 처리 장치는 제2 간격 후에 메모리 컴포넌트(112A)의 제1 복수의 데이터 유닛 그룹들 사이에서 제2 웨어 레벨링 동작을 시작한다. 제1 복수의 데이터 유닛 그룹들 중 적어도 하나는 블록(410)로부터의 개별 데이터 유닛을 포함할 수 있다. 블록(430)에서, 웨어 레벨링 관리 컴포넌트(113)는 대수 함수와 같은 임의의 수학적 함수를 포함할 수 있으며, 블록(410)에서 사용된 함수와 동일하거나 다를 수 있는 대수 맵핑 함수를 다시 사용할 수 있다. 제2 웨어 레벨링 동작은 제2 간격 후에 대수 맵핑을 사용한 제2 레벨에서 발생할 수 있으며, 이는 예컨대 30분마다 또는 5000회의 호스트 기입마다 특정 구현예들로 구성할 수 있다.
블록(450)에서, 처리 장치는 계층의 제2 레벨에 있는 데이터 유닛 그룹들 중 하나로부터의 데이터와 연관된 제2 논리 인덱스를 대수 맵핑 함수에 적용하여 메모리 컴포넌트(112A) 상의 물리적 위치에 대응하는 물리적 인덱스를 결정한다. 일 실시예에서, 대수 맵핑 함수는 스왑 함수, 순환 시프트 함수, 기본 포인터 값과 자유 포인터 값을 이용한 선형 함수 등 이들 중 적어도 하나를 포함한다. 블록(460)에서, 처리 장치는 데이터를 개별 데이터 관리 유닛으로부터 해당 물리적 위치로 복사한다.
블록(470)에서, 처리 장치는 제3 간격 후에 메모리 컴포넌트(112A)의 제2 복수의 데이터 유닛 그룹들에서 제3 웨어 레벨링 동작을 시작한다. 제2 복수의 데이터 유닛 그룹들 중 적어도 하나는 블록(440)로부터의 제1 복수의 그룹들을 포함할 수 있다. 블록(470)에서, 웨어 레벨링 관리 컴포넌트(113)는 대수 맵핑 함수를 다시 사용할 수 있거나 간접적 맵핑을 사용할 수 있다. 간접적 맵핑을 사용하여, 메모리 컴포넌트(112A) 상의 타겟 물리적 위치를 타겟팅하기 위해 추가 정보가 요구된다. 제3 웨어 레벨링 동작은 예컨대 1시간마다 또는 10,000회의 호스트 기입마다, 특정 구현예로 구성할 수 있는, 제3 간격 이후 룩업 테이블에 의해 구현된 간접적 완전 연관 맵핑을 사용하여 제3 레벨에서 발생할 수 있다.
블록(480)에서, 처리 장치는 데이터를 제2 복수의 데이터 유닛 그룹들로부터 메모리 컴포넌트(112A) 상의 이용 가능한 물리적 위치로 복사한다. 이 물리적 위치는 기입 카운트가 가장 적은 위치, 최근에 가장 적게 액세스된 위치 등과 같은 임의의 다수의 방식들로 결정될 수 있다.
블록(490)에서, 처리 장치는 데이터 관리 유닛 그룹으로부터의 데이터와 연관된 논리적 인덱스를 룩업 테이블의 이용 가능한 물리적 위치로 매핑하는 것을 기록한다. 데이터를 복사할 때, 웨어 레벨링 관리 컴포넌트(113)는 제2 복수의 데이터 관리 유닛 그룹들로부터의 데이터와 연관된 논리적 인덱스를 룩업 테이블(예를 들어, 룩업 테이블(290))의 이용 가능한 물리적 위치로 매핑하는 것을 기록한다. 일 실시예에서, 룩업 테이블은 컨트롤러(115)의 로컬 메모리(119)에 유지된다. 다른 실시예들에서, 맵핑은 어레이, 링크 목록 등과 같은 일부 다른 유형의 데이터 구조에서 유지될 수 있다.
도 5는 기계가 본원에 논의된 방법론들 중 임의의 하나 이상을 수행하게 하는 인스트럭션 세트가 실행될 수 있는 컴퓨터 시스템(500)의 예시적인 기계를 예시한다. 일부 실시예들에서, 컴퓨터 시스템(500)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나, 이에 결합되거나 이를 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응되거나, 또는 컨트롤러의 동작들을 수행(예를 들어, 도 1의 웨어 레벨링 관리 컴포넌트(113)에 대응되는 동작들을 수행하기 위해 운영 체제를 실행)하는 데 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량으로, 피어 투 피어(또는 분배) 네트워크 환경에서의 피어 기계로, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 디지털 보조 장치(PDA), 셀룰러 텔레폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 수행될 조치들을 명시하는 인스트럭션 세트(순차적 또는 다른 방식)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 예시되어 있지만, "기계"라는 용어는 또한 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 인스트럭션 세트(또는 복수 세트)를 개별적으로 또는 공통으로 실행하는 임의의 기계 컬렉션을 포함하는 것으로 간주해야 한다.
예시적인 컴퓨터 시스템(500)은 버스(530)를 통해 서로 통신하는, 처리 장치(502), 메인 메모리(504)(예를 들어, 읽기 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등) 및 데이터 저장 시스템(518)을 포함한다.
처리 장치(502)는 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 처리 장치들을 나타낸다. 보다 구체적으로, 처리 장치는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 인스트럭션 세트들을 구현하는 프로세서, 또는 인스트럭션 세트들의 조합을 구현하는 프로세서들일 수 있다. 처리 장치(502)는 또한 어플리케이션별 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 장치들일 수 있다. 처리 장치(502)는 본원에 논의된 동작들 및 단계들을 수행하기 위한 인스트럭션들(526)을 수행하도록 구성된다. 컴퓨터 시스템(500)은 네트워크(520)를 통해 통신하기 위한 네트워크 인터페이스 장치(508)를 더 포함할 수 있다.
데이터 저장 시스템(518)는 본원에 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 인스트력션 세트(526) 또는 소프트웨어가 저장되는 기계 판독 가능 저장 매체(524)(컴퓨터 판독 가능 매체로 알려짐)를 포함할 수 있다. 인스트럭션들(526)은 또한 기계 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(500), 메인 메모리(504) 및 처리 장치(502)에 의한 실행 동안 메인 메모리(504) 내에 및/또는 처리 장치(502) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능 저장 매체(524), 데이터 저장 시스템(518) 및/또는 메인 메모리(504)는 도 1의 메모리 서브 시스템(110)에 대응될 수 있다.
일 실시예에서, 인스트럭션들(526)은 컴포넌트(예를 들어, 도 1의 웨어 레벨링 관리 컴포넌트(113))에 대응되는 기능을 구현하기 위한 인스트럭션들을 포함한다. 기계 판독 가능 저장 매체(524)가 예시적인 실시에서 단일 매체인 것으로 도시되어 있지만, "기계 판독 가능 저장 매체"라는 용어는 하나 이상의 인스트럭션 세트들을 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 저장 매체"라는 용어는 또한 기계에 의해 실행되는 인스트럭션 세트를 저장 또는 인코딩할 수 있고 기계가 본 개시의 방법들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, "기계 판독 가능 저장 매체"라는 용어는, 이에 제한되는 것은 아니나, 솔리드 스테이트 메모리들, 광학 매체 및 자기 매체를 포함하는 것으로 간주되어야 한다.
전술한 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산의 알고리즘 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명들 및 표현들은 데이터 처리 분야의 당업자가 그들 작업의 실체를 다른 당업자에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 여기서, 알고리즘은 일반적으로 원하는 결과를 도출하는 자기 모순 없는(self-consistent) 동작 시퀀스인 것으로 생각된다. 동작들은 이러한 물리적 수량의 물리적 조작을 필요로 한다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 양은 저장되고, 결합되고, 비교되고 아니면 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 이러한 신호들을 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이, 주로 일반적인 사용의 이유로, 때때로 편리한 것으로 입증되었다.
그러나, 이러한 및 유사한 용어들 모두는 적절한 물리적 양과 관련이 있으며 이러한 양에 적용되는 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들과 메모리들 내에서 물리적(전자적) 양으로 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내의 물리적 양으로 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 인용할 수 있다.
본 개시는 또한 본원에서 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 이는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 이에 제한되는 것은 아니나, 플로피 디스크, 광 디스크, CD-ROM, 및 자기-광학 디스크, 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 각각 컴퓨터 시스템 버스에 연결된 전자 인스트럭션들을 저장하기에 적합한 임의의 유형의 매체를 포함하는 임의 유형의 디스크와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본원에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들은 본원의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 다 특화된 장치를 구성하는 것이 편리하다는 것을 입증할 수 있다. 다양한 이들 시스템들의 구조는 아래의 설명에서 제시되는 것으로 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본원에 기술된 바와 같이 본 개시의 교시를 구현하는 데 사용될 수 있음이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 장치)를 프로그래밍하는 데 사용될 수는, 인스트럭션들을 저장한 기계 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능 매체는 기계(예: 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예들에서, 기계 판독 가능(예를 들어, 컴퓨터 판독 가능) 매체는 읽기 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트들 등과 같은 기계(예를 들어, 컴퓨터) 판독 가능 저장 매체를 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구 범위에 명시된 본 개시의 실시예들의 넓은 사상 및 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 시스템에 있어서,
    메모리 컴포넌트; 및
    상기 메모리 컴포넌트와 동작 가능하게 결합된 처리 장치로서,
    제1 간격 후에 상기 메모리 컴포넌트의 복수의 개별 데이터 유닛들 사이에서 제1 웨어 레벨링 동작을 수행하고;
    제2 간격 후에 상기 메모리 컴포넌트의 제1 복수의 데이터 유닛 그룹들 사이에서 제2 웨어 레벨링 동작을 수행하되, 상기 제1 복수의 그룹들의 제1 그룹은 상기 복수의 개별 데이터 유닛들을 포함하고;
    제3 간격 후에 상기 메모리 컴포넌트의 제2 복수의 데이터 유닛 그룹들 사이에서 제3 웨어 레벨링 동작을 수행하되, 상기 제2 복수의 그룹들의 제2 그룹은 상기 제1 복수의 데이터 유닛 그룹들을 포함하도록 하는, 상기 처리를 포함하는, 시스템.
  2. 제1항에 있어서, 상기 메모리 컴포넌트는 비휘발성 메모리 셀들의 교차점 어레이를 포함하는, 시스템.
  3. 제1항에 있어서, 상기 제1 간격은 상기 제2 간격보다 짧으며, 상기 제2 간격은 상기 제3 간격보다 짧은, 시스템.
  4. 제1항에 있어서, 상기 복수의 개별 데이터 유닛들 사이에서 상기 제1 웨어 레벨링 동작을 수행하기 위해, 상기 처리 장치는 제1 대수 맵핑 함수를 사용하도록 하며, 상기 제1 복수의 데이터 유닛 그룹들 사이에서 상기 제2 웨어 레벨링 동작을 수행하기 위해, 상기 처리 장치는 제2 대수 맵핑 함수를 사용하도록 하는, 시스템.
  5. 제4항에 있어서, 상기 제2 대수 맵핑 함수는 상기 제1 대수 맵핑 함수와 상이한, 시스템.
  6. 제4항에 있어서, 상기 제2 복수의 데이터 유닛 그룹들 사이에서 상기 제3 웨어 레벨링 동작을 수행하기 위해, 상기 처리 장치는 제3 대수 맵핑 함수 또는 간접적 맵핑 중 적어도 하나를 사용하도록 하는, 시스템.
  7. 제6항에 있어서, 상기 제1, 제2 또는 제3 대수 맵핑 함수들 중 적어도 하나를 사용하기 위해, 상기 처리 장치는,
    데이터와 연관된 제1 논리적 인덱스를 상기 제1, 제2 또는 제3 대수 맵핑 함수 중 적어도 하나에 적용하여 상기 메모리 컴포넌트 상의 물리적 위치에 대응하는 물리적 인덱스를 결정하고;
    상기 데이터를 상기 물리적 위치로 복사하도록 하는, 시스템.
  8. 제6항에 있어서, 간접적 맵핑을 사용하기 위해, 상기 처리 장치는,
    데이터를 상기 메모리 컴포넌트 상의 이용 가능한 물리적 위치로 복사하고;
    상기 데이터와 연관된 제2 논리적 인덱스를 룩업 데이블의 상기 이용 가능한 물리적 위치로 맵핑하는 것을 기록하도록 하는, 시스템.
  9. 제1항에 있어서, 상기 제1, 제2 및 제3 간격들은 이전 웨어 레벨링 동작이 수행된 이후 경과된 시간 기간 또는 상기 이전 웨어 레벨링 동작이 수행된 이후 호스트 기계에 의해 상기 메모리 컴포넌트 상에서 수행된 데이터 기입 동작 수 중 적어도 하나에 기초하는, 시스템.
  10. 방법에 있어서,
    처리 장치에 의해, 제1 간격 후에 메모리 컴포넌트의 복수의 개별 데이터 유닛들 사이에서 제1 웨어 레벨링 동작을 수행하는 단계;
    상기 처리 장치에 의해, 제2 간격 후에 상기 메모리 컴포넌트의 제1 복수의 데이터 유닛 그룹들 사이에서 제2 웨어 레벨링 동작을 수행하는 단계로서, 상기 제1 복수의 그룹들의 제1 그룹은 상기 복수의 개별 데이터 유닛들을 포함하는, 상기 제2 웨어 레벨링 동작을 수행하는 단계; 및
    상기 처리 장치에 의해, 제3 간격 후에 상기 메모리 컴포넌트의 제2 복수의 데이터 유닛 그룹들 사이에서 제3 웨어 레벨링 동작을 수행하는 단계로서, 상기 제2 복수의 그룹들의 제2 그룹은 상기 제1 복수의 데이터 유닛 그룹들을 포함하는, 상기 제3 웨어 레벨링 동작을 수행하는 단계를 포함하는, 방법.
  11. 제10항에 있어서, 상기 제1 간격은 상기 제2 간격보다 짧으며, 상기 제2 간격은 상기 제3 간격보다 짧은, 방법.
  12. 제10항에 있어서, 상기 복수의 개별 데이터 유닛들 사이에서 상기 제1 웨어 레벨링 동작을 수행하는 단계는 제1 대수 맵핑 함수를 사용하는 단계를 포함하며, 상기 제1 복수의 데이터 유닛 그룹들 사이에서 상기 제2 웨어 레벨링 동작을 수행하는 단계는 제2 대수 맵핑 함수를 포함하는, 방법.
  13. 제12항에 있어서, 상기 제2 대수 맵핑 함수는 상기 제1 대수 맵핑 함수와 상이한, 방법.
  14. 제12항에 있어서, 상기 제2 복수의 데이터 유닛 그룹들 사이에서 상기 제3 웨어 레벨링 동작을 수행하는 단계는 제3 대수 맵핑 함수 또는 간접적 맵핑 중 적어도 하나를 사용하는 단계를 포함하는, 방법.
  15. 제14항에 있어서, 상기 제1, 제2 또는 제3 대수 맵핑 함수들을 중 적어도 하나를 사용하는 단계는,
    데이터와 연관된 제1 논리적 인덱스를 상기 제1, 제2 또는 제3 대수 맵핑 함수 중 적어도 하나에 적용하여 상기 메모리 컴포넌트 상의 물리적 위치에 대응하는 물리적 인덱스를 결정하는 단계; 및
    상기 데이터를 상기 물리적 위치로 복사하는 단계를 포함하는, 방법.
  16. 제14항에 있어서, 간접적 맵핑을 사용하는 단계는,
    데이터를 상기 메모리 컴포넌트 상의 이용 가능한 물리적 위치로 복사하는 단계; 및
    상기 데이터와 연관된 제2 논리적 인덱스를 룩업 데이블의 상기 이용 가능한 물리적 위치로 맵핑하는 것을 기록하는 단계를 포함하는, 방법.
  17. 제10항에 있어서, 상기 제1, 제2 및 제3 간격들은 이전 웨어 레베링 동작이 수행된 이후 경과되는 시간 기간 또는 상기 이전 웨어 레벨링 동작이 수행된 이후 호스트 기계에 의해 상기 메모리 컴포넌트 상에서 수행된 데이터 기입 동작 수 중 적어도 하나에 기초하는, 방법.
  18. 비일시적 컴퓨터 판독 가능 저장 매체로서, 처리 장치에 의해 실행 시, 상기 처리 장치가,
    제1 트리거의 발생을 검출하고;
    상기 제1 트리거의 상기 발생에 응답하여 복수의 개별 데이터 유닛들을 메모리 컴포넌트 상의 상이한 물리적 위치들로 재분배하고;
    제2 트리거의 발생을 검출하고;
    상기 제2 트리거의 상기 발생에 응답하여 제1 복수의 데이터 유닛 그룹들을 상기 메모리 컴포넌트 상의 상이한 물리적 위치들로 재분배하되, 상기 제1 복수의 그룹들의 제1 그룹은 상기 복수의 개별 데이터 유닛들을 포함하고;
    제3 트리거의 발생을 검출하고;
    상기 제3 트리거의 상기 발생에 응답하여 제2 복수의 데이터 유닛 그룹들을 상기 메모리 컴포넌트 상의 상이한 물리적 위치들로 배분배하되, 상기 제2 복수의 그룹들의 제2 그룹은 상기 제1 복수의 데이터 유닛 그룹들을 포함하도록 하는 인스트럭션들을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제18항에 있어서, 상기 제2 트리거는 상기 제1 트리거보다 덜 자주 발생하고, 제3 트리거는 상기 제2 트리거보다 덜 자주 발생하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제18항에 있어서, 상기 복수의 개별 데이터 유닛들을 재분재하기 위해, 상기 처리 장치는 제1 대수 맵핑 함수를 사용하도록 하고, 상기 제1 복수의 데이터 유닛 그룹들을 재분배하기 위해, 상기 처리 장치는 제2 대수 맵핑 함수를 사용하도록 하며, 상기 제2 복수의 데이터 유닛 그룹들을 재분배하기 위해, 상기 처리 장치는 제3 대수 맵핑 함수 또는 간접적 맵핑 중 적어도 하나를 사용하도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020217008684A 2018-08-23 2019-08-22 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링 KR20210038692A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/110,739 US10761739B2 (en) 2018-08-23 2018-08-23 Multi-level wear leveling for non-volatile memory
US16/110,739 2018-08-23
PCT/US2019/047781 WO2020041635A1 (en) 2018-08-23 2019-08-22 Multi-level wear leveling for non-volatile memory

Publications (1)

Publication Number Publication Date
KR20210038692A true KR20210038692A (ko) 2021-04-07

Family

ID=69586162

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217008684A KR20210038692A (ko) 2018-08-23 2019-08-22 비휘발성 메모리를 위한 멀티-레벨 웨어 레벨링

Country Status (4)

Country Link
US (2) US10761739B2 (ko)
EP (1) EP3841478A4 (ko)
KR (1) KR20210038692A (ko)
WO (1) WO2020041635A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10817430B2 (en) 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
US20210012844A1 (en) * 2020-09-25 2021-01-14 Intel Corporation Endurance and serviceability in solid state drives
US20230063498A1 (en) * 2021-08-27 2023-03-02 Micron Technology, Inc. Monitoring memory device health according to data storage metrics
US20240012751A1 (en) * 2022-07-11 2024-01-11 Micron Technology, Inc. Adaptive wear leveling for a memory system

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1713085A1 (en) 2002-10-28 2006-10-18 SanDisk Corporation Automated wear leveling in non-volatile storage systems
DE60316171T2 (de) 2002-10-28 2008-05-29 SanDisk Corp., Milpitas Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem
GB2407948B (en) * 2003-11-08 2006-06-21 Hewlett Packard Development Co Smartcard with cryptographic functionality and method and system for using such cards
US7756882B2 (en) * 2004-10-01 2010-07-13 Microsoft Corporation Method and apparatus for elegant mapping between data models
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7539663B2 (en) * 2006-11-15 2009-05-26 Microsoft Corporation Mapping composition using algebraic operators
US20080140918A1 (en) * 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US8543742B2 (en) * 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
KR100857761B1 (ko) 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
CN100538662C (zh) * 2007-07-05 2009-09-09 炬力集成电路设计有限公司 一种基于局部采样的存储器的磨损平衡方法
US20100017649A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
US8255613B2 (en) * 2009-04-30 2012-08-28 International Business Machines Corporation Wear-leveling and bad block management of limited lifetime memory devices
US9274228B2 (en) * 2009-12-22 2016-03-01 Nokia Technologies Oy Positioning satellites
WO2011076260A1 (en) * 2009-12-22 2011-06-30 Nokia Corporation Positioning satellites
US9170933B2 (en) 2010-06-28 2015-10-27 International Business Machines Corporation Wear-level of cells/pages/sub-pages/blocks of a memory
US8806171B2 (en) * 2011-05-24 2014-08-12 Georgia Tech Research Corporation Systems and methods providing wear leveling using dynamic randomization for non-volatile memory
US20120311228A1 (en) 2011-06-03 2012-12-06 Advanced Micro Devices, Inc. Method and apparatus for performing memory wear-leveling using passive variable resistive memory write counters
KR20130060791A (ko) * 2011-11-30 2013-06-10 삼성전자주식회사 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
WO2013095641A1 (en) 2011-12-23 2013-06-27 Intel Corporation Sub-block based wear leveling
US9277013B2 (en) * 2012-05-10 2016-03-01 Qualcomm Incorporated Storing local session data at a user equipment and selectively transmitting group session data to group session targets based on dynamic playback relevance information
KR102003930B1 (ko) 2012-07-31 2019-07-25 삼성전자주식회사 불휘발성 메모리 장치의 데이터 라이팅 제어방법 및 웨어레벨링 제어 기능을 가지는 메모리 콘트롤러
US8902631B2 (en) 2012-08-30 2014-12-02 Adesto Technologies Corporation Memory devices, circuits and, methods that apply different electrical conditions in access operations
US9348743B2 (en) 2013-02-21 2016-05-24 Qualcomm Incorporated Inter-set wear-leveling for caches with limited write endurance
US9710176B1 (en) * 2014-08-22 2017-07-18 Sk Hynix Memory Solutions Inc. Maintaining wear spread by dynamically adjusting wear-leveling frequency
US9952801B2 (en) * 2015-06-26 2018-04-24 Intel Corporation Accelerated address indirection table lookup for wear-leveled non-volatile memory
US10452533B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Access network for address mapping in non-volatile memories
US9886324B2 (en) * 2016-01-13 2018-02-06 International Business Machines Corporation Managing asset placement using a set of wear leveling data
TWI571882B (zh) * 2016-02-19 2017-02-21 群聯電子股份有限公司 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置
US10049717B2 (en) * 2016-03-03 2018-08-14 Samsung Electronics Co., Ltd. Wear leveling for storage or memory device
US11556462B2 (en) 2016-08-24 2023-01-17 Futurewei Technologies, Inc. Wear-leveling method for cross-point memory for multiple data temperature zones
KR102630116B1 (ko) 2016-10-18 2024-01-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102664704B1 (ko) 2016-10-24 2024-05-14 에스케이하이닉스 주식회사 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
US20190073136A1 (en) * 2017-09-06 2019-03-07 Macronix International Co., Ltd. Memory controlling method, memory controlling circuit and memory system
US11056206B2 (en) * 2017-10-11 2021-07-06 Western Digital Technologies, Inc. Non-volatile memory with dynamic wear leveling group configuration
US10656844B2 (en) 2017-10-11 2020-05-19 Western Digital Technologies, Inc. Non-volatile memory with regional and inter-region wear leveling
US10585795B2 (en) * 2018-05-31 2020-03-10 Micron Technology, Inc. Data relocation in memory having two portions of data

Also Published As

Publication number Publication date
EP3841478A4 (en) 2022-05-11
US20200356283A1 (en) 2020-11-12
EP3841478A1 (en) 2021-06-30
US20200065007A1 (en) 2020-02-27
US11704024B2 (en) 2023-07-18
WO2020041635A1 (en) 2020-02-27
US10761739B2 (en) 2020-09-01
CN112740189A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
US20210089218A1 (en) Performing hybrid wear leveling operations based on a sub-total write counter
US11537307B2 (en) Hybrid wear leveling for in-place data replacement media
US11755478B2 (en) Block family combination and voltage bin selection
US11704024B2 (en) Multi-level wear leveling for non-volatile memory
US11307983B2 (en) Maintaining data consistency in a memory subsystem that uses hybrid wear leveling operations
US11842772B2 (en) Voltage bin boundary calibration at memory device power up
US11609846B2 (en) Managing workload of programming sets of pages to memory device
US11676664B2 (en) Voltage bin selection for blocks of a memory device after power up of the memory device
US11995326B2 (en) Selective partitioning of sets of pages programmed to memory device
US11360885B2 (en) Wear leveling based on sub-group write counts in a memory sub-system
US10817435B1 (en) Queue-based wear leveling of memory components
CN112740189B (zh) 非易失性存储器的多级损耗均衡
US11789861B2 (en) Wear leveling based on sub-group write counts in a memory sub-system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application