KR20180131475A - 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리 - Google Patents

비휘발성 메모리(nvm)에서 다중 네임스페이스 관리 Download PDF

Info

Publication number
KR20180131475A
KR20180131475A KR1020180062017A KR20180062017A KR20180131475A KR 20180131475 A KR20180131475 A KR 20180131475A KR 1020180062017 A KR1020180062017 A KR 1020180062017A KR 20180062017 A KR20180062017 A KR 20180062017A KR 20180131475 A KR20180131475 A KR 20180131475A
Authority
KR
South Korea
Prior art keywords
mua
namespace
nvm
entry
map
Prior art date
Application number
KR1020180062017A
Other languages
English (en)
Other versions
KR102042643B1 (ko
Inventor
마크 이쉬
스티븐 에스. 윌리엄스
제프리 먼실
Original Assignee
시게이트 테크놀로지 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시게이트 테크놀로지 엘엘씨 filed Critical 시게이트 테크놀로지 엘엘씨
Publication of KR20180131475A publication Critical patent/KR20180131475A/ko
Application granted granted Critical
Publication of KR102042643B1 publication Critical patent/KR102042643B1/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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)

Abstract

비휘발성 메모리 익스프레스(NVMe) 제어기 환경에서 네임스페이스를 관리하기 위한 장치 및 방법. 비휘발성 메모리(NVM)는 하나 이상의 네임스페이스들에 어드레스가능한 데이터 블록들로서 맵 유닛(MU)들을 저장하도록 구성된다. 순방향 맵(forward map)은 MU들 각각을 NVM의 물리적 위치들과 상관시키는 맵 유닛 어드레스(MUA) 엔트리들의 시퀀스를 갖는다. MUA 엔트리들은 네임스페이스들 각각에 대해 바로 인접한 연속적인 범위들로 그룹화된다. 기본 MUA 어레이는 각각의 네임스페이스에 대한 시작 MUA 엔트리의 순방향 맵 내에서의 어드레스를 식별한다. 마지막 MUA 엔트리의 바로 다음에 순방향 맵에 새로운 범위의 MUA 엔트리들을 부가함으로써, 그리고 새로운 네임스페이스에 대한 시작 MUA 엔트리의 순방향 맵 내에서의 어드레스를 식별하기 위해 기본 MUA 어레이에 새로운 엔트리를 추가함으로써, 새로운 네임스페이스가 추가될 수 있다.

Description

비휘발성 메모리(NVM)에서 다중 네임스페이스 관리{MANAGING MULTIPLE NAMESPACES IN A NON-VOLATILE MEMORY (NVM)}
본 발명의 다양한 실시예들은 일반적으로 데이터 저장 디바이스 내의 데이터 관리에 관한 것이다.
일부 실시예들에서, 비휘발성 메모리(NVM)는 하나 이상의 네임스페이스(namespace)들에 어드레스가능한 데이터 블록들로서 맵 유닛(MU)들을 저장하도록 구성된다. 순방향 맵(forward map)은 MU들 각각을 NVM의 물리적 위치들과 상관시키는 맵 유닛 어드레스(MUA) 엔트리들의 시퀀스를 갖는다. MUA 엔트리들은 네임스페이스들 각각에 대해 바로 인접한 연속적인 범위들로 그룹화된다. 기본 MUA 어레이는 각각의 네임스페이스에 대한 시작 MUA 엔트리의 순방향 맵 내에서의 어드레스를 식별한다. 마지막 MUA 엔트리의 바로 다음에 순방향 맵에 새로운 범위의 MUA 엔트리들을 부가함으로써, 그리고 새로운 네임스페이스에 대한 시작 MUA 엔트리의 순방향 맵 내에서의 어드레스를 식별하기 위해 기본 MUA 어레이에 새로운 엔트리를 추가함으로써, 새로운 네임스페이스가 추가될 수 있다.
본 개시의 다양한 실시예들을 특징으로 하는 이러한 및 다른 특징들 및 이익들은 다음의 상세한 설명 및 첨부된 도면들을 참조하여 이해될 수 있다.
도 1은 본 개시의 다양한 실시예들에 따른, 예시적인 데이터 저장 디바이스의 기능 블록 표현을 제공한다.
도 2는 일부 실시예들에 따른, 솔리드 스테이트 드라이브(SSD)로서 구성된 도 1의 데이터 저장 디바이스의 양태들을 도시한다.
도 3은 일부 실시예들에서 도 2의 SSD에 의해 데이터가 저장되는 예시적인 방식을 도시한다.
도 4는 일부 실시예들에서 SSD에 의해 사용된 멀티-레벨 맵 구조에 대한 예시적인 포맷을 도시한다.
도 5는 맵 구조의 제2 레벨 맵(SLM)에 대한 예시적인 포맷을 도시한다.
도 6은 맵 구조의 제1 레벨 맵(FLM)에 대한 예시적인 포맷을 도시한다.
도 7은 일부 실시예들에서 SSD의 네임스페이스를 관리하도록 구성된 NVMe 제어기 및 MML(media management layer) 제어기를 도시한다.
도 8은 네임스페이스 ID 및 네임스페이스 HBLA 데이터를 유지하도록 구성된 HBLA 필드에 대한 예시적인 포맷이다.
도 9는 도 8의 데이터를 인코딩하는 데 사용된 변환 테이블에 대한 예시적인 포맷이다.
도 10은 일부 실시예들에서 SSD의 순방향 맵을 액세스하는 데 사용되는 데이터 구조로서 맵 유닛 어드레스(MUA) 어레이를 도시한다.
도 11은 순방향 맵에의 새로운 네임스페이스의 추가를 도시한다.
도 12는 순방향 맵으로부터 네임스페이스의 삭제를 도시한다.
도 13은 새로운 네임스페이스 루틴(routine)을 생성하기 위한 흐름도이다.
도 14는 기존 네임스페이스 루틴을 삭제하기 위한 흐름도이다.
도 15는 본 개시의 다양한 실시예들에 따른 수행되는 단계들을 예시하는 데이터 프로세싱 루틴에 대한 흐름도이다.
본 개시는 일반적으로 데이터 저장 디바이스에 관한 것으로, 보다 상세하게는 데이터 저장 디바이스에서 네임스페이스를 관리하기 위한 방법 및 장치에 관한 것이다.
비휘발성 메모리 익스프레스(NVMe) 사양은 PCIe(Peripheral Component Interconnect Express) 직렬 버스 구성을 사용하는 데이터 저장 시스템에서 고속 액세스를 관리하기 위해 최근에 도입된 인터페이스 표준이다. NVMe는 특히 로컬 비휘발성 메모리(NVM)에 대한 직접 입/출력(I/O) 액세스를 제공함으로써 엔터프라이즈 및 클라이언트 솔리드 스테이트 드라이브(SSD) 환경에 최적화되어 있다. NVMe는 깊은 커맨드 큐, 단순화된 커맨드 디코딩 및 프로세싱, 및 견고한 에러 보고 및 처리를 지원함으로써 판독 및 기록 동작들의 레이턴시를 줄이는 데 도움이 된다.
NVMe 표준의 한 특징은 호스트가 별개의 네임스페이스로 저장 영역을 지정할 수 있는 능력이다. 일반적으로, 네임스페이스는 블록 액세스를 위해 포맷화된 선택된 수의 저장 블록을 갖는 NVM 내의 어드레스가능한 도메인으로 정의된다. 네임스페이스는 SSD의 일부, SSD의 전체, 또는 다수의 SSD들 또는 다른 데이터 저장 디바이스들에 걸쳐 있는 멀티 디바이스 메모리 공간을 구성할 수 있다. 네임스페이스 ID(NSID)는 연관된 네임스페이스(NS)에 대한 제어기 고유 식별자이다. 호스트는 블록 또는 블록들(예컨대, 논리 블록 어드레스, LBA)에 대한 네임스페이스, 제어기 ID 및 연관된 논리 어드레스를 지정함으로써 특정 NVM에 액세스할 수 있다.
데이터 저장 디바이스(또는 그러한 디바이스들의 그룹) 내의 병렬 데이터 전송 경로를 향상시키도록 동작 가능하지만, SSD 또는 다른 디바이스 내의 이용가능한 NVM을 다수의 네임스페이스들로 세분하는 것은 데이터를 위치파악(locate)하는 데 사용되는 다양한 맵 구조에 대한 업데이트를 제어기(들)이 프로세싱하는 데 다수의 어려움들이 존재한다. 이는 특히 기존 디바이스 구성에 새로운 네임스페이스가 추가되는 경우, 또는 기존 네임스페이스가 기존 디바이스 구성에서 삭제되는 경우이다.
따라서, 본 개시의 다양한 실시예들은 일반적으로 NVMe 제어기 환경에서 맵 데이터를 관리하기 위한 장치 및 방법에 관한 것이다. 아래에 설명된 바와 같이, 일부 실시예들에서, 데이터는 선택된 크기의 어드레스가능한 블록 또는 맵 유닛(MU)의 형태로 비휘발성 메모리(NVM)에 저장된다. 순방향 맵은 MU가 저장된 NVM 내의 물리적 위치와 MU들 각각을 상관시키는 맵 데이터를 제공하는 메모리 내의 데이터 구조로서 유지된다. NVM은 NVMe 사양에 따라 적어도 하나의 네임스페이스로 분할된다.
맵 유닛 어드레스(MUA) 어레이는 NVM 내의 네임스페이스들 각각에 대한 순방향 맵 내에서의 시작 블록 어드레스를 식별하도록 구성된다. NVM에 추가된 각각의 새로운 네임스페이스에 대해 MUA 어레이에 새로운 엔트리들이 제공되는데, 각각의 새로운 네임스페이스는 이전에 가장 최근에 추가된 네임스페이스의 마지막 엔트리 바로 다음에 온다.
기존 네임스페이스는, MUA 어레이에서 엔트리를 제거하고, 필요에 따라 기존 포인터를 순방향 맵에 대해 아래로 이동시킴으로써 삭제된다. 이러한 방식으로, 순방향 맵은 단편화가 없는 상태로 계속 유지되므로 시스템에서 네임스페이스가 추가되거나 제거될 때 2차 룩업 테이블에 대한 필요성을 제거하며 다른 시스템 레이턴시가 줄어든다.
다양한 실시예들의 이들 및 다른 특징들 및 이점들은 데이터 프로세싱 시스템(100)을 제공하는 도 1의 검토를 시작으로 이해될 수 있다. 시스템(100)은 호스트 디바이스(102) 및 데이터 저장 디바이스(104)를 포함한다. 데이터 저장 디바이스(104)는 제어기(106) 및 메모리 모듈(108)을 포함한다. 제어기는 메모리 모듈(108)의 NVM 저장소로 그리고 그로부터의 데이터 전송을 위한 최상위 레벨 통신 및 제어 기능을 제공한다. 호스트 디바이스와 데이터 저장 디바이스 간의 데이터 전송은 하나 이상의 PCIe 포트들을 통해 제공된다.
제한하지는 않지만, 현재의 예에서, 데이터 저장 디바이스(104)는 도 2에 일반적으로 나타낸 바와 같이 제어기 구성(110)을 갖는 SSD(solid state drive)인 것으로 고려된다. 제어기 구성은 프론트엔드 제어기(112), 코어 제어기(114) 및 백엔드 제어기(116)를 포함한다. 프론트엔드 제어기(112)는 호스트 I/F 기능을 수행하고, 백엔드 제어기(116)는 NVM 메모리를 이용하여 데이터 전송을 지시하고, 코어 제어기(114)는 디바이스에 대한 최상위 레벨 제어를 제공한다.
각각의 제어기(112, 114, 116)는 데이터 관리 및 전송 기능들을 실행하기 위한, 적합한 메모리 위치에 연관된 프로그래밍(예를 들어, 펌웨어, FW)을 구비한 별개의 프로그램가능한 프로세서, 및 다양한 하드웨어 요소들을 포함한다. 이것은 단지 일 실시예를 예시하는 것일 뿐이며, 다른 실시예들에서, 단일 프로그램가능한 프로세서(또는 3개 미만의 프로그램가능한 프로세서)가 적합한 메모리 위치 내의 연관된 FW를 이용하여 프론트엔드, 코어 및 백엔드 프로세스들의 각각을 수행하도록 구성될 수 있다. 순수한 하드웨어 기반 제어기 구성도 사용될 수 있다.
메모리(118)는 제어기(110)에 의해 로컬 메모리로서 이용되는 다양한 형태의 휘발성 및 비휘발성 메모리(예를 들어, SRAM, DDR DRAM, 플래시 등)를 표현한다. 다양한 데이터 구조 및 데이터 세트는 하나 이상의 맵 구조들(120), 맵 데이터 및 다른 제어 정보에 대한 하나 이상의 캐시들(122), 및 데이터 전송 동안 호스트 데이터를 위한 하나 이상의 데이터 버퍼들(124)을 포함하는 메모리에 의해 저장될 수 있다. 비-프로세서 기반 하드웨어 지원 회로(126)는 필요에 따라 제어기들 중 하나 이상에 의한 특정 메모리 관리 태스크의 오프로딩을 가능하게 할 수 있다.
도 3은 일부 실시예들에서 호스트 데이터(예를 들어, 사용자 데이터)가 SSD NVM에 저장되는 일반적인 방식의 개략적 개요를 제공한다. 섹터 또는 논리 블록 어드레스(LBA)(128)로 지칭되는 고정된 크기의 데이터 블록들은 NVM에 저장하기 위해 호스트 디바이스에 의해 제공된다. LBA(128) 각각은 512 바이트(B), 1024B(1KB), 2048B(2KB) 등과 같은 고정된 양의 사용자 데이터(섹터 크기)를 갖는다.
"LBA"라는 용어는 다소 모호하다고 인식될 것이다; 상이한 상황 하에서, 데이터 블록 전체, 블록의 사용자 데이터 부분, 및/또는 블록의 논리 어드레스를 지칭하기 위해 LBA라는 용어를 사용하는 것이 일반적이다. 본 개시의 명확성을 위해, LBA라는 용어는 블록(콘텐츠)을 의미할 것이며 LBA ID, HLBA(호스트 LBA) 또는 네임스페이스 HLBA라는 용어는 연관된 블록과 연관된 논리 어드레스를 지칭할 것이다. HBLA 값은 데이터를 전송하기 위한 다양한 액세스 커맨드로 호스트에 의해 제공되고, 전형적으로 최솟값(예를 들어, HBLA 0)에서 최댓값(HBLA N)까지의 범위이다.
종종 어드레스가능한 유닛(AU)으로 지칭되는 LBA(128)는 4096B(4KB)의 사용자 데이터와 같은 보다 큰 전체 고정된 섹터 크기를 달성하기 위해 맵 유닛(MU)(130)으로 지칭되는 보다 큰 데이터 블록으로 함께 그룹화된다. 예를 들어, 1KB의 AU 크기를 사용하면 4개의 이러한 AU가 조합되어 4KB의 MU를 형성할 것이다. 일부 실시예들에서, 2개의 512B 섹터(LBA)가 1KB의 단일 AU로 조합될 수 있고, 이어서 4개의 AU가 4KB MU를 형성하는 데 사용될 수 있다. 인자들은 호스트에 의해 사용되는 바람직한 블록 크기 및 SSD(104)에 의해 유지되는 다양한 제어 정보에 대한 입도(granularity)의 레벨을 포함한다. 주어진 MU의 HLBA는 일반적으로 반드시 필요하지는 않지만 연속적일 것이다. LBA의 데이터 콘텐츠는 전체 MU가 형성될 때까지 로컬 데이터 버퍼 메모리(126)에 축적될 수 있다.
일단 MU가 형성되면, NAND 플래시 메모리의 소거 블록(134) 내의 선택된 페이지(행(132))와 같은, MU(130)를 NVM으로 전송하기 위한 전송 동작이 수행된다. MU(130)는 NVM(104)에 기록되거나 그로부터 판독되는 메모리의 최소 유닛을 표현한다. 주어진 MU(130) 내의 모든 LBA들/AU들보다 적게 판독 요구가 제공되면, MU는 검색되고 디코딩될 것이며, SSD는 데이터의 요청된 부분을 호스트로 전달할 것이다.
도 3은 크기가 4KB인 MU들의 관리를 도시하지만, 이는 단지 예시적인 것이며 제한적이지 않다. 다른 크기들이 사용될 수 있다. 제어 데이터의 추가 바이트는 NVM 내의 페이지(132)에 기록되거나 그렇지 않으면 NVM 내의 페이지(132)와 연관될 것이다. 일 실시예에서, 각각의 페이지는 LDPC(저밀도 패리티 코드) 값, 논리 값, 네임스페이스 정보 등과 같은 4KB의 사용자 데이터와 연관된 다양한 유형의 제어 데이터를 수용하기 위해 1872B의 메모리의 추가 그룹을 갖는다.
도 4는 NVM 내의 다양한 MU(130)의 위치를 추적하는 데 사용될 수 있는 멀티-레벨 맵(140)을 도시한다. 맵(140)은 제1 레벨 맵(142) 및 제2 레벨 맵(144)을 구비한 멀티-레벨 맵으로서 도시된다. 이는 단지 설명의 목적을 위한 것이며, 단일 레벨 맵 또는 3개 이상의 레벨을 갖는 멀티-레벨 맵을 포함하는 다른 맵 구조가 용이하게 사용될 수 있으므로 제한적이지는 않다.
제2 레벨 맵(SLM)(144)의 예시 배열이 도 5에 예시된다. SLM(144)은 다수의 제2 레벨 맵 엔트리들(145)(SLME들 또는 엔트리들)로 구성되며, 이들은 NVM에 상주하거나 또는 NVM에 기록될 수 있는 사용자 데이터(예컨대, MU(130))의 개별 블록들을 설명한다. 소정의 논리적 어드레스들은 사용되지 않았거나 또는 사용되지 않지만, SLM(144)은 NVM에 의해 수용될 수 있는 블록들의 논리적 어드레스들의 전체 가능한 범위를 설명한다.
각각의 엔트리(145)는 다수의 필드들, 예컨대, 물리적 블록 어드레스 필드(146), 오프셋 필드(148) 및 상태 필드(150)를 포함한다. 다른 포맷들이 사용될 수 있다. 연관된 HBLA 값(또는 HBLA 값으로부터 도출된 값)은 엔트리(145)에 대한 인덱스로서 사용된다.
상기 언급된 바와 같이, 통상적인 플래시 어레이는 특정 소거 블록 내의 플래시 메모리 셀들의 행들을 따라 기록된 페이지들로서 구성된 MU들을 구성한다. PBA는 어레이, 다이, 가비지 콜렉션 유닛(garbage collection unit; GCU), 소거 블록, 페이지 등으로 표현될 수 있다. 오프셋 값은 메모리의 선택된 페이지를 따른 비트 오프셋일 수 있다. 상태 값은 연관된 블록의 상태(예를 들어, 유효, 무효, 널(null) 등)를 나타낼 수 있다.
엔트리들(145)의 그룹들은 본원에서 맵 페이지들(152)로 지칭되는 더 큰 데이터의 세트들로 구성될 수 있다. 일부 선택된 개수(변수 A로 표현됨)의 엔트리들이 각각의 맵 페이지에 제공된다. 본 경우에, 각각의 맵 페이지(152)는 총 100개의 엔트리를 갖는다. 2의 급수인 수를 포함하여, 엔트리들의 다른 그룹들이 각각의 페이지에 만들어질 수 있다.
이는 제2 레벨 맵(SLM)(144)은 시스템 내의 모든 맵 페이지들(152)의 배열을 구성하는 것이 뒤따른다. 다소 큰, 맵 페이지들의 총 개수 B가 SSD의 전체 저장 용량을 설명하는 데 필요할 것으로 고려된다. 각각의 맵 페이지는 본 명세서에서 맵 유닛 어드레스(MUA)라고도 지칭되는 연관된 맵 ID 값을 갖는다. MUA들은 0 내지 B의 연속적인 범위이다. SLM(144)은 NAND 플래시(NVM)에 저장되지만, SLM은 플래시 내의 중앙화된 위치보다는 다양한 다이들의 상이한 세트들에 걸쳐 기록되는 경향이 있을 것이다.
도 4의 제1 레벨 맵(FLM)(142)의 배열이 도 6에 도시된다. FLM(142)을 통해 SSD는 플래시에 저장된 다양한 맵 페이지들(152)을 위치파악할 수 있다. 이를 위해, FLM(142)은 제1 레벨 맵 엔트리들(165)(FLME들 또는 엔트리들)로 구성된다. 각각의 FLME(165)은 PBA 필드(166), 오프셋 필드(168) 및 상태 필드(170)를 갖는다. 전술한 맵 페이지 ID(MUA)는 FLM(140)에 대한 인덱스로서 사용되어 연관된 엔트리를 위치파악한다.
필드(166) 내의 PBA는 연관된 맵 페이지의 위치를 설명한다. 오프셋 값은 앞서 설명한 것과 같이 특정 페이지 또는 다른 위치를 따르는 비트 오프셋으로서 동작한다. 상태 값은 제2 레벨 맵 내의 상태 값과 동일할 수 있거나, 또는 원하는 경우 맵 페이지 자체의 상태에 관련될 수 있다. 이전과 마찬가지로, MUA는 연관된 엔트리들을 위치파악하기 위해 데이터 구조에 대한 색인으로 사용될 수 있다.
제1 레벨 맵(FLM)(142)은 엔트리 0에서 엔트리 C까지 모든 엔트리들(162)의 배열을 구성한다. 일부 경우들에서, B는 C와 같을 것이지만, 이 값들은 상이할 수 있다. FLM(142)을 액세스함으로써, MUA를, 플래시 메모리(118) 내의 원하는 맵 페이지의 위치의 탐색이 가능해진다. 플래시로부터 원하는 맵 페이지를 검색함으로써, 그 맵 페이지 내의 제2 레벨 맵 엔트리들을 제공할 것이고, 이어서 연관된 제2 레벨 엔트리들 내의 PBA 정보에 기초하여 개별 LBA들이 식별되고 검색될 수 있다. 따라서, 제1 레벨 맵(142)은 원하는 MU와 연관된 연관된 맵 페이지의 검색을 가능하게 하는 순방향 맵으로 생각할 수 있다.
도 7은 일부 실시예들에 따른 SSD(104)의 추가 양태들을 도시한다. NVMe(비휘발성 메모리 익스프레스) 제어기(202)는 MML(media management layer) 제어기(204)와 통신하여 이 경우 NAND 플래시 메모리(206)로서 식별되는 NVM으로 그리고 그로부터 데이터를 전송한다. NVMe 제어기(204)는 코어 제어기(114)의 일부를 형성할 것이고, MML 제어기(204)는 도 2에서 백엔드 제어기(116)의 일부를 형성할 것으로 고려되지만, 다른 배열들이 사용될 수 있다.
NVMe 표준에 따라, 데이터 블록(MU(130))의 저장을 위해 이용가능한 NAND 플래시(206)의 부분은 다수의 네임스페이스들(208)로 분할된다. 2개의 이러한 예시적인 네임스페이스는 네임스페이스(NS) A 및 NS B로 식별된다. 각각의 네임스페이스는 연관된 총 양의 블록 저장 용량을 갖는다. PCIe 인터페이스 프로토콜을 통한 데이터 전송은 HBLA 값을 나타내는 호스트로부터의 값들, 데이터가 저장되거나 그로부터 검색되는 네임스페이스, 및 NVMe 제어기(202)와 연관된 네임스페이스 제어기 ID를 포함한다.
네임스페이스(208)의 효율적인 관리를 용이하게 하기 위해, MML 제어기(204)는 HBLA-NS 변환 테이블(210), 순방향 맵(212) 및 MUA 어레이(214)를 포함하는 로컬 메모리의 특정 데이터 구조를 이용한다. 이들 각각에 대해 차례로 논의할 것이다.
이 네임스페이스 관리 스킴의 일부로서, NAND 플래시(206)에 기록된 각각의 AU의 제어 데이터 부분은 데이터와 연관된 네임스페이스 ID 값을 저장하도록 수정된다. 이를 위해, 64 비트 HBLA 필드(220)는 도 8에 도시된 바와 같이 각각의 AU에 대한 1872B의 데이터에 통합된다. 필드(220)는 0부터 7까지 번호가 매겨진 여덟(8) 개의 8 비트(1B) 블록(222)으로 표현된다.
64 비트 필드의 하위 32 비트(예를 들어, 바이트 0 내지 3)는 호스트에 의해 제공된 HLBA 값(네임스페이스 HBLA)을 구성한다. 상위 32 비트(예를 들어, 바이트 7)의 MSB는 연관된 데이터에 대한 네임스페이스 ID로 설정된다. 나머지 3 바이트(예를 들어, 바이트 4 내지 6)는 이 실시예에서 현재 예약되지만, 네임스페이스, HLBA 또는 다른 제어 정보에 대해 더 많은 비트를 필요로 하는 시스템에서와 같이 필요에 따라 사용될 수 있다.
네임스페이스 ID는 HBLA-NS 변환 테이블(210)을 사용하여 MML 제어기(204)의 지시에 의해 또는 그 아래에서 HBLA 필드(220)로 인코딩된다. 도 8은 일부 실시예들에서 테이블(210)의 배열을 도시한다. 필요에 따라 다른 형태들이 사용될 수 있다.
네임스페이스 ID 및 네임스페이스 HLBA로의 제어기 HLBA 값의 디코딩은 MML 제어기(204) 내에서 또는 그에 의해 단독으로 수행된다. 이 두 값은 이후에 논의되는 바와 같이 주어진 MUA(예를 들어, 순방향 맵으로의 인덱스)를 계산하는 데 후속적으로 사용된다. 이 계산은 호스트 판독/기록 동작들을 제공(servicing)하는 동안뿐만 아니라 전원을 켤 때 메타데이터 복구 동안 및 유효한 데이터를 다시 위치파악하고 재할당을 위한 소거 블록을 소거하기 위한 가비지 콜렉션 동작들 동안 수행된다.
도 10은 일부 실시예에 따라 보다 상세하게 도 7의 MUA 어레이(212) 및 순방향 맵(214)을 도시한다. 총 네(4) 개의 네임스페이스(NS 1 내지 NS 4)가 수용될 수 있지만, NS 1, 2 및 4로 도시된 바와 같이 현재 세(3) 개의 네임스페이스만 할당된다. 순방향 맵(214)은 MUA 0(최소 MUA 값 또는 하부의 어드레스)으로부터 MUA N-1(최대 MUA 값 또는 상부의 어드레스)로 배열된다. NS 1, 2 및 4에 대한 개개의 네임스페이스 범위는 224, 226 및 228에서 각각 식별된다. 블록(230)은 맵 내에서 미사용된 MUA 범위를 표현한다. 네임스페이스 범위들 각각은 네임스페이스가 형성되었을 때 설정된 상이한 총 데이터 블록(MU) 용량을 갖는다. 각각의 네임스페이스에 대한 HLBA 값들은 HBLA 0에서 해당 네임스페이스에 대한 최대 블록 값까지 실행할 수 있다.
도 10으로부터 알 수 있는 바와 같이, NAND 플래시의 네임스페이스들은 순방향 맵(214) 내의 MUA들의 연속적이고 계속적인 범위들에 의해 기술된다. MML 제어기(206)는 대응하는 네임스페이스 ID 범위에 대한 기본 MUA로서 각각 지칭되는 네임스페이스 기본 MUA 값(232)의 어레이로서 MUA 어레이(212)를 정의한다. 각각의 기본 MUA는 어레이(212) 내로의 인덱스이며, 따라서 특정 MUA를 얻는 데 필요한 모든 것은 연관된 네임스페이스 및 증가에 대한 기본 MUA를 위치파악하는 것이다. 네임스페이스 ID에 대응하는 기본 MUA 어레이의 요소의 값에 네임스페이스 HLBA를 추가함으로써, 주어진 MU가 저장된 MUA가 획득된다. 예를 들어, NS 4에서 선택된 MUA를 위치파악하기 위해, 이는 다음과 같이 결정될 수 있다:
선택된 MUA = NS 4 제1 MUA 어드레스 + HLBA (1)
네임스페이스 삭제의 결과로서 HLBA의 위치가 순방향 맵에서 변경될 수 있으므로 푸터(footer) 엔트리들은 절대 MUA 값들을 포함하지 않는다. 환언하면, 정적인 대응(static correspondence)보다는 상대적인 대응이 HLBA와 MUA 값들 사이에 유지된다. 결과적으로, 사용된다면, 푸터 엔트리들은 시스템이 연관된 MU 데이터를 참조하는 순방향 맵 MUA를 항상 위치파악할 수 있음을 보장하도록 전체 64 비트 HLBA 필드(220)(도 8)를 포함해야 한다.
도 11은 새로운 네임스페이스(234)(NS 3)의 추가와 함께 도 10의 MUA 어레이(212) 및 순방향 맵(214)을 도시한다. 새로운 네임스페이스(234)는 다음 이용가능한 MUA, 이 경우 제4 네임스페이스(228)(NS 4) 내의 마지막 MUA 뒤에 다음 MUA로 시작하여 추가된다는 것을 알 수 있다. NS 3에 대한 포인터는 이제 제3 네임스페이스(234)에 대한 제1 MUA 어드레스를 식별한다.
도 12는 제1 네임스페이스(224)(NS 1)의 삭제 시에 도 12의 MUA 어레이(212) 및 순방향 맵(214)을 도시한다. 제2 네임스페이스(226)(NS2)는 이전과 동일하게 유지되지만, 연속성을 유지하고 맵(214) 내에서의 단편화를 방지하기 위해 제4 네임스페이스(228)(NS 4) 및 제3 네임스페이스(234)(NS 3)는 각각 아래로 이동된다. NS 1의 상태가 무효하도록 설정되었다.
이러한 방식으로, NS 4에 대한 시작 MUA 엔트리는 (제거된) NS 1에 대한 시작 MUA 엔트리에 의해 이전에 점유된 중간 어드레스에 대응하도록 아래로 이동되었다. NS 4에 대한 대응하는 기본 MUA 엔트리(포인터)(232)는 이제 이 중간 어드레스(예를 들어, NS 1에 대한 제1 엔트리에 의해 이전에 점유되었던 엔트리)를 가리킨다. 포인터는 조정되어, 맵 페이지들에 대한 물리적 메모리 내의 위치를 계속 가리킨다.
이러한 방식으로 다중 네임스페이스를 지원하기 위해, 표 1에 예시된 바와 같이, NVMe 커맨드 세트로의 다수의 인터페이스 변화들이 요구될 수 있다.
[표 I]
Figure pat00001
NVMe 제어기(202)는 활성 또는 연결되지 않은 네임스페이스에 대해 MML 제어기(204)에 대한 I/O 커맨드를 차단할 것이다. NVMe 제어기는 이러한 커맨드에 대해 즉시 에러를 반환할 것이며, MML 제어기는 호스트 요청을 보지 못할 것이다. NVMe 제어기(202)는 또한 네임스페이스 연결 및 분리를 구현하는 네임스페이스 연결 커맨드에 대한 지원을 구현할 것이다. MML 제어기(204)는 주어진 포트로부터 네임스페이스에 대한 액세스를 단순히 인에이블 또는 디스에이블하기 때문에 이들 커맨드를 보지 못할 것이다.
SSD(104)의 초기 포맷화 시, 제1 네임스페이스(NS1)만이 정의될 것이고, 이 네임스페이스는 NVM(NAND 플래시(206))의 전체 데이터 용량까지 확장될 것이다. 기본 MUA 어레이(212)는 다른 주요 MML 테이블과 함께 EB 파일 내에 생성될 것이고, EB 파일 저장 동작은 네임스페이스의 임의의 생성 또는 삭제로 트리거링(triggering)될 것이다. MML 제어기(204)는 NVMe 제어기(202)로부터 전송된 후속하는 네임스페이스 생성 및 네임스페이스 삭제 커맨드에 대한 핸들러를 필요로 한다는 것을 이해할 것이다.
도 13은 기존 NVM에 새로운 네임스페이스를 추가하기 위해 수행되는 단계들을 일반적으로 설명하는 새로운 네임스페이스 생성 루틴(300)에 대한 흐름도를 도시한다. 새로운 네임스페이스에 대한 요청은 반드시 필요하지는 않지만 호스트 레벨에서 시작될 것으로 고려된다.
새로운 네임스페이스 특성은 단계(302)에서 정의되며, 이는 새로운 네임스페이스 내에 포함될 블록들의 총 수(예를 들어, 크기)를 포함할 것이다. 단계(304)에서, 기본 MUA 어레이(212)는 순방향 맵(214) 내의 다음 이용가능한 MUA에 대한 포인터와 함께 새롭게 추가된 네임스페이스를 반영하도록 업데이트된다. 단계(306)에서, 순방향 맵의 전체 카피(copy)가 NVM에 저장되고, 루틴은 단계(308)에서 종료된다.
이러한 방식으로, 새로운 네임스페이스 생성은 일반적으로 다음의 동작들을 순서대로 수반한다: 순방향 맵 상의 다음 이용가능한 MUA로 생성되는 네임스페이스에 대한 기본 MUA 어레이(212) 요소의 업데이트, 이어서 전체 순방향 맵/EB 파일 테이블 저장의 트리거링.
도 14는 기존 네임스페이스 삭제 루틴(320)에 대한 흐름도를 도시한다. 이전과 마찬가지로, 기존 네임스페이스를 삭제하라는 요청은 호스트 레벨에서 시작되지만 이는 필수적인 것은 아님이 고려된다.
단계(322)에서, 로컬 메모리에 상주하는 모든 기존 LBA들은 네임스페이스의 삭제 이전에 NVM에 기록되도록 트리밍되거나 프로세싱된다. 다음으로, 단계(324)는 도 12에서 상기 논의된 바와 같이 삭제된 네임스페이스 위의 모든 순방향 맵 엔트리들을 아래로 이동시킨다. 더 이상 사용자에 없는 모든 엔트리들의 순방향 맵 엔트리 상태는 비관리 상태로 설정된다(단계 326).
단계(328)에서, 기본 MUA 어레이(212)는 삭제된 네임스페이스가 무효한 것으로 나타내도록 업데이트되고, 필요에 따라 새로운 기본 값이 순방향 맵 내의 새로운 시작 위치를 가리키도록 업데이트된다. 마지막으로, 맵의 전체 카피가 단계(330)에서 저장되고, 루틴은 단계(332)에서 종료된다.
이러한 방식으로, 기존 네임스페이스의 삭제는 일반적으로 다음 동작들을 순서대로 수반한다: 삭제될 네임스페이스 내의 모든 제어기 LBA들의 트리밍; 삭제되는 네임스페이스 내의 기본 MUA까지 삭제되는 것 위의 네임스페이스 내의 모든 순방향 맵 엔트리들을 이동시키기 위해 DMA 회로부(예를 들어, 도 2의 하드웨어 지원 관리자(120))의 사용; 네임스페이스 삭제로 인해 더 이상 사용되지 않는 모든 순방향 맵 엔트리들의 순방향 맵 엔트리 상태를 맵핑 해제(Unmapped)로 설정; 삭제된 네임스페이스에 대한 엔트리를 무효 값으로, 그리고 모든 이동된 네임스페이스들에 대한 엔트리들을 그것들의 개개의 새로운 위치들로 설정함으로써 기본 MUA 어레이(212)의 업데이트; 및 전체 순방향 맵/EB 파일 테이블 저장의 트리거링.
네임스페이스 HLBA 또는 네임스페이스 HLBA의 범위에 작용하는 NVMe 커맨드는 또한 MML 제어기(206)에 의해 MUA 값으로 변환된 HLBA(들)을 가질 필요가 있다. 이러한 커맨드는 포맷, 트림, 할당 해제, 기록 제로, 및 데이터세트 관리를 포함한다. 포맷 커맨드의 경우, 타깃 네임스페이스 내의 HLBA만 할당 해제된다. NVMe 제어기(202)가 모든 네임스페이스들이 포맷화되도록 요청하면, MML 제어기(206)는 정의된 모든 네임스페이스들을 걸쳐 루핑(looping)함으로써 그렇게 할 것이다.
도 15는 NVM(206)이 다수의 네임스페이스들을 갖는 상황에서 NVM과 호스트 디바이스(102) 간에 데이터를 전송하기 위해 SSD(104)에 의해 수행되는 단계들을 일반적으로 나타내는 데이터 프로세싱 루틴(350)에 대한 흐름도이며, 이는 도 7 및 도 10 내지 도 12에서 상기 논의된 바와 같다. 다른 시퀀스들이 사용될 수 있다.
단계(352)에서 데이터 판독 커맨드와 같은 그러나 이로 제한되지는 않는 호스트 디바이스(102)로부터의 PCIe 포트를 통해 호스트 액세스 커맨드가 수신된다. 프론트엔드 제어기(112)에 의한 초기 프로세싱 후에, MVMe 제어기(202)는 커맨드와 연관된 데이터와 연관된 하나 이상의 선택된 맵 페이지들에 대하여 검색 커맨드를 발행하기 위해 동작할 수 있다(단계 354).
커맨드는 네임스페이스 ID 및 HLBA 요소들을 식별하는 MML 제어기(206)로 전달되고(단계 356), 기본 MUA 어레이(212)와 함께 이들 요소들을 사용하여 순방향 맵 내에서 선택된 MUA를 위치파악한다(단계 358). 일단 검색되면, 맵 페이지는 물리적 메모리(예를 들어, 페이지(132)) 내에서의 데이터를 위치파악하는 데 사용되며, 요청된 데이터를 다시 판독하고, 프로세싱하고, 호스트에 반환하는 것과 같은 커맨드가 제공되며(단계 360), 그 후, 루틴은 단계(362)에서 종료된다.
본 명세서에서 설명된 다양한 실시예의 이점은 HBLA-NS 네임스페이스 테이블(210)이 메타데이터가 NVM 내에서뿐만 아니라 개개의 제어기에 의해 처리되는 동안 고유하게 허용된다는 사실을 포함한다. 순방향 맵(214)의 유지된 연속성은 순방향 맵이 HLBA 연속적인 네임스페이스로 분할되기 때문에 맵 내에서의 단편화된 섹션을 처리하기 위한 2차 룩업 동작의 필요성을 제거한다. 다른 이점은 고속 경로 레이턴시 효과를 크게 회피할 수 있다는 것이다. 지연은 일반적으로 제거된 네임스페이스(들)에 대해 순방향 맵이 압축된 네임스페이스 삭제 동작들 중에만 발생한다. 일부 경우들에서, 심지어 이 동작 중에도 경우에 따라 재계산되지 않는 도 12의 제2 네임스페이스(NS 2)와 같은 영향을 받지 않는 네임스페이스(들)에 액세스가 허용될 수 있다.
다양한 실시예들이 플래시 메모리를 구비한 솔리드 스테이트 드라이브(SSD)의 환경을 고려하였지만, 상이한 형태의 저장 메모리, 상이한 개수의 디바이스 등을 포함하는 다른 구성들이 용이하게 사용될 수 있다.
본 개시의 다양한 실시예들의 다수의 특성들 및 이익들이 앞서 설명에서 본 개시의 다양한 실시예들 구조 및 기능의 상세사항들과 함께 기술되었지만, 이러한 상세한 설명은 예시일 뿐이고, 상세하게는, 특히 첨부된 청구 범위가 표현되는 용어들의 광범위한 일반적 의미에 의해 표시되는 최대한의 범위까지 본 개시의 원리 내의 부분들의 구조 및 배열의 문제에 있어서 변경이 있을 수 있음을 이해할 것이다.

Claims (20)

  1. 장치로서,
    비휘발성 메모리(NVM)의 적어도 하나의 네임스페이스(namespace) 내에서 선택된 크기의 사용자 데이터의 어드레스가능한 블록들을 포함하는 맵 유닛(MU)들을 저장하도록 구성된 상기 NVM;
    호스트 디바이스와 상기 NVM 간에 상기 MU들을 전송하기 위해 적어도 하나의 PCIe(Peripheral Component Interconnect Express) 포트를 통해 상기 호스트 디바이스와 인터페이스하도록 구성된 비휘발성 메모리 익스프레스(NVMe) 제어기 회로;
    상기 MU들 각각을 상기 MU들이 저장된 상기 NVM 내의 상기 물리적 위치들과 상관시키는 맵 유닛 어드레스(MUA) 엔트리들을 포함하는 로컬 메모리에 데이터 구조로서 저장된 순방향 맵(forward map) - 상기 MUA 엔트리들은 순방향 테이블 내에서 최하위 어드레스로부터 최상위 어드레스로 순차적으로 배열되고 상기 NVM 내의 상기 적어도 하나의 네임스페이스 각각에 대해 바로 인접한 연속적인 범위들로 그룹화됨 -;
    상기 NVM 내의 상기 적어도 하나의 네임스페이스 각각에 대한 시작 MUA 엔트리의 상기 순방향 맵 내에서의 상기 어드레스를 식별하도록 구성된 상기 로컬 메모리에 데이터 구조로서 저장된 기본 MUA 어레이; 및
    이전에 가장 최근에 추가된 네임스페이스의 상기 순방향 맵 내에서의 마지막 MUA 엔트리의 바로 다음에 상기 순방향 맵에 새로운 범위의 상기 MUA 엔트리들을 부가함으로써, 그리고 새로운 네임스페이스에 대한 상기 시작 MUA 엔트리의 상기 순방향 맵 내에서의 상기 어드레스를 식별하기 위해 상기 기본 MUA 어레이에 새로운 엔트리를 추가함으로써, 상기 NVM에 상기 새로운 네임스페이스를 추가하도록 구성된 미디어 관리 레이어(MML) 제어기 회로를 포함하는, 장치.
  2. 제1항에 있어서, 상기 NVM 내의 제1 네임스페이스는 상기 순방향 맵 내의 상기 최하위 어드레스에 대응하는 시작 MUA 엔트리 및 상기 순방향 맵 내의 제1 중간 어드레스에서의 종료 MUA 엔트리를 가지며, 상기 NVM 내의 제2 네임스페이스는 상기 순방향 맵 내의 상기 제1 중간 어드레스에 바로 인접한 제2 중간 어드레스에서의 시작 MUA 엔트리를 갖는, 장치.
  3. 제1항에 있어서, 상기 MML 제어기 회로는, 상기 이전에 가장 최근에 추가된 네임스페이스의 상기 시작 MUA 엔트리의 상기 순방향 맵 내에서의 제1 중간 어드레스를 식별한 상기 기본 MUA 어레이 내의 대응하는 엔트리를 제거함으로써, 상기 새로운 네임스페이스에 대한 상기 시작 MUA 엔트리가 상기 순방향 맵 내에서의 상기 제1 중간 어드레스에 대응하도록 연관된 범위의 상기 MUA 엔트리들을 아래로 이동시킴으로써, 그리고 상기 새로운 네임스페이스와 연관된 상기 엔트리가 상기 순방향 맵 내의 상기 제1 중간 어드레스를 식별하도록 상기 기본 MUA 어레이를 수정함으로써, 상기 NVM으로부터 상기 이전에 가장 최근에 추가된 네임스페이스를 순차적으로 삭제하도록 더 구성된, 장치.
  4. 제1항에 있어서, 상기 MML 제어기 회로는, 보류 중인 호스트 커맨드와 연관된 선택된 네임스페이스를 식별하고, 상기 기본 MUA 어레이를 액세스하여 상기 선택된 네임스페이스에 대한 상기 시작 MUA 엔트리의 상기 순방향 맵 내에 상기 어드레스를 위치파악(locate)하여 상기 보류 중인 호스트 커맨드와 연관된 논리 어드레스에 응답하여 상기 선택된 네임스페이스에 대한 상기 시작 MUA 엔트리로부터 다수의 엔트리들을 증가시킴으로써 상기 보류 중인 호스트 커맨드와 연관된 상기 순방향 맵 내에서 상기 연관된 MUA 엔트리를 위치파악하고, 상기 연관된 MUA 엔트리를 사용하여 상기 보류 중인 호스트 커맨드의 제공(servicing)을 완료하기 위해 데이터가 기록되거나 데이터가 검색되는 상기 NVM 내에서의 물리적 위치를 식별함으로써, 상기 NVMe 제어기 회로로부터 수신된 상기 보류 중인 호스트 커맨드를 제공하도록 더 구성되는, 장치.
  5. 제1항에 있어서, 상기 로컬 메모리에 데이터 구조로서 저장된 변환 테이블을 더 포함하며, 상기 MML 제어기 회로는 상기 NVMe 제어기로부터 수신된 MU에 상기 MU와 연관된 상기 NVM 내에서의 선택된 네임스페이스에 대한 네임스페이스 ID 값을 부가하는, 장치.
  6. 제5항에 있어서, 상기 MML 제어기 회로는 상기 NVMe 제어기로부터 수신된 상기 MU에 상기 MU와 연관된 논리 어드레스를 더 부가하는, 장치.
  7. 제6항에 있어서, 상기 MML 제어기 회로는 상기 변환 테이블로부터의 상기 네임스페이스 ID에 응답하여 상기 기본 MUA 어레이에 액세스하고, 상기 네임스페이스 ID와 연관된 기본 MUA 엔트리로부터 상기 변환 테이블로부터의 상기 논리 어드레스에 대응하는 거리만큼 증가시키는, 장치.
  8. 제1항에 있어서, 상기 NVMe 제어기 회로 및 상기 MML 제어기 회로는 적어도 하나의 프로그램가능한 프로세서 및 프로세서 메모리에 저장되고 연관된 상기 적어도 하나의 프로그램가능한 프로세서에 의해 실행되는 연관된 프로그래밍을 사용하여 구현되는, 장치.
  9. 제1항에 있어서, 각각의 MU는 상기 호스트 디바이스로부터 4096 바이트(B)의 사용자 데이터를 저장하도록 구성되며, 상기 MML 제어기 회로에 의해 상기 MU에 부가된 별개의 논리 어드레스를 각각 갖는 상기 호스트 디바이스로부터의 다수의 데이터 블록들로 형성되는, 장치.
  10. 제1항에 있어서, 솔리드 스테이트 드라이브(SSD)로 특징지어지고, 상기 NVM은 NAND 플래시 메모리를 포함하는, 장치.
  11. 방법으로서,
    비휘발성 메모리(NVM)를 하나 이상의 네임스페이스들로 구성하는 단계 - 상기 네임스페이스는 호스트 디바이스로부터 선택된 크기의 사용자 데이터의 어드레스가능한 블록들을 포함하는 맵 유닛(MU)들을 저장하기 위해 비휘발성 메모리 익스프레스(NVMe) 네임스페이스로서 각각 구성됨 -;
    상기 MU들 각각을 상기 MU들이 저장된 상기 NVM 내의 상기 물리적 위치들과 상관시키는 맵 유닛 어드레스(MUA) 엔트리들을 포함하는 로컬 메모리에 데이터 구조로서 순방향 맵을 저장하는 단계 - 상기 MUA 엔트리들은 순방향 테이블 내에서 최하위 어드레스로부터 최상위 어드레스로 순차적으로 배열되고 상기 NVM 내의 적어도 하나의 네임스페이스 각각에 대해 바로 인접한 연속적인 범위들로 그룹화됨 -;
    상기 NVM 내의 상기 하나 이상의 네임스페이스들 각각에 대한 시작 MUA 엔트리의 상기 순방향 맵 내에서의 상기 어드레스를 식별하는 상기 로컬 메모리에 데이터 구조로서 기본 MUA 어레이를 생성하는 단계; 및
    이전에 가장 최근에 추가된 네임스페이스의 상기 순방향 맵 내에서의 마지막 MUA 엔트리의 바로 다음에 상기 순방향 맵에 새로운 범위의 상기 MUA 엔트리들을 부가함으로써, 그리고 새로운 네임스페이스에 대한 상기 시작 MUA 엔트리의 상기 순방향 맵 내에서의 상기 어드레스를 식별하기 위해 상기 기본 MUA 어레이에 새로운 엔트리를 추가함으로써, 상기 NVM에 상기 새로운 네임스페이스를 추가하는 단계를 포함하는, 방법.
  12. 제11항에 있어서, 상기 순방향 맵 및 상기 기본 MUA 어레이를 사용하여 상기 호스트 디바이스와 상기 새로운 네임스페이스 NVM 간에 선택된 MU를 전송하는 후속 단계를 더 포함하는, 방법.
  13. 제11항에 있어서, 상기 추가하는 단계는 NVMe 제어기 회로로부터 수신된 커맨드에 응답하여 상기 NVM과의 데이터 전송을 지시하도록 구성된 MML(media management layer) 제어기 회로에 의해 수행되는, 방법.
  14. 제13항에 있어서, 상기 NVMe 제어기 회로 및 상기 MML 제어기 회로는 적어도 하나의 프로그램가능한 프로세서 및 프로세서 메모리에 저장되고 상기 연관된 적어도 하나의 프로그램가능한 프로세서에 의해 실행되는 연관된 프로그래밍을 사용하여 구현되는, 방법.
  15. 제11항에 있어서, 상기 NVM 내의 제1 네임스페이스는 상기 순방향 맵 내의 상기 최하위 어드레스에 대응하는 시작 MUA 엔트리 및 상기 순방향 맵 내의 제1 중간 어드레스에서의 종료 MUA 엔트리를 가지며, 상기 NVM 내의 제2 네임스페이스는 상기 순방향 맵 내의 상기 제1 중간 어드레스에 바로 인접한 제2 중간 어드레스에서의 시작 MUA 엔트리를 갖는, 방법.
  16. 제11항에 있어서,
    상기 이전에 가장 최근에 추가된 네임스페이스의 상기 시작 MUA 엔트리의 상기 순방향 맵 내에서 제1 중간 어드레스를 식별한 상기 기본 MUA 어레이 내의 상기 대응하는 엔트리를 제거하고;
    상기 새로운 네임스페이스에 대한 상기 시작 MUA 엔트리가 상기 순방향 맵 내의 상기 제1 중간 어드레스에 대응하도록 연관된 범위의 상기 MUA 엔트리들을 아래로 이동시키고;
    상기 새로운 네임스페이스와 연관된 엔트리가 상기 순방향 맵 내의 상기 제1 중간 어드레스를 식별하도록 상기 기본 MUA 어레이를 수정함으로써, 상기 NVM으로부터 상기 이전에 가장 최근에 추가된 네임스페이스를 삭제하는 후속 단계를 더 포함하는, 방법.
  17. 제11항에 있어서,
    보류 중인 호스트 커맨드와 연관된 선택된 네임스페이스를 식별하고;
    상기 선택된 네임스페이스에 대한 상기 시작 MUA 엔트리의 상기 순방향 맵 내에서의 상기 어드레스를 위치파악하기 위해 상기 기본 MUA 어레이에 액세스하고;
    상기 보류 중인 호스트 커맨드와 연관된 논리 어드레스에 응답하여 상기 선택된 네임스페이스에 대한 상기 시작 MUA 엔트리로부터 다수의 엔트리들을 증가시킴으로써 상기 보류 중인 호스트 커맨드와 연관된 상기 순방향 맵 내에서의 연관된 MUA 엔트리를 위치파악하고;
    상기 연관된 MUA 엔트리를 사용하여 상기 보류 중인 호스트 커맨드의 제공을 완료하기 위해 데이터가 기록되거나 데이터가 검색되는 상기 NVM 내의 물리적 위치를 식별함으로써, 상기 호스트 디바이스로부터 수신된 상기 보류 중인 호스트 커맨드를 제공하는 후속 단계를 더 포함하는, 방법.
  18. 제11항에 있어서, 상기 로컬 메모리 내의 데이터 구조로서 저장된 변환 테이블을 사용하여, 상기 MU와 연관된 상기 NVM 내에서의 선택된 네임스페이스에 대한 네임스페이스 ID 값으로 상기 NVM에 저장하기 위해 수신된 선택된 MU를 부가하는 단계를 더 포함하는, 방법.
  19. 제18항에 있어서, 상기 변환 테이블을 사용하여 상기 선택된 MU를 상기 MU와 연관된 논리 어드레스로 더 부가하는 단계를 더 포함하는, 방법.
  20. 제19항에 있어서,
    상기 변환 테이블로부터 상기 네임스페이스 ID에 응답하여 상기 기본 MUA 어레이에 액세스하여 상기 순방향 맵 내에서 상기 선택된 네임스페이스에 대한 기본 MUA 엔트리를 위치파악하는 단계; 및
    상기 변환 테이블로부터의 상기 논리 어드레스에 대응하는 다수의 MUA 엔트리들에 의해 선택된 맵에 대한 상기 기본 MUA 엔트리로부터 증가하는 단계를 더 포함하는, 방법.
KR1020180062017A 2017-05-31 2018-05-30 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리 KR102042643B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/609,758 2017-05-31
US15/609,758 US10275361B2 (en) 2017-05-31 2017-05-31 Managing multiple namespaces in a non-volatile memory (NVM)

Publications (2)

Publication Number Publication Date
KR20180131475A true KR20180131475A (ko) 2018-12-10
KR102042643B1 KR102042643B1 (ko) 2019-12-02

Family

ID=64458272

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180062017A KR102042643B1 (ko) 2017-05-31 2018-05-30 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리

Country Status (4)

Country Link
US (1) US10275361B2 (ko)
JP (1) JP2018206384A (ko)
KR (1) KR102042643B1 (ko)
CN (1) CN108984420B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11327885B2 (en) 2019-11-28 2022-05-10 SKhynix Inc. Controller managing namespace and memory system having the controller

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503404B2 (en) * 2017-10-23 2019-12-10 Micron Technology, Inc. Namespace management in non-volatile memory devices
KR102503177B1 (ko) * 2018-03-05 2023-02-24 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11656992B2 (en) 2019-05-03 2023-05-23 Western Digital Technologies, Inc. Distributed cache with in-network prefetch
CN112114738B (zh) * 2019-06-20 2024-02-20 杭州海康威视数字技术股份有限公司 一种存储数据的方法及存储设备
CN110515561B (zh) * 2019-08-27 2022-09-16 江苏华存电子科技有限公司 一种适用于NVMe命名空间下双接口位址硬体架构
US11087846B1 (en) 2020-02-12 2021-08-10 SK Hynix Inc. Memory system with single decoder, multiple memory sets and method for decoding multiple codewords from memory sets using the single decoder
US11941458B2 (en) 2020-03-10 2024-03-26 Sk Hynix Nand Product Solutions Corp. Maintaining storage namespace identifiers for live virtualized execution environment migration
US11765250B2 (en) 2020-06-26 2023-09-19 Western Digital Technologies, Inc. Devices and methods for managing network traffic for a distributed cache
US11675706B2 (en) 2020-06-30 2023-06-13 Western Digital Technologies, Inc. Devices and methods for failure detection and recovery for a distributed cache
US11736417B2 (en) 2020-08-17 2023-08-22 Western Digital Technologies, Inc. Devices and methods for network message sequencing
US11455124B2 (en) * 2020-10-09 2022-09-27 Western Digital Technologies, Inc. Command prioritization to reduce latencies of zone commands
US11586372B2 (en) 2021-07-01 2023-02-21 Samsung Electronics Co., Ltd. Use of copy location to selectively set or selectively clear bits of metadata during live migration
CN114265554B (zh) * 2021-12-22 2023-08-15 苏州浪潮智能科技有限公司 Nvme限定名映射方法、计算机设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130080732A1 (en) * 2011-09-27 2013-03-28 Fusion-Io, Inc. Apparatus, system, and method for an address translation layer

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011031903A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
US8775773B2 (en) * 2011-08-26 2014-07-08 Vmware, Inc. Object storage system
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US9003071B2 (en) 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US9430412B2 (en) * 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US9292379B2 (en) * 2013-09-28 2016-03-22 Intel Corporation Apparatus and method to manage high capacity storage devices
US9294567B2 (en) 2014-05-02 2016-03-22 Cavium, Inc. Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller
US9501245B2 (en) 2014-05-02 2016-11-22 Cavium, Inc. Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host
US9430268B2 (en) * 2014-05-02 2016-08-30 Cavium, Inc. Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers
US20170228173A9 (en) * 2014-05-02 2017-08-10 Cavium, Inc. Systems and methods for enabling local caching for remote storage devices over a network via nvme controller
US9384093B1 (en) 2014-05-28 2016-07-05 Microsemi Storage Solutions (U.S.), Inc. Raid enabled NVME device
US20160342463A1 (en) 2015-05-20 2016-11-24 Kabushiki Kaisha Toshiba Data protection in a namespace
JP6441171B2 (ja) * 2015-06-12 2018-12-19 東芝メモリ株式会社 メモリシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130080732A1 (en) * 2011-09-27 2013-03-28 Fusion-Io, Inc. Apparatus, system, and method for an address translation layer

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11327885B2 (en) 2019-11-28 2022-05-10 SKhynix Inc. Controller managing namespace and memory system having the controller

Also Published As

Publication number Publication date
KR102042643B1 (ko) 2019-12-02
CN108984420B (zh) 2023-07-07
US10275361B2 (en) 2019-04-30
CN108984420A (zh) 2018-12-11
JP2018206384A (ja) 2018-12-27
US20180349285A1 (en) 2018-12-06

Similar Documents

Publication Publication Date Title
KR102042643B1 (ko) 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
CN111475427B (zh) 使用低延迟非易失性存储器进行逻辑至物理映射管理
US10445246B2 (en) Memory system and method for controlling nonvolatile memory
US11232041B2 (en) Memory addressing
KR102603070B1 (ko) 메모리 시스템, 메모리 시스템에 데이터를 기록하는 방법 및 메모리 시스템으로부터 데이터를 판독하는 방법
JP2021114038A (ja) メモリシステムおよび制御方法
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
US20080126684A1 (en) Caching method for nand flash translation layer
US10229052B2 (en) Reverse map logging in physical media
CN108027764B (zh) 可转换的叶的存储器映射
US11200159B2 (en) System and method for facilitating efficient utilization of NAND flash memory
CN108628762B (zh) 一种固态存储设备及其处理io命令的方法
CN108614671B (zh) 基于命名空间的键-数据访问方法与固态存储设备
Lee et al. An efficient buffer management scheme for implementing a B-tree on NAND flash memory
US11366609B2 (en) Technique for encoding deferred reference count increments and decrements
US9798470B2 (en) Memory system for storing and processing translation information
JP7407230B2 (ja) キー値データ記憶デバイスのためのeccパリティ偏り
CN114625318A (zh) 应用于固态硬盘的数据写入方法、装置、设备
TW201624491A (zh) 資訊處理裝置及非暫態電腦可讀取記錄媒體
CN115563026B (zh) 一种映射表的重建方法及数据存储设备
CN117891392A (zh) 固态硬盘的压缩数据的管理方法及系统

Legal Events

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