KR20220085826A - 구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원 - Google Patents

구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원 Download PDF

Info

Publication number
KR20220085826A
KR20220085826A KR1020227017655A KR20227017655A KR20220085826A KR 20220085826 A KR20220085826 A KR 20220085826A KR 1020227017655 A KR1020227017655 A KR 1020227017655A KR 20227017655 A KR20227017655 A KR 20227017655A KR 20220085826 A KR20220085826 A KR 20220085826A
Authority
KR
South Korea
Prior art keywords
memory
memory device
host
write
namespace
Prior art date
Application number
KR1020227017655A
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 KR20220085826A publication Critical patent/KR20220085826A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/7207Details relating to flash memory management management of metadata or control data

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 서브시스템에서의 처리 디바이스는 제1 메모리 디바이스 및 제2 메모리 디바이스를 식별하고, 제2 메모리 디바이스를 구역 명칭공간으로 구성한다. 처리 디바이스는 제1 메모리 디바이스의 제1 부분 및 제2 부분을 식별하며, 제1 부분은 제2 메모리 디바이스 상의 구역 명칭공간에 대응하는 구역 명칭공간 메타데이터를 저장한다. 처리 디바이스는 또한, 제1 메모리 디바이스의 제2 부분을 비구역화 어드레싱가능 메모리 영역으로서 호스트 시스템에 노출시킨다.

Description

구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원
본 개시의 실시예들은 일반적으로 메모리 시스템들, 그리고 보다 더 구체적으로는, 구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원에 관한 것이다.
메모리 서브 시스템은 데이터를 저장하는 하나 이상의 메모리 구성요소를 포함할 수 있다. 메모리 구성요소들은 예를 들어, 비휘발성 메모리 구성요소들 및 휘발성 메모리 구성요소들일 수 있다. 일반적으로, 호스트 시스템은 메모리 구성요소들에 데이터를 저장하고 메모리 구성요소들로부터 데이터를 검색하는 데 메모리 서브 시스템을 이용할 수 있다.
본 개시는 아래에 제공되는 발명을 실시하기 위한 구체적인 내용 및 본 개시의 다양한 실시예들의 첨부 도면들로부터 보다 충분히 이해될 것이다. 그러나, 도면들은 본 개시를 특정 실시예들로 제한하기 위한 것이 아니라, 단지 설명 및 이해를 위한 것일 뿐이다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 개시의 일부 실시예들에 따른 구역 명칭공간 메모리를 갖는 메모리 서브시스템에 대한 향상된 파일시스템 지원을 수행하는 메모리 영역 관리기의 동작을 도시한 블록도이다.
도 3은 본 개시의 일부 실시예들에 따른 구역 명칭공간을 구현하는 메모리 서브시스템에 대한 메모리 영역 관리의 예시적인 방법의 흐름도이다.
도 4는 본 개시의 일부 실시예들에 따른 비휘발성 메모리 디바이스에 대한 구역 명칭공간을 구현하는 메모리 서브시스템에서의 호스트 액세스 요청들을 관리하는 예시적인 방법의 흐름도이다.
도 5는 본 개시의 실시예들이 작동될 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태들은 메모리 서브 시스템에서의 구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원에 관한 것이다. 메모리 서브시스템은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드일 수 있다. 저장 디바이스들 및 메모리 모듈들의 예들은 도 1과 관련하여 아래에서 설명된다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 구성요소, 이를테면 데이터를 저장하는 메모리 디바이스들을 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장될 데이터를 제공할 수 있고 메모리 서브시스템으로부터 검색될 데이터를 요청할 수 있다.
메모리 서브시스템은 호스트 시스템으로부터 데이터를 저장할 수 있는 다수의 메모리 디바이스들을 포함할 수 있다. 비휘발성 메모리 디바이스의 일례는 부정 곱(NAND, negative-and) 메모리 디바이스이다. 비휘발성 메모리 디바이스들의 다른 예들은 도 1과 관련하여 아래에서 설명된다. 메모리 서브시스템은 메모리 디바이스들에서 데이터를 판독, 데이터를 기록, 또는 데이터를 소거하는 것과 같은 동작들, 및 다른 이러한 동작들을 수행하기 위해 메모리 디바이스들과 통신할 수 있는 메모리 서브시스템 제어기를 포함한다. 메모리 서브시스템 제어기는 도 1과 관련하여 아래에서 더 상세히 설명된다.
호스트 시스템은 메모리 서브시스템에서 메모리 디바이스 상에 데이터를 저장하고 메모리 서브시스템 상에서 메모리 디바이스로부터 데이터를 판독하는 것과 같은 액세스 요청들(예를 들어, 기록 커맨드들, 판독 커맨드들)을 메모리 서브시스템에 발송할 수 있다. 호스트 요청에 의해 특정되는 바에 따라, 판독 또는 기록될 데이터는 이하에서 "호스트 데이터"라고 지칭된다. 호스트 요청은 호스트 데이터에 대한 논리 어드레스 정보(예를 들어, 논리 블록 어드레스(LBA), 명칭공간) - 이는 호스트 시스템이 호스트 데이터와 연관되는 위치임 - 를 포함할 수 있다. 논리 어드레스 정보(예를 들어, LBA, 명칭공간)는 호스트 데이터에 대한 메타데이터의 일부일 수 있다. 메타데이터 및 호스트 데이터는 이하에서 함께 "페이로드"라고 지칭된다. 에러 정정에 사용되는 메타데이터, 호스트 데이터, 및 패리티 데이터는 집합적으로 에러 정정 코드(ECC) 코드워드를 형성할 수 있다. 메타데이터는 또한, 데이터 버전(예를 들어, 기록된 데이터의 연한을 구별하기 위해 사용됨), 유효 비트맵(어느 LBA들 또는 논리 전달 유닛들이 유효 데이터를 포함하는지를 지정함) 등을 포함할 수 있다.
메모리 디바이스들 각각은 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 메모리 셀("셀")은 정보를 저장하는 전자 회로이다. 셀 유형에 따라, 셀은 이진 정보의 하나 이상의 비트를 저장할 수 있고, 저장되는 비트들의 수에 상관되는 다양한 논리 상태들을 갖는다. 논리 상태들은 "0" 및 "1"과 같은 이진 값들, 또는 이러한 값들의 조합들에 의해 표현될 수 있다. 예를 들어, 단일 레벨 셀(SLC)은 1비트의 정보를 저장할 수 있고, 두 개의 논리 상태들을 가질 수 있다
메모리 서브시스템은 매체 관리 동작들 - 이는 메모리 디바이스 상에 저장된 호스트 데이터에 대해, 예를 들어, 기록 동작 또는 판독 동작을 실행하는 것을 포함할 수 있음 - 을 개시할 수 있다. 예를 들어, 메모리 서브시스템은 이전에 기록된 호스트 데이터를 메모리 디바이스 상의 위치로부터 기록 리프레시 동작의 일부로서 동일한 위치 또는 새로운 위치로 재기록할 수 있다. 다른 예에서, 매체 관리 동작들은 판독 리프레시 동작의 일부로서 메모리 디바이스 상에 저장된 호스트 데이터의 재판독을 포함할 수 있다. "사용자 데이터"는 이하에서 일반적으로 호스트 데이터, 및 매체 관리의 일부로서 재기록되는 데이터를 지칭한다. "시스템 데이터"는 이하에서 호스트 요청들에 응답하여 동작들을 수행하기 위해 그리고 매체 관리를 위해 메모리 서브시스템에 의해 생성 및/또는 유지되는 데이터를 지칭한다. 시스템 데이터의 예들은 시스템 테이블들(예를 들어, 논리 대 물리 어드레스 매핑 테이블), 로깅으로부터의 데이터, 스크래치 패드 데이터 등을 포함하지만, 이에 제한되지 않는다.
특정 구현들에서, 파일시스템은 데이터를 저장, 리트리브 및 업데이트하기 위한 절차들을 제공함으로써 메모리 서브시스템의 메모리 디바이스 또는 디바이스들 상의 사용자 데이터를 조직화할 뿐만 아니라, 메모리 디바이스 또는 디바이스들 상의 이용가능한 공간을 관리하기 위한 수단으로서 사용될 수 있다. 파일시스템은 효율적인 방식으로 데이터를 조직화하고 메모리 디바이스의 특정 특성들에 동조될 수 있다. 파일 시스템은 컴퓨터 파일들의 물리적 위치들을 유지하기 위해 다양한 유형들의 데이터 저장 디바이스들 상에서 사용된다. 파일시스템들은 통상적으로 메모리 디바이스 상의 다수의 물리적 유닛들을 사용하여, 일반적으로 입상 방식으로 공간을 할당한다. 파일시스템들은 파일들 및 디렉토리들을 조직화하고, 디바이스의 어느 영역들이 특정 파일들에 속하고 어느 영역들이 사용되고 있지 않은지를 추적하는 것을 담당한다. 파일시스템들은 호스트 시스템 상에서 실행되는 애플리케이션 또는 운영 체제로부터의 실제 데이터를 저장하는 데이터 블록들뿐만 아니라, 메타데이터 블록을 포함한다. 이 파일시스템 메타데이터는 실제 데이터를 저장하는 데 사용되는 데이터 구조들의 설계, 구조 및 레이아웃에 대한 정보를 포함한다. 다른 구현들에서, 객체 저장소는 파일시스템 대신에 사용될 수 있다. 예를 들어, 특정 대규모 컴퓨팅 구현들에서, 객체들의 피처들이 보다 더 적합할 때(예를 들어, 파일과 함께 저장된 포괄적인 메타데이터의 존재가 파일시스템들과 연관된 계층화된 파일 구조를 제거함), 객체들이 파일 대신에 사용될 수 있다.
특정 메모리 디바이스들은 또한, 구역 명칭공간으로 구성된다. 구역 명칭공간에서, 메모리 디바이스의 어드레스 공간은 구역들로 분할되어, 메모리 디바이스의 용량이 증가함에 따라 데이터의 보다 더 효율적인 관리를 가능하게 된다. 그러나, 종래의 파일시스템들과 동작하도록 설계된 호스트 시스템들은 구역 명칭공간을 갖는 메모리 디바이스와 상호작용할 때 특정 과제들에 직면할 수 있다. 예를 들어, 종래의 파일시스템들은 크기가 4 킬로바이트(KB)만큼 작은 블록들로 데이터를 기록할 수 있는 한편, 구역 명칭공간 메모리 디바이스는 대략 100 KB(예를 들어, 64 KB, 128 KB, 196 KB)의 범위 내의 최적의 기록 크기를 가질 수 있다. 파일시스템 기록들의 데이터 부분이 이러한 입상도들을 수용하도록 조정될 수 있지만, 이는 크기가 상당히 더 작은 파일시스템 메타데이터 기록들에 대해 반드시 그러할 필요는 없다. 또한, 구역 명칭공간에서, 기록들은 각 존의 시작으로부터 시작하여 순차적으로 수행된다. 많은 파일시스템들은 보통 구역 명칭공간에 대해 최적인 것보다 더 작은 입상도로 제자리 기록 접근법(즉, 랜덤 기록)을 이용한다. 그러나, 구역 명칭공간들에서, 구역 내의 데이터는 통상적으로 임의로 오버라이트될 수 없다. 대신에, 구역 기록 포인터는 통상적으로 리셋되어, 구역에서의 데이터를 효과적으로 삭제하고, 데이터의 기록은 구역의 시작으로부터 재시작될 수 있다.
이에 따라, 종래의 파일시스템들과 구역 명칭공간 메모리 디바이스들의 사용을 가능하게 하기 위해, 비용이 많이 드는 특정 수정들이 요구될 수 있다. 일반적으로, 호스트 컴퓨팅 시스템은 구역 명칭공간의 최적의 기록 크기에 기초하여 데이터가 보다 더 큰 청크들로 축적되도록, 많은 어려움 없이 정규 데이터에 대한 기록 크기 입상도를 수정할 수 있다. 그러나, 호스트 메타데이터는 훨씬 더 작고, 대응하는 정규 데이터와 함께 메모리 디바이스에 기록되어야 하기 때문에, 특정 메모리 디바이스들은 예를 들어, 호스트 메타데이터가 기록될 수 있는 비휘발성 듀얼 인라인 메모리 모듈(non-volatile dual in-line memory module, NVDIMM)을 포함하도록 구성된다. NVDIMM은 보다 더 작은 기록 크기들로 파일시스템으로부터 호스트 메타데이터를 수용할 수 있고, 구역 명칭공간의 최적의 기록 크기에 도달할 때까지 그 호스트 메타데이터를 임시로 저장하며, 그 후 호스트 메타데이터를 기저 메인 저장 매체(예를 들어, NAND)로 플러싱할 수 있는 다수의 동적 랜덤 액세스 메모리(DRAM) 디바이스들을 포함할 수 있다. 이러한 NVDIMM의 추가는 메모리 서브시스템에 상당한 비용 증가를 추가하고 적어도 하나의 추가적인 이용 가능한 메모리 슬롯을 소비한다. 다른 솔루션들은 구역 명칭공간의 규칙들을 준수하도록 파일시스템을 수정하려고 시도하지만, 이러한 변경은 복잡하고 침략적일 수 있어서, 시장에서 받아들여질 가능성이 낮다. 또 다른 솔루션들은 구역 명칭공간에 추가하여 메모리 서브시스템 상에 종래의 명칭공간을 생성하려고 시도하여, 임의의 크기의 기록 동작들이 수행될 수 있게 된다. 그러나, 각 명칭공간의 크기가 구성 시간에 미리 결정되어야 할 것임에 따라, 이러한 솔루션은 메모리 용량의 비효율적인 사용을 초래할 수 있고, 구현하기에 복잡할 수 있으며, 적응성이 부족할 수 있다.
본 개시의 양태들은 구역 명칭공간 메모리 디바이스들에 대한 향상된 파일 시스템 지원을 제공함으로써 상기한 및 다른 결함들을 해결한다. 종래의 파일시스템과 비교하여, 구역 명칭공간은 상당히 더 적은 양의 구역 명칭공간 메타데이터(예를 들어, 어드레스 매핑 테이블들)를 사용하여 구현될 수 있다. 구역 명칭공간은 보다 더 큰 기록 크기 입상도를 사용하고, 순차적 기록들을 시행하므로, 요구되는 구역 명칭공간 메타데이터의 양은 간단히 비슷한 크기의 비구역화 메모리 서브시스템의 양보다 적다. 이에 따라, 구역 명칭공간에 대해 구역 명칭공간 메타데이터를 유지하는 데 메모리 디바이스 상의 더 적은 용량이 필요하다. 예를 들어, 16 테라바이트(TB)의 용량을 갖는 구역 명칭공간 메모리 디바이스는 약 50 메가바이트(MB)의 구역 명칭공간 메타데이터만을 요구할 수 있는 한편, 종래의 메모리 디바이스는 약 16 GB의 메타데이터를 요구할 수 있다. 구역 명칭공간 메모리 디바이스는 여전히 구역 명칭공간 메타데이터를 저장하기 위한 일부 DRAM을 포함할 수 있다. 대부분의 구현들에서, 이용가능한 가장 작은 DRAM 디바이스는 크기가 대략 1 GB 또는 그 이상일 것이므로, DRAM의 대략 90% 이상은 다른 사용에 이용가능한 채로 유지된다.
특정 메모리 서브시스템들은 영구 메모리 영역들(persistent memory regions, PMR)로서 알려진 피처를 포함하며, 이는 메모리 서브시스템이 내부 DRAM(또는 다른 휘발성 메모리)을 호스트 시스템에 노출시킬 수 있게 한다. DRAM은 캐싱가능하지 않고, 이에 따라 런타임 동작들에 사용될 수 없지만, (커패시터 또는 다른 배터리에 의해) 비휘발성이며, 이에 따라 비휘발성 버퍼로서 사용될 수 있다. 또한, 다수의 메모리 서브시스템들로부터의 PMR은 모든 개별 PMR 기여분들 전체와 동일한 용량을 갖는 단일의 더 큰 메모리로서 호스트 시스템에 노출될 수 있다. 이에 따라, 일 실시예에서, 메모리 서브시스템은 PMR을 통해 DRAM의 미사용 부분(본원에서, "PMR 자유 공간"으로서 지칭됨)을 노출시킬 수 있음으로써, 호스트 시스템이 그 PMR 자유 공간을 캐싱불가능한 PCIe 메모리로서 등록할 수 있게 한다. PMR 자유 공간은 메타데이터 관리를 지원하기 위해 사용될 수 있는 메모리 서브시스템에서의 NVDIMM으로서 효과적으로 기능한다. DRAM이 메모리 서브시스템에 이미 존재하고, 어떠한 추가적인 PCIe 슬롯도 소비하지 않을 것이므로 추가 비용이 없다. 영구 메모리의 이러한 이용가능성을 고려해 볼 때, 파일시스템에 대한 임의의 변경은 비교적 작을 수 있다. 예를 들어, 파일시스템은 임시 버퍼링을 위해 PMR 빈 공간에 4KB 블록 크기들로 메타데이터 기록들을 계속 수행할 수 있다. PMR 자유 공간 내의 메타데이터의 양이 구역 명칭공간에 대한 최적의 기록 크기에 도달하면, 메모리 서브시스템은 메타데이터의 구역 기록을 PMR 빈 공간으로부터 메인 메모리(예를 들어, NAND)로 발행할 수 있다. 다른 실시예들에서, 다른 비휘발성 저장 기술들이 전원을 이용하는 DRAM 대신에 PMR 기능을 제공하기 위해 사용될 수 있다. 예를 들어, 적층가능한 크로스-그리드 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있는 비휘발성 메모리의 크로스-포인트 어레이인 강유전성 랜덤 액세스 메모리(FeRAM), 자기 랜덤 액세스메모리(MRAM), 또는 3차원 크로스- 포인트("3D 크로스-포인트") 메모리 디바이스들이 사용될 수 있다.
정전 발생 시, 메모리 서브시스템은 (예를 들어, 커패시터 또는 다른 배터리로부터의) 백업 전력을 사용하여, 데이터를 PMR 자유 공간으로부터 NAND로 덤핑할 수 있다. 이러한 예에서 PMR 자유 공간에서의 데이터는 메타데이터뿐만 아니라, 롤백을 위한 메타데이터 저널들 양자를 포함할 수 있다. 전력이 복원될 때, 메모리 서브시스템은 NAND로부터 데이터를 리트리빙함으로써 데이터를 PMR 자유 공간으로 복원할 수 있다. 파일시스템은 장착될 것이고, 충돌 복구의 일부로서, PMR 서명을 체크하고, 전체 파일시스템을 복원할 수 있도록 이전에 저장되었던 모든 메타데이터 및 저널들을 리트리빙할 것이다. 이에 따라, 파일시스템 및 메모리 서브시스템 양자에 대한 변경이 제한되고, 메모리 서브시스템의 비용에 크게 영향을 미치지 않으면서, 여전히 상당한 새로운 능력들을 제공할 것이다. 예를 들어, 구역 명칭공간은 종래의 파일시스템보다 더 적은 메타데이터를 이용하는 메모리 서브시스템에서 구현될 수 있다. 이에 따라, 보다 더 적은 용량의 메모리 서브시스템이 메타데이터를 위해 예비되고, 보다 더 많은 용량이 호스트 시스템에 제공될 수 있다. 또한, 다수의 목적들을 위해(즉, 구역 명칭공간 메타데이터를 저장하기 위해 그리고 호스트 데이터에 대한 비휘발성 버퍼로서) 메모리 서브시스템에서 DRAM을 이용함으로써, 메모리 서브시스템의 설계가 단순화되어, 추가적인 이산 메모리 디바이스들에 대한 필요를 방지한다. 더 나아가, 전력 손실에 대한 저항이 그 외 휘발성 메모리 서브시스템에서 제공된다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 시스템(100)을 도시한다. 메모리 서브시스템(110)은 하나 이상의 휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(140)), 하나 이상의 비휘발성 메모리 디바이스(예를 들어, 메모리 디바이스(130)), 또는 이들의 조합과 같은 매체들을 포함할 수 있다.
메모리 서브시스템(110)은 저장 디바이스, 메모리 모듈, 또는 저장 디바이스와 메모리 모듈의 하이브리드일 수 있다. 저장 디바이스의 예들은 SSD(solid-state drive), 플래시 드라이브, USB(universal serial bus) 플래시 드라이브, eMMC(embedded Multi-Media Controller) 드라이브, UFS(Universal Flash Storage) 드라이브, 및 HDD(hard disk drive)를 포함한다. 메모리 모듈들의 예들은 듀얼 인라인 메모리 모듈(DIMM), 소형 아웃라인 DIMM(SO-DIMM), 및 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM)을 포함한다.
컴퓨팅 시스템(100)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 디바이스, 비히클(예를 들어, 비행기, 드론, 열차, 자동차, 또는 다른 운송 수단), 사물 인터넷(IoT) 가능 디바이스, 내장형 컴퓨터(예를 들어, 차량, 산업 장비, 또는 네트워크 상용 디바이스에 포함된 것), 또는 메모리 및 처리 디바이스를 포함하는 임의의 다른 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스를 포함할 수 있다.
컴퓨팅 시스템(100)은 하나 이상의 메모리 서브시스템(110)에 결합되는 호스트 시스템(120)을 포함한다. 일부 실시예들에서, 호스트 시스템(120)은 상이한 유형들의 메모리 서브시스템(110)에 결합된다. 도 1은 하나의 메모리 서브시스템(110)에 결합된 호스트 시스템(120)의 일례를 도시한다. 본원에서 사용될 때, "~에 결합된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여, 유선이든 무선이든, 간접 통신 연결 또는 직접 통신 연결(예를 들어, 개재 구성요소 없이)일 수 있는, 구성요소들 사이의 연결을 지칭한다.
호스트 시스템(120)은 처리기 칩셋, 및 처리기 칩셋에 의해 실행되는 소프트웨어 스택을 포함할 수 있다. 처리기 칩셋은 하나 이상의 코어, 하나 이상의 캐시, 메모리 제어기(예를 들어, NVDIMM 제어기), 및 저장 프로토콜 제어기(예를 들어, PCIe 제어기, SATA 제어기)를 포함할 수 있다. 호스트 시스템(120)은 메모리 서브시스템(110)을 사용하여, 예를 들어, 메모리 서브시스템(110)에 데이터를 기록하고 메모리 서브시스템(110)으로부터 데이터를 판독한다.
호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예들은 SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component Interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 파이버 채널, 직렬 접속 SCSI(Serial Attached SCSI, SAS), DIMM(dual in-line memory module) 인터페이스(예를 들어, DDR(더블 데이터 레이트)를 지원하는 DIMM 소켓 인터페이스) 등을 포함하지만, 이에 제한되지는 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 송신하는 데 사용될 수 있다. 호스트 시스템(120)은 또한 메모리 서브 시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합될 때 NVMe(NVM Express) 인터페이스를 이용하여 메모리 구성요소들(예를 들어, 메모리 디바이스들(130))에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 디바이스들은 상이한 유형들의 비휘발성 메모리 디바이스들 및/또는 휘발성 메모리 디바이스들의 임의의 조합을 포함할 수 있다. 휘발성 메모리 디바이스들(예를 들어, 메모리 디바이스(140))은 랜덤 액세스 메모리(RAM), 이를테면 동적 랜덤 액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM)일 수 있지만, 이에 제한되지는 않는다.
비휘발성 메모리 디바이스들(예를 들어, 메모리 디바이스(130))의 일부 예들은 부정 곱(NAND) 유형 플래시 메모리 및 제자리 기록 메모리, 이를테면 3차원 크로스-포인트("3D 크로스-포인트") 메모리를 포함한다. 비휘발성 메모리의 크로스-포인트 어레이는 적층 가능한 크로스 그리드 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 또한, 크로스-포인트 비휘발성 메모리는 많은 플래시 기반 메모리들과 달리, 제자리 기록 동작을 수행할 수 있으며, 이때 비휘발성 메모리 셀은 비휘발성 메모리 셀이 사전에 소거되지 않고도 프로그래밍될 수 있다.
메모리 디바이스들(130) 각각은 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 하나의 유형의 메모리 셀, 예를 들어, 단일 레벨 셀(SLC)들은 셀당 1 비트를 저장할 수 있다. 다중 레벨 셀(MLC)들, 삼중 레벨 셀(TLC)들, 및 사중 레벨 셀(QLC)들과 같은 다른 유형들의 메모리 셀들은 셀당 다수의 비트들을 저장할 수 있다. 일부 실시예들에서, 메모리 디바이스들(130) 각각은 SLC들, MLC들, TLC들, QLC들, 또는 이들의 임의의 조합과 같은 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 일부 실시예들에서, 특정 메모리 디바이스는 메모리 셀들의 SLC 부분, 및 MLC 부분, TLC 부분, 또는 QLC 부분을 포함할 수 있다. 메모리 디바이스들(130)의 메모리 셀들은 데이터를 저장하는 데 사용되는 메모리 디바이스의 논리 유닛을 지칭할 수 있는 페이지들로서 그룹화될 수 있다. 일부 유형들의 메모리(예를 들어, NAND)로, 페이지들은 블록들을 형성하도록 그룹화될 수 있다.
3D 크로스-포인트 유형 및 NAND 유형 메모리와 같은 비휘발성 메모리 구성요소들이 설명되지만, 메모리 디바이스(130)는 임의의 다른 유형의 비휘발성 메모리, 이를테면 판독 전용 메모리(ROM), 상 변화 메모리(PCM), 자기 선택 메모리, 다른 칼코겐화물 기반 메모리들, 강유전성 랜덤 액세스 메모리(FeRAM), 자기 랜덤 액세스 메모리(MRAM), 부정 합(NOR) 플래시 메모리, 및 전기 소거가능 프로그래머블 판독 전용 메모리(EEPROM)에 기초할 수 있다.
메모리 서브시스템 제어기(115)(또는 간략함을 위해 제어기(115))는 메모리 디바이스들(130)과 통신하여, 메모리 디바이스들(130)에서 데이터를 판독하거나, 데이터를 기록하거나, 또는 데이터를 소거하는 것과 같은 동작들, 및 다른 그러한 동작들을 수행한다. 메모리 서브 시스템 제어기(115)는 하나 이상의 집적 회로 및/또는 개별 구성요소, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 하드웨어는 본원에서 설명되는 동작들을 수행하기 위한 전용(즉, 하드-코딩된) 로직을 갖는 디지털 회로부를 포함할 수 있다. 메모리 서브 시스템 제어기(115)는 마이크로 제어기, 특수 목적 논리 회로부(예를 들어, 현장 프로그래밍 가능한 게이트 어레이(FPGA), 용도 특정 집적 회로(ASIC) 등), 또는 다른 적합한 처리기일 수 있다.
메모리 서브 시스템 제어기(115)는 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 처리기(처리 디바이스)(117)를 포함할 수 있다. 도시된 예에서, 메모리 서브 시스템 제어기(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이의 통신을 핸들링하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들, 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 임베디드 메모리를 포함한다.
일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터들, 페칭된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로 코드를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다. 도 1에서의 예시적인 메모리 서브 시스템(110)은 메모리 서브 시스템 제어기(115)를 포함하는 것으로 도시되었지만, 본 개시의 또 다른 실시예에서, 메모리 서브 시스템(110)은 메모리 서브 시스템 제어기(115)를 포함하지 않을 수 있고, 대신 외부 제어(예를 들어, 외부 호스트에 의해 또는 메모리 서브 시스템과 별개인 처리기 또는 제어기에 의해 제공되는)에 의존할 수 있다.
일반적으로, 메모리 서브 시스템 제어기(115)는 호스트 시스템(120)으로부터 커맨드들 또는 동작들을 수신할 수 있고 커맨드들 또는 동작들을 메모리 디바이스들(130)에 대한 목적하는 액세스를 달성하기 위한 명령어들 또는 적절한 커맨드들로 변환할 수 있다. 메모리 서브 시스템 제어기(115)는 웨어 레벨링 동작들, 가비지 수집 동작들, 오류 검출 및 오류 정정 코드(error-correcting code, ECC) 동작들, 암호화 동작들, 캐싱 동작들, 및 메모리 디바이스들(130)과 연관되는 논리적 어드레스(예를 들어, 논리적 블록 어드레스(logical block address, LBA))와 물리적 어드레스(예를 들어, 물리적 MU 어드레스, 물리적 블록 어드레스) 사이의 어드레스 변환과 같은 다른 동작들을 담당할 수 있다. 메모리 서브 시스템 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 커맨드들을 메모리 디바이스들(130)에 액세스하기 위한 커맨드 명령어들로 변환할뿐만 아니라, 메모리 디바이스들(130)과 연관된 응답들을 호스트 시스템(120)을 위한 정보로 변환할 수도 있다.
메모리 서브 시스템(110)은 또한 도시되지 않은 추가 회로부 또는 구성요소들을 포함할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 메모리 디바이스들(130)에 액세스하기 위해 메모리 서브 시스템 제어기(115)로부터 어드레스를 수신하고 어드레스를 디코딩할 수 있는 어드레스 회로부(예를 들어, 로우 디코더 및 컬럼 디코더) 및 캐시 또는 버퍼(예를 들어, DRAM)를 포함할 수 있다.
일부 실시예들에서, 메모리 디바이스들(130)은 메모리 디바이스들(130)의 하나 이상의 메모리 셀 상에서 동작들을 실행하기 위해 메모리 서브시스템 제어기(115)와 함께 동작하는 로컬 매체 제어기들(135)을 포함한다. 외부 제어기(예를 들어, 메모리 서브시스템 제어기(115))는 메모리 디바이스(130)를 외부에서 관리할 수 있다(예를 들어, 메모리 디바이스(130) 상의 매체 관리 동작들을 수행할 수 있다). 일부 실시예들에서, 메모리 디바이스(130)는 관리 메모리 디바이스이며, 이는 동일한 메모리 디바이스 패키지 내의 매체 관리를 위해 로컬 제어기(예를 들어, 로컬 제어기(135))와 조합된 원시 메모리 디바이스이다. 관리 메모리 디바이스의 예는 관리 NAND(MNAND) 디바이스이다.
메모리 서브시스템(110)은 메모리 영역 관리기(113)를 포함한다. 일 구현에서, 메모리 영역 관리기(113)는 메모리 디바이스(130) 및 메모리 디바이스(140)의 상이한 영역들/부분들에 걸친 데이터의 기록 및 저장을 관리할 수 있다. 상술한 바와 같이, 메모리 디바이스(130)는 비휘발성 메모리 디바이스(예를 들어, NAND)를 포함할 수 있고, 메모리 디바이스(140)는 휘발성 메모리 디바이스(예를 들어, DRAM)를 포함할 수 있다. 일 실시예에서, 메모리 디바이스(130)는 구역 명칭공간으로 구성되고, 메모리 디바이스(140)의 제1 부분이 메모리 디바이스(130) 상의 구역 명칭공간에 대응하는 구역 명칭공간 메타데이터를 저장하는데 사용된다. 구역 명칭공간 메타데이터는 메모리 디바이스(140)의 전체 용량에 비해 비교적 작으므로, 메모리 영역 관리기(113)는 나머지 부분(예를 들어, 구역 명칭공간 메타데이터를 저장하지 않는 부분)을 비구역화 어드레싱가능 메모리 영역으로서 호스트 시스템(120)에 노출시킬 수 있다. 일 실시예에서, 메모리 영역 관리기(113)는 PMR 피처를 이용하여, 비구역화 어드레싱가능 메모리 영역(본원에서 "PMR 자유 공간"이라고도 함)이 호스트 시스템(120)에 별개의 PCIe 메모리 디바이스로서 나타나게 한다. 이에 따라, 메모리 영역 관리기(113)는 호스트 데이터 객체들을 메모리 디바이스(130) 상의 구역 명칭공간에 저장하고, 대응하는 호스트 메타데이터 객체들을 메모리 디바이스(140) 상의 PMR 자유 공간에 저장할 수 있다. 메모리 디바이스(140) 상의 호스트 메타데이터의 양이 주어진 임계치에 도달하면, 메모리 영역 관리기(113)는 호스트 메타데이터를 메모리 디바이스(130) 상의 구역 명칭공간으로 전달할 수 있다. 메모리 영역 관리기(113)의 동작들에 관한 추가 세부사항들이 아래에서 설명된다.
도 2는 본 개시의 일부 실시예들에 따른 구역 명칭공간 메모리를 갖는 메모리 서브시스템(110)에 대한 향상된 파일시스템 지원을 수행하는 메모리 영역 관리기(113)의 동작을 도시한 블록도이다. 일 실시예에서, 메모리 영역 관리기(113)는 하나 이상의 전기 연결부(예를 들어, 하나 이상의 버스)를 통해 메모리 디바이스(130) 및 메모리 디바이스(140)와 동작가능하게 결합된다. 비휘발성 메모리 디바이스(130)는 구역 명칭공간(232)으로 구성될 수 있다. 구역 명칭공간(232)에서, 메모리 디바이스(130)의 어드레스 공간은 특히 메모리 디바이스(130)의 용량이 클 때, 데이터의 보다 더 효율적인 관리를 가능하게 하는 구역들로 분할된다. 구역 명칭공간(232)은 대응하는 기록 크기 입상도를 사용하여, 메모리 영역 관리기(113)를 통해, 호스트 시스템(120)으로부터 기록들을 수용하도록 최적화될 수 있다. 예를 들어, 구역 명칭공간(232)은 대략 100 KB(예를 들어, 64 KB, 128 KB 및 196 KB)의 범위 내의 최적의 기록 크기를 가질 수 있다. 이러한 기록 크기 입상도는 호스트 시스템의 파일시스템에 의해 사용되고, 휘발성 메모리 디바이스(140)에 기록하는 데 사용되는 기록 크기 입상도와 상이할 수 있으며, 이는 예를 들어, 대략 4KB일 수 있다. 또한, 구역 명칭공간(232)에서, 기록들은 각 존의 시작으로부터 시작하여 순차적으로 수행된다. 많은 파일시스템들은 보통 구역 명칭공간(232)에 대해 최적인 것보다 더 작은 입상도로 제자리 기록 접근법(즉, 랜덤 기록)을 이용한다. 그러나, 구역 명칭공간(232)에서, 구역 내의 데이터는 임의로 오버라이트될 수 없다. 대신에, 메모리 영역 관리기(113)는 구역 기록 포인터를 리셋하여, 구역에서의 데이터를 삭제할 수 있고, 구역의 시작으로부터 데이터의 기록을 재개할 수 있다.
종래의 파일시스템과 비교하여, 구역 명칭공간(232)은 상당히 더 적은 양의 구역 명칭공간 메타데이터(242)(예를 들어, 어드레스 매핑 테이블들)를 사용하여 구현될 수 있다. 구역 명칭공간(232)은 보다 더 큰 기록 크기 입상도를 사용하고, 순차적 기록들을 시행하므로, 요구되는 구역 명칭공간 메타데이터(242)의 양은 비슷한 크기의 비구역화 메모리 서브시스템의 양보다 적다. 이에 따라, 구역 명칭공간(232)에 대해 구역 명칭공간 메타데이터(242)를 유지하는 데 메모리 디바이스(140) 상의 더 적은 용량이 필요하다. 예를 들어, 구역 명칭공간(232)이 16 TB의 용량을 갖는 경우, 구역 명칭공간 메타데이터(242)는 대략 50 MB일 수 있다. 메모리 디바이스(140)는 크기가 대략 1 GB 또는 그 이상일 수 있으므로, 메모리 디바이스(140) 상에 상당한 미사용 용량이 있을 수 있다.
이에 따라, 메모리 영역 관리기(113)는 구역 명칭공간 메타데이터(242)를 저장하고 있는 메모리 디바이스(140)의 부분, 및 구역 명칭공간 메타데이터(242)를 저장하고 있지 않은 나머지 부분을 식별할 수 있다. 예를 들어, 메모리 영역 관리기(113)는 어느 것이 데이터에 매핑되고 어느 것이 매핑되지 않는지를 알기 위해 메모리 디바이스(140)의 개별 구획들(예를 들어, 블록들, 페이지들)을 검사할 수 있다. 메모리 영역 관리기(113)는 메모리 디바이스(140)의 나머지 부분을 구획화할 수 있고, 예를 들어, PMR 피처를 사용하여, 그 나머지 부분을 비구역화 어드레싱가능 메모리 영역으로서 호스트 시스템(120)에 노출시킬 수 있다. PMR은 휘발성 메모리(예를 들어, DRAM)가 커패시터(250), 배터리, 또는 다른 전원에 의해 영구 메모리로서 제시될 수 있게 한다. 호스트 시스템(120) 상의 파일시스템은 결과적인 PMR 자유 공간(244)(즉, 비구역화 어드레싱가능 메모리 영역)을 별개의 PCIe 메모리 디바이스로서 볼 수 있다. 이에 따라, 메모리 영역 관리기(113)는 비휘발성 메모리(130)에 기록된 호스트 데이터(234-236)에 대응하는 호스트 메타데이터를 수신할 수 있고, 그 호스트 메타데이터를 호스트 메타데이터 객체들(246-248)로서 PMR 자유 공간(244)에 기록할 수 있다. PMR 자유 공간(244)이 구역화되지 않으므로, 이는 구역 명칭공간(232)과 상이한 기록 크기 입상도를 가질 수 있고, 동일한 순차적인 기록 요건들에 종속되지 않는다. 예를 들어, 메모리 영역 관리기(113)는 호스트 메타데이터 객체들(246-248)을 4KB 청크들로서 PMR 자유 공간(244)에 기록할 수 있다.
정전 발생 시, 메모리 서브시스템(110)은 커패시터(250)로부터의 백업 전력을 사용하여, 호스트 메타데이터(246-248)를 PMR 자유 공간(244)으로부터 비휘발성 메모리(130)로 전달할 수 있다. 전력이 복원될 때, 메모리 서브시스템(110)은 호스트 메타데이터(246-248)를 비휘발성 메모리(130)로부터 검색함으로써 이를 PMR 자유 공간(244)으로 복원할 수 있다. 파일시스템은 장착될 것이고, 충돌 복구의 일부로서, PMR 서명을 체크하고, 전체 파일시스템을 복원할 수 있도록 이전에 저장되었던 모든 메타데이터 및 저널들을 리트리빙할 것이다. 그 결과, 메모리 서브시스템이 재부팅되면, 전력 손실 시에 수행된 데이터의 임의의 처리가 동일한 지점으로부터 재개될 수 있다.
일 실시예에서, 호스트 메타데이터(246-248)는 메모리 디바이스(140) 상의 PMR 자유 공간(244)에 단지 임시로 저장된다. 메모리 영역 관리기(113)는 PMR 자유 공간(244)에서의 호스트 메타데이터의 양을 모니터링하고, 그 양을 임계치와 비교할 수 있다. 일 실시예에서, 임계치는 메모리 디바이스(130) 상의 구역 명칭공간(232)의 기록 입상도와 동일하다. 이에 따라, PMR 자유 공간(244)에서의 메타데이터(246-248)(예를 들어, 4 KB 청크들)의 양이 구역 명칭공간(232)(예를 들어, 128 KB)의 기록 입상도와 동일하면, 메모리 영역 관리기(113)는 호스트 메타데이터(246-248)를 이것이 호스트 메타데이터(238)로서 저장될 수 있는 구역 명칭공간(232)에 이송, 복사, 기록, 또는 그 외 이동시킬 수 있다.
도 3은 본 개시의 일부 실시예들에 따른 구역 명칭공간을 구현하는 메모리 서브시스템에 대한 메모리 영역 관리의 예시적인 방법의 흐름도이다. 방법(300)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(300)은 도 1 및 도 2에 도시된 바와 같은, 메모리 영역 관리기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시예들에서 하나 이상의 프로세스가 생략될 수도 있다. 이에 따라, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들도 가능하다.
동작(310)에서, 처리 로직은 제1 메모리 디바이스(예를 들어, 휘발성 메모리 디바이스(140)) 및 제2 메모리 디바이스(예를 들어, 비휘발성 메모리 디바이스(130))를 제공한다. 일 실시예에서, 비휘발성 메모리 디바이스(130)는 구역 명칭공간(232)으로 구성된다. 상술한 바와 같이, 구역 명칭공간(232)은 대응하는 기록 크기 입상도(예를 들어, 128KB)를 사용하여, 메모리 영역 관리기(113)를 통해, 호스트 시스템(120)으로부터 기록들을 수용하도록 각각 최적화된 다수의 별개의 구역들을 포함할 수 있다. 구역 명칭공간(232)에 대한 이러한 기록들은 각 구역의 시작으로부터 시작하여 순차적으로 수행된다.
동작(320)에서, 처리 로직은 비휘발성 메모리 디바이스(130) 상의 구역 명칭공간(232)에 대응하는 구역 명칭공간 메타데이터(242)를 저장하는 휘발성 메모리 디바이스(140)의 제1 부분을 식별한다.구역 명칭공간(232)는 더 큰 기록 크기 입상도를 사용하고 순차적인 기록을 시행하기 때문에, 요구되는 구역 이름스페이스 메타데이터(242)의 양은 비슷한 크기의 비구역 메모리 서브시스템의 양보다 적 구역 명칭공간(232)은 보다 더 큰 기록 크기 입상도를 사용하고, 순차적 기록들을 시행하므로, 요구되는 구역 명칭공간 메타데이터(242)의 양은 비슷한 크기의 비구역화 메모리 서브시스템의 양보다 적다. 예를 들어, 구역 명칭공간(232)이 16 TB의 용량을 갖는 경우, 구역 명칭공간 메타데이터(242)는 대략 50 MB일 수 있다. 일 실시예에서, 메모리 영역 관리기(113)는 어느 것이 데이터(예를 들어, 구역 명칭공간 메타데이터(242))에 매핑되고 어느 것이 매핑되지 않는지를 알기 위해 메모리 디바이스(140)의 개별 구획들(예를 들어, 블록들, 페이지들)을 검사할 수 있다.
동작(330)에서, 처리 로직은 구역 명칭공간 메타데이터(242)를 저장하고 있지 않은 휘발성 메모리 디바이스(140)의 제2 부분을 식별한다. 메모리 디바이스(140)는 크기가 대략 1 GB 또는 그 이상일 수 있으므로, 메모리 디바이스(140) 상에 상당한 미사용 용량이 있을 수 있다. 이에 따라, 메모리 영역 관리기(113)는 구역 명칭공간 메타데이터(242)를 저장하고 있지 않은 메모리 디바이스(140)의 나머지 부분을 식별할 수 있다. 메모리 영역 관리기(113)는 위에서 사용된 동일한 검사 프로세스를 통해 메모리 디바이스(140)의 임의의 매핑되지 않은 구획들을 식별할 수 있다.
동작(340)에서, 처리 로직은 비휘발성 메모리 디바이스(140)의 제2 부분을 비구역화 어드레싱가능 메모리 영역으로서 호스트 시스템(120)에 노출시킨다. 일 실시예에서, 메모리 영역 관리기(113)는 PMR 피처를 사용하여 비구역화 어드레싱가능 메모리 영역을 노출시키며, 이는 PMR 자유 공간(244)으로서 지칭될 수 있다. PMR은 메모리 디바이스(140)의 일부분(즉, 휘발성 메모리)이 커패시터(250), 배터리, 또는 다른 전원에 의해 영구 메모리로서 제시될 수 있게 한다. 호스트 시스템(120) 상의 파일시스템은 결과적인 PMR 자유 공간(244)(즉, 비구역화 어드레싱가능 메모리 영역)을 별개의 PCIe 메모리 디바이스로서 볼 수 있다.
동작(350)에서, 처리 로직은 PMR 자유 공간(244)에 호스트 시스템(120)으로부터 수신된 호스트 메타데이터(246-248)를 임시로 저장한다. 예를 들어, 메모리 영역 관리기(113)는 비휘발성 메모리(130)에 기록된 호스트 데이터(234-236)에 대응하는 호스트 메타데이터를 수신할 수 있고, 그 호스트 메타데이터를 호스트 메타데이터 객체들(246-248)로서 PMR 자유 공간(244)에 기록할 수 있다. PMR 자유 공간(244)이 구역화되지 않으므로, 이는 구역 명칭공간(232)과 상이한 기록 크기 입상도를 가질 수 있고, 동일한 순차적인 기록 요건들에 종속되지 않는다. 예를 들어, 메모리 영역 관리기(113)는 호스트 메타데이터 객체들(246-248)을 4KB 청크들로서 PMR 자유 공간(244)에 기록할 수 있다. 도 4에 대해 보다더 상세히 설명될 바와 같이, 메모리 영역 관리기(113)는 PMR 자유 공간(244)에서의 호스트 메타데이터의 양을 모니터링하고, 그 양을 임계치와 비교할 수 있다. 일 실시예에서, 임계치는 메모리 디바이스(130) 상의 구역 명칭공간(232)의 기록 입상도와 동일하다. 이에 따라, PMR 자유 공간(244)에서의 메타데이터(246-248)(예를 들어, 4 KB 청크들)의 양이 구역 명칭공간(232)(예를 들어, 128 KB)의 기록 입상도와 동일하면, 메모리 영역 관리기(113)는 호스트 메타데이터(246-248)를 이것이 호스트 메타데이터(238)로서 저장될 수 있는 구역 명칭공간(232)에 이송, 복사, 기록, 또는 그 외 이동시킬 수 있다.
도 4는 본 개시의 일부 실시예들에 따른 비휘발성 메모리 디바이스에 대한 구역 명칭공간을 구현하는 메모리 서브시스템에서의 호스트 액세스 요청들을 관리하는 예시적인 방법의 흐름도이다. 방법(400)은 하드웨어(예를 들어, 처리 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(400)은 도 1 및 도 2에 도시된 바와 같은, 메모리 영역 관리기(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시예들에서 하나 이상의 프로세스가 생략될 수도 있다. 이에 따라, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들도 가능하다.
동작(410)에서, 처리 로직은 호스트 데이터 객체들(234-236) 및 호스트 메타데이터 객체들(246-248)을 포함하는 기록 동작들을 호스트 시스템(120)으로부터 수신한다. 일 실시예에서, 메모리 영역 관리기(113)는 메모리 서브시스템(110)에 대응하는 데이터를 저장하기 위한 명령어들과 함께 호스트 시스템(120)으로부터 기록 동작을 수신한다. 일 실시예에서, 호스트 데이터 객체들(234-236)은 대응하는 기록 크기 입상도(예를 들어, 128 KB)를 가질 수 있고, 호스트 메타데이터 객체들(246-248)은 상이한 기록 크기 입상도(예를 들어, 4 KB)를 가질 수 있다. 호스트 메타데이터 객체들(246-248)은 각각 호스트 데이터 객체들 중 하나(234-236)에 대응할 수있다. 예를 들어, 호스트 메타데이터 객체들(246-248)은 호스트 데이터 객체들(234-236) 중 하나 이상의 파일 이름, 파일 길이, 파일 생성자, 파일 생성 시간/날짜 등과 같은 메타데이터 정보를 포함할 수 있다.
동작(420)에서, 처리 로직은 호스트 메타데이터 객체들(246-248)을 제1 기록 크기 입상도를 사용하여 개별적으로 휘발성 메모리 디바이스(140) 상의 PMR 자유 공간(244)에 기록한다. 일 실시예에서, 메모리 영역 관리기(113)는 호스트 메타데이터 객체들(246-248)을 4KB 청크들로 PMR 자유 공간(244)에 기록할 수 있다. PMR 자유 공간(244)이 비구역화 어드레싱가능 메모리 영역이므로, 호스트 메타데이터 객체들(246-248)은 보다 더 큰 기록 크기 입상도를 사용하여 또는 구역 명칭공간(232)에 의해 요구되는 바와 같이 순차적 방식으로 기록될 필요가 없다. 일 실시예에서, PMR 자유 공간(244)은 커패시터(250), 배터리, 또는 다른 전원에 의해 영구 메모리로서 존재한다.
동작(430)에서, 처리 로직은 호스트 데이터 객체들(234-236)을 제2 기록 크기 입상도를 사용하여 개별적으로 비휘발성 메모리 디바이스(130) 상의 구역 명칭공간(232)에 기록한다. 일 실시예에서, 제2 기록 크기 입상도(예를 들어, 128 KB)는 구역 명칭공간(232)에 대해 최적화되고, 메모리 영역 관리기(113)는 호스트 데이터 객체들(234-236)을 순차적으로 구역 명칭공간(232)에 기록한다.
동작(440)에서, 처리 로직은 휘발성 메모리 디바이스(140) 상의 PMR 자유 공간(244)에서의 모든 호스트 메타데이터 객체들(246-248)의 전체 크기를 결정한다. 각 개별 호스트 메타데이터 객체의 크기가 예를 들어, 4 KB일 수 있지만, 일 실시예에서, 메모리 영역 관리기(113)는 모든 호스트 메타데이터 객체들(246-248)의 전체 크기를 결정할 수 있다. 예를 들어, 이는 호스트 메타데이터 객체들의 수에 각 호스트 메타데이터 객체의 크기를 곱한 것, 비어 있는 부분에 비해 호스트 메타데이터 객체들로 가득찬 PMR 자유 공간(244)의 백분율 또는 부분, 또는 전체 크기를 결정하기 위한 일부 다른 프로세스를 결정하는 것을 포함할 수 있다.
동작(450)에서, 처리 로직은 모든 호스트 메타데이터 객체들(246-248)의 전체 크기가 임계 기준을 만족시키는지 여부를 결정한다. 일 실시예에서, 메모리 영역 관리기(113)는 PMR 자유 공간(244)에서의 호스트 메타데이터의 전체 크기를 모니터링하고, 그 양을 임계치와 비교할 수 있다. 일 실시예에서, 임계치는 메모리 디바이스(130) 상의 구역 명칭공간(232)의 기록 입상도와 동일하다. 일 실시예에서, 메모리 영역 관리기(113)는 전체 크기가 임계치(예를 들어, 128KB) 이상인 경우, 전체 크기가 임계 기준을 만족시킨다고 결정한다. 반대로, 메모리 영역 관리기(113)는 전체 크기가 임계치 미만인 경우, 전체 크기가 임계치 기준을 만족시키지 않는다고 결정한다.
전체 크기가 임계 기준을 만족시키지 않는 경우, 처리 로직은 동작(420)으로 복귀한다. 그러나, 전체 크기가 임계 기준을 만족시키는 경우, 동작(460)에서, 처리 로직은 호스트 메타데이터 객체들(246-248)을 제2 기록 크기 입상도를 사용하여 함께 휘발성 메모리 디바이스(140) 상의 PMR 자유 공간(244)으로부터 비휘발성 메모리 디바이스(130) 상의 구역 명칭공간(232)으로 이송한다. 일 실시예에서, 메모리 영역 관리기(113)는 호스트 메타데이터 객체들(246-248)을 호스트 메타데이터(238)로서 저장될 수 있는 구역 명칭공간(232)으로 이송, 복사, 기록하거나 또는 그 외 이동시킬 수 있다. 메모리 영역 관리기(113)는 개별 호스트 메타데이터 객체들(246-248)(예를 들어, 각각 4KB)을 함께 단일 호스트 메타데이터 객체(238)(예를 들어, 128KB 크기)로 조합할 수 있다. 일부 호스트 메타데이터 객체들이 PMR 자유 공간(244)에 남아 있는 경우, 메모리 영역 관리기(113)는 전체 크기가 다시 임계 기준을 만족시킬 때까지 이들 메타데이터 객체들을 PMR 자유 공간(244)에 유지시킬 수 있다.
도 5는 기계로 하여금 본원에서 논의된 방법론들 중 어느 하나 이상을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템(500)의 예시적인 기계를 도시한다. 일부 실시예들에서, 컴퓨터 시스템(500)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나, 이에 결합되거나, 또는 이를 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나 제어기의 동작들을 수행하는 데(예를 들어, 도 1의 메모리 영역 관리기(113)에 대응하는 동작들을 수행하기 위해 운영 체제를 실행하는 데) 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷으로 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서의 서버 또는 클라이언트 기계로서, 피어-투-피어(또는 분산) 네트워크 환경에서의 피어 기계로서, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로서 동작할 수 있다.
기계는 개인용 컴퓨터(personal computer; PC), 태블릿 PC, 셋탑 박스(set-top box; STB), 개인용 정보 단말기(Personal Digital Assistant; PDA), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 취해질 동작들을 특정하는 (순차적인 또는 그 외의) 명령어 세트를 실행할 수 있는 임의의 기계일 수 있다. 나아가, 단일 기계가 도시되었지만, "기계"라는 용어는 또한 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위한 명령어 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 임의의 기계군을 포함하는 것으로 취해져야 한다.
예시적인 컴퓨터 시스템(500)은 버스(530)를 통해 서로 통신하는 처리 디바이스(502), 메인 메모리(504)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM) 이를테면 동기식 DRAM(SDRAM) 또는 램버스 DRAM(Rambus DRAM; RDRAM) 등), 정적 메모리(506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(static random access memory; SRAM) 등), 및 데이터 저장 시스템(518)을 포함한다.
처리 디바이스(502)는 마이크로 처리기, 또는 중앙 처리 유닛 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 보다 더 구체적으로, 처리 디바이스는 복합 명령어 세트 컴퓨팅(complex instruction set computing, CISC) 마이크로 처리기, 축소 명령어 세트 컴퓨팅(reduced instruction set computing, RISC) 마이크로 처리기, 훨씬 긴 명령어(very long instruction word; VLIW) 마이크로 처리기, 또는 다른 명령어 세트들을 구현하는 처리기, 또는 명령어 세트들의 조합을 구현하는 처리기들일 수 있다. 처리 디바이스(502)는 또한, 특수 목적 집적 회로(ASIC), 현장 프로그래밍 가능한 게이트 어레이(FPGA), 디지털 신호 처리기(digital signal processor; DSP), 네트워크 처리기 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(502)는 본원에서 논의된 동작들 및 단계들을 수행하기 위한 명령어들(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. 시스템으로서,
    제1 메모리 디바이스 및 제2 메모리 디바이스를 포함하는 복수의 메모리 디바이스들;
    상기 복수의 메모리 디바이스들과 작동가능하게 결합되어, 동작들을 수행하는 처리 디바이스를 포함하며, 상기 동작들은;
    상기 제2 메모리 디바이스를 구역 명칭공간으로 구성하는 동작;
    상기 제1 메모리 디바이스의 제1 부분 및 제2 부분을 식별하는 동작 - 상기 제1 부분은 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간에 대응하는 구역 명칭공간 메타데이터를 저장함 -; 및
    상기 제1 메모리 디바이스의 상기 제2 부분을 비구역화 어드레싱가능 메모리 영역으로서 호스트 시스템에 노출시키는 동작을 포함하는 것인, 시스템.
  2. 제1항에 있어서, 상기 메모리 디바이스의 상기 제2 부분은 영구 메모리 영역(persistent memory region, PMR) 피처를 사용하여 상기 호스트 컴퓨팅 시스템에 노출되고, 상기 메모리 디바이스의 상기 제2 부분은 상기 호스트 시스템으로부터의 호스트 메타데이터를 수신하도록 구성된 PMR 자유 공간을 포함하는 것인, 시스템.
  3. 제1항에 있어서, 상기 제1 메모리 디바이스는 백업 전원을 갖는 휘발성 메모리를 포함하고, 상기 제2 메모리 디바이스는 비휘발성 메모리를 포함하는 것인, 시스템.
  4. 제1항에 있어서, 상기 비구역화 어드레싱가능 메모리 영역은 상기 호스트 시스템으로부터 제자리 기록(write-in-place) 동작들을 수용하고, 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간은 상기 호스트 시스템으로부터의 순차적인 기록 동작들을 수용하는 것인, 시스템.
  5. 제1항에 있어서, 상기 비구역화 어드레싱가능 메모리 영역은 제1 기록 크기 입상도(write size granularity)를 사용하여 상기 호스트 시스템으로부터의 기록들을 수용하고, 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간은 제2 기록 크기 입상도를 사용하여 상기 호스트 시스템으로부터의 기록들을 수용하는 것인, 시스템.
  6. 제5항에 있어서, 상기 처리 디바이스는 또한:
    복수의 호스트 데이터 객체들 및 복수의 호스트 메타데이터 객체들을 포함하는 복수의 기록 동작들을 수신하는 동작;
    상기 복수의 호스트 데이터 객체들 각각을 상기 제2 기록 크기 입상도를 사용하여 개별적으로 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간에 기록하는 동작; 및
    상기 복수의 호스트 메타데이터 객체들 각각을 상기 제1 기록 크기 입상도를 사용하여 개별적으로 상기 제1 메모리 디바이스 상의 상기 비구역화 어드레싱가능 메모리 영역에 기록하는 동작을 수행하는 것인, 시스템.
  7. 제6항에 있어서, 상기 처리 디바이스는 또한:
    상기 복수의 호스트 메타데이터 객체들 각각을 상기 비구역화 어드레싱가능 메모리 영역에서의 상기 복수의 호스트 메타데이터 객체들의 전체 크기가 상기 제2 기록 크기 입상도와 연관된 임계 기준을 만족시키는지를 결정하는 동작; 및
    상기 제2 기록 크기 입상도를 사용하여 함께 상기 복수의 호스트 메타데이터 객체들을 상기 제1 메모리 디바이스 상의 상기 비구역화 어드레싱가능 메모리 영역으로부터 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간으로 이동시키는 동작을 수행하는 것인, 시스템.
  8. 방법으로서,
    호스트 시스템으로부터, 복수의 호스트 데이터 객체들 및 복수의 호스트 메타데이터 객체들을 포함하는 복수의 기록 동작들을 수신하는 단계;
    상기 복수의 호스트 메타데이터 객체들 각각을 제1 기록 크기 입상도를 사용하여 개별적으로 제1 메모리 디바이스 상의 비구역화 어드레싱가능 메모리 영역에 기록하는 단계;
    상기 복수의 호스트 데이터 객체들 각각을 제2 기록 크기 입상도를 사용하여 개별적으로 제2 메모리 디바이스 상의 구역 명칭공간에 기록하는 단계;
    상기 비구역화 어드레싱가능 메모리 영역에서의 상기 복수의 호스트 메타데이터 객체들의 전체 크기가 임계 기준을 만족시키는지를 결정하는 단계; 및
    상기 제2 기록 크기 입상도를 사용하여 함께 상기 복수의 호스트 메타데이터 객체들을 상기 제1 메모리 디바이스 상의 상기 비구역화 어드레싱가능 메모리 영역으로부터 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간으로 이송하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 제1 메모리 디바이스는 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간에 대응하는 구역 명칭공간 메타데이터를 저장하는 제1 부분을 포함하고, 상기 제1 메모리 디바이스는 상기 구역 명칭공간 메타데이터를 저장하지 않는 제2 부분을 포함하며, 상기 제1 메모리 디바이스의 상기 제2 부분은 상기 비구역화 어드레싱가능 메모리 영역으로서 상기 호스트 시스템에 노출되는 것인, 방법.
  10. 제9항에 있어서, 상기 메모리 디바이스의 상기 제2 부분은 영구 메모리 영역(PMR) 피처를 사용하여 상기 호스트 컴퓨팅 시스템에 노출되는 것인, 방법.
  11. 제8항에 있어서, 상기 제1 메모리 디바이스는 백업 전원을 갖는 휘발성 메모리를 포함하고, 상기 제2 메모리 디바이스는 비휘발성 메모리를 포함하는 것인, 방법.
  12. 제8항에 있어서, 상기 비구역화 어드레싱가능 메모리 영역은 상기 호스트 시스템으로부터 제자리 기록 동작들을 수용하고, 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간은 상기 호스트 시스템으로부터의 순차적인 기록 동작들을 수용하는 것인, 방법.
  13. 제8항에 있어서, 상기 비구역화 어드레싱가능 메모리 영역에서의 상기 복수의 호스트 메타데이터 객체들의 전체 크기는 상기 전체 크기가 상기 제2 기록 크기 입상도 이상일 때 상기 임계 기준을 만족시키는 것인, 방법.
  14. 명령어들을 포함하는 비일시적인 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은 처리 디바이스에 의해 실행될 때, 상기 처리 디바이스로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    제1 메모리 디바이스 및 제2 메모리 디바이스를 식별하는 동작;
    상기 제2 메모리 디바이스를 구역 명칭공간으로 구성하는 동작;
    상기 제1 메모리 디바이스의 제1 부분 및 제2 부분을 식별하는 동작 - 상기 제1 부분은 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간에 대응하는 구역 명칭공간 메타데이터를 저장함 -; 및
    상기 제1 메모리 디바이스의 상기 제2 부분을 비구역화 어드레싱가능 메모리 영역으로서 호스트 시스템에 노출시키는 동작을 포함하는 것인, 비일시적인 컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서, 상기 메모리 디바이스의 상기 제2 부분은 영구 메모리 영역(PMR) 피처를 사용하여 상기 호스트 컴퓨팅 시스템에 노출되고, 상기 메모리 디바이스의 상기 제2 부분은 상기 호스트 시스템으로부터의 호스트 메타데이터를 수신하도록 구성된 PMR 자유 공간을 포함하는 것인, 비일시적인 컴퓨터 판독가능 저장 매체.
  16. 제14항에 있어서, 상기 제1 메모리 디바이스는 백업 전원을 갖는 휘발성 메모리를 포함하고, 상기 제2 메모리 디바이스는 비휘발성 메모리를 포함하는 것인, 비일시적인 컴퓨터 판독가능 저장 매체.
  17. 제14항에 있어서, 상기 비구역화 어드레싱가능 메모리 영역은 상기 호스트 시스템으로부터 제자리 기록 동작들을 수용하고, 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간은 상기 호스트 시스템으로부터의 순차적인 기록 동작들을 수용하는 것인, 비일시적인 컴퓨터 판독가능 저장 매체.
  18. 제14항에 있어서, 상기 비구역화 어드레싱가능 메모리 영역은 제1 기록 크기 입상도를 사용하여 상기 호스트 시스템으로부터의 기록들을 수용하고, 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간은 제2 기록 크기 입상도를 사용하여 상기 호스트 시스템으로부터의 기록들을 수용하는 것인, 비일시적인 컴퓨터 판독가능 저장 매체.
  19. 제18항에 있어서, 상기 처리 디바이스로 하여금 추가 동작들을 수행하게 하며, 상기 추가 동작들은:
    복수의 호스트 데이터 객체들 및 복수의 호스트 메타데이터 객체들을 포함하는 복수의 기록 동작들을 수신하는 동작;
    상기 복수의 호스트 데이터 객체들 각각을 상기 제2 기록 크기 입상도를 사용하여 개별적으로 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간에 기록하는 동작; 및
    상기 복수의 호스트 메타데이터 객체들 각각을 상기 제1 기록 크기 입상도를 사용하여 개별적으로 상기 제1 메모리 디바이스 상의 상기 비구역화 어드레싱가능 메모리 영역에 기록하는 동작을 수행하는 것인, 비일시적인 컴퓨터 판독가능 저장 매체.
  20. 제19항에 있어서, 상기 처리 디바이스로 하여금 추가 동작들을 수행하게 하며, 상기 추가 동작들은:
    상기 복수의 호스트 메타데이터 객체들 각각을 상기 비구역화 어드레싱가능 메모리 영역에서의 상기 복수의 호스트 메타데이터 객체들의 전체 크기가 상기 제2 기록 크기 입상도와 연관된 임계 기준을 만족시키는지를 결정하는 동작; 및
    상기 제2 기록 크기 입상도를 사용하여 함께 상기 복수의 호스트 메타데이터 객체들을 상기 제1 메모리 디바이스 상의 상기 비구역화 어드레싱가능 메모리 영역으로부터 상기 제2 메모리 디바이스 상의 상기 구역 명칭공간으로 이동시키는 동작을 포함하는 것인, 비일시적인 컴퓨터 판독가능 저장 매체.
KR1020227017655A 2019-11-26 2020-11-20 구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원 KR20220085826A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/695,481 US11593258B2 (en) 2019-11-26 2019-11-26 Enhanced filesystem support for zone namespace memory
US16/695,481 2019-11-26
PCT/US2020/061540 WO2021108259A1 (en) 2019-11-26 2020-11-20 Enhanced filesystem support for zone namespace memory

Publications (1)

Publication Number Publication Date
KR20220085826A true KR20220085826A (ko) 2022-06-22

Family

ID=75973865

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227017655A KR20220085826A (ko) 2019-11-26 2020-11-20 구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원

Country Status (5)

Country Link
US (2) US11593258B2 (ko)
KR (1) KR20220085826A (ko)
CN (1) CN114730300B (ko)
DE (1) DE112020005787T5 (ko)
WO (1) WO2021108259A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210125774A (ko) * 2020-04-09 2021-10-19 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11656795B2 (en) * 2021-01-21 2023-05-23 EMC IP Holding Company LLC Indicating optimized and non-optimized paths to hosts using NVMe-oF in a metro cluster storage system
US11907587B2 (en) * 2021-06-09 2024-02-20 Western Digital Technologies, Inc. Managing persistent memory regions across multiple protocols
US11853611B2 (en) 2022-03-14 2023-12-26 Western Digital Technologies, Inc. Network interface card implementing composite zoned namespace architecture
US11907582B2 (en) 2022-03-14 2024-02-20 Western Digital Technologies, Inc. Cloud storage device implementing composite zoned namespace architecture
US11874771B2 (en) * 2022-05-16 2024-01-16 Western Digital Technologies, Inc. Multiple indirection sizes for logical-to-physical translation tables

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4079506B2 (ja) 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
EP2715510B1 (en) 2011-05-24 2018-05-02 Marvell World Trade Ltd. Method for storage devices to achieve low write amplification with low over provision
KR101835604B1 (ko) 2011-06-03 2018-03-07 삼성전자 주식회사 메모리를 위한 스케줄러
US9690694B2 (en) 2011-09-27 2017-06-27 Sandisk Technologies, Llc Apparatus, system, and method for an address translation layer
JP5597666B2 (ja) * 2012-03-26 2014-10-01 株式会社東芝 半導体記憶装置、情報処理システムおよび制御方法
KR20160056380A (ko) * 2014-11-10 2016-05-20 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US20160291887A1 (en) 2015-03-30 2016-10-06 Kabushiki Kaisha Toshiba Solid-state drive with non-volatile random access memory
US10642532B2 (en) * 2017-02-28 2020-05-05 International Business Machines Corporation Storing data sequentially in zones in a dispersed storage network
US11821766B2 (en) 2018-10-02 2023-11-21 Brendan MUIR Systems for and methods of monitoring water consumption
US11294827B2 (en) * 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
US11209989B2 (en) * 2019-09-25 2021-12-28 Western Digital Technologies, Inc. Zoned namespaces in solid-state drives
US11262830B2 (en) * 2019-11-11 2022-03-01 Microsoft Technology Licensing, Llc Managing ephemeral storage on a computing node
US11409720B2 (en) * 2019-11-13 2022-08-09 Western Digital Technologies, Inc. Metadata reduction in a distributed storage system
US20200089407A1 (en) * 2019-11-22 2020-03-19 Intel Corporation Inter zone write for zoned namespaces

Also Published As

Publication number Publication date
CN114730300B (zh) 2024-05-10
CN114730300A (zh) 2022-07-08
US20230168997A1 (en) 2023-06-01
US11593258B2 (en) 2023-02-28
DE112020005787T5 (de) 2023-04-20
US20210157720A1 (en) 2021-05-27
US11983107B2 (en) 2024-05-14
WO2021108259A1 (en) 2021-06-03

Similar Documents

Publication Publication Date Title
JP2023524014A (ja) 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること
KR20220085826A (ko) 구역 명칭공간 메모리에 대한 향상된 파일 시스템 지원
CN114840138A (zh) 基于存储器装置的区域的文件系统存储分配
US20220398045A1 (en) Addressing zone namespace and non-zoned memory based on data characteristics
CN115309584A (zh) 键值存储故障后的分区存储器装置恢复
US11704057B2 (en) Memory sub-systems including memory devices of various latencies and capacities
KR20220114078A (ko) 캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행
US11100005B2 (en) Logical-to-physical (L2P) table sharping strategy
US20230350798A1 (en) Namespace management for memory sub-systems
US11704247B2 (en) Enhanced duplicate write data tracking for cache memory
US20230195350A1 (en) Resequencing data programmed to multiple level memory cells at a memory sub-system
US11940912B2 (en) Managing power loss recovery using a dirty section write policy for an address mapping table in a memory sub-system
US11714722B2 (en) Power loss recovery for memory devices
US11301380B2 (en) Sector-based tracking for a page cache
CN114637695A (zh) 用于两遍编程存储器装置的日志方案
WO2024045104A1 (en) Virtual indexing in memory device
US11392505B2 (en) Rebuilding logical-to-physical address mapping with limited memory
US11922011B2 (en) Virtual management unit scheme for two-pass programming in a memory sub-system
US20240176527A1 (en) Memory device region allocation using lifetime hints
US20240069774A1 (en) Deferred zone adjustment in zone memory system
CN115729454A (zh) 用于视频/图像记录的可配置存储粒度
CN113126899A (zh) 完全多平面操作启用