KR20210065202A - 저 레이턴시 메모리에 데이터 재배치 - Google Patents

저 레이턴시 메모리에 데이터 재배치 Download PDF

Info

Publication number
KR20210065202A
KR20210065202A KR1020217015818A KR20217015818A KR20210065202A KR 20210065202 A KR20210065202 A KR 20210065202A KR 1020217015818 A KR1020217015818 A KR 1020217015818A KR 20217015818 A KR20217015818 A KR 20217015818A KR 20210065202 A KR20210065202 A KR 20210065202A
Authority
KR
South Korea
Prior art keywords
memory component
data
memory
data block
threshold
Prior art date
Application number
KR1020217015818A
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 KR20210065202A publication Critical patent/KR20210065202A/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/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
    • 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/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

다수의 데이터 블록의 제 1 데이터 블록이 메모리 컴포넌트의 제 1 부분에서 식별되고, 제 1 데이터 블록과 연관된 판독 카운트에 기초하여 식별되는 제 1 데이터 블록은 제 1 임계치 기준을 만족한다. 메모리 컴포넌트의 제 2 부분이 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 미사용 스토리지의 양을 갖는지에 대한 결정이 이루어지며, 메모리 컴포넌트의 제 2 부분은 제 1 부분보다 더 낮은 판독 레이턴시와 연관된다. 메모리 컴포넌트의 제 2 부분이 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 미사용 스토리지의 양을 갖는다고 결정한 것에 응답하여, 메모리 컴포넌트의 제 1 부분의 제 1 데이터 블록에 저장된 데이터는 메모리 컴포넌트의 제 2 부분에 제 2 데이터 블록으로 재배치된다. 에러율은 제 1 데이터 블록의 각각의 워드 라인에서 평가된다. 더 높은 에러율을 갖는 특정 워드 라인이 있고, 더 낮은 에러율을 갖는 다른 워드 라인 사이에 위치되는 경우, 에러율이 낮은 인접 워드 라인에 대응하는 데이터는 메모리 컴포넌트의 제 2 부분으로 재배치된다.

Description

저 레이턴시 메모리에 데이터 재배치
본 개시의 실시예들은 전반적으로 메모리 서브 시스템들에 관한 것이며, 보다 상세하게는 저 레이턴시(latency) 메모리에 데이터 재배치하는 것(relocating)에 관한 것이다.
메모리 서브 시스템은, 솔리드 스테이트 드라이브(SSD), 또는 하드 디스크 드라이브(HDD)와 같은, 저장 시스템일 수 있다. 메모리 서브 시스템은 이중 인-라인 메모리 모듈(DIMM), 소형 아웃라인 DIMM(SO-DIMM), 또는 비-휘발성 이중 인-라인 메모리 모듈(NVDIMM)과 같은, 메모리 모듈일 수 있다. 메모리 서브 시스템은 데이터를 저장하는 하나 이상의 메모리 컴포넌트들을 포함할 수 있다. 메모리 컴포넌트들은, 예를 들어, 비-휘발성 메모리 컴포넌트들 및 휘발성 메모리 컴포넌트들일 수 있다. 일반적으로, 호스트 시스템은 메모리 컴포넌트들에 데이터를 저장하고 메모리 컴포넌트들로부터 데이터를 검색하기 위해 메모리 서브 시스템을 이용할 수 있다.
본 개시는 이하에서 주어진 상세한 설명으로부터 및 본 개시의 다양한 구현예들의 수반된 도면들로부터 더 완전하게 이해될 것이다.
도 1은 본 개시의 몇몇 실시예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 환경을 예시한다.
도 2는 본 개시의 일부 실시예들에 따른 데이터와 연관된 판독 카운트에 기초하여 빈번하게 판독되는 데이터를 메모리 컴포넌트의 저 레이턴시(latency) 부분으로 재배치하는 예시적인 방법의 흐름도이다.
도 3은 본 개시의 일부 실시예에 따른 에러율 임계치를 초과하는 에러율을 갖는 워드 라인에 근접한 워드 라인에 저장된 데이터를 재배치하는 예시적인 방법의 흐름도이다.
도 4a는 본 개시의 실시예들에 따른 메모리 컴포넌트에 기록된 데이터의 양이 데이터 임계치를 충족하거나 초과하는지 여부를 결정하는 메모리 서브 시스템의 예시이다.
도 4b는 본 개시의 실시예들에 따른 메모리 컴포넌트의 저 레이턴시 부분으로 재배치하기 위한 데이터 블록을 식별하는 메모리 서브 시스템의 예시이다.
도 5a는 본 개시의 일부 실시예에 따른 메모리 컴포넌트에서 수행되는 다수의 프로그래밍 동작에 기초하여 후속 데이터를 재배치하기로 결정하는 메모리 서브 시스템의 예시이다.
도 5b는 본 개시의 일부 실시예들에 따른 메모리 컴포넌트상에서 수행되는 다수의 프로그래밍 동작들에 기초하여 후속 데이터를 재배치하기로 결정하는 메모리 서브 시스템의 예시이다.
도 6은 본 개시의 일 실시예에 따른 임계치를 초과하는 에러율에 기초하여 재배치하기 위한 워드 라인을 식별하는 메모리 서브 시스템의 예시이다.
도 7은 본 개시의 실시예들에 따른 메모리 컴포넌트의 저 레이턴시 부분에 할당된 데이터 블록들의 수를 감소시키는 메모리 서브 시스템을 예시하는 그래프이다.
도 8은 본 개시의 구현이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양상들은 저 레이턴시 메모리에 데이터를 재배치하는 것에 관한 것이다. 메모리 서브 시스템은 또한 이후 "메모리 디바이스"로서 불리운다. 메모리 서브 시스템의 예는 주변 상호연결(예컨대, 입력/출력 버스, 저장 영역 네트워크)을 통해 중앙 프로세싱 유닛(CPU)에 결합되는 저장 디바이스이다. 저장 디바이스들의 예들은 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브, 및 하드 디스크 드라이브(HDD)를 포함한다. 메모리 서브 시스템의 또 다른 예는 메모리 버스를 통해 CPU에 결합되는 메모리 모듈이다. 메모리 모듈들의 예들은 이중 인-라인 메모리 모듈(DIMM), 소형 아웃라인 DIMM(SO-DIMM), 비-휘발성 이중 인-라인 메모리 모듈(NVDIMM) 등을 포함한다. 몇몇 실시예들에서, 메모리 서브 시스템은 하이브리드 메모리/저장 서브 시스템일 수 있다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 컴포넌트들을 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있으며 메모리 서브 시스템으로부터 검색될 데이터를 요청할 수 있다.
종래의 메모리 서브 시스템의 메모리 컴포넌트는 호스트 시스템으로부터 수신된 데이터에 대응하는 하나 이상의 이진 데이터 비트를 저장할 수 있는 메모리 셀을 포함할 수 있다. 예를 들어, 메모리 컴포넌트는 각각 1 비트의 데이터를 저장하는 단일 레벨 셀(SLC), 각각 2 비트의 데이터를 저장하는 다중 레벨 셀(MLC), 각각 3 비트를 저장하는 삼중 레벨 셀 (TLC) 및/또는 각각 4 비트의 데이터를 저장하는 사중 레벨 셀 (QLC)을 포함할 수 있다. 메모리 컴포넌트의 하나 이상의 메모리 셀은 함께 그룹화되어 데이터 블록을 형성할 수 있다.
각각의 유형의 메모리 셀 (예를 들어, SLC, MLC, TLC 및 QLC)은 상이한 특성 및 이점을 나타낼 수 있다. 예를 들어, SLC는 저 판독 레이턴시 (예를 들어, SLC에 저장된 데이터를 판독하는 데 걸리는 시간), 더 빠른 프로그래밍 시간 (예를 들어, 호스트 시스템에서 수신된 데이터를 셀에 저장하기 위해 프로그래밍하는 데 걸리는 시간) 및 다른 유형의 메모리 셀보다 SLC에 저장된 더 높은 데이터의 신뢰성을 가질 수 있다. 그러나 각각의 SLC는 단일 비트의 데이터 만 저장하기 때문에, SLC를 포함하는 메모리 컴포넌트는 총 메모리 셀 수가 동일하지만 메모리 셀당 다수 비트의 데이터를 저장하는 적어도 일부 MLC, TLC 및/또는 QLC를 포함하는 메모리 컴포넌트와 비교할 때 더 낮은 저장 용량을 가질 것이다.
다른 예에서, QLC는 메모리 셀당 4 비트의 데이터를 저장하지만, 다른 유형의 메모리 셀보다 QLC에 저장된 데이터에 대해 더 높은 판독 레이턴시, 더 느린 프로그래밍 시간 및 더 낮은 신뢰성을 가질 수 있다. QLC를 포함하는 메모리 컴포넌트는 SLC, MLC 및 TLC 만 포함하는 메모리 컴포넌트에 비해 더 높은 저장 용량을 갖지만, QLC를 포함하는 메모리 컴포넌트에 데이터를 판독하고 기록하는 시간의 양은 다른 유형의 메모리 셀을 포함하는 메모리 컴포넌트보다 더 클 것이다. 예를 들어, QLC의 평균 판독 시간은 약 200 밀리 초 (ms)일 수 있는 반면 SLC의 평균 판독 시간은 약 50ms일 수 있다. 또한, QLC를 포함하는 메모리 컴포넌트에 저장된 데이터의 신뢰성은 다른 유형의 메모리 셀을 포함하는 메모리 컴포넌트보다 낮을 수 있다.
따라서, 호스트 시스템으로부터 수신된 데이터가 메모리 컴포넌트에 프로그래밍되는 데 걸리는 시간을 최소화하기 위해, 종래의 메모리 서브 시스템은 QLC를 포함하는 메모리 컴포넌트의 제 1 부분과 SLC를 포함하는 메모리 컴포넌트의 제 2 부분을 포함할 수 있다. 메모리 서브 시스템에 의해 저장을 위해 호스트 시스템으로부터 데이터가 수신될 때, 메모리 서브 시스템은 더 빠른 프로그래밍 속도를 갖는 SLC를 포함하는 메모리 컴포넌트의 제 2 부분에 데이터를 초기에 프로그래밍할 수 있다. 종래의 메모리 서브 시스템이 유휴(idle) 상태 (예를 들어, 호스트 시스템으로부터 지시를 수신하지 않음)되면, 메모리 서브 시스템은 SLC를 포함하는 제 2 부분에 저장된 데이터를 SLC보다 더 높은 저장 용량을 가진 QLC를 포함하는 제 1 부분으로 재배치(relocate)한다. 종래의 메모리 서브 시스템은 메모리 서브 시스템에 의한 저장을 위해 호스트 시스템으로부터 새로운 데이터가 수신될 때 SLC 캐싱(caching)이라고도 알려진 이 프로세스를 수행할 수 있다. 이 프로세스는 SLC의 더 빠른 프로그래밍 속도의 이점을 제공하는 동시에 QLC의 더 높은 저장 용량을 활용한다.
그러나, 호스트 시스템이 기존의 메모리 서브 시스템에 저장된 데이터를 요청하는 경우, 재배치되었던 데이터가 QLC로부터 판독되어야 한다. 앞서 논의한 바와 같이, QLC는 다른 유형의 메모리 셀보다 판독 레이턴시가 더 길다. 메모리 컴포넌트의 QLC로부터 데이터를 판독하는 것은 데이터가 메모리 컴포넌트의 SLC에 저장된 경우보다 호스트 시스템에 제공되는 데 더 오랜 시간이 걸리므로 메모리 서브 시스템의 성능이 저하된다.
본 개시의 양상들은 메모리 컴포넌트에 저장된 빈번하게 판독되는 데이터를 메모리 컴포넌트의 저 레이턴시 부분으로 재배치함으로써 상기 및 다른 결함을 해결한다. 일 실시예에서, 메모리 컴포넌트 (예를 들어, MLC, TLC 및/또는 QLC를 사용하는 메모리 컴포넌트의 부분)의 제 1 부분 (이하 "고 레이턴시 부분(high latency portion)"이라고도 함)에 사용자 데이터를 저장하는 데이터 블록에 대한 판독 카운트(read count)는 메모리 서브 시스템에 의해 추적되고 유지된다. 일 실시예에서, 메모리 서브 시스템은 메모리 컴포넌트의 제 1 부분에서 다른 데이터 블록보다 더 빈번하게 판독되는 하나 이상의 데이터 블록을 식별하기 위해 판독 카운트를 이용할 수 있다. 일부 실시예에서, 메모리 서브 시스템은 메모리 컴포넌트의 다른 워드 라인보다 더 빈번하게 판독되는 하나 이상의 근접 워드 라인을 식별하기 위해 메모리 컴포넌트의 워드 라인의 에러율을 사용할 수 있다. 하나 이상의 데이터 블록을 식별할 때, 메모리 서브 시스템은 하나 이상의 식별된 데이터 블록에 저장된 데이터를 저장할 SLC를 포함하는 메모리 컴포넌트의 제 2 부분 (이하 "저 레이턴시 부분(low latency portion)"이라고도 함)에 미사용 스토리지의 양이 있는지 여부를 결정할 수 있다. 메모리 서브 시스템이 충분한 저장 공간이 있다고 결정하면, 메모리 서브 시스템은 하나 이상의 식별된 데이터 블록에 저장된 데이터를 SLC를 포함하는 메모리 컴포넌트의 저 레이턴시 부분에 있는 하나 이상의 데이터 블록으로 재배치한다.
본 개시의 이점은 메모리 컴포넌트의 저 레이턴시 부분으로 재배치되는 빈번하게 판독되는 데이터에 대한 감소된 판독 레이턴시를 포함하지만 이에 한정되지 않는다. 감소된 판독 레이턴시는 호스트 시스템이 더 짧은 시간 양에 빈번하게 판독하는 데이터를 수신하고 메모리 서브 시스템의 성능을 향상으로 귀결된다. 더욱이, 앞서 논의된 바와 같이, SLC와 같은 메모리 컴포넌트의 저 레이턴시 부분에 있는 메모리 셀은 QLC와 같은 더 높은 저장 밀도를 갖는 메모리 셀에 비해 데이터 저장에 대해 더 큰 신뢰성을 갖는다. 데이터를 저장하는 데 더 큰 신뢰성을 가진 메모리 셀에 빈번하게 판독되는 데이터를 저장함으로써, 메모리 서브 시스템에 의해 수행되는 에러 정정 동작의 수가 감소되어, 메모리 서브 시스템이 다른 동작 (예를 들어, 판독 및/또는 기록 동작)을 수행하는 것을 허용하고 메모리 서브 시스템의 성능을 향상시킬 수 있다.
예시적인 목적을 위해, 본 개시의 양상은 QLC를 갖는 메모리 컴포넌트의 제 1 부분 및 SLC를 갖는 메모리 컴포넌트의 제 2 부분을 사용하여 설명된다. 그러나, 일부 실시예에서, 메모리 컴포넌트는 임의의 유형의 메모리 셀을 포함하는 임의의 수의 부분을 가질 수 있다.
도 1은 본 개시의 몇몇 실시예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 환경(100)을 예시한다. 메모리 서브 시스템(110)은 메모리 컴포넌트들(112A 내지 112N)과 같은, 매체를 포함할 수 있다. 메모리 컴포넌트들(112A 내지 112N)은 휘발성 메모리 컴포넌트들, 비-휘발성 메모리 컴포넌트들, 또는 그것의 조합일 수 있다. 몇몇 실시예들에서, 메모리 서브 시스템은 저장 시스템이다. 저장 시스템의 예는 SSD이다. 몇몇 실시예들에서, 메모리 서브 시스템(110)은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 컴퓨팅 환경(100)은 메모리 서브 시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 메모리 서브 시스템(110)으로 데이터를 기록하며 메모리 서브 시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 시스템(120)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 이동 디바이스, 또는 메모리 및 프로세싱 디바이스를 포함하는 이러한 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스일 수 있다. 호스트 시스템(120)은 호스트 시스템(120)이 메모리 서브 시스템(110)으로부터 데이터를 판독하거나 또는 그것으로 데이터를 기록할 수 있도록 메모리 서브 시스템(110)을 포함하거나 또는 그것에 결합될 수 있다. 호스트 시스템(120)은 물리 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 본 출원에서 사용된, "에 결합된"은 일반적으로 유선 또는 무선에 관계없이, 전기, 광학, 자기 등과 같은 연결들을 포함하는, 간접적 통신 연결 또는 직접적 통신 연결(예컨대, 매개 컴포넌트들이 없는)일 수 있는, 컴포넌트들 간의 연결을 나타낸다. 물리 호스트 인터페이스의 예들은, 이에 제한되지 않지만, 직렬 고급 기술 접속(SATA) 인터페이스, 물리 컴포넌트 상호연결 고속(PCIe) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 파이버 채널, 직렬 접속 SCSI(SAS) 등을 포함한다. 물리 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 송신하기 위해 사용될 수 있다. 호스트 시스템(120)은 또한 메모리 서브 시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합될 때 메모리 컴포넌트들(112A 내지 112N)을 액세스하기 위해 NVM 고속(NVMe) 인터페이스를 이용할 수 있다. 물리 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터, 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 컴포넌트들(112A 내지 112N)은 상이한 유형들의 비-휘발성 메모리 컴포넌트들 및/또는 휘발성 메모리 컴포넌트들의 임의의 조합을 포함할 수 있다. 비-휘발성 메모리 컴포넌트들의 예는 NAND(negative-and) 형 플래시 메모리를 포함한다. 메모리 컴포넌트들(112A 내지 112N)의 각각은 단일 레벨 셀들(SLC들) 또는 다중-레벨 셀들(MLC들)(예컨대, 삼중 레벨 셀들(TLC들) 또는 사중-레벨 셀들(QLC들))과 같은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 몇몇 실시예들에서, 특정한 메모리 컴포넌트는 메모리 셀들의 SLC 부분 및 MLC 부분 양쪽 모두를 포함할 수 있다. 메모리 셀들의 각각은 호스트 시스템(120)에 의해 사용된 하나 이상의 비트들의 데이터(예컨대, 데이터 블록들)를 저장할 수 있다. NAND 형 플래시 메모리와 같은 비-휘발성 메모리 컴포넌트들이 설명되지만, 메모리 컴포넌트들(112A 내지 112N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 몇몇 실시예들에서, 메모리 컴포넌트들(112A 내지 112N)은, 이제 제한되지 않지만, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), NOR(negative-or) 플래시 메모리, 전기적으로 삭제 가능한 프로그램 가능 판독-전용 메모리(EEPROM), 및 비-휘발성 메모리 셀들의 교차점 어레이일 수 있다. 비-휘발성 메모리의 교차-점 어레이는 적층 가능한 교차-그리드형 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 부가적으로, 많은 플래시-기반 메모리들과 대조적으로, 교차-점 비-휘발성 메모리는 제자리 기록(write in-place) 동작을 수행할 수 있으며, 여기에서 비-휘발성 메모리 셀은 비-휘발성 메모리 셀이 이전에 삭제되지 않고 프로그램될 수 있다. 더욱이, 메모리 컴포넌트들(112A 내지 112N)의 메모리 셀들은 데이터를 저장하기 위해 사용된 메모리 컴포넌트의 단위를 나타낼 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹핑될 수 있다.
메모리 시스템 제어기(115)(이후 "제어기"로서 불리움)는 메모리 컴포넌트들(112A 내지 112N)에서 데이터를 판독하는 것, 데이터를 기록하는 것, 또는 데이터를 삭제하는 것과 같은 동작들 및 다른 이러한 동작들을 수행하기 위해 메모리 컴포넌트들(112A 내지 112N)과 통신할 수 있다. 제어기(115)는 하나 이상의 집적 회로들 및/또는 이산 컴포넌트들, 버퍼 메모리, 또는 그 조합과 같은 하드웨어를 포함할 수 있다. 제어기(115)는 마이크로제어기, 특수 목적 논리 회로부(예컨대, 필드 프로그램 가능한 게이트 어레이(FPGA), 애플리케이션 특정 집적 회로(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다. 제어기(115)는 로컬 메모리(119)에 저장된 지시들을 실행하도록 구성된 프로세서(프로세싱 디바이스)(117)를 포함할 수 있다. 예시된 예에서, 제어기(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 통신들을 핸들링하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들, 및 루틴들을 수행하기 위한 지시들을 저장하도록 구성된 내장형 메모리를 포함한다. 몇몇 실시예들에서, 로컬 메모리(119)는 메모리 포인터들, 인출된 데이터 등을 저장한 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 판독-전용 메모리(ROM)를 포함할 수 있다. 도 1에서의 예시적인 메모리 서브 시스템(110)은 제어기(115)를 포함하는 것으로 예시되었지만, 본 개시의 또 다른 실시예에서, 메모리 서브 시스템(110)은 제어기(115)를 포함하지 않을 수 있으며, 대신에 외부 제어(예컨대, 외부 호스트에 의해, 또는 메모리 서브 시스템으로부터 분리된 프로세서 또는 제어기에 의해 제공되는)에 의존할 수 있다.
일반적으로, 제어기(115)는 호스트 시스템(120)으로부터 명령 또는 동작들을 수신할 수 있으며 메모리 컴포넌트들(112A 내지 112N)로의 원하는 액세스를 달성하기 위해 명령들 또는 동작들을 지시들 또는 적절한 명령들로 변환할 수 있다. 제어기(115)는 마모 레벨링 동작들, 가비지 컬렉션 동작들, 에러 검출 및 에러-정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들, 및 메모리 컴포넌트들(112A 내지 112N)과 연관되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환들과 같은 다른 동작들을 책임질 수 있다. 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위해 호스트 인터페이스 회로부를 추가로 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 컴포넌트들(112A 내지 112N)을 액세스하기 위해 호스트 시스템으로부터 수신된 명령들을 명령 지시들로 변환할 뿐만 아니라 메모리 컴포넌트들(112A 내지 112N)과 연관된 응답들을 호스트 시스템(120)을 위한 정보로 변환할 수 있다.
메모리 서브 시스템(110)은 또한 예시되지 않은 부가적인 회로부 또는 컴포넌트들을 포함할 수 있다. 몇몇 실시예들에서, 메모리 서브 시스템(110)은 제어기(115)로부터 어드레스를 수신하며 메모리 컴포넌트들(112A 내지 112N)을 액세스하기 위해 어드레스를 디코딩할 수 있는 캐시 또는 버퍼(예컨대, DRAM) 및 어드레스 회로부(예컨대, 행 디코더 및 열 디코더)를 포함할 수 있다.
메모리 서브 시스템 (110)은 빈번하게 판독되는 데이터를 메모리 컴포넌트의 저 레이턴시 부분으로 재배치하는데 사용될 수 있는 데이터 재배치 컴포넌트(data relocation component) (113)를 포함한다. 일부 실시예에서, 제어기 (115)는 데이터 재배치 컴포넌트 (113)의 적어도 일부를 포함한다. 예를 들어, 제어기 (115)는 본 출원에 설명된 동작을 수행하기 위해 로컬 메모리 (119)에 저장된 지시를 실행하도록 구성된 프로세서 (117) (프로세싱 디바이스)를 포함할 수 있다. 일부 실시예에서, 데이터 재배치 컴포넌트 (113)는 호스트 시스템 (120), 애플리케이션 또는 운영 체제의 일부이다.
데이터 재배치 컴포넌트 (113)는 제 1 데이터 블록과 연관된 판독 카운트 또는 메모리 컴포넌트의 워드 라인에 대한 에러율에 기초하여 빈번하게 판독되는 메모리 컴포넌트의 제 1 부분에서 제 1 데이터 블록을 식별할 수 있다. 빈번하게 판독되는 데이터 블록을 식별할 때, 데이터 재배치 컴포넌트 (113)는 메모리 컴포넌트의 제 2 부분 (예를 들어, SLC를 사용하는 부분)이 제 1 데이터 블록에 저장된 데이터를 저장하기에 충분한 공간을 갖는지 여부를 결정할 수 있다. 제 2 부분에 충분한 공간이 있다면, 데이터 재배치 컴포넌트 (113)는 제 1 데이터 블록에 저장된 데이터를 메모리 컴포넌트의 제 2 부분에 있는 제 2 데이터 블록으로 추가로 재배치할 수 있다. 데이터 재배치 컴포넌트 (113)의 동작에 관한 추가 세부 사항은 아래에서 설명된다.
도 2는 본 개시의 몇몇 실시예들에 따른 데이터와 연관된 판독 카운트에 기초하여 메모리 컴포넌트의 저 레이턴시 부분에 판독 데이터를 빈번하게 재배치하기 위한 예시적인 방법의 흐름도이다. 방법(200)은 하드웨어(예컨대, 프로세싱 디바이스, 회로부, 전용 로직, 프로그램 가능한 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예컨대, 프로세싱 디바이스 상에서 구동되거나 또는 실행된 지시들), 또는 그것의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 몇몇 실시예들에서, 방법(200)은 도 1의 데이터 재배치 컴포넌트(113)에 의해 수행된다. 특정한 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는다면, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하며, 예시된 프로세스들은 상이한 순서로 수행될 수 있고, 몇몇 프로세스들은 병렬로 수행될 수 있다. 부가적으로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다.
블록 (210)에서, 프로세싱 로직은 메모리 컴포넌트의 제 1 부분 (예를 들어, 고 레이턴시 부분)에서 제 1 데이터 블록을 식별한다. 제 1 데이터 블록은 판독 카운트 임계치를 충족하거나 초과하는 제 1 데이터 블록과 연관된 판독 카운트에 기초하여 식별된다. 일 실시예에서, 제어기 (115)는 대응하는 데이터 블록에 대해 판독 동작이 수행될 때마다 증분되는 메모리 컴포넌트 (112A-112N) 상의 각각의 데이터 블록에 대한 카운터를 유지한다. 카운터는 주기적으로 재설정될 수 있다 (예를 들어, 해당 데이터 블록에 저장된 데이터가 재배치될 때). 따라서, 판독 카운트는 제 1 데이터 블록에 대한 카운터의 현재 값이 될 수 있으며 제 1 데이터 블록에서 수행된 판독 동작의 수를 나타낼 수 있다. 실시예에서, 판독 카운트 임계치는 메모리 컴포넌트의 다른 데이터 블록에 대한 대표적인 판독 카운트와 관련하여 제 1 데이터 블록과 연관된 판독 카운트의 편차 (예를 들어, 차이)에 기반될 수 있다. 대표적인 판독 카운트는 메모리 컴포넌트의 다른 데이터 블록에 대한 평균 판독 카운트, 다른 데이터 블록에 대한 최고 판독 카운트, 다른 데이터 블록에 대한 판독 카운트의 중앙값 또는 다른 데이터 블록에 대한 판독 카운트의 임의의 다른 통계적 표현에 해당할 수 있다. 판독 카운트 임계치는 메모리 컴포넌트의 데이터 블록에 대한 평균 판독 카운트를 초과하는 제 1 데이터 블록에 대해 수행된 판독 동작의 수일 수 있다. 예를 들어, 판독 임계치가 평균 판독 카운트 초과 500 회 판독 동작이면, 메모리 컴포넌트의 데이터 블록에 대한 평균 판독 카운트는 1,000 회 판독 동작이고, 제 1 데이터 블록에 대한 판독 카운트는 1,500 회 판독 동작이면 제 1 데이터 블록과 연관된 판독 카운트는 판독 카운트 임계치를 충족한다.
일 실시예에서, 판독 카운트 임계치는 제 1 데이터 블록에 대해 수행된 판독 동작의 수에 대응할 수 있다. 예를 들어, 판독 카운트 임계치가 제 1 데이터 블록에 대해 수행된 1,000 개의 판독 동작이고 제 1 데이터 블록에 대해 1,000 개의 판독 동작이 수행된 경우, 제 1 데이터 블록과 관련된 판독 카운트가 판독 임계치를 충족한다. 일부 실시예에서, 판독 카운트 임계치는 제 1 데이터 블록의 판독 카운트와 메모리 컴포넌트의 데이터 블록의 다음으로 높은 판독 카운트 사이의 차이에 대응할 수 있다. 예를 들어, 판독 카운트 임계치가 제 1 데이터 블록에서 수행된 500 회의 판독 동작과 1,000 회의 판독 동작의 차이에 해당하고, 데이터 블록의 다음으로 높은 판독 동작이 500 회의 판독 동작 인 경우, 제 1 데이터 블록이 판독 카운트 임계치를 충족한다.
실시예에서, 제 1 데이터 블록은 트리거링 조건(trigger condition)에 응답하여 식별될 수 있다. 일부 실시예에서, 트리거링 조건은 데이터 임계치를 초과하는 메모리 컴포넌트에 기록된 데이터의 양일 수 있다. 예를 들어, 1GB의 데이터가 메모리 컴포넌트에 기록되고 데이터 임계치가 1GB 인 경우, 메모리 컴포넌트에 기록된 데이터 양은 데이터 임계치를 충족하거나 초과한다. 일 실시예에서, 트리거링 조건은 블록 (210)에서 전술한 바와 같이 메모리 컴포넌트 상의 데이터가 이전에 재배치된 이후 또는 데이터 재배치 컴포넌트 (113)가 메모리 컴포넌트 상의 데이터 블록의 판독 카운트 값을 체크한 이후 경과된 시간의 양일 수 있다. 예를 들어, 이전에 다른 데이터를 저 레이턴시 부분으로 재배치한 후 48 시간이 경과한 경우, 제 1 데이터 블록이 식별될 수 있다.
실시예에서, 트리거링 조건과 관련된 임계치는 데이터가 제 1 부분에서 제 2 부분으로 더 빈번하게 재배치되도록 조정될 수 있다. 예를 들어, 데이터 임계치는 메모리 컴포넌트에 기록되는 1GB의 데이터에서 500MB로 조정될 수 있어서, 데이터가 제 1 부분에서 제 2 부분으로 더 빈번하게 재배치된다.
일 실시예에서, 트리거링 조건과 관련된 임계치는 예견된 값을 초과하거나 미만으로 수행되는 프로그래밍 동작의 수에 기초하여 조정될 수 있다. 데이터가 메모리 셀에 프로그래밍 (예를 들어, 기록)되면 메모리 셀의 상태가 악화된다. 따라서, 메모리 컴포넌트의 각각의 메모리 셀은 메모리 셀이 더 이상 데이터를 신뢰성 있게 저장할 수 없기 전에 메모리 셀에 대해 수행되는 한정된 수의 프로그래밍 동작을 가질 수 있다. 제 1 부분에서 제 2 부분으로 데이터를 재배치하는 것은 메모리 컴포넌트의 제 2 부분에 있는 메모리 셀에 데이터를 기록하는 프로세스를 포함하기 때문에, 메모리 컴포넌트가 메모리 컴포넌트에서 수행되는 프로그래밍 동작이 많으면, 임계치가 조정되어 데이터 재배치 빈도를 줄일 수 있다. 데이터 재배치 빈도를 줄이면 메모리 컴포넌트에서 수행되는 프로그래밍 동작 수를 줄이고 메모리 컴포넌트의 조기 에러를 방지할 수 있다.
블록 (220)에서, 프로세싱 로직은 메모리 컴포넌트의 제 2 부분이 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 미사용 스토리지의 양을 갖는지 여부를 결정한다. 실시예에서, 프로세싱 로직은 제 1 데이터 블록에 저장된 데이터를 저장하기에 충분한 미사용 스토리지가 있는 경우, 메모리 컴포넌트의 제 2 부분이 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 미사용 스토리지의 양을 갖는다고 결정할 수 있다. 예를 들어, 제 1 데이터 블록에 저장된 데이터가 5MB 저장 공간이 필요하고, 제 2 부분에 미사용 저장 공간의 양이 5MB 인 경우, 제 2 부분은 제 1 데이터 블록에 저장된 데이터를 저장할 스토리지 양을 갖는다. 일부 실시예에서, 프로세싱 로직은 미사용 스토리지 (예를 들어, 현재 데이터를 저장하지 않는 메모리)의 양이 스토리지 임계치를 충족하거나 초과하는 경우 메모리 블록의 제 2 부분이 데이터를 저장할 스토리지의 양을 갖는다고 결정할 수 있다.
메모리 컴포넌트의 제 2 부분은 제 1 부분보다 낮은 판독 레이턴시와 연관될 수 있다. 예를 들어, 제 1 부분은 QLC를 포함할 수 있고, 제 2 부분은 제 1 부분의 QLC보다 더 낮은 판독 레이턴시를 갖는 SLC를 포함할 수 있다. 일부 실시예에서, 제 1 데이터 블록에 저장된 데이터를 저장하기에 충분한 공간이 없는 경우, 프로세싱 로직은 제 1 부분의 제 1 데이터 블록에 저장된 데이터를 재배치하지 않기로 결정할 수 있다.
실시예에서, 메모리 컴포넌트의 제 1 부분 및 제 2 부분의 데이터 블록의 수는 데이터 블록의 정적(static) 수일 수 있다. 예를 들어, 메모리 컴포넌트가 1,000 개의 데이터 블록을 포함하는 경우, 950 개의 데이터 블록이 메모리 컴포넌트의 제 1 부분에 할당되고 QLC로 프로그래밍될 수 있고, 50 개의 데이터 블록이 메모리 컴포넌트의 제 2 부분에 할당되고 SLC로 프로그래밍될 수 있다. 이 예에서, 프로세싱 로직은 메모리 컴포넌트의 제 2 부분에 있는 미사용 스토리지의 양이 스토리지 임계치를 충족하거나 초과하는 경우 제 1 데이터 블록에 저장된 데이터를 저장할 미사용 스토리지의 양이 있는지 여부를 결정할 수 있다. 예를 들어, 스토리지 임계치가 100MB의 미사용 스토리지이고 제 2 부분의 200MB 스토리지가 미사용 경우, 프로세싱 로직은 제 1 데이터 블록에 저장된 데이터를 저장하기 위해 제 2 부분에 미사용 스토리지 양이 있다고 결정한다.
일부 실시예에서, 제 1 부분 및 제 2 부분의 데이터 블록의 수는 동적으로 조정될 수 있다. 일 실시예에서, 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 제 2 부분에 공간이 충분하지 않은 경우, 프로세싱 로직은 메모리 컴포넌트의 제 1 부분의 미사용 공간 (예를 들어, 현재 데이터를 저장하지 않는 데이터 블록)의 양이 사용 임계치를 충족하거나 초과하는 지 여부를 결정할 수 있다. 미사용 공간의 양이 사용 임계치를 충족하거나 초과하는 경우, 프로세싱 로직은 제 1 부분에서 제 2 부분으로 하나 이상의 데이터 블록을 할당할 수 있다. 예를 들어, 사용 임계치가 400 개의 미사용 데이터 블록이고, 제 1 부분에 450 개의 미사용 데이터 블록이 있는 경우, 프로세싱 로직은 제 1 부분에서 제 2 부분으로 하나 이상의 데이터 블록을 할당할 수 있다. 일 실시예에서, 프로세싱 로직은 재배치된 데이터를 저장하는 데 필요한 데이터 블록의 수를 할당할 수 있다. 실시예에서, 프로세싱 로직은 재배치된 데이터를 저장하는 데 필요한 데이터 블록의 수보다 더 많은 수의 블록을 할당할 수 있다. 실시예에서, 하나 이상의 데이터 블록을 제 2 부분에 할당할 때, 하나 이상의 데이터 블록의 메모리 셀은 QLC가 아닌 SLC로 프로그래밍될 수 있다.
블록 (230)에서, 메모리 컴포넌트의 제 2 부분이 충분한 공간을 갖는다는 결정에 응답하여, 프로세싱 로직은 메모리 컴포넌트의 제 1 부분의 제 1 데이터 블록에 저장된 데이터를 메모리 컴포넌트의 제 2 부분의 제 2 데이터 블록으로 재배치한다. 제 1 데이터 블록에 저장된 데이터를 재배치하는 프로세스는 제 1 데이터 블록에 저장된 데이터를 판독하는 것과 메모리 컴포넌트의 제 2 부분의 제 2 데이터 블록에 데이터를 프로그래밍하는 것을 포함할 수 있다. 일 실시예에서, 프로세싱 로직은 메모리 컴포넌트의 제 2 부분에 있는 제 2 데이터 블록의 데이터의 새로운 위치를 반영하기 위해 논리적 대 물리적 테이블 맵을 업데이트한다. 제 1 데이터 블록의 데이터는 무효화되어 가비지 컬렉션 동작이 수행될 때 해당 데이터가 삭제될 수 있으므로 제 1 데이터 블록이 새 데이터로 프로그래밍될 수 있다.
도 3은 본 개시의 몇몇 실시예들에 따른 에러율 임계치를 초과하는 에러율을 갖는 워드 라인에 근접한 워드 라인에 저장된 데이터를 재배치하기 위한 예시적인 방법의 흐름도이다. 방법(300)은 하드웨어(예컨대, 프로세싱 디바이스, 회로부, 전용 로직, 프로그램 가능한 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예컨대, 프로세싱 디바이스 상에서 구동되거나 또는 실행된 지시들), 또는 그것의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 몇몇 실시예들에서, 방법(300)은 도 1의 데이터 재배치 컴포넌트(113)에 의해 수행된다. 특정한 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는다면, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하며, 예시된 프로세스들은 상이한 순서로 수행될 수 있고, 몇몇 프로세스들은 병렬로 수행될 수 있다. 부가적으로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다.
블록 (310)에서, 프로세싱 로직은 메모리 컴포넌트의 제 1 부분에서 워드 라인을 식별한다. 실시예에서, 식별된 워드 라인은 QLC인 메모리 컴포넌트의 제 1 부분의 메모리 셀을 포함할 수 있다. 블록 (320)에서, 프로세싱 로직은 워드 라인 각각에 대한 대응하는 에러율을 결정한다. 실시예에서, 에러율은 워드 라인에 저장된 데이터에 대한 단위 시간당 비트 에러의 수에 대응하는 RBER(raw bit error rate)일 수 있다. 데이터는 전형적으로 메모리 컴포넌트에 데이터를 기록하기 전에 시스템 에러 정정 디바이스 (ECU)에 의해 인코딩된다. 메모리 컴포넌트에서 데이터를 판독한 후 시스템 ECU는 데이터를 디코딩한다. 실시예에서, 프로세싱 로직은 비트 토글(bit toggle) 수 (즉, 하나의 논리 값에서 다른 논리 값으로 플립된(flipped) 비트 수)를 측정하기 위해 ECU 디코더에 입력된 원시 데이터(raw data)와 ECU에 의해 출력된 정정된 데이터를 비교할 수 있다. 원시 데이터와 ECU 디코딩 데이터 사이의 이 비트 플립 수가 에러율을 나타낸다.
블록 (330)에서, 프로세싱 로직은 제 1 워드 라인의 제 1 에러율 및 제 2 워드 라인의 제 2 에러율이 에러율 임계치를 초과하는 지를 결정한다. 실시예에서, 에러율 임계치는 메모리 컴포넌트의 다른 워드 라인에 대한 대표적인 에러율에 대해 제 1 워드 라인 및 제 2 워드 라인과 관련된 에러율의 편차에 기초할 수 있다. 에러율 임계치는 제 1 및 제 2 워드 라인의 에러율과 메모리 컴포넌트의 워드 라인에 대한 평균 에러율 간의 차이일 수 있다. 실시예에서, 에러율 임계치는 메모리 컴포넌트의 워드 라인에 대한 평균 에러율의 배수일 수 있다. 예를 들어, 에러율 임계치는 메모리 컴포넌트의 워드 라인에 대한 평균 에러율보다 10 배 큰 에러율에 해당할 수 있다. 제 1 에러율 및 제 2 에러율이 에러율 임계치를 초과하는 것을 결정한 것에 관한 추가 세부 사항은 도 6에서 아래에서 논의된다.
일 실시예에서, 에러율 임계치는 제 1 및 제 2 워드 라인에 대한 에러율에 대응할 수 있다. 예를 들어, 제 1 및 제 2 워드 라인의 에러율이 1 x 10-4이고 에러율 임계치가 1 x 10-4이면, 제 1 및 제 2 워드 라인과 연관된 에러율은 에러율 임계치를 초과한다. 일부 실시예에서, 에러율 임계치는 제 1 및 제 2 워드 라인의 에러율과 메모리 컴포넌트의 워드 라인의 다음으로 높은 에러율 사이의 차이에 대응할 수 있다.
블록 (340)에서, 프로세싱 로직은 제 1 워드 라인 및 제 2 워드 라인에 근접한 (예를 들어, 인접한) 제 3 워드 라인을 식별한다. 예를 들어, 제 3 워드 라인 (610C)은 도 6에 도시된 바와 같이 제 1 워드 라인 (610B)과 제 2 워드 라인 (610D) 사이에 위치될 수 있다. 메모리 컴포넌트의 워드 라인 상의 메모리 셀로부터 데이터가 판독될 때, 근접한 워드 라인에 있는 메모리 셀은 판독 방해 스트레스(read disturb stress)를 경험할 수 있다. 판독 방해 스트레스는 근접한 워드 라인의 메모리 셀이 다시 프로그래밍되도록 하여 근접 워드 라인에 저장된 데이터에 대해 더 높은 에러율을 초래할 수 있다. 따라서, 상승된 에러율을 갖는 워드 라인은 메모리 컴포넌트의 워드 라인이 가장 빈번하게 판독되는 지표(indicator)가 될 수 있다. 근접한 워드 라인을 식별하는 것에 관한 추가 세부 사항은 도 6에서 아래에서 논의될 것이다.
블록 (350)에서, 프로세싱 로직은 제 3 워드 라인에 저장된 데이터를 메모리 컴포넌트의 제 2 부분으로 재배치한다. 메모리 컴포넌트의 제 2 부분은 메모리 컴포넌트의 제 1 부분보다 더 낮은 판독 레이턴시를 가질 수 있다.
도 3을 참조하여, 빈번하게 판독되는 워드 라인을 식별하기 위해 워드 라인의 에러율을 이용함으로써, 메모리 서브 시스템은 이전에 2에서 설명된 바와 같이 더 이상 메모리 컴포넌트의 데이터 블록의 판독 카운트를 추적하지 않는다. 메모리 컴포넌트의 데이터 블록에 대해 수행된 판독 카운트가 더 이상 추적되지 않기 때문에, 판독 카운트를 추적하는 데 전용되는 메모리 서브 시스템의 컴퓨팅 자원의 양을 줄이거나 제거할 수 있다. 그 결과 메모리 서브 시스템의 성능이 향상된다.
도 4a는 본 개시의 실시예들에 따른 메모리 컴포넌트에 기록된 데이터의 양이 제 1 임계 조건을 만족하는지 (예를 들어, 데이터 임계를 충족하거나 초과하는) 여부를 결정하는 메모리 서브 시스템 (400)의 예시이다. 메모리 서브 시스템 (400)의 메모리 컴포넌트는 각각 하나 이상의 데이터 비트를 저장하는 데이터 블록 (405A, 405B 및 405C)을 포함한다. 메모리 서브 시스템은 데이터 블록 (405A, 405B 및 405C) 각각에 대한 판독 카운트 (예를 들어, READ OPS.)를 추적할 수 있다. 판독 카운트는 데이터 블록 (405A, 405B 및 405C)에서 수행된 판독 동작의 수에 대응할 수 있다. 메모리 서브 시스템 (400)은 또한 메모리 컴포넌트에 기록된 데이터 (410)의 양에 대응하는 데이터 (410)의 양 (410) 및 도 2에서 이전에 논의된 데이터 임계치에 대응하는 임계치 (415)을 포함한다.
전술한 바와 같이, 실시예들에서, 데이터 블록에 저장된 데이터는 제 1 임계 조건을 만족하는 메모리 컴포넌트에 기록된 데이터의 양과 같은 트리거링 조건에 응답하여 저 레이턴시 부분으로 재배치될 수 있다 (예를 들어, 데이터 임계치 초과). 도 4a을 참조하여, 데이터 블록 (405A)은 100 개의 판독 동작의 판독 카운트를 가지며, 데이터 블록 (405B)은 75 개의 판독 동작의 판독 카운트를 가지며, 데이터 블록 (405C)은 125 개의 판독 동작의 판독 카운트를 갖는다. 메모리 컴포넌트에 기록된 데이터 양에 대한 데이터 임계치 (415)은 1GB이고 메모리 컴포넌트에 기록된 데이터 (410)의 양은 750MB이다. 메모리 컴포넌트에 기록된 데이터 (410)의 양이 제 1 임계 조건을 충족하지 않기 때문에 (예를 들어, 데이터 임계치 (415)을 초과하지 않음), 메모리 서브 시스템 (400)은 메모리 컴포넌트의 저 레이턴시 부분으로 재배치할 데이터 블록을 식별하지 않기로 결정한다.
도 4b는 본 개시의 실시예들에 따른 메모리 컴포넌트의 저 레이턴시 부분으로 재배치하기 위한 데이터 블록을 식별하는 메모리 서브 시스템 (450)의 예시이다. 도 4b에서, 데이터 블록 (405A)은 125 개의 판독 동작의 판독 카운트를 가지며, 데이터 블록 (405B)은 100 개의 판독 동작의 판독 카운트를 가지며, 데이터 블록 (405C)은 150 개의 판독 동작의 판독 카운트를 갖는다. 메모리 컴포넌트에 기록된 데이터 (410)의 양은 1GB이다. 메모리 컴포넌트에 기록된 데이터 (410)의 양이 제 1 임계 조건을 만족하기 때문에 (예를 들어, 데이터 임계치 (415)을 충족하거나 초과함), 메모리 서브 시스템 (450)은 메모리 컴포넌트의 저 레이턴시 부분으로 재배치할 데이터 블록을 식별한다. 메모리 서브 시스템 (450)은 데이터 블록 (405A, 405B 및 405C)의 가장 높은 판독 카운트를 갖는 데이터 블록 (405C)에 기초하여 재배치를 위한 데이터 블록 (405C)을 식별할 수 있다.
도 5a는 본 개시의 일부 실시예들에 따른 메모리 컴포넌트상에서 수행되는 다수의 프로그래밍 동작들에 기초하여 후속 데이터를 재배치하기로 결정하는 메모리 서브 시스템 (500)의 예시이다. 앞서 논의된 바와 같이, 메모리 컴포넌트의 메모리 셀은 메모리 셀이 더 이상 데이터를 안정적으로 저장할 수 없기 전에 메모리 셀에서 수행될 수 있는 한정된 수의 프로그래밍 동작을 갖는다. 일부 실시예에서, 메모리 서브 시스템 (500)은 메모리 컴포넌트 (505)에서 수행되는 프로그래밍 동작의 수가 예상치 (510)을 충족하거나 초과하는지에 기초하여 메모리 컴포넌트의 저 레이턴시 부분으로 후속 데이터를 재배치할지 여부를 결정할 수 있다.
도 5a를 참조하여, 예상치 (510)는 1500 개의 프로그래밍 동작이고 1000 개의 프로그래밍 동작이 메모리 컴포넌트 (505)에서 수행되었다. 메모리 컴포넌트 (505)에서 수행된 프로그래밍 동작의 수가 제 2 임계 조건을 만족하지 않기 때문에 (예를 들어, 예상치 (510)을 초과하지 않음), 블록 (515)에서 메모리 서브 시스템 (500)은 메모리 컴포넌트 (505)의 저 레이턴시 부분에 후속 데이터를 재배치하기로 결정한다. 후속 데이터는 메모리 컴포넌트 (505)의 저 레이턴시 부분에 재배치하기 위해 메모리 서브 시스템 (500)에 의해 후속으로 식별되는 다른 빈번하게 판독되는 데이터에 해당할 수 있다.
도 5b는 본 개시의 일부 실시예들에 따른 메모리 컴포넌트상에서 수행되는 다수의 프로그래밍 동작들에 기초하여 후속 데이터를 재배치하기로 결정하는 메모리 서브 시스템 (550)의 예시이다. 도 5b에서, 메모리 컴포넌트에 대해 수행되는 프로그래밍 동작의 수는 1500 개의 프로그래밍 동작이다. 메모리 컴포넌트 (505)에서 수행된 프로그래밍 동작의 수가 제 2 임계 조건을 만족하기 때문에 (예를 들어, 예상치 (510)을 충족하거나 초과), 블록 (520)에서 메모리 서브 시스템 (550)은 후속 데이터를 메모리 컴포넌트의 저 레이턴시 부분에 재배치하지 않기로 결정한다.
도 6은 본 개시의 일 실시예에 따른 임계치를 초과하는 에러율에 기초하여 재배치를 위한 워드 라인을 식별하는 메모리 서브 시스템 (600)을 예시한다. 메모리 서브 시스템 (600)은 메모리 컴포넌트의 제 1 부분에 워드 라인 (610A-E)을 갖는 메모리 컴포넌트를 포함한다. 각각의 워드 라인 (610A-E)은 대응하는 에러율 (615)을 갖는다. 메모리 서브 시스템 (600)은 또한 워드 라인에 대한 최고 에러율과 워드 라인에 대한 다음으로 높은 에러율 간의 차이에 대응하는 에러율 임계치 (620)를 포함한다.
전술한 바와 같이, 빈번하게 판독되는 워드 라인은 워드 라인에 근접한 다른 워드 라인에 판독 방해 스트레스를 유발할 수 있다. 근접한 워드 라인에 대한 판독 방해 스트레스는 메모리 컴포넌트의 다른 워드 라인에 비해 근접한 워드 라인에 대한 에러율을 높일 수 있다. 따라서, 높은 에러율을 갖는 두 개의 워드 라인 사이에 위치되는 (예를 들어, 근접한) 워드 라인은 메모리 컴포넌트의 다른 워드 라인보다 더 빈번하게 판독될 수 있고, 메모리 컴포넌트의 저 레이턴시 부분으로 재배치되도록 식별될 수 있다.
도 6을 참조하여, 워드 라인 (610A)는 에러율 50을 갖고, 워드 라인 (610B)는 에러율 500을 갖고, 워드 라인 (610C)는 에러율 100를 갖고, 워드 라인 (610D)는 에러율 500을 갖고, 워드 라인 (610E)는 에러율 50을 갖는다. 가장 높은 에러율 (예를 들어, 워드 라인 (610B 및 610D)에 대한 에러율)과 다음으로 높은 에러율 (예를 들어, 워드 라인 (610C)에 대한 에러율) 사이의 차이가 제 3 임계 조건을 만족하는 경우 (예를 들어, 에러율 임계치 (620)을 만족하거나 초과하는 경우), 메모리 서브 시스템 (600)은 메모리 컴포넌트의 저 레이턴시 부분으로 재배치하기 위해 워드 라인이 식별되어야 한다고 결정할 수 있다. 메모리 서브 시스템 (600)은 워드 라인 (610B) 및 워드 라인 (610D)에 근접한 워드 라인을 식별한다. 워드 라인 (610C)이 워드 라인 (610B) 및 워드 라인 (610D) 둘 모두에 근접하기 때문에, 메모리 서브 시스템 (600)은 워드 라인 (610C)을 식별할 수 있다. 워드 라인 (610C)을 식별할 때, 메모리 서브 시스템 (600)은 워드 라인 (610C)에 저장된 데이터를 메모리 컴포넌트의 저 레이턴시 부분으로 재배치할 수 있다.
도 7은 본 개시의 실시예들에 따른 메모리 컴포넌트의 저 레이턴시 부분에 할당된 데이터 블록의 수를 감소시키는 메모리 서브 시스템을 예시하는 그래프 (700)이다. 그래프 (700)는 메모리 컴포넌트의 데이터 블록의 수를 나타내는 Y 축과 메모리 컴포넌트에 대해 수행되는 프로그래밍 동작의 수를 나타내는 X 축을 포함한다. 그래프 (700)는 저 레이턴시 부분 (710)에 할당된 데이터 블록의 수를 나타내는 저 레이턴시 부분 (710)과 고 레이턴시 부분 (720)에 할당된 데이터 블록의 수를 나타내는 고 레이턴시 부분 (720)을 더 포함한다. 저 레이턴시 부분 (710) 및 고 레이턴시 부분 (720)은 도 2 및 도 3의 제 2 부분 및 제 1 부분에 각각 대응할 수 있다.
전술한 바와 같이, 메모리 컴포넌트에 대해 수행되는 프로그래밍 동작의 수가 증가함에 따라, 데이터가 저 레이턴시 부분 (710)으로 재배치되는 빈도가 감소되어 데이터가 저 레이턴시 부분 (710)으로 재배치되는 빈도가 줄어들 수 있다. 데이터가 저 레이턴시 부분 (710)에 덜 빈번하게 재배치되기 때문에, 메모리 컴포넌트에서 수행되는 프로그래밍 사이클의 수가 증가함에 따라, 저 레이턴시 부분 (710)에 할당된 데이터 블록은 고 레이턴시 부분 (720)에 다시 할당될 수 있다. 실시예에서, 데이터 블록을 고 레이턴시 부분 (720)에 재 할당할 때, 데이터 블록은 SLC가 아닌 QLC로서 프로그래밍될 수 있다.
도 8은 기계가, 본 출원에서 논의된 방법들 중 임의의 하나 이상을 수행하게 하기 위한 지시들의 세트가 실행될 수 있는 컴퓨터 시스템(800)의 예시적인 기계를 예시한다. 몇몇 실시예들에서, 컴퓨터 시스템(800)은 메모리 서브 시스템(예컨대, 도 1의 메모리 서브 시스템(110))을 포함하고, 그것에 결합되거나, 또는 이를 이용하는 호스트 시스템(예컨대, 도 1의 호스트 시스템(120))에 대응할 수 있거나 또는 제어기의 동작들을 수행하기 위해(예컨대, 도 1의 데이터 재배치 컴포넌트(113)에 대응하는 동작들을 수행하도록 운영 시스템을 실행하기 위해) 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷에서 다른 기계들에 연결(예컨대, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량에서, 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 기계로서, 또는 클라우드 컴퓨팅 기반시설 또는 환경에서 서버 또는 클라이언트 기계로서 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋-탑 박스(STB), 개인용 디지털 보조기(PDA), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 상기 기계에 의해 취해질 동작들을 특정하는 지시들의 세트를 실행할 수 있는(순차적 또는 그 외) 임의의 기계일 수 있다. 뿐만 아니라, 단일 기계가 예시되지만, 용어 "기계"는 또한 본 출원에서 논의된 방법들 중 임의의 하나 이상을 수행하기 위해 지시들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 기계들의 임의의 모음을 포함하기 위해 취해질 수 있다.
예시적인 컴퓨터 시스템(800)은 버스(830)를 통해 서로 통신하는, 프로세싱 디바이스(802), 메인 메모리(804)(예컨대, 판독-전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(806)(예컨대, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(818)을 포함한다.
프로세싱 디바이스(802)는 마이크로프로세서, 중앙 프로세싱 유닛 등과 같은, 하나 이상의 범용 프로세싱 디바이스들을 나타낸다. 보다 특히, 프로세싱 디바이스는 복잡 지시 세트 컴퓨팅(CISC) 마이크로프로세서, 축소 지시 세트 컴퓨팅(RISC) 마이크로프로세서, 매우 긴 지시 워드(VLIW) 마이크로프로세서, 또는 다른 지시 세트들을 구현한 프로세서, 또는 지시 세트들의 조합을 구현한 프로세서들일 수 있다. 프로세싱 디바이스(802)는 또한 애플리케이션 특정 집적 회로(ASIC), 필드 프로그램 가능한 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수-목적 프로세싱 디바이스들일 수 있다. 프로세싱 디바이스(802)는 본 출원에서 논의된 동작들 및 단계들을 수행하기 위한 지시들(826)을 실행하도록 구성된다. 컴퓨터 시스템(800)은 네트워크(820)를 통해 통신하기 위해 네트워크 인터페이스 디바이스(808)를 추가로 포함할 수 있다.
데이터 저장 시스템(818)은 본 출원에서 논의된 방법들 또는 기능들 중 임의의 하나 이상을 구체화한 하나 이상의 세트들의 지시들(826) 또는 소프트웨어가 저장되는 기계 판독 가능한 저장 매체(824)(또한 컴퓨터-판독 가능한 매체로서 알려짐)를 포함할 수 있다. 지시들(826)은 또한 컴퓨터 시스템(800)에 의한 실행 동안 메인 메모리(804) 내에 및/또는 프로세싱 디바이스(802) 내에, 완전히 또는 적어도 부분적으로 존재할 수 있으며, 메인 메모리(804) 및 프로세싱 디바이스(802)는 또한 기계 판독 가능한 저장 매체를 구성한다. 기계 판독 가능한 저장 매체(824), 데이터 저장 시스템(818), 및/또는 메인 메모리(804)는 도 1의 메모리 서브 시스템(110)에 대응할 수 있다.
일 실시예에서, 지시들(826)은 데이터 재배치 컴포넌트 (예를 들어, 도 1의 데이터 재배치 컴포넌트 (113))에 대응하는 기능을 구현하기 위한 지시들을 포함한다. 기계 판독 가능한 저장 매체(824)는 예시적인 실시예에서 단일 매체인 것으로 도시되지만, 용어 "기계 판독 가능한 저장 매체"는 하나 이상의 세트들의 지시들을 저장하는 단일 매체 또는 다수의 매체를 포함하는 것으로 취해져야 한다. 용어 "기계 판독 가능한 저장 매체"는 또한 기계에 의한 실행 동안 지시들의 세트를 저장하거나 또는 인코딩할 수 있으며 기계가 본 개시의 방법들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 취해진다. 용어 "기계 판독 가능한 저장 매체"는 따라서 이에 제한되지 않지만, 솔리드 스테이트 메모리들, 광학 매체, 및 자기 매체를 포함하는 것으로 취해질 것이다.
앞서 말한 상세한 설명들의 몇몇 부분들은 컴퓨터 메모리 내에서 데이터 비트들에 대한 동작들의 알고리즘들 및 심볼 표현들에 대하여 제공되었다. 이들 알고리즘적 설명들 및 표현들은 그들의 작업의 본질을 이 기술분야의 다른 숙련자들에게 가장 효과적으로 전달하기 위해 데이터 프로세싱 기수들에서의 숙련자들에 의해 사용되는 방식들이다. 알고리즘은 여기에서, 및 일반적으로 원하는 결과를 이끄는 동작들의 일관성 있는 시퀀스인 것으로 인지된다. 동작들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 반드시는 아니지만, 보통, 이들 양들은 저장되고, 조합되고, 비교되며, 그 외 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 취한다. 때로는, 주로 일반적인 사용의 이유들로, 이들 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 나타내는 것이 편리하다는 것이 증명되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관되며 단지 이들 양들에 적용된 편리한 라벨들이라는 것을 명심해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들 및 메모리들 내에서 물리적 (전자) 양들로서 표현된 데이터를 조작하며 이를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내에서의 물리적 양들로서 유사하게 표현된 다른 데이터로 변환하는 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스들을 나타낼 수 있다.
본 개시는 또한 본 출원에서 동작들을 수행하기 위한 장치에 관한 것이다. 이러한 장치는 의도된 목적들을 위해 특수하게 구성될 수 있거나, 또는 그것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 또는 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 이에 제한되지 않지만, 플로피 디스크들, 광학 디스크들, CD-ROM들, 및 자기-광학 디스크들을 포함한 임의의 유형의 디스크, 판독-전용 메모리들(ROM들), 랜덤 액세스 메모리들(RAM들), EPROM들, EEPROM들, 자기 또는 광학 카드들, 또는 전자 지시들을 저장하는데 적합한 임의의 유형의 매체와 같은, 컴퓨터 판독 가능한 저장 매체에 저장될 수 있으며, 각각은 컴퓨터 시스템 버스에 결합된다.
본 출원에서 제공된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정한 컴퓨터 또는 다른 장치에 관련되지 않는다. 다양한 범용 시스템들은 본 출원에서의 교시들에 따른 프로그램들과 함께 사용될 수 있거나, 또는 방법을 수행하기 위해 더 특수화된 장치를 구성하는 것이 편리하다는 것을 증명할 수 있다. 다양한 이들 시스템들을 위한 구조는 이하의 설명에서 제시된 것처럼 보일 것이다. 또한, 본 개시는 임의의 특정한 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들은 본 출원에서 설명된 바와 같이 본 개시의 교시들을 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하도록 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그램하기 위해 사용될 수 있는, 그것 상에 지시들을 저장한 기계 판독 가능한 매체를 포함할 수 있는, 컴퓨터 프로그램 제품, 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능한 매체는 기계(예컨대, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 몇몇 실시예들에서, 기계 판독 가능한(예컨대, 컴퓨터-판독 가능한) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 컴포넌트들 등과 같은 기계(예컨대, 컴퓨터) 판독 가능한 저장 매체를 포함한다.
앞서 말한 명세서에서, 본 개시의 실시예들은 그것의 특정 예시적인 실시예들을 참조하여 설명되었다. 다양한 수정들이 다음의 청구항들에서 제시된 바와 같이 본 개시의 실시예들의 더 넓은 사상 및 범위로부터 벗어나지 않고 그것에 대해 이루어질 수 있다는 것이 명백할 것이다. 명세서 및 도면들은, 따라서, 제한적인 의미보다는 예시적인 의미로 간주될 것이다.

Claims (20)

  1. 시스템에 있어서,
    메모리 컴포넌트; 및
    상기 메모리 컴포넌트와 동작 가능하게 결합된 프로세싱 디바이스(processing device)로서,
    상기 메모리 컴포넌트의 제 1 부분에 있는 복수의 데이터 블록 중 제 1 데이터 블록을 식별하고, 상기 제 1 데이터 블록은 판독 카운트에 관련된 제 1 임계치 기준을 만족하는 상기 제 1 데이터 블록과 관련된 상기 판독 카운트에 기초하여 식별되고;
    상기 메모리 컴포넌트의 제 2 부분이 상기 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 미사용 스토리지(unused storage)의 양을 갖는지 여부를 결정하고, 상기 메모리 컴포넌트의 상기 제 2 부분은 상기 제 1 부분보다 저 판독 레이턴시(latency)와 연관되고; 및
    상기 메모리 컴포넌트의 상기 제 2 부분이 상기 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 미사용 스토리지의 양을 갖는다고 결정한 것에 응답하여, 상기 메모리 컴포넌트의 상기 제 1 부분의 상기 제 1 데이터 블록에 저장된 데이터를 상기 메모리 컴포넌트의 상기 제 2 부분의 상기 제 2 데이터 블록으로 재배치하는, 상기 프로세싱 디바이스를 포함하는, 시스템.
  2. 제 1 항에 있어서, 상기 메모리 컴포넌트의 상기 제 1 부분은 하나 이상의 쿼드 레벨 셀 (QLC)을 포함하고, 상기 메모리 컴포넌트의 상기 제 2 부분은 하나 이상의 단일 레벨 셀 (SLC)을 포함하는, 시스템.
  3. 제 1 항에 있어서, 상기 프로세싱 디바이스는 또한,
    상기 메모리 컴포넌트에 기록된 데이터의 양이 데이터 임계치와 관련된 제 2 임계치 기준을 충족하는지 여부를 결정하고, 상기 메모리 컴포넌트의 상기 제 1 부분에 상기 복수의 데이터 블록 중 상기 제 1 데이터 블록을 식별하는 것은 상기 메모리 컴포넌트에 기록된 데이터의 양이 상기 제 2 임계치 기준을 만족한다고 결정한 것에 응답하는, 시스템.
  4. 제 3 항에 있어서, 상기 프로세싱 디바이스는 또한,
    상기 메모리 컴포넌트에서 수행되는 프로그래밍 동작의 수가 예상치 미만인지 여부를 결정하고; 및
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 상기 예상치 미만이라는 결정에 응답하여, 데이터 임계치를 줄이는, 시스템.
  5. 제 1 항에 있어서, 상기 프로세싱 디바이스는 또한,
    상기 메모리 컴포넌트의 상기 제 1 부분의 미사용 메모리 셀의 양이 제 3 임계치 기준을 만족하는지 여부를 결정하고; 및
    상기 메모리 컴포넌트의 상기 제 1 부분의 미사용 메모리 셀의 양이 상기 제 3 임계 조건을 만족한다고 결정한 것에 응답하여, 상기 메모리 컴포넌트의 상기 제 2 부분에 상기 제 1 부분의 미사용 메모리 셀 중 하나 이상을 할당하는, 시스템.
  6. 제 1 항에 있어서, 상기 제 1 임계치 기준은 상기 복수의 데이터 블록에 대한 대표적인 판독 카운트에 대한 상기 제 1 데이터 블록과 연관된 판독 카운트의 편차에 기초하는, 시스템.
  7. 제 1 항에 있어서, 상기 프로세싱 디바이스는 또한,
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 제 4 임계 조건을 만족하는지 여부를 결정하고; 및
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 상기 제 4 임계 조건을 만족한다고 결정한 것에 응답하여, 후속 데이터를 재배치하지 않기로 결정하는, 시스템.
  8. 방법에 있어서,
    메모리 컴포넌트의 제 1 부분에서 복수의 워드 라인(word line)을 식별하는 단계;
    상기 복수의 워드 라인 각각에 대해 대응하는 에러율(error rate)을 결정하는 단계;
    상기 복수의 워드 라인 중 제 1 워드 라인의 제 1 에러율과 상기 복수의 워드 라인 중 제 2 워드 라인의 제 2 에러율이 에러율 임계치에 관련된 제 1 임계 조건을 만족하는지를 결정하는 단계;
    상기 제 1 워드 라인 및 상기 제 2 워드 라인에 근접한 상기 복수의 워드 라인 중 제 3 워드 라인을 식별하는 단계; 및
    프로세싱 디바이스에 의해, 상기 제 3 워드 라인에 저장된 데이터를 상기 메모리 컴포넌트의 상기 제 2 부분으로 재배치하는 단계로서, 상기 메모리 컴포넌트의 상기 제 2 부분은 상기 메모리 컴포넌트의 상기 제 1 부분보다 더 낮은 판독 레이턴시와 연관된, 방법.
  9. 제 8 항에 있어서, 상기 제 1 임계 조건을 만족하는 상기 제 1 워드 라인의 상기 제 1 에러율 및 상기 제 2 워드 라인의 상기 제 2 에러율은 상기 제 3 워드 라인에서 수행되는 판독 동작과 관련된 판독 방해 스트레스를 나타내는, 방법.
  10. 제 8 항에 있어서, 상기 제 1 임계 조건은 상기 복수의 워드 라인에 대한 대표적인 에러율에 대한 상기 제 1 에러율 및 상기 제 2 에러율의 편차에 기초하는, 방법.
  11. 제 8 항에 있어서,
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 제 2 임계 조건을 만족하는지 여부를 결정하는 단계; 및
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 상기 제 2 임계 조건을 만족한다고 결정한 것에 응답하여, 에러율 임계치를 감소시키는 단계를 더 포함하는, 방법.
  12. 제 8 항에 있어서,
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 제 3 임계 조건을 만족하는지 여부를 결정하는 단계; 및
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 상기 제 3 임계 조건을 만족한다고 결정한 것에 응답하여, 후속 데이터를 재배치하지 않기로 결정하는 단계를 더 포함하는, 방법.
  13. 제 8 항에 있어서, 상기 메모리 컴포넌트의 상기 제 1 부분은 하나 이상의 쿼드 레벨 셀 (QLC)을 포함하고, 상기 메모리 컴포넌트의 상기 제 2 부분은 하나 이상의 단일 레벨 셀 (SLC)을 포함하는, 방법.
  14. 제 8 항에 있어서, 상기 메모리 컴포넌트는 NAND(negative-and) 유형 플래시 메모리를 포함하는, 방법.
  15. 지시들을 포함하는 비 일시적 컴퓨터 판독 가능 저장 매체에 있어서, 상기 지시가 프로세싱 디바이스에 의해 실행될 때, 프로세싱 디바이스로 하여금,
    메모리 컴포넌트의 제 1 부분에 복수의 데이터 블록의 제 1 데이터 블록을 식별하고, 상기 제 1 데이터 블록은 판독 카운트에 관련된 제 1 임계 조건을 만족하는 상기 제 1 데이터 블록과 관련된 상기 판독 카운트에 기초하여 식별되고;
    상기 메모리 컴포넌트의 제 2 부분이 상기 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 미사용 스토리지의 양을 갖는지 여부를 결정하고, 상기 메모리 컴포넌트의 상기 제 2 부분은 상기 제 1 부분보다 더 낮은 판독 레이턴시와 연관되고; 및
    상기 메모리 컴포넌트의 상기 제 2 부분이 상기 제 1 데이터 블록에 저장된 데이터를 저장하기 위한 미사용 스토리지의 양을 갖는다고 결정한 것에 응답하여, 상기 메모리 컴포넌트의 상기 제 1 부분의 상기 제 1 데이터 블록에 저장된 데이터를 상기 메모리 컴포넌트의 상기 제 2 부분의 상기 제 2 데이터 블록으로 재배치하게 하는, 비 일시적 컴퓨터 판독 가능 저장 매체.
  16. 제 15 항에 있어서, 상기 메모리 컴포넌트의 상기 제 1 부분은 하나 이상의 쿼드 레벨 셀 (QLC)을 포함하고, 상기 메모리 컴포넌트의 상기 제 2 부분은 하나 이상의 단일 레벨 셀 (SLC)을 포함하는, 비 일시적 컴퓨터 판독 가능 저장 매체.
  17. 제 15 항에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 메모리 컴포넌트에 기록된 데이터의 양이 데이터 임계치와 관련된 제 2 임계 조건을 만족하는지 여부를 결정하고, 상기 메모리 컴포넌트의 상기 제 1 부분에 상기 복수의 데이터 블록 중 제 1 데이터 블록을 식별하는 것은 상기 메모리 컴포넌트에 기록된 데이터의 양이 상기 제 2 임계 조건을 만족한다는 결정에 응답하는 것인, 비 일시적 컴퓨터 판독 가능 저장 매체.
  18. 제 17 항에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 제 3 임계 조건을 만족하는지 여부를 결정하고; 및
    상기 메모리 컴포넌트에 대해 수행된 프로그래밍 동작의 수가 상기 제 3 임계 조건을 만족한다는 결정에 응답하여, 상기 데이터 임계치를 증가 시키는, 비 일시적 컴퓨터 판독 가능 저장 매체.
  19. 제 15 항에 있어서, 상기 프로세싱 디바이스는 추가로,
    상기 메모리 컴포넌트의 상기 제 1 부분의 미사용 메모리 셀의 양이 제 4 임계 조건을 만족하는지 여부를 결정하고; 및
    상기 메모리 컴포넌트의 상기 제 1 부분의 미사용 메모리 셀의 양이 제 4 임계 조건을 만족한다고 결정한 것에 응답하여, 상기 메모리 컴포넌트의 상기 제 2 부분에 상기 제 1 부분의 미사용 메모리 셀 중 하나 이상을 할당하는, 비 일시적 컴퓨터 판독 가능 저장 매체.
  20. 제 15 항에 있어서, 상기 제 1 임계치 기준은 상기 복수의 데이터 블록에 대한 대표적인 판독 카운트에 대한 상기 제 1 데이터 블록과 관련된 판독 카운트의 편차에 기초하는, 비 일시적 컴퓨터 판독 가능 저장 매체.
KR1020217015818A 2018-10-30 2019-10-29 저 레이턴시 메모리에 데이터 재배치 KR20210065202A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/175,605 2018-10-30
US16/175,605 US11169747B2 (en) 2018-10-30 2018-10-30 Relocating data to low latency memory
PCT/US2019/058661 WO2020092438A1 (en) 2018-10-30 2019-10-29 Relocating data to low latency memory

Publications (1)

Publication Number Publication Date
KR20210065202A true KR20210065202A (ko) 2021-06-03

Family

ID=70326693

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217015818A KR20210065202A (ko) 2018-10-30 2019-10-29 저 레이턴시 메모리에 데이터 재배치

Country Status (5)

Country Link
US (2) US11169747B2 (ko)
EP (1) EP3874359A4 (ko)
KR (1) KR20210065202A (ko)
CN (1) CN113168292A (ko)
WO (1) WO2020092438A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113885779B (zh) * 2020-07-02 2024-03-12 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
CN113961140A (zh) * 2020-07-02 2022-01-21 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
CN113885778B (zh) 2020-07-02 2024-03-08 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6889232B2 (en) * 2001-02-15 2005-05-03 Microsoft Corporation System and method for data migration
US7937521B2 (en) 2008-01-29 2011-05-03 Cadence Design Systems, Inc. Read disturbance management in a non-volatile memory system
TWI375953B (en) 2008-02-21 2012-11-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
JP2011186555A (ja) * 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置及び方法
US8478933B2 (en) * 2009-11-24 2013-07-02 International Business Machines Corporation Systems and methods for performing deduplicated data processing on tape
US9021177B2 (en) * 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8886990B2 (en) 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
US9146851B2 (en) * 2012-03-26 2015-09-29 Compellent Technologies Single-level cell and multi-level cell hybrid solid state drive
US8760922B2 (en) * 2012-04-10 2014-06-24 Sandisk Technologies Inc. System and method for micro-tiering in non-volatile memory
US9053808B2 (en) 2012-06-21 2015-06-09 Sandisk Technologies Inc. Flash memory with targeted read scrub algorithm
US9575829B2 (en) * 2013-03-13 2017-02-21 Sandisk Technologies Llc Probability-based remedial action for read disturb effects
US9489263B2 (en) * 2014-01-09 2016-11-08 Sandisk Technologies Llc Selective ECC refresh for on die buffered non-volatile memory
US9811457B2 (en) 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system
KR102174030B1 (ko) 2014-05-13 2020-11-05 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 읽기 방법
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US9349479B1 (en) * 2014-11-18 2016-05-24 Sandisk Technologies Inc. Boundary word line operation in nonvolatile memory
US9760478B2 (en) * 2014-12-02 2017-09-12 Macronix International Co., Ltd. Read leveling method and memory device using the same
US9563504B2 (en) * 2014-12-05 2017-02-07 Sandisk Technologies Llc Partial block erase for data refreshing and open-block programming
US9330783B1 (en) * 2014-12-17 2016-05-03 Apple Inc. Identifying word-line-to-substrate and word-line-to-word-line short-circuit events in a memory block
US10014060B2 (en) * 2015-01-30 2018-07-03 Sandisk Technologies Llc Memory system and method for reducing read disturb errors
US20160328179A1 (en) * 2015-05-08 2016-11-10 Micron Technology, Inc. Multiple virtually over-provisioned, virtual storage devices created from a single physical storage device
US20170075812A1 (en) * 2015-09-16 2017-03-16 Intel Corporation Technologies for managing a dynamic read cache of a solid state drive
US10754573B2 (en) * 2016-03-11 2020-08-25 EMC IP Holding Company LLC Optimized auto-tiering, wherein subset of data movements are selected, utilizing workload skew point, from a list that ranks data movements based on criteria other than I/O workload
KR102550343B1 (ko) * 2016-07-27 2023-07-03 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법
US10359933B2 (en) * 2016-09-19 2019-07-23 Micron Technology, Inc. Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods
US10261876B2 (en) 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
US10340016B2 (en) * 2017-06-26 2019-07-02 Micron Technology, Inc. Methods of error-based read disturb mitigation and memory devices utilizing the same
KR20190001300A (ko) * 2017-06-27 2019-01-04 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
US10564861B2 (en) * 2018-04-17 2020-02-18 Western Digital Technologies, Inc. Parity relocation for reducing temperature throttling

Also Published As

Publication number Publication date
CN113168292A (zh) 2021-07-23
US20200133585A1 (en) 2020-04-30
EP3874359A1 (en) 2021-09-08
EP3874359A4 (en) 2022-07-20
WO2020092438A1 (en) 2020-05-07
US11836392B2 (en) 2023-12-05
US20220027062A1 (en) 2022-01-27
US11169747B2 (en) 2021-11-09

Similar Documents

Publication Publication Date Title
US11640262B2 (en) Implementing variable number of bits per cell on storage devices
KR20210070378A (ko) 판독 방해 스캔 통합
US11348636B2 (en) On-demand high performance mode for memory write commands
JP2022551344A (ja) 先行読み出しおよび読み出し閾値電圧の最適化
US11836392B2 (en) Relocating data to low latency memory
WO2021011263A1 (en) Management of unmapped allocation units of a memory subsystem
US11675705B2 (en) Eviction of a cache line based on a modification of a sector of the cache line
CN111538675A (zh) 使用块盖写率进行无用单元收集候选对象选择
WO2020033487A1 (en) Adjustment of a pre-read operation associated with a write operation
KR20220049027A (ko) 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행
KR20220129626A (ko) 가변 사전 판독 전압 레벨을 사용한 비휘발성 메모리 디바이스에서의 기록 동작의 관리
US20220050772A1 (en) Data block switching at a memory sub-system
US11675714B2 (en) Memory sub-system including an in package sequencer separate from a controller
US11733892B2 (en) Partial superblock memory management
KR20220114078A (ko) 캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행
US10817435B1 (en) Queue-based wear leveling of memory components
US20210042236A1 (en) Wear leveling across block pools
CN114144756A (zh) 使用写入事务数据选择读取电压
CN112912834A (zh) 存取单元和管理片段存储器操作
CN113168387A (zh) 向主机系统提供存储器子系统的控制器存储缓冲器弹性状态的信息
US20240061589A1 (en) Code rate as function of logical saturation
US20230396270A1 (en) Dynamic decoding for memory systems
US11726671B2 (en) Memory access mode selection
WO2022027578A1 (en) Memory overlay using host memory buffer
CN115641899A (zh) 用于监测混合模式块的存储器子系统

Legal Events

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