KR20220114078A - 캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행 - Google Patents

캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행 Download PDF

Info

Publication number
KR20220114078A
KR20220114078A KR1020227025389A KR20227025389A KR20220114078A KR 20220114078 A KR20220114078 A KR 20220114078A KR 1020227025389 A KR1020227025389 A KR 1020227025389A KR 20227025389 A KR20227025389 A KR 20227025389A KR 20220114078 A KR20220114078 A KR 20220114078A
Authority
KR
South Korea
Prior art keywords
data
mode
write
garbage collection
memory
Prior art date
Application number
KR1020227025389A
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 KR20220114078A publication Critical patent/KR20220114078A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

가비지 수집 동작은 메모리 서브시스템의 하나 이상의 데이터 블록들에 대해 수행될 수 있으며, 여기서 데이터는 제1 기록 모드를 사용한 하나 이상의 데이터 블록들에 저장된다. 가비지 수집 동작이 성능 상태를 충족한다고 결정하는 것에 응답하여, 메모리 서브시스템의 캐시 영역의 데이터 블록이 내구성 상태를 충족하는지 여부에 대한 결정이 이루어지고, 여기서 데이터는 제2 기록 모드를 사용한 캐시 영역의 데이터 블록에 저장된다. 캐시 영역의 데이터 블록에 대한 기록 모드는 데이터 블록이 내구성 상태를 충족한다고 결정하는 것에 응답하여 제2 기록 모드에서 제1 기록 모드로 변경된다. 캐시 영역의 데이터 블록은 가비지 수집 동작에 사용된다.

Description

캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행
본 발명은 일반적으로 메모리 서브시스템(memory sub-system)에 관한 것으로, 보다 상세하게는 메모리 서브시스템에 대한 캐시의 데이터 블록의 기록 모드 변경에 기초하여 미디어 관리 동작을 수행하는 것에 관한 것이다.
메모리 서브시스템은 데이터를 저장하는 하나 이상의 메모리 디바이스들을 포함할 수 있다. 메모리 디바이스들은, 예를 들어, 비휘발성 메모리 디바이스 및 휘발성 메모리 디바이스일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브시스템을 활용하여 메모리 디바이스에 데이터를 저장하고 메모리 디바이스로부터 데이터를 검색할 수 있다.
본 개시내용은 이하에 주어진 상세한 설명 및 본 개시내용의 다양한 구현예의 첨부 도면으로부터 더 완전하게 이해될 것이다.
도 1은 본 개시의 일부 실시예에 따른 메모리 서브시스템을 포함하는 예시적인 컴퓨팅 시스템을 도시한다.
도 2는 메모리 서브시스템에 대한 캐시의 데이터 블록의 기록 모드 변경에 기초하여 가비지 수집 동작을 수행하는 예시적인 방법의 흐름도이다.
도 3(a) 및 도 3(b)는 본 개시내용의 일부 실시예에 따라 캐시의 데이터 블록의 기록 모드 변경에 기초하여 가비지 수집 동작을 수행하는 동안 메모리 서브시스템의 데이터 구성의 예를 도시한다.
도 4는 메모리 서브시스템에 대한 기록 모드 변경에 기초하여 가비지 수집 동작을 수행한 후 캐시 데이터 블록의 기록 모드를 복원하는 예시적인 방법의 흐름도이다.
도 5는 본 개시의 구현예가 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태는 메모리 서브시스템에 대한 캐시의 데이터 블록의 기록 모드를 변경하는 것에 기초하여 미디어 관리 동작을 수행하는 것에 관한 것이다. 메모리 서브시스템은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드일 수 있다. 저장 디바이스 및 메모리 모듈의 예는 도 1과 함께 아래에 설명된다. 일반적으로, 호스트 시스템은 데이터를 저장하는 메모리 디바이스와 같은 하나 이상의 컴포넌트들을 포함하는 메모리 서브시스템을 활용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장될 데이터를 제공할 수 있고 메모리 서브시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 디바이스는 비휘발성 메모리 디바이스일 수 있다. 비휘발성 메모리 디바이스는 하나 이상의 다이들의 패키지이다. 각각의 다이는 하나 이상의 평면들로 구성될 수 있다. 일부 유형의 비휘발성 메모리 디바이스(예를 들어, NAND(negative-and) 장치)의 경우, 각 평면은 물리적 블록들의 세트로 구성된다. 각각의 블록은 페이지들의 세트로 구성된다. 각각의 페이지는 데이터 비트를 저장하는 메모리 셀들의 세트로 구성된다. NAND 디바이스와 같은 일부 메모리 디바이스의 경우 블록은 소거될 수 있는 것보다 가장 작은 영역이며 블록 내의 페이지는 개별적으로 소거될 수 없다. 이러한 디바이스의 경우 소거 동작은 한 번에 한 블록씩 수행된다.
블록의 페이지는 유효 데이터, 무효 데이터를 포함하거나 데이터를 포함하지 않을 수 있다. 무효 데이터는 데이터의 새 버전이 메모리 디바이스에 저장될 때 오래된 것으로 표시된 데이터이다. 무효 데이터는 물리적 대 논리적(P2L) 매핑 테이블에서 호스트 시스템이 참조하는 논리적 어드레스와 같은 이전에 기록되었지만 더 이상 유효한 논리 어드레스와 연결되지 않은 데이터를 포함한다. 유효 데이터는 메모리 디바이스에 저장되는 그러한 데이터의 가장 최신 버전이다. 메모리 서브시스템은 예를 들어 운영 체제로부터 수신된 정보를 기반으로 데이터를 유효하지 않은 것으로 표시할 수 있다. 데이터를 포함하지 않는 페이지는 이전에 지워지고 아직 기록되지 않은 페이지를 포함한다.
메모리 서브시스템 제어기는 웨어 레벨링(wear leveling), 리프레시(refresh), 가비지 컬렉션(garbage collection), 스크럽(scrub) 등과 같은 미디어 관리 알고리즘에 대한 동작을 수행할 수 있다. 블록은 유효 데이터가 포함된 일부 페이지와 무효 데이터가 포함된 일부 페이지를 가질 수 있다. 블록을 소거하고 재사용하기 위해 블록의 모든 페이지가 무효 데이터를 가질 때까지 기다리지 않으려면, 이후에 "가비지 수집"이라고 하는 알고리즘이 호출되어 블록이 소거되고 후속 기록 동작을 위한 자유 블록으로 해제될 수 있다. 가비지 수집은 예를 들어 유효 데이터와 잘못된 데이터가 포함된 블록 선택, 유효한 데이터를 포함하는 블록의 페이지 선택, 유효한 데이터를 새 위치에 복사(예를 들어, 다른 블록의 빈 페이지), 이전에 선택한 페이지의 데이터를 유효하지 않은 것으로 표시, 및 선택된 블록 소거를 포함하는 미디어 관리 동작들의 세트이다.
이하 "가비지 수집"은 블록을 선택하고, 선택된 블록에서 유효 데이터를 다른 블록으로 다시 기록하고, 선택된 블록에 저장된 모든 무효 데이터 및 유효 데이터를 소거하는 것을 의미한다. 선택된 여러 블록들의 유효 데이터를 더 적은 수의 다른 블록에 복사한 다음 선택된 블록을 소거할 수 있다. 결과적으로, 소거된 블록들의 수는 호스트 시스템의 후속 데이터를 저장하는 데 더 많은 블록들을 사용할 수 있도록 증가될 수 있다.
메모리 서브시스템은 데이터를 저장하기 위한 호스트 애플리케이션에 대한 자유 데이터 블록의 연속적인 공급을 유지하거나 생성하기 위해 가비지 수집 동작을 구현할 수 있다. 가비지 수집은 한 데이터 블록에서 다른 데이터 블록으로 유효한 데이터를 복사하는 동작이다. 그런 다음 소스 데이터 블록(예를 들어, 유효 데이터가 복사된 데이터 블록)이 소거되고 후속 호스트 기록을 위한 자유 블록으로 해제될 수 있다. 가비지 수집 동작 동안 데이터 블록의 유효한 데이터를 추가로 다시 기록하면 기록 증폭이 발생한다. 기록 증폭은 작동 수명을 줄이고 메모리 서브시스템의 성능에 영향을 줄 수 있다. 메모리 서브시스템은 사용자 공간으로 노출되는 메모리 디바이스의 논리적 크기를 초과하는 추가 블록을 어느 정도 포함할 수 있다. 이 추가 공간은 일반적으로 오버 프로비저닝(over Provisioning) 또는 OP라고 한다. 가비지 수집 동작의 효율성은 종종 메모리 서브시스템에 대한 OP의 함수일 수 있다. 가비지 수집 중에 OP의 추가 공간은 기록 증폭을 줄이는 데 도움이 된다. 더 많은 양의 OP는 데이터 블록을 확보하기 위해 메모리 서브시스템 내에서 가비지 수집이 유효 데이터를 다시 기록하는 횟수를 줄임으로써 기록 증폭을 줄일 수 있다. 예를 들어, 사용자 공간 크기가 128기가바이트(Gb)인 메모리 디바이스의 경우 물리적 크기가 140Gb이면 OP는 12Gb이다. 이러한 경우 가비지 수집 동작은 사용자 공간 크기는 같지만 OP 크기가 더 큰 디바이스보다 효율성이 떨어질 수 있으며, 이는 더 작은 OP 공간은 불필요한 데이터의 데이터 블록을 소거할 때 기록 증폭의 영향을 줄이기 위해 가비지 수집 중에 사용될 수 있는 추가 공간을 더 적게 제공하기 때문이다.
메모리 디바이스는 단일 레벨 셀(SLC) 메모리, 멀티 레벨 셀(MLC) 메모리, 트리플 레벨 셀(TLC) 메모리 또는 쿼드 레벨 셀(QLC) 메모리와 같은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 각각의 유형은 메모리 디바이스의 메모리 셀당 저장될 수 있는 데이터의 양(예를 들어, 데이터 비트)에 대응하는 상이한 데이터 밀도를 가질 수 있다. 플래시 기반 메모리의 예를 사용하면 트리플 레벨 셀(TLC)은 3비트의 데이터를 저장할 수 있고 단일 레벨 셀(SLC)은 1비트의 데이터를 저장할 수 있다. 따라서, TLC 메모리 셀들을 포함하는 메모리 디바이스는 SLC 메모리 셀들을 포함하는 메모리 디바이스보다 더 높은 데이터 밀도를 가질 것이다. 또한, 각 유형의 메모리 셀은 데이터 저장에 대한 내구성이 다를 수 있다. 메모리 디바이스의 내구성은 데이터가 더 이상 메모리 셀에 안정적으로 저장될 수 없게 되기 전에 메모리 디바이스의 메모리 셀에서 수행된 기록 동작의 수 또는 프로그램/소거 동작의 수이다. 예를 들어, 더 낮은 데이터 밀도를 갖는 SLC 메모리 셀은 더 높은 데이터 밀도를 갖는 TLC 메모리 셀보다 더 높은 내구성 임계값을 가질 수 있다. 일부 경우에 SLC 메모리 셀은 TLC 메모리 셀보다 3배에서 40배 높은 범위의 내구성 임계값을 가질 수 있다. 따라서 SLC 메모리 셀은 더 적은 총 데이터를 저장할 수 있지만 더 오랜 기간 동안 사용할 수 있는 반면 TLC 메모리 셀은 더 많은 총 데이터를 저장할 수 있지만 더 짧은 기간 동안 사용될 수 있다.
기존의 메모리 서브시스템은 OP 공간의 일부가 다른 목적을 위해 예약될 수 있도록 메모리 디바이스를 추가로 구성할 수 있다. 예를 들어, OP의 일부는 펌웨어 관련 정보를 저장하기 위해 예약될 수 있다. 마찬가지로 OP 공간의 일부를 정적 캐시로 프로비저닝하여 I/O 동작에 대한 향상된 성능을 제공할 수 있다. 예약된 영역이 할당된 후의 나머지 OP는 일반적으로 운영 OP라고 한다. 따라서 캐시 영역의 크기를 늘리면 운용 OP를 줄일 수 있다. 정적 캐시 영역을 위해 예약된 블록은 메모리 디바이스에 사용자 데이터를 기록하기 위한 더 높은 내구성 임계값을 제공하기 위해 더 낮은 데이터 밀도의 메모리 셀로 구성될 수 있다. 예를 들어, QLC로 구성될 수 있는 블록은 SLC, MLC, TLC와 같이 데이터 밀도가 낮은 메모리 셀로 구성될 수 있다. 유사하게, TLC로 구성될 수 있는 블록은 SLC 또는 MLC와 같은 더 낮은 데이터 밀도의 메모리 셀로 구성될 수 있다. 일단 구성되면 정적 캐시용으로 예약된 블록은 일반적으로 디바이스 수명 동안 이러한 방식으로 구성되며 나중에 더 높은 데이터 밀도를 가진 메모리 셀로 재구성되지 않는다.
이러한 방식으로 구성된 기존의 메모리 서브시스템은 데이터 밀도가 낮아 내구성이 더 높은 메모리 셀로 캐시를 할당하기 때문에 호스트 I/O 동작에 장기적인 성능 이점을 제공할 수 있다. 그러나 이러한 구성은 가비지 수집 동작 중에 사용 가능한 운영 OP가 감소하기 때문에 기록 집약적 워크로드에 대해 더 낮은 랜덤 기록 성능을 가질 수 있다. 이러한 기록 집약적 워크로드 기간 동안에는, 메모리 디바이스의 전체 사용자 공간과 운영 OP가 가득 차서 자유 블록 균형을 유지하기 위해 가비지 수집을 트리거할 수 있다. 이 조건은 일반적으로 가비지 수집이 포그라운드에서 발생하거나 호스트 데이터 기록과 동시에 발생하는 "정상 상태" 조건이라고 한다. 기존의 메모리 서브시스템은 가비지 수집 동작을 위해 정적 캐시 영역에 대한 액세스를 제공하지 않는다. 결과적으로 감소된 운영 OP는 기록 증폭 수준을 크게 증가시켜 정상 상태 조건에서 기록 집약적 워크로드에 대한 임의 기록 성능을 감소시킨다.
본 개시의 양태는 메모리 서브시스템에 대한 캐시의 데이터 블록의 기록 모드를 변경하는 것에 기초하여 가비지 수집 동작을 수행함으로써 상기 및 기타 결함을 해결한다. 캐시 관리자는 워크로드 활동(예를 들어, 관찰된 기록 증폭)을 모니터링하고 정상 상태 조건 기간 동안 정적 캐시 영역을 사용하여 정상 상태 조건이 진정될 때까지 동작 OP를 보완할 수 있다. 예를 들어, 가비지 수집 동작이 실행되는 정상 상태 조건에서, 메모리 디바이스에 대한 현재 동작 부하 상태는 기록 증폭의 관점에서 평가될 수 있다. 정상 상태의 워크로드 동안 측정된 기록 증폭이 임계 성능 조건을 충족하기에 충분한 수준으로 상승하면, 캐시 관리자는 동작 OP를 보완하기 위해 정적 캐시 영역을 사용할지 여부를 결정할 수 있다. 또한 일부 구현예에서는 캐시 관리자는 상태 캐시에 있는 데이터 블록의 내구성을 평가하여 동작 OP를 보완하기 위해 정적 캐시 영역을 사용할지 여부를 결정할 수 있다. 그러한 경우에, 더 높은 데이터 밀도 모드에서 더 낮은 데이터 밀도 모드에 대한 셀 열화 비율의 함수인 정적 캐시 내구성 임계값이 사용될 수 있다. 일부 구현예에서, 캐시 관리자는 캐시 영역에 있는 데이터 블록의 기록 모드를 SLC에서 더 높은 데이터 밀도를 제공하는 모드(예를 들어, MLC, TLC, QLC 등)로 일시적으로 변경할 수 있고 정상 상태 조건 동안 가비지 수집 동작에 캐시 영역을 사용할 수 있도록 한다. 정상 상태 조건이 진정되는 경우(예를 들어, 기록 증폭이 떨어지는 경우) 및/또는 정적 캐시 영역의 데이터 블록이 내구성 조건을 충족하지 않는 경우, 캐시 관리자는 캐시 영역의 기록 모드를 다시 SLC로 변경하고 가비지 수집 동작이 일반 워크로드에서 캐시 영역을 활용하지 못하도록 하는 제한을 복원할 수 있다.
본 개시내용의 이점은 기록 집약적 워크로드 기간 동안 증가된 기록 성능 및 증가된 포그라운드 가비지 수집 효율을 포함하지만 이에 제한되지 않는다. 캐시에 있는 데이터 블록의 기록 모드를 데이터 밀도가 더 높은 모드로 전환하면 기록 집약적인 워크로드 기간 동안 가비지 수집에 대한 OP가 증가할 수 있으며, 이는 이러한 기간 동안 기록 증폭을 줄일 수 있다. 또한 워크로드에서 기록 증폭을 모니터링하여 가비지 수집과 함께 사용할 정적 캐시를 지능적으로 활성화함으로써, 성능이 가장 저하되는 기간으로 모드 전환을 제한하여 캐시 영역 블록에 대한 추가적인 내구성 영향을 최소화할 수 있다. 또한, 동작 OP를 보완하기 위해 캐시 영역을 활용함으로써, 메모리 서브시스템의 수명 동안 의도적으로 캐시에 할당된 블록의 수를 늘릴 수 있다. 따라서 증가된 캐시 크기의 이점은 메모리 서브시스템의 전체 수명 동안 실현(예를 들어, 정상적인 워크로드 조건에서 기록 성능 향상)될 수 있는 동시에 메모리 서브시스템의 초기 수명 동안 기록 집약적 워크로드에 대해 더 큰 운영 OP의 이점을 계속 달성할 수 있다.
도 1은 본 개시의 일부 실시예에 따른 메모리 서브시스템(110)을 포함하는 예시적인 컴퓨팅 시스템(100)을 도시한다. 메모리 서브시스템(110)은 하나 이상의 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140)), 하나 이상의 비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130)), 또는 이들의 조합과 같은 미디어를 포함할 수 있다.
메모리 서브시스템(110)은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드일 수 있다. 저장 디바이스의 예는 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브, 내장형 멀티미디어 제어기(eMMC) 드라이브, 범용 플래시 저장(UFS) 드라이브, 보안 디지털(SD) 카드 및 하드 디스크 드라이브(HDD)를 포함한다. 메모리 모듈의 예는 듀얼 인라인 메모리 모듈(DIMM), 스몰 아웃라인 DIMM(SO-DIMM) 및 다양한 유형의 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM)을 포함한다.
컴퓨팅 시스템(100)은 데스크탑 컴퓨터, 노트북 컴퓨터, 네트워크 서버, 모바일 디바이스, 차량(예를 들어, 비행기, 무인 항공기, 기차, 자동차 또는 기타 운송 수단), 사물인터넷(IoT) 가능 디바이스, 내장형 컴퓨터(예를 들어, 차량, 산업 장비 또는 네트워크로 연결된 상업용 디바이스에 포함된 컴퓨터), 또는 메모리 및 처리 디바이스를 포함하는 그러한 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스일 수 있다.
컴퓨팅 시스템(100)은 하나 이상의 메모리 서브시스템(110)에 결합된 호스트 시스템(120)을 포함할 수 있다. 일부 실시예에서, 호스트 시스템(120)은 상이한 유형의 메모리 서브시스템(110)에 결합된다. 도 1은 하나의 메모리 서브시스템(110)에 결합된 호스트 시스템(120)의 일례를 도시한다. 본 명세서에 사용된 바와 같이, "에 결합된(coupled to)" 또는 "와 결합된(coupled with)"은 일반적으로 컴포넌트들 간의 연결을 의미하며, 이는 전기, 광학, 자기 등과 같은 연결을 포함하여, 유선이든 무선이든, 간접 통신 연결 또는 직접 통신 연결(예를 들어, 중간에 컴포넌트 또는 디바이스 없이)이 될 수 있다.
호스트 시스템(120)은 프로세서 칩셋 및 프로세서 칩셋에 의해 실행되는 소프트웨어 스택을 포함할 수 있다. 프로세서 칩셋은 하나 이상의 코어, 하나 이상의 캐시, 메모리 제어기(예를 들어, NVDIMM 제어기) 및 스토리지 프로토콜 제어기(예를 들어, PCIe 제어기, SATA 제어기)를 포함할 수 있다. 호스트 시스템(120)은 예를 들어 메모리 서브시스템(110)을 사용하여 메모리 서브시스템(110)에 데이터를 기록하고 메모리 서브시스템(110)으로부터 데이터를 판독한다.
호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브시스템(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예는 SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 파이버 채널, SAS(Serial Attached SCSI), SCSI(Small Computer System Interface), DDR(double data rate) 메모리 버스, 듀얼 인라인 메모리 모듈(DIMM) 인터페이스(예를 들어, DDR(Double Data Rate)를 지원하는 DIMM 소켓 인터페이스), 개방형 NAND 플래시 인터페이스(ONFI), 이중 데이터 레이트(DDR), LPDDR(Low Power Double Data Rate) 또는 기타 인터페이스 등을 포함하지만 이에 제한되지 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브시스템(110) 사이에서 데이터를 전송하는데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합될 때 컴포넌트(예를 들어, 메모리 디바이스(130))에 액세스하기 위해 NVMe(NVM Express) 인터페이스를 추가로 활용할 수 있다. 물리적 호스트 인터페이스는 메모리 서브시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 기타 신호를 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 예로서 메모리 서브시스템(110)을 도시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다중 개별 통신 연결, 및/또는 통신 연결들의 조합을 통해 다중 메모리 서브시스템에 액세스할 수 있다.
메모리 디바이스들(130, 140)은 상이한 유형의 비휘발성 메모리 디바이스 및/또는 휘발성 메모리 디바이스의 임의의 조합을 포함할 수 있다. 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140))는 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(SDRAM)와 같은 랜덤 액세스 메모리(RAM)일 수 있지만 이에 제한되지 않는다.
비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130))의 일부 예는 3차원 교차점("3D 교차점") 메모리와 같은 NAND(negative-and) 유형 플래시 메모리 및 제자리 기록(write-in-place) 메모리를 포함한다. 이는 비휘발성 메모리 셀의 교차점 어레이이다. 비휘발성 메모리의 교차점 어레이는 스택형 교차 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 따라 비트 저장을 수행할 수 있다. 또한, 많은 플래시 기반 메모리와 달리, 교차점 비휘발성 메모리는 제자리 기록 동작을 수행할 수 있으며, 여기서, 비휘발성 메모리 셀은 비휘발성 메모리 셀이 사전에 소거되지 않고 프로그래밍될 수 있다. NAND형 플래시 메모리는, 예를 들어 2차원 NAND(2D NAND)와 3차원 NAND(3D NAND)를 포함한다.
메모리 디바이스들(130)의 각각은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 하나의 유형의 메모리 셀, 예를 들어 단일 레벨 셀(SLC)은 셀당 1 비트를 저장할 수 있다. 멀티 레벨 셀(MLC), 트리플 레벨 셀(TLC) 및 쿼드 레벨 셀(QLC)과 같은 다른 유형의 메모리 셀은 셀당 여러 비트를 저장할 수 있다. 일부 실시예에서, 메모리 디바이스들(130)의 각각은 SLC, MLC, TLC, QLC, 또는 이들의 임의의 조합과 같은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 일부 실시예에서, 특정 메모리 디바이스는 메모리 셀의 SLC 부분, 및 MLC 부분, TLC 부분, 또는 QLC 부분을 포함할 수 있다. 메모리 디바이스(130)의 메모리 셀들은 데이터를 저장하는 데 사용되는 메모리 디바이스의 논리적 유닛을 지칭할 수 있는 페이지 또는 코드워드로 그룹화될 수 있다. 일부 유형의 메모리(예를 들어, NAND)에서는 페이지를 그룹화하여 블록을 형성할 수 있다. 3D 교차점과 같은 일부 유형의 메모리는 관리 단위(MU)를 형성하기 위해 다이들 및 채널들에 걸쳐 페이지들을 그룹화할 수 있다.
NAND 형 메모리(예를 들어, 2D NAND, 3D NAND) 및 비휘발성 메모리 셀의 3D 크로스 포인트 어레이와 같은 비휘발성 메모리 디바이스가 설명되지만, 메모리 디바이스(130)는 판독 전용 메모리(ROM), 상변화 메모리(PCM), 자기 선택 메모리, 다른 칼코게나이드 기반 메모리, 강유전체 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전체 랜덤 액세스 메모리(FeRAM), 마그네토 랜덤 액세스 메모리(MRAM), 스핀 전달 토크(STT)-MRAM, 전도성 브리지 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), NOR(negative-or) 플래시 메모리 및 전기적으로 소거 가능한 프로그래밍 가능한 판독 전용 메모리(EEPROM)와 같은 임의의 다른 유형의 비휘발성 메모리에 기초할 수 있다.
메모리 서브시스템 제어기(115)(또는 간단히 제어기(115))는 메모리 디바이스들(130)과 통신하여 메모리 디바이스들(130)에서 데이터 판독, 데이터 기록 또는 데이터 소거와 같은 동작 및 기타 그러한 동작들을 수행할 수 있다(예를 들어, 제어기(116)에 의해 커맨드 버스에서 스케줄링된 커맨드에 응답하여). 메모리 서브시스템 제어기(115)는 하나 이상의 집적 회로 및/또는 개별 컴포넌트, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 하드웨어는 본 명세서에 기술된 동작을 수행하기 위한 전용(즉, 하드-코딩된) 논리를 갖는 디지털 회로를 포함할 수 있다. 메모리 서브시스템 제어기(115)는 마이크로제어기, 특수 목적 논리 회로(예를 들어, 필드 프로그래밍 가능 게이트 어레이(FPGA), 어플리케이션 특정 집적 회로(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다.
메모리 서브시스템 제어기(115)는 로컬 메모리(119)에 저장된 명령어를 실행하도록 구성된 프로세서(프로세서)(117)를 포함할 수 있다. 예시된 예에서, 메모리 서브시스템 제어기(115)의 로컬 메모리(119)는 메모리 서브시스템(110)과 호스트 시스템(120) 사이의 통신을 처리하는 것을 포함하는 메모리 서브시스템(110)의 동작을 제어하는 다양한 프로세스, 동작, 논리 흐름 및 루틴을 수행하기 위한 명령어를 저장하도록 구성된 내장형 메모리를 포함한다.
일부 실시예에서, 로컬 메모리(119)는 메모리 포인터, 페치된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로 코드를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)를 포함하는 것으로 도시되었지만, 본 발명의 다른 실시예에서, 메모리 서브시스템(110)은 메모리 서브시스템 제어기(115)를 포함하지 않고, 대신 외부 제어(예를 들어, 외부 호스트에 의해, 또는 메모리 서브시스템과 분리된 프로세서 또는 제어기에 의해 제공됨)에 의존할 수 있다.
일반적으로, 메모리 서브시스템 제어기(115)는 호스트 시스템(120)으로부터 커맨드 또는 동작을 수신할 수 있고, 커맨드 또는 동작을 명령어 또는 적절한 커맨드로 변환하여 메모리 디바이스(130) 및/또는 메모리 디바이스(140)에 대한 원하는 액세스를 달성할 수 있다. 메모리 서브시스템 제어기(115)는 웨어 레벨링 동작, 가비지 수집 동작, 오류 검출 및 오류 정정 코드(ECC) 동작, 암호화 동작, 캐싱 동작 및 메모리 디바이스(130)와 연관된 논리적 어드레스(예를 들어, 논리적 블록 어드레스(LBA), 네임스페이스)와 물리적 어드레스(예를 들어, 물리적 블록 어드레스) 사이의 어드레스 변환과 같은 다른 동작을 담당할 수 있다. 메모리 서브시스템 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로를 더 포함할 수 있다. 호스트 인터페이스 회로는 호스트 시스템으로부터 수신된 커맨드를 메모리 디바이스(130) 및/또는 메모리 디바이스(140)에 액세스하기 위한 커맨드 명령어로 변환할 수 있을 뿐만 아니라 메모리 디바이스(130) 및/또는 메모리 디바이스(140)와 연관된 응답을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
일부 구현예에서, 메모리 서브시스템(110)은 모든 데이터 페이로드(예를 들어, 사용자 데이터)가 메모리 디바이스(130)(예를 들어, NAND 유형 플래시 메모리 디바이스)의 다중 다이를 이용하는 스트라이핑 방식을 사용할 수 있고 따라서 나머지 하나 이상의 다이는 오류 정정 정보(예를 들어, 패리티 비트)를 저장하는 데 사용되는 반면 페이로드는 다이의 서브세트를 통해 배포될 수 있다. 따라서, 스트라이핑 방식을 사용하는 메모리 디바이스의 다이 세트에 걸쳐 분산된 블록 세트를 본 명세서에서 "수퍼 블록"이라고 한다.
메모리 서브시스템(110)은 또한 도시되지 않은 추가 회로 또는 컴포넌트를 포함할 수 있다. 일부 실시예에서, 메모리 서브시스템(110)은 캐시 또는 버퍼(예를 들어, DRAM) 및 메모리 서브시스템 제어기(115)로부터 어드레스를 수신하고 메모리 디바이스(130)에 액세스하기 위해 어드레스를 디코딩할 수 있는 어드레스 회로(예를 들어, 로우 디코더 및 컬럼 디코더)를 포함할 수 있다.
일부 실시예에서, 메모리 디바이스들(130)는 메모리 디바이스(130)의 하나 이상의 메모리 셀들에 대한 동작을 실행하기 위해 메모리 서브시스템 제어기(115)와 함께 동작하는 로컬 미디어 제어기들(135)을 포함한다. 외부 제어기(예를 들어, 메모리 서브시스템 제어기(115))는 메모리 디바이스(130)를 외부적으로 관리할 수 있다(예를 들어, 메모리 디바이스(130)에 대한 미디어 관리 동작 수행). 일부 실시예에서, 메모리 디바이스(130)는 동일한 메모리 디바이스 패키지 내의 미디어 관리를 위해 로컬 제어기(예를 들어, 로컬 제어기(135))와 결합된 원시 메모리 디바이스인 관리된 메모리 디바이스다. 관리된 메모리 디바이스의 예는 관리된 NAND(MNAND) 디바이스이다.
메모리 서브시스템(110)은 메모리 디바이스들(130)에 저장된 데이터 블록들에 대한 캐시의 데이터 블록의 기록 모드를 변경하는 것에 기초하여, 예를 들어, 가비지 수집 동작같은 미디어 관리 동작을 수행하는데 사용될 수 있는 캐시 관리자 컴포넌트(113)를 포함한다. 일부 실시예들에서, 제어기(115)는 캐시 관리자 컴포넌트(113)의 적어도 일부를 포함한다. 예를 들어, 제어기(115)는 본 명세서에 설명된 동작들을 수행하기 위해 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 프로세서(117)(처리 디바이스)를 포함할 수 있다. 일부 실시예들에서, 캐시 관리자 컴포넌트(113)는 호스트 시스템(120), 애플리케이션, 또는 운영 시스템의 일부이다.
캐시 관리자 컴포넌트(113)는 메모리 서브시스템(110)의 워크로드 상태들(예를 들어, 관찰된 기록 증폭)을 모니터링할 수 있고, 가비지 수집 동작의 수행이 성능 상태를 충족하면(예를 들어, 관찰된 기록 증폭이 메모리 서브시스템(110)이 정상 상태 조건들 하에서 동작하는 것을 나타냄), 캐시 관리자 컴포넌트(113)는 메모리 디바이스들(130)의 캐시 영역에 있는 블록이 내구성 상태(endurance condition)를 충족하는지 아닌지를 결정할 수 있다. 만약 두 상태들이 모두 충족되면, 캐시 관리자 컴포넌트(113)는 캐시 영역의 데이터 블록에 대한 기록 모드를 낮은 데이터 밀도 모드(예를 들어, SLC)에서 더 높은 데이터 밀도(예를 들어, MLC, TLC, QLC 등, 이하 총칭하여 XLC)를 갖는 기록 모드로 변경하고, 가비지 수집 동작에서 해당 데이터 블록을 사용할 수 있다. 추가적으로, 일단 워크로드 상태들이 정상 상태 성능 상태가 더 이상 존재하지 않음을 나타내면, 캐시 관리자 컴포넌트(113)는 캐시 영역의 후속 데이터 블록들에 대한 기록 모드를 원래의 데이터 밀도로 다시 전환할 수 있다(예를 들어, 다시 SLC로). 캐시 관리자 컴포넌트(113)의 동작들에 관한 추가 세부사항들은 아래에서 설명된다.
도 2는 메모리 서브시스템에 대한 캐시에서 데이터 블록의 기록 모드를 변경하는 것에 기초하여 가비지 수집 동작을 수행하는 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 운영되거나 실행되는 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(200)은 도 1의 캐시 관리자 컴포넌트(113)에 의해 수행된다. 비록 특정한 시퀀스이나 순서로 표시되어있을 지라도, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 도시된 실시예들은 단지 예시적인 것으로 이해되어야 하며, 도시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가적으로, 다양한 실시예들에서 하나 이상의 프로세스들이 생략될 수 있다. 따라서, 모든 실시예에서 모든 프로세스들이 요구되어지는 것은 아니다. 다른 프로세스 흐름들이 가능하다.
도 2에서 도시된 바와 같이, 동작(205)에서, 처리 로직은 메모리 서브시스템의 하나 이상의 데이터 블록들에 대한 가비지 수집 동작을 수행한다. 데이터는 데이터 블록의 메모리 셀당 특정 비트 수를 사용하여 데이터를 저장하는 기록 모드를 사용하여 메모리 서브시스템의 하나 이상의 블록들에 저장될 수 있다. 일부 구현예들에서, 데이터는 메모리 서브시스템의 캐시 영역에 저장된 블록들보다 더 높은 데이터 밀도를 갖는 기록 모드를 사용하여 저장될 수 있다. 하나의 도시적인 예에서, 데이터는 QLC 메모리 셀들로 구성된 블록들에 저장될 수 있는 반면 캐시 영역에 저장된 블록들은 SLC, MLC 또는 TLC 메모리 셀들로 구성될 수 있다(각각 QLC 메모리 셀들보다 낮은 데이터 밀도를 갖기 때문에). 다른 도시적인 예에서, 데이터는 TLC 메모리 셀들로 구성된 블록들에 저장될 수 있는 반면 캐시 영역에 저장된 블록들은 SLC 또는 MLC 메모리 셀들로 구성될 수 있다(각각 TLC 메모리 셀들보다 낮은 데이터 밀도를 갖기 때문에).
동작(210)에서, 처리 로직은 가비지 수집 동작이 성능 상태를 충족하는지 아닌지를 결정한다. 일부 실시예들에서, 성능 상태는 데이터의 양을 하나 이상의 새로운 데이터 블록들(예를 들어, 가비지 수집 동안 관찰된 기록 증폭)에 기록하기 위해 가비지 수집 동작에서 사용되는 다수의 기록 동작들에 기초할 수 있다. 즉, 성능 상태는 한 블록에서 다른 블록으로 유효한 데이터를 복사하기 위해 가비지 수집 동안 발생하는 다수의 추가 기록들에 기초할 수 있다. 처리 로직은 관찰된 기록 증폭을 기초하여 정상 상태 조건들이 존재하는지 아닌지를 결정하기 위해 메모리 서브시스템의 워크로드 상태들을 모니터할 수 있다. 위에서 언급한 바와 같이, 메모리 서브시스템은 불필요한 데이터의 데이터 블록들을 지우기 위해 새로운 호스트 데이터를 기록하는 것과 동시에 가비지 수집 동작들이 필요할 때 데이터 기록 볼륨이 높은 기간들 동안 정상 상태에 있을 수 있다. 예를 들어, 만약 가비지 수집 동작 시 관찰된 측정된 기록 증폭이 임계값을 충족하면, 성능 상태는 충족될 수 있다. 동작(210)에서, 처리 로직이 성능 상태가 충족되었다고 결정하면, 처리는 동작(215)으로 계속된다. 그렇지 않으면, 처리는 동작(230)으로 진행한다.
동작(215)에서, 처리 로직은 메모리 서브시스템의 캐시 영역의 데이터 블록이 내구성 상태를 충족하는지 아닌지를 결정한다. 위에서 언급한 바와 같이, 일부 구현예들에서, 데이터는 가비지 수집 동작에 의해 액세스되는 데이터 블록들의 데이터 밀도보다 낮은 데이터 밀도를 갖는 제2 기록 모드를 사용하여 캐시 영역의 데이터 블록에 저장될 수 있다. 즉, 제2 기록 모드는 동작(205)에서 지정된 제1 기록 모드 기록을 사용하여 기록된 블록들의 비트 수들보다 적은 데이터 블록의 메모리 셀당 비트 수들을 사용하여 데이터를 저장할 수 있다. 예를 들어, 만약 제1 기록 모드가 QLC이면, 제2 기록 모드는 각각 QLC보다 낮은 데이터 밀도를 갖기 때문에 SLC, MLC 또는 TLC일 수 있다. 동작(215)에서, 처리 로직은 메모리 서브시스템의 캐시 영역에 할당된 데이터 블록이 더 높은 데이터 밀도 기록 모드들 중 하나와 연관된 임계값을 충족시키는 내구성 값을 갖는지 아닌지를 결정할 수 있다. 예를 들어, 처리 로직은 캐시 데이터 블록의 내구성을 TLC 메모리 셀에 대한 높은 임계 내구성 값과 비교할 수 있다. 만약 캐시 데이터 블록의 관찰된 내구성이 TLC 내구성 임계값보다 적다면, 처리 로직은 캐시 데이터 블록이 내구성 상태를 충족하는 것을 결정할 수 있고, TLC 모드에서 사용될 수 있다. 만약 처리 로직이 데이터 블록이 내구성 상태를 충족한다고 결정하면, 처리는 동작(220)으로 계속된다. 그렇지 않으면, 처리는 동작(230)으로 진행한다.
동작(220)에서, 처리 로직은 캐시 영역의 데이터 블록에 대한 기록 모드를 제2 기록 모드에서 제1 기록 모드로 변경한다. 예를 들어, 만약 동작(215)에서 처리 로직이 캐시 영역의 데이터 블록이 더 높은 데이터 밀도 기록 모드와 연관된 최대 내구성 임계값보다 적은 관찰된 내구성을 갖는다고 결정하면, 처리 로직은 캐시 영역의 데이터 블록의 기록 모드를 현재 기록 모드(예를 들어, SLC)에서 더 높은 데이터 밀도를 갖는 기록 모드(예를 들어, MLC, TLC 등)로 변경할 수 있다. 동작(225)에서, 처리 로직은 가비지 수집 동작에서 캐시 영역의 데이터 블록을 사용한다. 즉, 처리 로직은 이제 새로운 더 높은 데이터 밀도 기록 모드들(예를 들어, XLC 모드들 중 하나)을 사용하여 가비지 수집 동작 동안 캐시 영역의 데이터 블록에 데이터를 기록할 수 있다.
만약, 동작(210)에서, 처리 로직이 가비지 수집 동작이 성능 상태를 충족하지 않는다고 결정하면(예를 들어, 메모리 서브시스템이 정상 상태 워크로드 상태를 경험하고 있지 않음), 처리는 가비지 수집 동작이 캐시 영역 외부로부터의 데이터 블록을 사용하는 블록(230)으로 진행한다(예를 들어, 가비지 수집 동작은 캐시 영역으로부터의 데이터 블록들을 사용하지 않음). 유사하게, 만약, 동작(215)에서, 처리 로직이 캐시 영역의 데이터 블록들 중 어느 것도 내구성 상태를 충족하지 않는다고 결정하면(예를 들어, 캐시의 데이터 블록들 각각은 메모리 서브시스템에 의해 사용되는 더 높은 데이터 밀도 기록 모드와 연관된 임계값을 초과하는 관찰된 내구성 값을 가짐.), 처리는 가비지 수집 동작이 캐시 영역 외부로부터의 데이터 블록을 사용하는 블록(230)으로 진행한다.
위의 동작들에 대한 추가 세부사항들은 도 3(a) 및 도 3(b)와 관련하여 아래에서 설명된다.
도 3(a)-3(b)는 본 개시의 일부 실시예들에 따라 캐시에서 데이터 블록의 기록 모드를 변경하는 것에 기초하여 가비지 수집 동작을 수행하는 동안 메모리 서브시스템의 데이터 구성들의 예들을 도시한다. 일부 실시예들에서, 가비지 수집 동작은 도 2에 대해 위에서 설명되고 도 4에 대해 아래에서 설명된 바와 같이, 도 1의 캐시 관리자 컴포넌트(113)에 의해 수행될 수 있다.
도 3(a)에 도시된 바와 같이, 데이터 구성(300)은 사용자 데이터 블록들(301), 펌웨어 예약 데이터 블록들(302), 캐시 데이터 블록들(303), 및 동작 OP 데이터 블록들(304)을 포함할 수 있다. 일부 구현예들에서, 데이터 구성(300)의 전체 OP 영역은 펌웨어 예약 데이터 블록들(302), 캐시 데이터 블록들(303), 및 동작 OP 데이터 블록들(304)(예를 들어, 사용자 데이터 블록들(301)에 할당되지 않은 데이터 블록들)을 포함할 수 있다. 위에서 언급한 바와 같이, 펌웨어 예약 데이터 블록들(302) 및 캐시 데이터 블록들(303)은 데이터 구성(300)의 전체 OP 영역으로부터 할당될 수 있고, 이에 의해 동작 OP 데이터 블록들(304)만을 포함하도록 동작 OP 영역(305)을 감소시킨다. 또한, 위에서 언급된 바와 같이, 캐시 데이터 블록들(303)(예를 들어, 데이터 블록(306))에 할당된 데이터 블록들은 저밀도 기록 모드(예를 들어, SLC)를 사용하여 기록되도록 구성될 수 있다.
위에서 언급한 바와 같이, 호스트 데이터가 기록될 메모리 서브시스템에 의해 수신되면, 먼저 캐시 데이터 블록들(303)에 기록된 다음 나중에 사용자 데이터 블록들(301)의 데이터 블록으로 이동될 수 있다. 데이터가 메모리 서브시스템에 기록되어지는 것이 계속됨에 따라 캐시 데이터 블록들(303)이 채워지기 시작할 수 있으며, 이는 후속적으로 수신된 호스트 데이터가 사용자 데이터 블록들(301)에 직접 기록되도록 한다. 기록들이 처리되어지는 것이 계속됨에 따라 사용 가능한 공간이 줄어들어, 불필요한 데이터의 데이터 블록들을 지우기 위해 가비지 수집 동작들에 대한 필요성을 유발한다. 위에서 언급한 바와 같이, 많은 기록 볼륨의 기간 동안, 메모리 서브시스템은 가비지 수집이 새로운 데이터 기록들과 동시에 발생하는 정상 상태 조건들을 경험할 수 있다.
도 2와 관련하여 위에서 설명한 바와 같이, 가비지 수집 동작 동안 메모리 서브시스템의 워크로드 성능(예를 들어, 관찰된 기록 증폭)은 정상 상태 조건들이 존재하는지 아닌지(예를 들어, 성능 상태를 만족하는지 아닌지)를 평가하기 위해 모니터링된다. 가비지 수집 동작 시 데이터 블록들의 기록 증폭이 임계값을 충족하거나 초과하면, 가비지 수집 동작은 성능 상태를 만족할 수 있다. 위에서 설명한 바와 같이, 기록 증폭은 하나 이상의 새 데이터 블록들에 데이터 양을 기록하기 위해 가비지 수집 동작에 사용된 기록 동작들의 수를 기초한다. 예를 들어, 1Gb의 호스트 데이터를 메모리 서브시스템에 기록하기 위해, 가비지 수집은 때때로 여러 기록 또는 재기록 동작들을 포함할 수 있고 그 결과 1Gb 호스트 데이터보다 훨씬 더 많이 기록된다. 따라서, 가비지 수집 동안 1Gb의 호스트 데이터를 처리하기 위해 총 2Gb의 데이터를 효과적으로 기록하는 것은 2의 기록 증폭 값을 산출할 수 있다. 정상 상태 조건들 동안, 기록 동작들의 수는 기록될 호스트 데이터 양의 큰 배수가 될 수 있다.
만약 가비지 수집 동작이 성능 상태를 충족한다면(예를 들어, 가비지 수집 기록 증폭에 기초하여 정상 상태 조건들이 관찰된다면), 캐시 데이터 블록들(303)은 동작 OP 영역(305)을 보완하기 위해 사용될 수 있는지 아닌지를 결정하기 위해 분석될 수 있다. 캐시 관리자는 캐시 데이터 블록들 (303)에서 데이터 블록(306)을 선택하여 해당 데이터 블록이 XLC 기록 모드에 대한 내구성 상태를 충족하는지 아닌지를 결정할 수 있다. 일부 구현예들에서, 내구성 상태는 데이터 블록(306)에 대해 수행된 XLC 기록 모드를 사용하는 기록 동작들의 임계 수에 대응한다. 즉, 내구성 상태는 데이터 블록의 메모리 셀이 신뢰할 수 없게 되기 전에 XLC 기록 모드에 대해 사용될 수 있는 최대 프로그램/소거 사이클들의 수를 나타낼 수 있다.
예를 들어, 사용자 데이터 블록들(301) 및 동작 OP 데이터 블록들(304)이 TLC 기록 모드를 사용하도록 구성되면, 캐시 관리자는 데이터 블록(306)에 대한 관찰된 내구성 값을 TLC 기록 모드에 대한 내구성 임계값과 비교할 수 있다. 유사하게, 만약 다른 더 높은 데이터 밀도 기록 모드들(예를 들어, MLC, QLC 등)이 메모리 서브시스템에 의해 사용되면, 캐시 관리자는 사용 중인 기록 모드에 대한 내구성 임계값을 사용할 수 있다. 따라서, 내구성 상태는 캐시의 데이터 블록이 기록 모드로 전환하기 전에 높은 밀도 기록 모드에 적합하도록 보장할 수 있다.
일부 구현예들에서, 캐시 관리자는 먼저 캐시 데이터 블록들(303)의 모든 데이터 블록들에 대한 평균 내구성 값이 내구성 상태를 충족하는지 아닌지를 결정함으로써 데이터 블록(306)이 내구성 상태를 충족하는지 아닌지를 결정할 수 있다. 만약 전체 캐시 데이터 블록들(303)에 대한 평균 내구성이 내구성 상태를 충족하면, 캐시 관리자는 데이터 블록(306)을 선택할 수 있다. 만약 평균 내구성 값이 내구성 상태를 충족하지 않는다면, 이는 XLC 기록 모드를 지원할 수 있는 캐시 데이터 블록들(303)에 데이터 블록들이 없음을 나타낼 수 있다. 그러한 경우들에, 캐시 데이터 블록들(303)은 캐시 동작들에 대해서만 사용될 수 있고 임의의 후속 가비지 수집 동작들에 대한 임의의 기록 모드 전환이 비활성화되거나 바이패스될 수 있다.
만약 캐시 관리자가 가비지 수집 동작이 성능 상태(예를 들어, 기록 증폭이 정상 상태 가비지 수집 동안 임계값을 충족하거나 초과함)를 충족하고 캐시 데이터 블록들(303)의 적어도 하나의 데이터 블록이 내구성 상태를 충족한다면(예를 들어, 데이터 블록(306)은 XLC 기록 모드를 지원할 수 있음), 캐시 관리자는 데이터 블록(306)의 기록 모드를 변경하기 위해 변경 기록 모드(340)를 수행할 수 있다(예를 들어, XLC 기록 모드를 지원하기 위해 데이터 블록(306)에 대한 데이터 밀도를 증가시킴).
변경 기록 모드(340)는 데이터 구성(300)을 수정하여 그 결과 도 3(b)의 데이터 구성(350)을 생성할 수 있다. 도 3(b)에 도시된 바와 같이, 데이터 구성(350)은 사용자 데이터 블록들(351), 펌웨어 예약 데이터 블록들(352), 캐시 데이터 블록들(353), 및 동작 OP 데이터 블록들(354)을 포함할 수 있다. 데이터 구성(300)에서와 같이, 데이터 구성(350)의 전체 OP 영역은 펌웨어 예약 데이터 블록들(352), 캐시 데이터 블록들(353), 및 동작 OP 데이터 블록들(354)(예를 들어, 사용자 데이터 블록들(351)에 할당되지 않은 데이터 블록들)을 포함할 수 있다. 그러나, 변경 기록 모드(340)를 수행하는 것은 캐시 데이터 블록들(353)의 일부 또는 전부를 포함하도록 동작 OP 영역을 증가시킬 수 있다(예를 들어, 임시 동작 OP 영역(355)에 의해 도시된 바와 같이). 추가로, 변경 기록 모드(340)를 수행한 결과, 캐시 데이터 블록들(353)에 할당된 데이터 블록들(예를 들어, 데이터 블록(356))은 높은 밀도 기록 모드(예를 들어, XLC)를 사용하여 기록되도록 구성될 수 있다. 일부 구현예들에서, 캐시 데이터 블록들(353)의 데이터 블록들 중 일부는 내구성 상태를 충족하지 않을 수 있다(예를 들어, 일부 블록들은 XLC 임계값을 초과하는 내구성 값들을 가질 수 있음). 이러한 경우들에, 이러한 블록들은 가비지 수집을 위해 XLC 모드에서 사용되지 않도록 제한될 수 있다.
가비지 수집 동작들이 계속됨에 따라, 캐시 관리자는 메모리 서브시스템의 진행중인 워크로드 상태들(예를 들어, 관찰된 기록 증폭)을 모니터링하는 것을 계속하여 정상 상태 조건들이 중단된 시점을 결정할 수 있다. 캐시 관리자가 후속 가비지 수집 동작이 설정된 성능 상태를 충족하지 않는다고 결정하면(예를 들어, 관찰된 기록 증폭이 정상 상태 가비지 수집 동안 임계값 아래로 떨어졌음), 복원 기록 모드(360)가 캐시 데이터 블록들(353)에 데이터 블록들에 대한 기록 모드를 이전 상태로 전환하기 위해 수행되어질 수 있다(예를 들어, 기록 모드 구성을 SLC 모드로 복원). 따라서, 캐시의 데이터 블록들은 정상 상태 조건들 동안 XLC 모드에서 사용될 수 있지만, 이러한 상태들이 중단되면 SLC 모드로 복원된다. 캐시 데이터 블록들의 기록 모드를 원래 구성으로 복원하는 것은 도 4와 관련하여 아래에서 더 자세히 설명된다.
예시의 목적들로, 도 3(a) 내지 도 3(b)는 캐시 데이터 블록(306)의 기록 모드를 SLC에서 XLC 기록 모드로 전환하는 것을 도시하며, 다양한 구현예들에서 본 개시의 양태들은 다른 기록 모드들을 사용하도록 구현될 수 있다. 예를 들어, 일부 구현예들에서 캐시 데이터 블록(306)은 초기에 MLC 메모리 셀들로 구성되고 후속적으로 TLC 또는 QLC 메모리 셀들로 전환될 수 있다.
도 4는 본 개시내용의 일부 실시예들에 따른 메모리 서브시스템에 대한 기록 모드의 변경에 기초하여 가비지 수집 동작을 수행한 후 캐시 데이터 블록들의 기록 모드를 복원하는 예시적인 방법(400)의 흐름도이다. 방법(400)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 운영되거나 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행되어질 수 있다. 일부 실시예들에서, 방법(400)은 도 1의 캐시 관리자 컴포넌트(113)에 의해 수행된다. 비록 특정 시퀀스나 순서로 도시되어 있지만, 달리 명시되지 않는 한 프로세스들의 순서는 수정될 수 있다. 따라서, 도시된 실시예들은 예시들로서만 이해되어야 하며, 도시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 실시예에서 모든 프로세스들이 요구되어지는 것은 아니다. Other process flows are possible. 다른 프로세스 흐름들이 가능하다.
도 4에 도시된 바와 같이, 동작(405)에서, 처리 로직은 메모리 디바이스와 연관된 데이터 블록들의 그룹에 대한 가비지 수집 동작이 데이터 블록에 저장된 비트들 수를 제1 수에서 제2 수로 변경함으로써 메모리 디바이스와 연관된 캐시 영역의 데이터 블록을 사용했다고 결정하고, 여기서 제1 수는 제2 수보다 작다. 도 2 및 도 3(a) 및 3(b)와 관련하여 위에서 언급한 바와 같이, 일부 구현예들에서, 가비지 수집 동작은 데이터 블록에 저장된 비트들 수가 적은 낮은 데이터 밀도 모드에서 데이터 블록에 저장된 비트들 수가 많은 높은 데이터 밀도 모드로 데이터 블록의 기록 모드를 전환함으로써 캐시 영역의 데이터 블록을 사용할 수 있다. 예를 들어, SLC 메모리 셀들로 구성된 데이터 블록의 기록 모드는 XLC 기록 모드들 중 하나로 전환될 수 있다. 유사하게, MLC 메모리 셀들로 구성된 데이터 블록의 기록 모드는 TLC 또는 QLC 기록 모드들로 전환될 수 있다.
동작(410)에서, 처리 로직은 가비지 수집 동작이 성능 요건을 충족했다고 결정한다. 일부 구현예들에서, 성능 요건은 하나 이상의 새로운 데이터 블록들(예를 들어, 가비지 수집 동안 관찰된 기록 증폭)에 데이터의 양을 기록하기 위해 가비지 수집 동작에 사용되는 기록 동작들의 수에 기초할 수 있다. 처리 로직은 관찰된 기록 증폭에 기초하여 정상 상태 조건들이 더 이상 존재하지 않는 시기를 결정하기 위해 메모리 서브시스템의 워크로드 상태들을 모니터링할 수 있다. 예를 들어, 만약 가비지 수집 동작 시 관찰된 측정된 기록 증폭이 높은 임계값 아래로 떨어지면, 성능 요건이 충족될 수 있다.
동작(415)에서, 가비지 수집 동작이 성능 요건을 충족했다고 결정하는 것에 응답하여, 처리 로직은 데이터 블록에 저장된 비트들의 수를 제2 수(예를 들어, 더 높은 데이터 밀도 기록 모드에 대한 비트들의 수)에서 제1 수(낮은 데이터 밀도 기록 모드에 대한 비트들의 수)로 변경함으로써 데이터 블록의 후속 데이터를 캐시 데이터로 저장한다. 위에서 설명한 바와 같이, 처리 로직은 데이터 블록의 기록 모드를 정상 상태 워크로드 상태들이 발생하기 전에 존재했던 원래 기록 모드로 복원할 수 있다. 예를 들어, 만약 캐시 영역의 데이터 블록들이 초기에 SLC 메모리 셀들로 구성되고 후속적으로 XLC 기록 모드로 전환된다면, 처리 로직은 메모리 서브시스템의 캐시 영역에 있는 데이터 블록들에 대한 기록 모드를 XLC 기록 모드에서 원래 구성된 SLC 기록 모드로 다시 변경할 수 있다.
도 5는 머신이 본 명세서에서 논의된 방법론 중 임의의 하나 이상을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템(500)의 예시적인 머신을 도시한다. 일부 실시예에서, 컴퓨터 시스템(500)은 메모리 서브시스템(예를 들어, 도 1의 메모리 서브시스템(110))을 포함하거나 이에 결합되거나 이를 활용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있고 또는 제어기의 동작을 수행하는 데(예를 들어, 도 1의 캐시 관리자 컴포넌트(113)에 대응하는 동작을 수행하기 위한 운영 체제를 실행하기 위해) 사용될 수 있다. 대안적인 실시예에서, 머신은 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷의 다른 머신에 연결(예를 들어, 네트워크와)될 수 있다. 머신은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신의 용량으로, 피어 투 피어(또는 분산) 네트워크 환경에서 피어 머신, 또는 클라우드 컴퓨팅 인프라 또는 환경에서 서버 또는 클라이언트 머신으로서 동작할 수 있다.
머신은 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인휴대정보비서(PDA), 휴대폰, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지, 디지털 또는 비 디지털 회로부 또는 해당 머신이 취해야 할 조치를 지정하는 명령어 세트(순차적이든 아니든)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신이 예시되어 있지만, "머신"라는 용어는 또한 본 명세서에서 논의된 방법론 중 하나 이상을 수행하기 위해 명령어 세트(또는 다중 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 집합을 포함하는 것으로 간주되어야 한다.
예시적인 컴퓨터 시스템(500)은 버스(530)를 통해 서로 통신하는 처리 디바이스(502), 메인 메모리(504)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 예를 들어 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM) 등), 정적 메모리(506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(518)을 포함한다.
처리 디바이스(502)는 마이크로프로세서, 중앙 처리 디바이스 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 보다 구체적으로, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서 또는 다른 명령어 세트를 구현하는 프로세서, 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(502)는 또한 주문형 집적 회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(602)는 본 명세서에서 논의된 동작 및 단계를 수행하기 위한 명령어(526)를 실행하도록 구성된다. 컴퓨터 시스템(500)은 네트워크(520)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(508)를 더 포함할 수 있다.
데이터 저장 시스템(518)은 하나 이상의 명령어 세트(526) 또는 여기에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 소프트웨어가 저장되어 있는 머신 판독 가능 저장 매체(524)(컴퓨터 판독 가능 매체라고도 함)를 포함할 수 있다. 명령어(526)는 또한 컴퓨터 시스템(500)에 의한 실행 동안 메인 메모리(504) 및/또는 처리 디바이스(502) 내에 완전히 또는 적어도 부분적으로 상주할 수 있으며, 메인 메모리(504) 및 처리 디바이스(502)는 또한 머신 판독 가능 저장 매체를 구성한다. 머신 판독 가능 저장 매체(524), 데이터 저장 시스템(518), 및/또는 메인 메모리(504)는 도 1의 메모리 서브시스템(110)에 대응할 수 있다.
일 실시예에서, 명령어(526)는 캐리 관리자 컴포넌트(예를 들어, 도 1의 캐시 관리자 컴포넌트(113))에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 머신 판독 가능 저장 매체(524)는 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "머신 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야 한다. "머신 판독 가능 저장 매체"라는 용어는 머신에서 실행하기 위한 명령어 세트를 저장하거나 인코딩할 수 있고 그리고 머신이 본 개시의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주된다. 따라서 "머신 판독 가능 저장 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 제한되지 않는 것으로 간주되어야 한다.
이전의 상세한 설명의 일부는 컴퓨터 메모리 내의 데이터 비트에 대한 동작의 알고리즘 및 기호 표현의 관점에서 제시되었다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 기술자가 자신의 작업 내용을 해당 기술 분야의 다른 사람에게 가장 효과적으로 전달하기 위해 사용하는 방법이다. 알고리즘은 본 명세서에서 일반적으로 원하는 결과로 이어지는 자체 일관된 동작 시퀀스로 간주된다. 동작은 물리량의 물리적 조작이 필요한 동작이다. 일반적으로 반드시 그런 것은 아니지만 이러한 양은 저장, 결합, 비교 및 조작할 수 있는 전기 또는 자기 신호의 형태를 취한다. 주로 일반적인 사용을 위해 이러한 신호를 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 지칭하는 것이 때때로 편리한 것으로 입증되었다.
그러나 이러한 모든 용어 및 유사한 용어는 적절한 물리량과 관련되어야 하며 이러한 양에 적용되는 편리한 레이블일 뿐이라는 점을 염두에 두어야 한다. 본 개시는 컴퓨터 시스템의 레지스터와 메모리 내에서 물리적(전자적) 수량으로 표현된 데이터를 컴퓨터 시스템 메모리나 레지스터 또는 기타 정보 저장 시스템 내에서 물리적 수량으로 유사하게 표현된 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스를 참조할 수 있다.
본 개시는 또한 본 명세서의 동작을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성되거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 이에 제한되지 않지만, 플로피 디스크, 광 디스크, CD-ROM 및 광자기 디스크를 포함하는 임의의 유형의 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 컴퓨터 시스템 버스에 각각 결합된 전자 명령어를 저장하는 데 적합한 임의의 유형의 매체와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본 명세서에 제시된 알고리즘 및 디스플레이는 본질적으로 특정 컴퓨터 또는 기타 장치와 관련이 없다. 다양한 범용 시스템이 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리할 수 있다. 이러한 다양한 시스템의 구조는 아래 설명에 설명된 대로 나타난다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에 설명된 바와 같이 본 개시의 교시를 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시는 명령어가 저장된 머신 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있으며, 이는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스)을 프로그래밍하는 데 사용될 수 있다. 머신 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예에서, 머신 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 머신(예를 들어, 컴퓨터) 판독가능 저장 매체, 예를 들어 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트 등을 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구범위에 기재된 본 개시의 실시형태의 보다 넓은 사상 및 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 방법에 있어서:
    메모리 서브시스템(memory sub-system)의 하나 이상의 데이터 블록들에 대해 가비지 수집 동작을 수행하는 단계-여기서, 데이터는 제1 기록 모드(write mode)를 사용하여 상기 하나 이상의 데이터 블록들에 저장됨-;
    상기 가비지 수집 동작이 성능 상태(performance condition)를 충족하는지 여부를 결정하는 단계;
    상기 가비지 수집 동작이 상기 성능 상태를 충족한다고 결정하는 것에 응답하여, 상기 메모리 서브시스템의 캐시 영역(cache area)의 데이터 블록이 내구성 상태(endurance condition)를 충족하는지 여부를 결정하는 단계-여기서, 데이터는 제2 기록 모드를 사용하여 상기 캐시 영역의 상기 데이터 블록에 저장됨-;
    처리 디바이스(processing device)에 의해, 상기 데이터 블록이 상기 내구성 상태를 충족한다는 결정에 응답하여 상기 캐시 영역의 상기 데이터 블록에 대한 기록 모드를 상기 제2 기록 모드에서 상기 제1 기록 모드로 변경하는 단계; 및
    상기 가비지 수집 동작에서 상기 캐시 영역의 상기 데이터 블록을 사용하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제1 기록 모드는 상기 데이터 블록의 메모리 셀당 제1 비트들 수로 상기 데이터를 저장하고, 상기 제2 기록 모드는 상기 데이터를 메모리 셀당 제2 비트들 수로 저장하고, 상기 제2 비트들 수는 상기 제1 비트들 수보다 작은, 방법.
  3. 제1항에 있어서, 상기 성능 상태는 데이터의 양을 하나 이상의 새로운 데이터 블록들에 기록하기 위해 상기 가비지 수집 동작에서 사용되는 기록 동작들의 수에 기초하는, 방법.
  4. 제1항에 있어서, 상기 내구성 상태는 상기 캐시 영역의 상기 데이터 블록에 대해 수행된 상기 제1 기록 모드를 이용한 기록 동작들의 임계 수에 대응하는, 방법.
  5. 제1항에 있어서, 상기 제1 기록 모드는 MLC(multi-level cell) 모드, TLC(triple-level cell) 모드 및 QLC(quad-level cell) 모드 중 적어도 하나를 포함하고, 제2 기록 모드는 SLC(single-level cell) 모드를 포함하는, 방법.
  6. 제1항에 있어서, 상기 캐시 영역의 상기 데이터 블록이 상기 내구성 상태를 충족하는지 여부를 결정하는 단계는:
    상기 캐시 영역에 대한 평균 내구성 값이 상기 내구성 상태를 충족하는지 여부를 결정하는 단계; 및
    상기 캐시 영역에 대한 상기 평균 내구성 값이 상기 내구성 상태를 충족한다는 결정에 응답하여, 상기 캐시 영역과 연관된 복수의 데이터 블록들로부터 상기 데이터 블록을 선택하는 단계를 더 포함하는, 방법.
  7. 제6항에 있어서, 상기 평균 내구성 값이 상기 캐시 영역의 상기 복수의 추가 데이터 블록들에 대해 수행된 상기 제1 기록 모드를 사용한 기록 동작들의 평균 수에 대응하는, 방법.
  8. 시스템에 있어서:
    메모리 컴포넌트; 및
    처리 디바이스를 포함하고, 상기 처리 디바이스는 상기 메모리 컴포넌트와 동작가능하게 결합되어:
    데이터 블록에 저장된 비트들의 수를 제1 수에서 제2 수로 변경함으로써 상기 메모리 컴포넌트와 연관된 복수의 데이터 블록들에 대한 가비지 수집 동작이 상기 메모리 컴포넌트와 연관된 캐시 영역의 상기 데이터 블록을 사용했다고 결정하고;
    상기 가비지 수집 동작이 성능 요건을 충족했다고 결정하고; 및
    상기 가비지 수집 동작이 상기 성능 요건을 충족했다고 결정하는 것에 응답하여, 상기 데이터 블록에 저장된 상기 비트들의 수를 상기 제2 수에서 상기 제1 수로 변경함으로써 상기 데이터 블록에 캐시 데이터로 후속 데이터를 저장하는, 시스템.
  9. 제8항에 있어서, 상기 제1 수는 상기 제2 수보다 작은, 시스템.
  10. 제8항에 있어서, 상기 제1 수는 제1 기록 모드와 연관되고, 상기 제2 수는 상기 제2 기록 모드와 연관되는, 시스템.
  11. 제10항에 있어서, 상기 제1 기록 모드는 SLC(single-level cell) 모드를 포함하고, 상기 제2 기록 모드는 MLC(multi-level cell) 모드, TLC(triple-level cell) 모드, 및 QLC(quad-level cell) 모드 중 적어도 하나를 포함하는, 시스템.
  12. 제8항에 있어서, 상기 성능 요건은 데이터의 양을 하나 이상의 새로운 데이터 블록들에 기록하기 위해 상기 가비지 수집 동작에서 사용되는 기록 동작들의 수에 기초하는, 시스템.
  13. 제12항에 있어서, 상기 가비지 수집 동작이 성능 요건을 충족했다고 결정하기 위해, 상기 처리 디바이스는:
    상기 데이터의 양을 기록하기 위해 상기 가비지 수집 동작에 사용된 상기 기록 동작들의 수가 높은 임계값 아래로 떨어지는지 더 결정하는, 시스템.
  14. 명령어들을 포함하는 비일시적 컴퓨터 판독 가능 매체로서, 상기 명령어들은, 처리 디바이스에 의해 실행될 때, 상기 처리 디바이스로 하여금:
    메모리 서브시스템의 하나 이상의 데이터 블록들에 대해 가비지 수집 동작을 수행하는 단계-여기서, 데이터는 제1 기록 모드를 사용하여 상기 하나 이상의 데이터 블록들에 저장됨-;
    상기 가비지 수집 동작이 성능 상태를 충족하는지 여부를 결정하는 단계;
    상기 가비지 수집 동작이 상기 성능 상태를 충족한다고 결정하는 것에 응답하여, 상기 메모리 서브시스템의 캐시 영역의 데이터 블록이 내구성 상태를 충족하는지 여부를 결정하는 단계-여기서, 데이터는 제2 기록 모드를 사용하여 상기 캐시 영역의 상기 데이터 블록에 저장됨-;
    상기 데이터 블록이 상기 내구성 상태를 충족한다는 결정에 응답하여 상기 캐시 영역의 상기 데이터 블록에 대한 기록 모드를 상기 제2 기록 모드에서 상기 제1 기록 모드로 변경하는 단계; 및
    상기 가비지 수집 동작에서 상기 캐시 영역의 상기 데이터 블록을 사용하는 단계를 포함하는 동작들을 수행하게 하는, 비일시적 컴퓨터 판독 가능 매체.
  15. 제14항에 있어서, 상기 제1 기록 모드는 상기 데이터 블록의 메모리 셀당 비트들의 제1 수로 상기 데이터를 저장하고, 및 상기 제2 기록 모드는 메모리 셀당 비트들의 제2 수로 상기 데이터를 저장하고, 여기서 상기 비트들의 제2 수는 상기 비트들의 제1 수보다 작은, 비일시적 컴퓨터 판독 가능 매체.
  16. 제14항에 있어서, 상기 성능 상태는 데이터의 양을 하나 이상의 새로운 데이터 블록들에 기록하기 위해 상기 가비지 수집 동작에 사용된 기록 동작들의 수에 기초하는, 비일시적 컴퓨터 판독가능 매체.
  17. 제14항에 있어서, 상기 내구성 상태는 상기 캐시 영역의 상기 데이터 블록에 대해 수행된 상기 제1 기록 모드를 사용한 기록 동작들의 임계 수에 대응하는, 비일시적 컴퓨터 판독 가능 매체.
  18. 제14항에 있어서, 상기 제1 기록 모드는 MLC(multi-level cell) 모드, TLC(triple-level cell) 모드, 및 QLC(quad-level cell) 중 적어도 하나를 포함하고, 여기서 상기 제2 기록 모드는 SLC(single-level cell) 모드를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  19. 제14항에 있어서, 상기 캐시 영역의 상기 데이터 블록이 상기 내구성 상태를 충족하는지 여부를 결정하기 위해, 상기 동작들은:
    상기 캐시 영역에 대한 평균 내구성 값이 상기 내구성 상태를 충족하는지 여부를 결정하는 단계; 및
    상기 캐시 영역에 대한 상기 평균 내구성 값이 상기 내구성 상태를 충족한다고 결정하는 것에 응답하여, 상기 캐시 영역과 연관된 복수의 데이터 블록들로부터 상기 데이터 블록을 선택하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  20. 제14항에 있어서, 상기 평균 내구성 값은 상기 캐시 영역의 상기 복수의 추가 데이터 블록들에 대해 수행된 상기 제1 기록 모드를 사용한 기록 동작들의 평균 수에 대응하는, 비일시적 컴퓨터 판독 가능 매체.
KR1020227025389A 2020-01-08 2021-01-08 캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행 KR20220114078A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/737,662 2020-01-08
US16/737,662 US11157400B2 (en) 2020-01-08 2020-01-08 Performing a media management operation based on changing a write mode of a data block in a cache
PCT/US2021/012782 WO2021142325A1 (en) 2020-01-08 2021-01-08 Performing a media management operation based on changing a write mode of a data block in a cache

Publications (1)

Publication Number Publication Date
KR20220114078A true KR20220114078A (ko) 2022-08-17

Family

ID=76655227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227025389A KR20220114078A (ko) 2020-01-08 2021-01-08 캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행

Country Status (6)

Country Link
US (2) US11157400B2 (ko)
JP (1) JP7466655B2 (ko)
KR (1) KR20220114078A (ko)
CN (1) CN114981785A (ko)
DE (1) DE112021000474T5 (ko)
WO (1) WO2021142325A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934675B2 (en) * 2020-09-12 2024-03-19 Western Digital Technologies, Inc. Mixed mode block cycling for intermediate data
JP2022146531A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720616B2 (en) * 2008-06-18 2017-08-01 Super Talent Technology, Corp. Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED)
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
JP2011186555A (ja) 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置及び方法
US7948798B1 (en) 2009-07-22 2011-05-24 Marvell International Ltd. Mixed multi-level cell and single level cell storage device
US20120185638A1 (en) * 2011-01-14 2012-07-19 Daniel Schreiber Method and system for cache endurance management
KR20150010150A (ko) 2013-07-18 2015-01-28 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
US10031673B2 (en) 2014-09-26 2018-07-24 SK Hynix Inc. Techniques for selecting amounts of over-provisioning
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
US10572388B2 (en) 2017-08-30 2020-02-25 Micron Technology, Inc. Managed NVM adaptive cache management
US10521146B1 (en) 2017-11-09 2019-12-31 Micron Technology, Inc. UFS based idle time garbage collection management

Also Published As

Publication number Publication date
US11693767B2 (en) 2023-07-04
US11157400B2 (en) 2021-10-26
CN114981785A (zh) 2022-08-30
US20210209016A1 (en) 2021-07-08
US20220004491A1 (en) 2022-01-06
JP7466655B2 (ja) 2024-04-12
JP2023510764A (ja) 2023-03-15
DE112021000474T5 (de) 2022-11-24
WO2021142325A1 (en) 2021-07-15

Similar Documents

Publication Publication Date Title
US11609848B2 (en) Media management based on data access metrics
US11782847B2 (en) Performing a media management operation based on a sequence identifier for a block
CN115699185A (zh) 在存储装置上每单元实施可变数目的位
CN113031856A (zh) 存储器子***中的断电数据保护
US20240184695A1 (en) Managing power loss recovery using a dirty section write policy for an address mapping table in a memory sub-system
US11693767B2 (en) Performing a media management operation based on changing a write mode of a data block in a cache
US20220050772A1 (en) Data block switching at a memory sub-system
CN111381776A (zh) 用于存储器装置的方法、***和计算机可读媒体
US20210042236A1 (en) Wear leveling across block pools
US20230195350A1 (en) Resequencing data programmed to multiple level memory cells at a memory sub-system
US20220188231A1 (en) Low-bit density memory caching of parallel independent threads
CN115639951A (zh) 在存储器子***中实施自动速率控制
US11797441B2 (en) Cache media management
US20240176527A1 (en) Memory device region allocation using lifetime hints
US11853201B2 (en) Selective single-level memory cell operation
US20240061589A1 (en) Code rate as function of logical saturation
US11922011B2 (en) Virtual management unit scheme for two-pass programming in a memory sub-system
US11449419B2 (en) Disassociating memory units with a host system
US20240241710A1 (en) Intelligent over-the-air update performance management
CN113253917A (zh) 用于存储器子***的媒体管理的多状态炼狱
CN117769741A (zh) 针对按需擦除的写入性能优化