KR102652694B1 - 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화 - Google Patents

서브 블록 모드를 사용한 구역 네임스페이스 제한 완화 Download PDF

Info

Publication number
KR102652694B1
KR102652694B1 KR1020210082728A KR20210082728A KR102652694B1 KR 102652694 B1 KR102652694 B1 KR 102652694B1 KR 1020210082728 A KR1020210082728 A KR 1020210082728A KR 20210082728 A KR20210082728 A KR 20210082728A KR 102652694 B1 KR102652694 B1 KR 102652694B1
Authority
KR
South Korea
Prior art keywords
blocks
sub
data
block
storage device
Prior art date
Application number
KR1020210082728A
Other languages
English (en)
Other versions
KR20220031490A (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 KR20220031490A publication Critical patent/KR20220031490A/ko
Application granted granted Critical
Publication of KR102652694B1 publication Critical patent/KR102652694B1/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/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/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

구역들을 메모리의 블록들의 서브-블록들에 맵핑함으로써 구역 네임스페이스(ZNS) 아키텍처들에서 가비지 컬렉션을 감소시키거나 제거하는, 메모리 및 제어기를 포함하는 저장 디바이스의 태양들이 제공된다. 각각의 구역은 복수의 논리적 어드레스들을 포함한다. 제어기는 개방 구역들의 수를 결정하고, 개방 구역들의 수가 임계치를 충족하는 것에 응답하여 개방 구역들을 서브-블록들에 맵핑한다. 따라서, ZNS에 전형적으로 존재하는 더 많은 수의 개방 블록들이 감소될 수 있고, 스케일링으로 인한 증가된 블록 크기들이 ZNS에 수용될 수 있다. 일부 태양들에서, 제어기는, 서브-블록들 내에 구역들과 연관된 데이터를 기록하라는 호스트 디바이스로부터의 요청을 수신하고, 요청에 응답하여 구역들 각각을 서브-블록들 중 적어도 하나에 맵핑한다. 요청은 구역들이 부분적으로 미사용됨을 표시할 수 있다. 따라서, 구역을 다 써버리는 상황들이 또한 회피될 수 있다.

Description

서브 블록 모드를 사용한 구역 네임스페이스 제한 완화{ZONED NAMESPACE LIMITATION MITIGATION USING SUB BLOCK MODE}
관련 출원의 상호 참조
본 출원은 2020년 9월 4일자로 출원되고, 발명의 명칭이 "Zoned Namespace Limitation Mitigation Using Sub Block Mode"인 미국 가특허 출원 제63/074,936호의 이익 및 그에 대한 우선권을 주장하며, 그 전체 내용은 마치 본 명세서에 완전히 기술된 것처럼 본 명세서에 참고로 포함된다.
기술분야
본 발명은 대체적으로 전자 디바이스들에 관한 것으로, 더 구체적으로는, 저장 디바이스들에 관한 것이다.
저장 디바이스들은 사용자들이 데이터를 저장 및 취출(retrieve)할 수 있게 한다. 저장 디바이스들의 예들은 비휘발성 메모리 디바이스들을 포함한다. 비휘발성 메모리는 대체적으로 전력 사이클 후에 데이터를 보유한다. 비휘발성 메모리의 일례는 플래시 메모리이며, 이는 하나 이상의 다이들 상에 NAND 셀들의 어레이(들)를 포함할 수 있다. 플래시 메모리는 솔리드 스테이트 디바이스(solid-state device, SSD), 보안 디지털(Secure Digital, SD) 카드 등에서 발견될 수 있다.
플래시 저장 디바이스는 데이터와 연관된 제어 정보를 저장할 수 있다. 예를 들어, 플래시 저장 디바이스는 논리적 어드레스들을 물리적 어드레스들에 맵핑(mapping)하는 것을 포함하는 제어 테이블들을 유지할 수 있다. 이러한 제어 테이블들은 플래시 메모리 내의 논리 섹터들 또는 블록들의 물리적 위치를 추적하는 데 사용된다. 제어 테이블들은 전력 사이클 후에 저장된 데이터에 대한 액세스를 가능하게 하도록 비휘발성 메모리에 저장된다.
구역 네임스페이스(Zoned Namespace, ZNS)는, 비휘발성 메모리가 논리적 어드레스들의 고정된 크기의 그룹들 또는 구역들로 분할되는 SSD 네임스페이스 아키텍처이다. 각각의 구역은 특정 애플리케이션에 사용된다. 예를 들어, 호스트는 상이한 애플리케이션들과 연관된 데이터를 상이한 구역들 내에 기록할 수 있다. 구역들은 단일 다이(die)에 걸쳐 퍼져 있으며, 이때 각각의 구역은 대체적으로 48 MB 또는 64 MB 크기에 걸쳐 있다. 플래시 저장 디바이스는 호스트와 인터페이싱(interfacing)하여 정의된 구역들을 획득하고, 구역들을 플래시 메모리 내의 블록들에 맵핑시킨다. 따라서, 호스트는 별개의 애플리케이션-관련 데이터를 플래시 메모리의 별개의 블록들 내에 기록할 수 있다.
전통적으로, 플래시 저장 디바이스 내의 데이터는, 예를 들어, 호스트가 데이터를 덮어쓸 때, 소형 청크(chunk)들(예컨대, 4 KB의 데이터) 내에서 무효화될 수 있다. 플래시 메모리로부터 무효화된 데이터를 제거하기 위해, 플래시 저장 디바이스는 가비지 컬렉션(garbage collection, GC) 프로세스를 수행하는데, 이 가비지 컬렉션 프로세스에서, 유효 데이터는 새로운 블록으로 복사될 수 있고 무효화된 데이터는 예전 블록으로부터 소거된다. 그러나, ZNS에서, 구역 내의 데이터가 무효화되기 전에는, 구역이 순차적으로 기록되므로, 전체 구역은 한 번에 무효화될 수 있다(예컨대, 48 또는 64 MB의 데이터). ZNS의 이러한 특징은 GC를 감소시키거나 제거하며, 이는 이어서 기록 증폭(write amplification, WA)을 감소시킨다. 그 결과, ZNS는 플래시 저장 디바이스의 내구성을 최적화할 뿐만 아니라, 입력/출력(I/O) 커맨드 레이턴시(latency)들의 일관성을 개선할 수 있다.
저장 디바이스의 일 태양이 본 명세서에 개시된다. 저장 디바이스는 메모리 및 제어기를 포함한다. 메모리는 복수의 블록들을 포함하고, 여기서 블록들 각각은 복수의 서브-블록들을 포함한다. 제어기는 구역을 서브-블록들 중 적어도 하나에 맵핑하도록 구성되며, 여기서 구역은 복수의 논리적 어드레스들을 포함한다.
저장 디바이스의 다른 태양이 본 명세서에 개시된다. 저장 디바이스는 메모리 및 제어기를 포함한다. 메모리는 복수의 블록들을 포함하고, 여기서 블록들 각각은 복수의 서브-블록들을 포함한다. 제어기는 개방 구역들의 수를 결정하도록, 그리고 개방 구역들의 수가 임계치를 충족하는 것에 응답하여 개방 구역들을 서브-블록들에 맵핑하도록 구성된다.
저장 디바이스의 추가 태양이 본 명세서에 개시된다. 저장 디바이스는 메모리 및 제어기를 포함한다. 메모리는 복수의 블록들을 포함하고, 여기서 블록들 각각은 복수의 서브-블록들을 포함한다. 제어기는, 서브-블록들 내에 구역들과 연관된 데이터를 기록하라는 요청을 수신하도록, 그리고 요청에 응답하여 구역들 각각을 서브-블록들 중 적어도 하나에 맵핑하도록 구성된다.
저장 디바이스의 다른 태양들은 하기의 상세한 설명으로부터 당업자에게 용이하게 명백해질 것임이 이해될 것이며, 여기서 장치들 및 방법들의 다양한 태양들이 예시로서 도시되고 기술된다. 실현되는 바와 같이, 이러한 태양들은 다른 그리고 상이한 형태들로 구현될 수 있고, 그의 여러 세부사항들은 다양한 다른 태양들에서 수정될 수 있다. 따라서, 도면 및 상세한 설명은 사실상 예시적인 것으로 간주되어야 하며 제한적인 것은 아니다.
이제, 본 발명의 다양한 태양들이, 첨부 도면을 참조하여, 제한으로서가 아니라 예로서 상세한 설명에서 제시될 것이다.
도 1은 호스트 디바이스와 통신하는 저장 디바이스의 예시적인 실시예를 예시하는 블록도이다.
도 2는 도 1의 저장 디바이스의 비휘발성 메모리 내의 논리적-물리적(logical-to-physical, L2P) 맵핑 테이블의 일례를 예시하는 개념도이다.
도 3은 도 1의 저장 디바이스 내의 메모리 셀들의 어레이의 일례를 예시하는 개념도이다.
도 4는 도 1의 저장 디바이스 내의 블록들의 어레이의 일례를 예시하는 개념도이다.
도 5는 도 1의 저장 디바이스 내에 구현될 수 있는 가비지 컬렉션(GC) 프로세스의 일례를 예시하는 개념도이다.
도 6은 도 1의 저장 디바이스에 의해 수신되는 논리적 어드레스들의 그룹들에 대한 구역들의 연관성의 일례를 예시하는 개념도이다.
도 7은 상이한 구역들에 맵핑되는 블록들에 데이터를 기록하는 도 1의 저장 디바이스의 제어기의 일례를 예시하는 개념도이다.
도 8은 상이한 구역들에 맵핑되는 서브-블록들에 데이터를 기록하는 도 1의 저장 디바이스의 제어기의 일례를 예시하는 개념도이다.
도 9는 도 1의 저장 디바이스 내에서의 제어기에 의한 서브-블록들에의 구역들의 예시적인 맵핑을 예시하는 개념도이다.
도 10은 도 1의 저장 디바이스 내에서의 제어기에 의한 서브-블록들에의 구역들의 다른 예시적인 맵핑을 예시하는 개념도이다.
도 11은 도 1의 저장 디바이스 내에서의 제어기에 의한 서브-블록들에의 구역들의 추가의 예시적인 맵핑을 예시하는 개념도이다.
도 12는 도 1의 저장 디바이스에 의해 수행되는 것과 같은, 서브-블록들에 맵핑되는 구역들에 데이터를 기록하기 위한 방법을 예시하는 흐름도이다.
첨부된 도면들과 관련하여 하기에서 설명되는 상세한 설명은 본 발명의 다양한 예시적인 실시예들의 설명으로서 의도되며, 본 발명이 실시될 수 있는 유일한 실시예들을 표현하도록 의도되지 않는다. 상세한 설명은 본 발명의 완전한 이해를 제공하려는 목적으로 구체적인 상세사항들을 포함한다. 그러나, 본 발명이 이러한 구체적인 상세사항들 없이 실시될 수 있다는 것은 당업자들에게 명백할 것이다. 일부 경우에, 주지된 구조물들 및 컴포넌트들은 본 발명의 개념들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다. 두문자어들 및 다른 서술적 용어는 단지 편의상 그리고 명확함을 위해 사용될 수 있으며, 본 발명의 범주를 제한하도록 의도되지 않는다.
단어들 "예시적인" 및 "예"는 본 명세서에서 일례, 사례, 또는 예시의 역할을 의미하는 데 사용된다. 본 명세서에서 "예시적인"으로 기술되는 임의의 예시적인 실시예는 반드시 다른 예시적인 실시예들에 비해 바람직하거나 유리한 것으로 해석되어야 하는 것은 아니다. 마찬가지로, 장치, 방법 또는 제조 물품의 "예시적인 실시예"라는 용어는 본 발명의 모든 예시적인 실시예들이 기술된 컴포넌트들, 구조, 특징부들, 기능성, 프로세스들, 이점들, 이득들, 또는 작동 모드들을 포함하는 것을 요구하지는 않는다.
본 명세서에 사용되는 바와 같이, 용어 "결합된"은 2개의 컴포넌트들 사이의 직접적인 접속 또는, 적절한 경우, 개재된 또는 중간 컴포넌트들을 통한 서로에 대한 간접적인 접속을 나타내는 데 사용된다. 대조적으로, 컴포넌트가 다른 컴포넌트에 "직접 결합된" 것으로 지칭될 때, 개재된 요소가 존재하지 않는다.
하기의 상세한 설명에서, 호스트 디바이스와 통신하는 저장 디바이스의 다양한 태양들이 제시될 것이다. 이들 태양들은 SSD들 및 SD 카드들과 같은 플래시 저장 디바이스들에 매우 적합하다. 그러나, 당업자는 이러한 태양들이 데이터를 저장할 수 있는 모든 타입들의 저장 디바이스들로 확장될 수 있다는 것을 인식할 것이다. 따라서, 특정 장치 또는 방법에 대한 임의의 언급은, 본 발명의 다양한 태양들이 본 발명의 사상 및 범주로부터 벗어남이 없이 광범위한 응용들을 가질 수 있다는 이해 하에, 단지 그러한 태양들을 예시하도록 의도된다.
전형적으로, ZNS에서, 호스트는 구역들 또는 논리적 어드레스들의 그룹들의 정의를 플래시 저장 디바이스에 제공한다. 예를 들어, 호스트는, 48 또는 64 MB의 데이터에 대응하는 LBA들의 하나의 그룹이 제1 구역과 연관되고, 다른 48 또는 64 MB의 데이터에 대응하는 LBA들의 다른 그룹이 제2 구역과 연관되는 등을 표시할 수 있다. 이어서, 플래시 저장 디바이스는 각각의 구역을 플래시 메모리 내의 단일 블록에 맵핑시킨다. 예를 들어, 플래시 저장 디바이스는 제1 구역과 연관된 LBA들을 제1 물리적 블록에 맵핑시키고, 제2 구역과 연관된 LBA들을 제2 물리적 블록에 맵핑시키는 등을 할 수 있다. 블록에 대한 각각의 구역의 이러한 일대일 맵핑은 효과적으로 구역들을 독립적이게 함으로써 GC의 감소 또는 제거를 허용한다. 예를 들어, 하나의 구역에 맵핑된 블록에 데이터를 순차적으로 기록한 후에, 호스트는, 다른 구역들/블록들 내의 데이터에는 영향을 주지 않으면서, 그 블록만을 소거하도록 플래시 저장 디바이스에 명령함으로써 그 구역을 무효화할 수 있다.
그러나, 이러한 구역-블록(zone-to-block) 맵핑의 결과, ZNS는 플래시 저장 디바이스 내에 다수의 개방 블록들을 야기할 수 있다. 예를 들어, 전형적으로 소수의 개방 블록들(예컨대, 쿼드-레벨 셀(quad-level cell, QLC)들과 같은 다중-레벨 셀들(multi-level cell, MLC)의 1개 또는 2개의 개방 블록들)을 갖는 전통적인 플래시 저장 디바이스들과는 달리, ZNS를 구현하는 플래시 저장 디바이스들은 호스트의 애플리케이션들의 수에 따라 상당히 더 많은 개방 블록들(예컨대, 최소 12개 내지 최대 4,000개 사이의 개방 블록들)을 가질 수 있다. 개방 블록들이 폐쇄 블록들보다 더 불량한 데이터 보유(data retention, DR) 속성들(예컨대, 더 많은 플립핑된 비트 카운트들)을 갖는다고 알려져 있기 때문에(특히 QLC 블록들과 같은 MLC 개방 블록들), 플래시 저장 디바이스의 데이터 신뢰성 또는 무결성은 ZNS에 의해 상당히 영향을 받을 수 있다.
추가적으로, 플래시 저장 디바이스들이 다음 세대들을 향해 이동함에 따라 물리적 블록 크기들(예컨대, 워드 라인들 및 스트링들의 수들)이 증가하는 경향이 있다. 예를 들어, BICs4 플래시 저장 디바이스들은 현재, 블록 내에 96개의 워드 라인들을 갖고, BICs5 플래시 저장 디바이스들은 블록 내에 112개의 워드 라인들을 가질 수 있고, BICs6 플래시 저장 디바이스들은 블록 내에 훨씬 더 많은 워드 라인들을 가질 것으로 예상된다. 그럼에도 불구하고, 플래시 저장 디바이스는 증가하는 물리적 블록 크기들을 지원할 수 있지만, 호스트는 상이한 구역 크기들을 지원하지 못할 수 있다(즉, 구역 크기들이 ZNS에 고정됨). 이는 각각의 블록 내의 미사용 저장 공간을 야기할 수 있고, 이에 따라 저장 용량을 낭비할 수 있다. 예를 들어, 각각의 블록의 용량이 미래의 세대들에서 64 MB로부터 128 MB로 증가하더라도, 호스트는 여전히 각각의 블록에 맵핑되는 구역 내에 기껏해야 64 MB의 데이터만을 기록할 수 있고, 그 결과 각각의 블록의 나머지 64 MB는 미사용된다.
추가로, 일부 경우에, 호스트는, 호스트가 각자의 구역 내에 채울 수 있는 다량의 데이터와 각각 연관된 소수의 애플리케이션들을 가질 수 있지만(예컨대, 수 개의 애플리케이션들 또는 구역들에 대해 48 또는 64 MB의 데이터), 다른 경우에, 호스트는, 호스트가 각자의 구역 내에 기록할 수 있는 단지 소량의 데이터와 각각 연관된 다수의 애플리케이션들을 가질 수 있다(예컨대, 여러 개의 애플리케이션들 또는 구역들에 대해 24 또는 32 MB의 데이터). 전술된 바와 같이 구역들이 개별 물리적 블록들에 맵핑되지만, 맵핑될 수 있는 개방 블록들의 수가 제한되면, 후자의 경우에 플래시 저장 디바이스는 구역들을 다 써버릴 수 있다. 예를 들어, 플래시 저장 디바이스 내에 10개의 개방 블록들만이 이용가능하지만, 호스트가 그의 애플리케이션 데이터를 위해 10개 초과의 구역들을 요구하면, 플래시 저장 디바이스는, 특히 각각의 애플리케이션 데이터 크기가 작은 경우에(예컨대, 구역 크기의 절반), 1-구역/1-블록 맵핑 스킴에 기초하여 호스트의 요건들을 효율적으로 지원하지 못할 수 있다.
ZNS의 전술된 제한들 또는 효과들(예컨대, 불량한 DR을 갖는 다수의 개방 블록들, 증가된 블록 크기들에 대한 적응성의 결여, 및 작은 데이터 애플리케이션들에 대한 구역을 다 써버린 비효율적인 상황)을 완화시키기 위해, 제어기는 구역들에 대한 서브-블록들 및 맵핑을 활용한다. 호스트로부터의 구역들의 정의(예컨대, 논리적 어드레스로의 구역의 맵핑) 또는 ZNS가 사용될 것임을 표시하는 일부 다른 메시지를 수신하는 것에 응답하여, 제어기는 서브-블록 모드(sub-block mode, SBM)를 인에이블(enable)한다. SBM에서, 구역에 맵핑될 각각의 블록은 다수의 서브-블록들로 분할된다. 예를 들어, 96개의 워드 라인들(즉, WL 0 내지 WL 95)을 갖는 블록은, 하부 워드 라인들(즉, WL 0 내지 WL 47)이 하나의 서브-블록 내에 포함되고 상부 워드 라인들(즉, WL 48 내지 WL 95)이 다른 서브-블록 내에 포함되도록 분할될 수 있다. 서브-블록들은 독립적으로 프로그래밍가능하고, 판독가능하고, 소거가능하도록 구성되고; 예를 들어, 선택된 서브-블록 내에서만 데이터를 판독, 프로그래밍, 또는 소거할 수 있도록, 미선택된 서브-블록 내에서와는 상이한 전압들이 선택된 서브-블록 내의 워드 라인들에 인가될 수 있다. 서브-블록들의 이러한 속성은 각각의 구역의 독립성, 및 이에 따라 ZNS로부터의 GC의 감소 또는 제거가 유지되도록 허용한다.
저장 디바이스 내의 개방 블록들의 수를 감소시키고 그에 따라 데이터 보유를 개선하기 위해, 제어기는 각각의 구역을 (상이한 블록들 내의) 2개의 서브-블록들에 맵핑할 수 있다. 예를 들어, 제어기는 개방 블록들 또는 구역들의 수가 개방 구역 임계치를 초과하는지를 결정할 수 있고, 그 경우에, 제어기는 SBM을 인에이블하고 각각의 구역의 절반을 하나의 블록 내의 서브-블록에 맵핑하고 각각의 구역의 다른 절반을 다른 블록 내의 서브-블록에 맵핑할 수 있다. 따라서, 각각의 물리적 블록은, 전통적인 ZNS 구현예에서와 같이 하나의 구역에 맵핑하기보다는, 2개의 상이한 구역들에 맵핑될 수 있다. 이러한 맵핑의 일례가 도 9에 예시되어 있다. 그러한 맵핑은 개방 블록들을 가질 확률을 감소시키는 역할을 하는데, 그 이유는 동일한 블록에 맵핑되는 2개의 부분적으로 기록된 구역들이, 전통적인 ZNS에서와 같이 2개의 개방 블록들을 생성하기보다는, 하나의 폐쇄 블록을 생성할 수 있기 때문이다.
더욱이, 증가된 블록 크기들과의 ZNS 호환성을 유지하기 위해, 그러한 증가된 블록 크기들이 구역 크기와 등가인 경우, 제어기는 각각의 구역을 하나의 서브-블록에 맵핑할 수 있다. 예를 들어, 서브-블록 크기가 2배인 경우, 전술된 바와 같이 구역의 절반을 서브-블록에 맵핑하는 대신에, 제어기는 전체 구역을 서브-블록에 맵핑할 수 있다. 이러한 맵핑의 일례가 도 10에 예시되어 있다. 그러한 맵핑은 증가된 블록 크기들로 인해 각각의 블록 내의 미사용 공간이 발생하는 것을 방지하며, 따라서 전통적인 ZNS 구현예들로부터 야기될 수 있는 낭비되는 저장 용량을 제거한다.
추가로, 호스트가 비교적 소량의 데이터(예컨대, 24 또는 32 MB의 데이터와 같은 전형적인 구역 크기의 절반)만을 기록하는 다수의 애플리케이션들을 관리하는 경우에 플래시 저장 디바이스가 구역들을 다 써버리는 상황을 최소화하기 위해, 하나 이상의 애플리케이션들이 소량의 데이터만을 기록할 것임을 표시하는 SBM에 대한 호스트로부터의 요청에 응답하여, 제어기는 SBM을 활성화시킬 수 있다. 예를 들어, 그 표시는, 호스트가, 각각의 표시된 구역의 절반만이 각자의 애플리케이션에 의해 채워질 것임을 보장하는 표시와 같은, 어떤 구역들이 호스트에 의해 완전히 기록되지 않을지에 대한 식별자들을 포함할 수 있다. 그러한 경우에, 제어기는 각각의 표시된 구역을 단일 서브-블록에 맵핑할 수 있다. 이러한 맵핑의 일례가 도 11에 예시되어 있다. 그러한 맵핑은, 전통적인 ZNS 구현예들에서보다 더 많은 애플리케이션들과 함께 사용하기 위해 더 많은 개방 블록들이 맵핑되도록 허용함으로써 (절반 용량의) 더 많은 구역들을 효과적으로 생성한다.
도 1은 예시적인 실시예에 따른, 호스트 디바이스(104)(또한, "호스트")와 통신하는 저장 디바이스(102)의 예시적인 블록도(100)를 도시한다. 호스트(104) 및 저장 디바이스(102)는 컴퓨터 시스템(예컨대, 서버, 데스크톱, 모바일/랩톱, 태블릿, 스마트폰 등)과 같은 시스템을 형성할 수 있다. 도 1의 컴포넌트들은 물리적으로 공동 위치될 수 있거나 또는 공동 위치되지 않을 수 있다. 이와 관련하여, 호스트(104)는 저장 디바이스(102)로부터 원격으로 위치될 수 있다. 도 1은 호스트(104)가 저장 디바이스(102)와는 별개인 것으로 도시되어 있지만, 다른 실시예들에서, 호스트(104)는 전체적으로 또는 부분적으로 저장 디바이스(102) 내에 통합될 수 있다. 대안으로, 호스트(104)는 그 전체가 다수의 원격 엔티티들에 걸쳐서, 또는 대안으로, 저장 디바이스(102)에서의 일부 기능성을 갖고서 분산될 수 있다.
당업자는, 다른 예시적인 실시예들이 도 1에 도시된 그들 요소들보다 더 많게 또는 더 적게 포함할 수 있고, 개시된 프로세스들이 다른 환경들에서 구현될 수 있다는 것을 이해할 것이다. 예를 들어, 다른 예시적인 실시예들은 저장 디바이스(102)와 통신하는 상이한 수의 호스트들, 또는 호스트(들)와 통신하는 다수의 저장 디바이스들(102)을 포함할 수 있다.
호스트 디바이스(104)는 저장 디바이스(102)에 데이터를 저장하고/하거나 그로부터 데이터를 취출할 수 있다. 호스트 디바이스(104)는, 예를 들어 컴퓨터 서버, 네트워크 부착 저장 장치(network attached storage, NAS) 유닛, 데스크톱 컴퓨터, 노트북(예컨대, 랩톱) 컴퓨터, 태블릿 컴퓨터, 스마트폰과 같은 모바일 컴퓨팅 디바이스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스 등을 포함하는 임의의 컴퓨팅 디바이스를 포함할 수 있다. 호스트 디바이스(104)는 적어도 하나의 프로세서(101) 및 호스트 메모리(103)를 포함할 수 있다. 적어도 하나의 프로세서(101)는 데이터를 프로세싱할 수 있는 임의의 형태의 하드웨어를 포함할 수 있고, 범용 프로세싱 유닛(예컨대, 중앙 프로세싱 유닛(central processing unit, CPU)), 전용 하드웨어(예컨대, 주문형 집적 회로(application specific integrated circuit, ASIC)), 디지털 신호 프로세서(digital signal processor, DSP), 구성가능형 하드웨어(예컨대, 필드 프로그래밍가능 게이트 어레이(field programmable gate array, FPGA)), 또는 소프트웨어 명령어들, 펌웨어 등에 의해 구성되는 임의의 다른 형태의 프로세싱 유닛을 포함할 수 있다. 호스트 메모리(103)는, 호스트에 의해 프로세싱되는 데이터 또는 명령어들 또는 저장 디바이스(102)로부터 수신된 데이터를 저장하기 위해 호스트 디바이스(104)에 의해 사용될 수 있다. 일부 예들에서, 호스트 메모리(103)는 비휘발성 메모리, 예컨대 자기 메모리 디바이스들, 광학 메모리 디바이스들, 홀로그래픽 메모리 디바이스들, 플래시 메모리 디바이스들(예컨대, NAND 또는 NOR), 상변화 메모리(phase-change memory, PCM) 디바이스들, 저항성 랜덤 액세스 메모리(resistive random-access memory, ReRAM) 디바이스들, 자기 저항성 랜덤 액세스 메모리(magnetoresistive random-access memory, MRAM) 디바이스들, 강유전성 랜덤 액세스 메모리(ferroelectric random-access memory, F-RAM), 및 임의의 다른 타입의 비휘발성 메모리 디바이스들을 포함할 수 있다. 다른 예들에서, 호스트 메모리(103)는 휘발성 메모리, 예컨대 랜덤 액세스 메모리(random-access memory, RAM), 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM), 정적 RAM(static RAM, SRAM), 및 동기식 동적 RAM(synchronous dynamic RAM, SDRAM)(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 등)을 포함할 수 있다. 호스트 메모리(103)는, 또한, 함께 통합되든 아니면 별개의 유닛들로서든, 비휘발성 메모리 및 휘발성 메모리 둘 모두를 포함할 수 있다.
호스트 인터페이스(106)는 버스/네트워크(108)를 통해 저장 디바이스(102)를 호스트(104)와 인터페이싱하도록 구성되고, 예를 들어, 이더넷(Ethernet) 또는 와이파이(WiFi), 또는 다른 가능한 후보들 중에서, SATA(Serial Advanced Technology Attachment), PCIe(PCI express), SCSI(Small Computer System Interface), 또는 SAS(Serial Attached SCSI)와 같은 버스 표준을 사용하여 인터페이싱할 수 있다. 대안으로, 호스트 인터페이스(106)는 무선일 수 있고, 예를 들어 셀룰러 통신(예컨대, 5G NR, 4G LTE, 3G, 2G, GSM/UMTS, CDMA One/CDMA2000 등), 액세스 포인트들을 통한 무선 분배 방법들(예컨대, IEEE 802.11, WiFi, HiperLAN 등), 적외선(Infra Red, IR), 블루투스(Bluetooth), 지그비(Zigbee), 또는 다른 무선 광역망(Wireless Wide Area Network, WWAN), 무선 근거리망(Wireless Local Area Network, WLAN), 무선 사설망(Wireless Personal Area Network, WPAN) 기술, 또는 유사한 광역, 근거리, 및 개인 영역 기술들을 사용하여, 저장 디바이스(102)를 호스트(104)와 인터페이싱할 수 있다.
저장 디바이스(102)는 메모리를 포함한다. 예를 들어, 도 1의 예시적인 실시예에서, 저장 디바이스(102)는 호스트(104)로부터 수신된 데이터의 영구 저장을 위해 비휘발성 메모리(NVM)(110)를 포함할 수 있다. NVM(110)은, 예를 들어 플래시 집적 회로들, NAND 메모리(예컨대, 단일 레벨 셀(single-level cell, SLC) 메모리, 다중 레벨 셀(multi-level cell, MLC) 메모리, 3중 레벨 셀(triple-level cell, TLC) 메모리, 4중 레벨 셀(quad-level cell, QLC) 메모리, 5중 레벨 셀(penta-level cell, PLC) 메모리, 또는 이들의 임의의 조합), 또는 NOR 메모리를 포함할 수 있다. NVM(110)은 저장 디바이스(102)를 동작시키기 위한 시스템 데이터 또는 저장 디바이스(102)에 저장하기 위해 호스트로부터 수신된 사용자 데이터를 저장할 수 있는 복수의 메모리 위치들(112)을 포함할 수 있다. 예를 들어, NVM은 n개의 행(row)들 및 m개의 열(column)들을 갖는 메모리 위치들(112)의 2-D NAND 어레이를 포함하는 크로스포인트 아키텍처를 가질 수 있으며, 여기서 mn은 NVM의 크기에 따라 사전정의된다. 도 1의 예시적인 실시예에서, 각각의 메모리 위치(112)는 다수의 셀들(116)의 다수의 블록들을 각각 포함하는 다수의 평면들을 포함하는 다이(114)일 수 있다. 대안적으로, 각각의 메모리 위치(112)는 셀들(116)의 다수의 블록들을 포함하는 평면일 수 있다. 셀들(116)은, 예를 들어 단일 레벨 셀들, 다중 레벨 셀들, 3중 레벨 셀들, 4중 레벨 셀들, 및/또는 5중 레벨 셀들일 수 있다. 메모리 위치들(112)의 다른 예들이 가능하고; 예를 들어, 각각의 메모리 위치는 한 블록 또는 블록들의 그룹일 수 있다. 각각의 메모리 위치는 3-D NAND 어레이 내의 하나 이상의 블록들을 포함할 수 있다. 각각의 메모리 위치(112)는 하나 이상의 물리적 블록들에 맵핑되는 하나 이상의 논리적 블록들을 포함할 수 있다. 대안적으로, 메모리 및 각각의 메모리 위치는 당업자들에게 알려진 다른 방식들로 구현될 수 있다.
저장 디바이스(102)는, 또한, 예를 들어 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있는 휘발성 메모리(118)를 포함한다. 휘발성 메모리(118)에 저장된 데이터는 NVM(110)으로부터 판독되는 데이터 또는 NVM(110)에 기록될 데이터를 포함할 수 있다. 이와 관련하여, 휘발성 메모리(118)는 데이터를 일시적으로 저장하기 위한 기록 버퍼 또는 판독 버퍼를 포함할 수 있다. 도 1은 휘발성 메모리(118)가 저장 디바이스(102)의 제어기(123)로부터 멀리 있는 것으로 도시하고 있지만, 휘발성 메모리(118)는 제어기(123) 내에 통합될 수 있다.
메모리(예컨대, NVM(110))는 호스트 디바이스(104)로부터 수신된 데이터(119)를 저장하도록 구성된다. 데이터(119)는 메모리 위치들(112) 중 임의의 것의 셀들(116)에 저장될 수 있다. 일례로서, 도 1은 데이터(119)가 상이한 메모리 위치들(112)에 저장된 것을 도시하지만, 데이터는 동일한 메모리 위치에 저장될 수도 있다. 다른 예에서, 메모리 위치들(112)은 상이한 다이들일 수 있고, 데이터는 상이한 다이들 중 하나 이상에 저장될 수 있다.
데이터(119) 각각은 논리적 어드레스와 연관될 수 있다. 예를 들어, NVM(110)은 각각의 데이터(119)를 논리적 어드레스와 연관시키는, 저장 디바이스(102)에 대한 논리적-물리적(L2P) 맵핑 테이블(120)을 저장할 수 있다. L2P 맵핑 테이블(120)은 호스트(104)로부터 기록된 데이터에 대해 명시된 논리적 어드레스들을, 데이터 각각이 저장되는 위치(들)를 나타내는 NVM(110) 내의 물리적 어드레스들에 맵핑시킨 것을 저장한다. 이러한 맵핑은 저장 디바이스의 제어기(123)에 의해 수행될 수 있다. L2P 맵핑 테이블은 데이터가 저장되는 NVM 내의 각각의 메모리 위치(112)와 연관된 논리적 블록 어드레스(LBA)와 같은 식별자를 포함하는 테이블 또는 다른 데이터 구조일 수 있다. 도 1이 도 1의 개념들을 과도하게 모호하게 하는 것을 회피하기 위해 NVM의 메모리 위치들(112) 중 하나에 저장된 단일 L2P 맵핑 테이블(120)을 도시하고 있지만, L2P 맵핑 테이블(120)은 사실상, NVM의 하나 이상의 메모리 위치들에 저장된 다수의 테이블들을 포함할 수 있다.
도 2는 호스트 디바이스로부터 수신된 데이터(202)를 도 1의 NVM(110) 내의 논리적 어드레스들 및 물리적 어드레스들에 맵핑시키는 것을 예시한 L2P 맵핑 테이블(205)의 일례의 개념도(200)이다. 데이터(202)는 도 1의 데이터(119)에 대응할 수 있는 반면, L2P 맵핑 테이블(205)은 도 1의 L2P 맵핑 테이블(120)에 대응할 수 있다. 하나의 예시적인 실시예에서, 데이터(202)는 하나 이상의 페이지들(204), 예컨대, 페이지 1 내지 페이지 x에 저장될 수 있으며, 여기서 x는 NVM(110)에 기록되고 있는 데이터의 페이지들의 총 수이다. 각각의 페이지(204)는 논리적 블록 어드레스(LBA)(208), NVM에 기록된 데이터와 연관된 물리적 어드레스(210), 및 데이터의 길이(212)를 식별하는 L2P 맵핑 테이블(205)의 하나 이상의 엔트리들(206)과 연관될 수 있다. LBA(208)는 호스트 디바이스로부터 수신된 데이터에 대한 기록 커맨드에서 명시된 논리적 어드레스일 수 있다. 물리적 어드레스(210)는 LBA(208)와 연관된 데이터가 물리적으로 기록되는 오프셋 및 블록을 나타낼 수 있다. 길이(212)는 기록된 데이터의 크기(예컨대, 4 KB 또는 일부 다른 크기)를 나타낼 수 있다.
도 1을 다시 참조하면, 휘발성 메모리(118)는 또한 저장 디바이스(102)를 위한 캐시(122)를 저장한다. 캐시(122)는 호스트(104)에 의해 요청된 데이터에 대해 명시된 논리적 어드레스들을, 데이터가 저장되는 위치(들)를 나타내는 NVM(110) 내의 물리적 어드레스들에 맵핑시킨 것을 보여주는 엔트리들을 포함한다. 이러한 맵핑은 제어기(123)에 의해 수행될 수 있다. 제어기(123)가 데이터(119)에 대한 판독 커맨드 또는 기록 커맨드를 수신할 때, 제어기는 각각의 데이터의 논리적-물리적 맵핑을 위해 캐시(122)를 검사한다. 맵핑이 존재하지 않는 경우(예컨대, 그것이 데이터에 대한 제1 요청인 경우), 제어기는 L2P 맵핑 테이블(120)에 액세스하고 캐시(122) 내에 맵핑을 저장한다. 제어기(123)가 판독 커맨드 또는 기록 커맨드를 실행할 때, 제어기는 캐시로부터의 맵핑에 액세스하고, 명시된 물리적 어드레스에서의 NVM(110)으로부터 데이터를 판독하거나 그에 데이터를 기록한다. 캐시는 데이터가 판독되고 있는 NVM 내의 각각의 메모리 위치(112)와 연관된 논리적 어드레스를 포함하는 테이블 또는 다른 데이터 구조의 형태로 저장될 수 있다.
NVM(110)은 각각의 메모리 위치(112)에 접속된 감지 증폭기들(124) 및 데이터 래치들(126)을 포함한다. 예를 들어, 메모리 위치(112)는 다수의 비트 라인들 상에 셀들(116)을 포함하는 블록일 수 있고, NVM(110)은 각각의 비트 라인 상에 감지 증폭기(124)를 포함할 수 있다. 게다가, 하나 이상의 데이터 래치들(126)은 비트 라인들 및/또는 감지 증폭기들에 접속될 수 있다. 데이터 래치들은, 예를 들어 시프트 레지스터들일 수 있다. 데이터가 메모리 위치(112)의 셀들(116)로부터 판독될 때, 감지 증폭기들(124)은 비트 라인들 상의 전압들을 로직 레벨(예컨대, '0' 또는 '1'로서 판독가능함)로 증폭시킴으로써 데이터를 감지하고, 감지된 데이터는 데이터 래치들(126)에 저장된다. 이어서, 데이터는 데이터 래치들(126)로부터 제어기(123)로 전송되고, 그 후에 데이터는 그가 호스트 디바이스(104)로 전송될 때까지 휘발성 메모리(118)에 저장된다. 데이터가 메모리 위치(112)의 셀들(116)에 기록될 때, 제어기(123)는 데이터 래치(126)들에 프로그래밍된 데이터를 저장하고, 데이터는 후속으로 데이터 래치(126)들로부터 셀들(116)로 전송된다.
저장 디바이스(102)는, 명령어들을 실행하기 위한 하나 이상의 프로세서들과 같은 회로부를 포함하고 마이크로제어기, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이(FPGA), 하드웨어 내장형 로직(hard-wired logic), 아날로그 회로부 및/또는 이들의 조합을 포함할 수 있는 제어기(123)를 포함한다.
제어기(123)는 판독 커맨드에 응답하여 다양한 메모리 위치들(112)의 셀들(116) 중 하나 이상으로부터 전송된 데이터를 수신하도록 구성된다. 예를 들어, 제어기(123)는 셀들(116)로부터 데이터 래치들(126)로의 데이터를 감지하기 위해 감지 증폭기들(124)을 활성화시킴으로써 데이터(119)를 판독할 수 있고, 제어기(123)는 데이터 래치들(126)로부터 데이터를 수신할 수 있다. 제어기(123)는, 또한, 기록 커맨드에 응답하여 셀들(116) 중 하나 이상 내로 데이터를 프로그래밍하도록 구성된다. 예를 들어, 제어기(123)는 데이터를 데이터 래치들(126)로 전송하여 셀들(116) 내로 프로그래밍되게 함으로써 데이터(119)를 기록할 수 있다. 제어기(123)는, 데이터를 판독하거나 셀들(116)에 기록할 때, NVM(110) 내의 L2P 맵핑 테이블(120)에 액세스하도록 추가로 구성된다. 예를 들어, 제어기(123)는 호스트 디바이스(104)로부터의 판독 또는 기록 커맨드들에 응답하여 NVM(110)으로부터 논리적-물리적 어드레스 맵핑들을 수신할 수 있고, 커맨드들에서 식별된 논리적 어드레스들에 맵핑된 물리적 어드레스들을 식별할 수 있고(예컨대, 논리적 어드레스들을 물리적 어드레스들로 변환함), 맵핑된 물리적 어드레스들에 위치된 데이터에 액세스하거나 또는 그에 위치된 셀들(116)에 데이터를 저장할 수 있다.
제어기(123) 및 그의 컴포넌트들은 본 발명 전반에 걸쳐서 기술된 제어기의 다양한 기능들을 수행하는 임베디드 소프트웨어로 구현될 수 있다. 대안으로, 전술된 기능들 및 컴포넌트들 각각을 구현하기 위한 소프트웨어는 NVM(110)에, 또는 저장 디바이스(102) 또는 호스트 디바이스(104) 외부의 메모리에 저장될 수 있고, 제어기(123)의 하나 이상의 프로세서들에 의한 실행을 위해 제어기(123)에 의해 액세스될 수 있다. 대안으로, 제어기의 기능들 및 컴포넌트들은 제어기(123) 내의 하드웨어로 구현될 수 있거나, 또는 전술된 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다.
동작 시, 호스트 디바이스(104)는 기록될 데이터의 길이뿐만 아니라 하나 이상의 논리적 어드레스들(예컨대, LBA들)을 명시하는 기록 커맨드를 저장 디바이스(102)로 전송함으로써 저장 디바이스(102)에 데이터를 저장한다. 인터페이스 요소(106)는 기록 커맨드를 수신하고, 제어기는 데이터를 저장하기 위해 저장 디바이스(102)의 NVM(110) 내의 메모리 위치(112)를 할당한다. 제어기(123)는, 데이터와 연관된 논리적 어드레스를, 데이터를 위해 할당된 메모리 위치(112)의 물리적 어드레스에 맵핑시킨 L2P 맵핑을 NVM(및 캐시(122))에 저장한다. 제어기는, 또한, L2P 맵핑된 데이터의 길이를 저장한다. 이어서, 제어기(123)는 할당된 메모리 위치에 접속된 하나 이상의 데이터 래치들(126)로 데이터를 전송함으로써 메모리 위치(112)에 데이터를 저장하며, 이로부터 데이터는 셀들(116)에 프로그래밍된다.
호스트(104)는, 판독될 데이터의 길이뿐 아니라 저장 디바이스(102)로부터 취출될 데이터와 연관된 하나 이상의 논리적 어드레스들을 명시하는 판독 커맨드를 전송함으로써 저장 디바이스(102)로부터 데이터를 취출할 수 있다. 인터페이스(106)는 판독 커맨드를 수신하고, 제어기(123)는 캐시(122) 또는 달리 NVM 내의 L2P 맵핑에 액세스하여, 판독 커맨드에 명시된 논리적 어드레스들을, 데이터의 위치를 나타내는 물리적 어드레스들로 변환한다. 이어서, 제어기(123)는, 판독 데이터가 호스트 인터페이스(106)를 통해 호스트(104)로 반환될 때까지 감지 증폭기들(124)을 사용하여 데이터를 감지하고 이들을 데이터 래치들(126)에 저장함으로써 물리적 어드레스들에 의해 명시된 요청된 데이터를 메모리 위치(112)로부터 판독한다.
도 3은 셀들(302)의 NAND 메모리 어레이(300)의 일례를 예시한다. 셀들(302)은 도 1의 NVM(110) 내의 셀들(116)에 대응할 수 있다. 다수의 셀들(302)은 워드 라인들(304) 및 비트 라인들(306)에 결합된다. 예를 들어, 메모리 어레이(300)는 NVM(110)의 다이(114)의 블록 내에 n 개의 워드 라인들 및 m 개의 비트 라인들을 포함할 수 있으며, 여기서 n 및 m은 블록의 크기에 따라 사전정의된다. 각각의 워드 라인 및 비트 라인은, 제어기(123)가 (예컨대, 행 및 열 디코더를 사용하여) 특정 워드 라인들 및 비트 라인들을 선택하는 데 사용할 수 있는, 행 및 열 어드레스와 각각 연관될 수 있다. 예를 들어, 워드 라인들 0 내지 n은 각각 그들 자신의 행 어드레스와 연관될 수 있고(예컨대, 워드 라인 0은 워드 라인 어드레스 0에 대응할 수 있고, 워드 라인 1은 워드 라인 어드레스 1에 대응할 수 있는 등), 비트 라인들 0 내지 m은 각각 그들 자신의 열 어드레스와 연관될 수 있다(예컨대, 비트 라인 0은 비트 라인 어드레스 0에 대응할 수 있고, 비트 라인 1은 비트 라인 어드레스 1에 대응할 수 있는 등). 선택 게이트 소스(select gate source, SGS) 셀들(308) 및 선택 게이트 드레인(select gate drain, SGD) 셀들(310)이 각각의 비트 라인(306) 상의 메모리 셀들(302)에 결합된다. SGS 셀들(308) 및 SGD 셀들(310)은 메모리 셀들(302)을 소스 라인(312)(예컨대, 접지) 및 비트 라인들(306)에 각각 접속시킨다. 스트링(314)은 블록 내의 하나의 비트 라인에 결합된 셀들(302)의 그룹(SGS 및 SGD 셀들(308, 310)을 포함함)을 포함할 수 있는 반면, 페이지(316)는 블록 내의 하나의 워드 라인에 결합된 셀들(302)의 그룹을 포함할 수 있다.
도 4는 다수의 스트링들(404)을 포함하는 블록들(402)의 NAND 메모리 어레이(400)의 일례를 예시한다. 블록들(402)은 도 1의 NVM(110) 내의 다이(114)의 블록들에 대응할 수 있고, 스트링들(404) 각각은 도 3의 스트링(314)에 대응할 수 있다. 도 3의 메모리 어레이(300)에서와 같이, 각각의 스트링(404)은 비트 라인(406)에 각각 결합되고 각자의 워드 라인들(408)에 개별적으로 결합된 메모리 셀들의 그룹을 포함할 수 있다. 유사하게, 각각의 스트링은 각각의 스트링(404) 내의 메모리 셀들을 소스 라인(414) 및 비트 라인(406)에 각각 접속시키는 SGS 셀(410) 및 SGD 셀(412)을 포함할 수 있다.
제어기(123)가 (즉, 워드 라인(304, 408) 상의) 셀들(302)의 페이지(316)로부터 데이터를 판독하거나 그것에 데이터를 기록할 때, 제어기는 판독 전압 또는 프로그램 전압을 선택된 워드 라인에 그리고 패스 쓰루 전압(pass through voltage)을 다른 워드 라인들에 인가하기 위한 커맨드를 송신할 수 있다. 이어서, 셀의 판독 또는 프로그래밍된 상태(예컨대, SLC들에 대한 논리 '0' 또는 논리 '1')는 셀들(302)의 임계 전압에 기초하여 결정될 수 있다. 예를 들어, SLC 판독 동작 동안, 셀(302)의 임계 전압이 판독 전압보다 작은 경우(즉, 전류가 판독 전압에 응답하여 셀을 통해 흐름), 제어기(123)는 셀이 논리 '1'을 저장한다고 결정할 수 있고, 한편 셀(302)의 임계 전압이 판독 전압보다 더 큰 경우(즉, 전류가 판독 전압에 응답하여 셀을 통해 흐르지 않음), 제어기(123)는 셀이 논리 '0'을 저장한다고 결정할 수 있다. 유사하게, SLC 프로그래밍 동작 동안, 제어기는, 셀이 임계 전압에 도달할 때까지, 워드 라인(304, 408) 상의 셀(302)에 프로그래밍 전압을 인가하기 위한 커맨드를 송신함으로써 논리 '0'을 저장할 수 있고, 소거 동작 동안, 제어기는, 셀들이 임계 전압 아래로 다시(다시 논리 '1'로) 감소할 때까지, 셀들(302)을 포함하는 블록(402)에 (예컨대, p-웰(p-well)과 같은 셀들의 기판에) 소거 전압을 인가하기 위한 커맨드를 송신할 수 있다.
도 5는, SLC 셀들의 블록(502)의 페이지들(504) 내에 저장된 데이터가 QLC 셀들의 블록(506)의 페이지들(508)에 재위치되는 가비지 컬렉션 프로세스의 일례의 개념도(500)이다. 데이터는 도 1의 데이터(119)에 대응할 수 있고, 블록들(502, 506)은 도 4의 블록들(402)에 대응할 수 있고, SLC/QLC 셀들은 도 1 및 도 3의 셀들(116, 302)에 대응할 수 있다. 각각의 페이지(504, 508)는 NVM의 동일한 행 또는 워드 라인(예컨대, 워드 라인(304, 408))을 따른 다수의 셀들 내에 저장된 데이터를 포함한다. 따라서, 각각의 페이지(504)는 하나의 블록의 셀들(116)의 행 내에 저장된 데이터를 포함할 수 있고, 한편 각각의 페이지(508)는 다른 블록의 셀들(116)의 행 내에 저장된 데이터를 포함할 수 있다. 예시를 단순하게 하기 위해, 도 5의 예는, 블록들(502, 506) 각각이 4개의 페이지들(504, 508)만을 포함하는 것을 예시한다. 그러나, 각각의 블록이 임의의 수의 페이지들을 포함할 수 있음을 인식해야 한다.
도 5의 예에서, 식별자들 A, B, 및 C로 표현된 데이터는 블록(502)의 상이한 페이지들(504) 내에 저장된다. 원래, 데이터 A, B, 및 C는 호스트 디바이스로부터의 기록 커맨드들에 응답하여 블록(502)의 3개의 페이지들 내에 저장되며, 이러한 예에서 페이지들 중 하나는 자유롭게 남겨진다. 저장 디바이스가 새로운 또는 업데이트된 데이터를 수신할 때, 이러한 데이터는 자유로운 페이지(510) 내에 저장된다. 예를 들어, 업데이트된 데이터 A'는 호스트 디바이스로부터 수신되어 자유로운 페이지(510)에 기록될 수 있다. 플래시 메모리 내에서는 데이터가 덮어쓰여질 수 없기 때문에, 무효 데이터 A는 블록(502) 내에 저장된 채로 남아 있다. 새로운 데이터 및 무효 데이터의 결과, 블록(502)은 빠르게 채워질 수 있다.
SLC 블록 내의 공간을 자유롭게 하기 위해, 블록(502) 내의 원래의 및 업데이트된 데이터는 블록(506)으로 전송될 수 있다. 무효 데이터는 예전 블록 내에 남아 있다. 예를 들어, 도 5의 예에서, 원래의 데이터 B 및 C와 업데이트된 데이터 A'는 블록(502)의 페이지들(504)로부터 판독되어 블록(506)의 하나 이상의 페이지들(508)에 기록된다. 무효 데이터 A는 블록(502) 내에 남아 있다. 블록(502)이 후속하여 소거될 때, 무효 데이터는 폐기되고, 블록(502)은 새로운 데이터를 저장하도록 재사용될 수 있다.
그러나, 그러한 GC 프로세스는, 예를 들어, 다수의 4 KB 데이터 덮어쓰기가 발생하는 경우에, 저장 디바이스(102)의 증가된 기록 증폭을 초래할 수 있다. GC를 감소시키거나 제거하고 그에 의해 저장 디바이스의 기록 증폭을 감소시키기 위해, 저장 디바이스(102)는, 인접하고 중첩되지 않는 논리적 어드레스들의 그룹들이 구역들로 분할되는 ZNS를 구현할 수 있다. 도 6은 구역들(602)의 일례의 개념도(600)를 예시한다. 각각의 구역(602)은 크기가 고정되고, NVM(110) 내의 인접한 범위의 순차적인 논리적 어드레스들(604)을 포함한다. 예시된 예의 경우, NVM(110)은 x개의 구역들로 분할되는 총 z개의 LBA들을 포함할 수 있으며, 이때 각각의 구역은 n - m개의 순차적인 LBA들의 범위를 포함하고, 여기서, z는 플래시 메모리 내의 섹터들의 총 수를 표현하고, x는 구역들의 수를 표현하고, m은 구역 내의 제1 LBA를 표현하고, n은 동일한 구역 내의 마지막 LBA를 표현한다. 각각의 구역은 호스트에 의해 실행되는 하나 이상의 애플리케이션들과 연관된 데이터를 저장하기 위해 호스트에 의해 개별적으로 사용될 수 있다. 따라서, 호스트(104)는 호스트에 의해 실행되는 애플리케이션들의 수에 따라 다수의 구역들로 LBA들을 분할할 수 있다.
도 7은, 호스트 디바이스(706)로부터 수신된 데이터(704)를 구역들(712)에 따라 다이(710)의 블록들(708) 내에 기록하는 저장 디바이스의 제어기(702)의 예시적인 다이어그램(700)을 예시한다. 예를 들어, 제어기(702)는 도 1의 저장 디바이스(102)의 제어기(123)에 대응할 수 있고, 호스트 디바이스(706)는 도 1의 호스트(104)에 대응할 수 있고, 블록들(708)은 도 4의 블록들(402)에 대응할 수 있고, 데이터(704)는 도 1의 데이터(119)에 대응할 수 있고, 구역들(712)은 도 6의 구역들(602)에 대응할 수 있다. 전통적으로, 호스트(706)는 구역들(712)의 정의(예컨대, 도 6의 논리적 어드레스들(604)에의 구역들(602)의 맵핑)를 제어기(702)로 송신할 수 있고, 제어기는 각각의 구역(712)의 LBA들(예컨대, 논리적 어드레스들(604))을 단일 물리적 블록(예컨대, 블록(402))에 맵핑시키는 L2P 맵핑 테이블(714)(예컨대, L2P 맵핑 테이블(120, 205))을 생성할 수 있다. 도 7의 예에서, 각각의 구역은, 512 바이트 섹터 크기를 가지면서, 크기가 64 MB에 걸쳐 있다고 가정되며, 따라서 각각의 구역은 125000개의 LBA들을 포함할 수 있다. 더욱이, 각각의 블록은 64 MB의 데이터를 저장할 수 있다고 가정된다. 따라서, 구역 0은 1개의 블록(예컨대, PBA 0)에 단독으로 맵핑될 수 있고, 구역 1은 다른 블록(예컨대, PBA 1)에 단독으로 맵핑될 수 있는 등등이다. 이어서, 호스트의 각각의 애플리케이션은, 예컨대, 제어기에 LBA들의 순차적인 범위를 표시함으로써, 각자의 구역에 데이터를 기록할 수 있다. 예를 들어, 호스트(706)는, 순차적으로 LBA 0으로부터 LBA 124999까지 그리고/또는 순차적으로 LBA 125000으로부터 LBA 249999까지 데이터를 기록하기 위한 기록 커맨드들을 제어기(702)에 송신할 수 있다. 제어기는 표시된 LBA들을 맵핑된 물리적 어드레스(예컨대, 각각 PBA 0 또는 PBA 1)로 변환하고, 그에 따라 맵핑된 블록(708) 내에 데이터를 기록할 수 있다. 따라서, 호스트는 상이한 애플리케이션들로부터의 데이터를 상이한 구역들에 개별적으로 대응하는 상이한 물리적 블록들로 기록할 수 있다.
ZNS의 주요 이점은, 도 5에서 전술된 바와 같이, 호스트가 페이지 단위로(page by page) (예컨대, 4 KB 커맨드들 사이에) 데이터를 기록하고 무효화할 수 없다는 것이다. 예를 들어, 도 6의 구역 1에 데이터를 기록할 때, 호스트는 단순히 LBA m에 데이터를 기록하고, 이어서 직후에 LBA m에서의 예전 데이터를 무효화하면서 LBA m에 새로운 데이터를 기록할 수는 없다. 오히려, 구역 내의 이전의 LBA들에 데이터를 다시 기록하기 전에, 그 구역 전체가 완전히 기록되어야 한다(즉, 하나 또는 다수의 기록들로 LBA m으로부터 LBA n - 1까지). 따라서, 구역 0과 관련하여 도 7의 예에서, 호스트가 LBA 0 내에 데이터를 기록하는 경우, 호스트는, 호스트가 결국 LBA 0 내에 새로운 데이터를 다시 기록할 수 있기 전에, (다양한 시간에 하나 또는 다수의 기록들로) LBA 1로부터 LBA 124999까지 순차적으로 데이터를 계속 기록해야 한다. ZNS의 이러한 특징은 (도 5에 도시된 바와 같이) 다양한 구역들에 맵핑되는 블록들이 GC를 요구할 부분적인 무효 데이터를 포함하는 것을 방지하여, 이에 따라, GC를 감소시키거나 제거하고 기록 증폭을 개선한다.
그러나, ZNS의 전통적인 구현예는 또한 다수의 단점들을 가질 수 있다. 첫째, ZNS는 ZNS가 없는 구현예들보다 저장 디바이스(102) 내에 더 많은 수의 개방 블록들(폐쇄 블록들보다 더 불량한 데이터 보유(DR) 속성들을 갖는 경향이 있음)을 야기할 수 있다. 전형적으로, ZNS가 없으면, 제어기(123)는 전체 NVM(110) 내에 1개 또는 2개의 개방 블록들을 유지한다. 대조적으로, ZNS 내에서 구역들이 개별 물리적 블록들에 맵핑될 때, 제어기(123)는 NVM(110) 내의 모든 구역에 대해 적어도 1개의 개방 블록을 유지할 수 있다. 따라서, 구역들의 수가 많을 때(예컨대, 호스트가 각각이 구역에 대응하는 다수의 애플리케이션들을 갖는 경우), 개방 블록들의 수는 마찬가지로 상당할 수 있으며, 그 결과 저장 디바이스의 전체적인 DR이 상당히 더 불량해진다. 둘째, ZNS 내에서 구역 크기들이 고정된 채로 남아 있는 동안, 블록 크기들은 시간 경과에 따라 스케일링(scaling) 또는 증가하는 경향이 있다. 그러한 스케일링은, 고정된 크기의 구역들을 개별 물리적 블록들에 맵핑할 때, 추가적인 미사용된 저장 공간을 발생시킬 수 있다. 이러한 추가 공간을 다른 구역에 할당하는 것은 ZNS의 이득을 무력화시킬 것인데, 그 이유는 그러한 경우에 GC가 요구될 가능성이 있기 때문이다. 예를 들어, 하나의 구역이 스케일링된 블록에 완전히 기록되는(그리고 그에 따라 무효화될 수 있는) 반면, 다른 구역이 스케일링된 블록의 나머지에 단지 부분적으로 기록되는(그리고 그에 따라 무효화될 수 없는) 경우, GC는 유효 데이터를 보호하기 위해 여전히 요구될 것이다. 셋째, 호스트가, ZNS 내에 데이터를 저장하기 위해 하나 이상의 구역들을 각각 요청하는 다수의 애플리케이션들을 갖지만, 저장 디바이스 내에서 이용가능한 블록들의 수가 제한되는 경우, 구역들이 개별 물리적 블록들에 맵핑될 때 구역들을 다 써버리는 상황이 발생할 수 있다. 그러한 상황은, 특히 호스트의 하나 이상의 애플리케이션들이 심지어 전체 블록을 데이터를 위해 이용가능하도록 요구하지 않는 경우에 비효율적일 수 있다(예컨대, 애플리케이션들은 단지 각각의 블록 내에 소량의 데이터만을 기록함).
ZNS의 이들 제한들을 완화하기 위해, 제어기는 구역들을 개별 블록들보다는 서브-블록들에 맵핑할 수 있다. 3-D NAND 디바이스들에서, 워드 라인들의 그룹들은 상이한 서브-블록들로 분리될 수 있다. 예를 들어, 하나의 메모리 홀 계층(memory hole tier) 내의 하부 워드 라인들의 스택은 다른 메모리 홀 계층 내의 상부 워드 라인들의 스택으로부터 하나 이상의 더미 워드 라인들 및/또는 접합 영역에 의해 분리될 수 있다. 따라서, 블록 내에 128개의 워드 라인들을 가정하면, 하부 워드 라인들(예컨대, WL 0 내지 WL 63)의 스택은 하나의 서브-블록으로 간주될 수 있고, 상부 워드 라인들(예컨대, WL 64 내지 WL 127)의 스택은 다른 서브-블록으로 간주될 수 있다. 서브-블록들의 구조는 각각의 서브-블록 내의 워드-라인들이 독립적으로 판독 또는 프로그래밍되도록, 그리고 서브-블록이 독립적으로 소거되도록 허용한다. 제어기가 NAND로 송신하는 서브-블록 모드(SBM) 인에이블 커맨드에 응답하여, 제어기는 상이한 서브-블록들 내에서 그러한 독립적인 판독들/프로그래밍들/소거들을 수행할 수 있다. 예를 들어, 제어기는 SBM을 활성화하기 위한 커맨드를 다이에 송신할 수 있으며, 이에 응답하여, 동시 판독들 및 프로그래밍들 또는 독립적인 소거들을 수행하기 위해, 상이한 전압들이 다이의 상이한 서브-블록들 내의 워드 라인들에 인가될 수 있다. 예를 들어, 상이한 서브-블록들에서 데이터를 동시에 판독 또는 기록하기 위해, 제어기는 SBM이 인에이블될 때, 서브-블록들 내의 선택된 워드 라인들에 판독 또는 프로그래밍 전압들을 그리고 서브-블록들 내의 미선택된 워드 라인들에 패스 쓰루 전압들을 인가할 수 있다. 유사하게, 제어기는 SBM이 인에이블될 때, 선택된 서브-블록 내의 워드 라인들에 저전압들을 그리고 미선택된 서브-블록 내의 워드 라인들에 고전압들을 인가함으로써 상이한 서브-블록들을 독립적으로 소거할 수 있다.
도 8은, 호스트 디바이스(806)로부터 수신된 데이터(804)를 구역들(814)에 따라 다이(812)의 상이한 블록들(810)의 서브-블록들(808) 내에 기록하는 저장 디바이스의 제어기(802)의 예시적인 다이어그램(800)을 예시한다. 예를 들어, 제어기(802)는 도 1의 저장 디바이스(102)의 제어기(123)에 대응할 수 있고, 호스트 디바이스(806)는 도 1의 호스트 디바이스(104)에 대응할 수 있고, 블록들(810)은 도 4의 블록들(402)에 대응할 수 있고, 데이터(804)는 도 1의 데이터(119)에 대응할 수 있고, 구역들(814)은 도 6의 구역들(602)에 대응할 수 있다. 각각의 블록(810)은, 전술된 바와 같이, 상이한 서브-블록들(808)로 분할되는 n개의 워드 라인들(예컨대, 128개의 워드 라인들 또는 다른 수 n)을 포함할 수 있다. 예를 들어, 블록의 워드 라인들의 절반(예컨대, WL 0부터 WL n/2-1까지의 워드 라인들의 하부 스택)은 하나의 서브-블록 내에 포함될 수 있고, 한편 블록의 워드 라인들의 다른 절반(예컨대, WL n/2부터 WL n-1까지의 워드 라인들의 상부 스택)은 다른 서브-블록 내에 포함될 수 있으며, 여기서 n은 블록 내의 워드 라인들의 수이다. 제어기(802)는, 실행하기 위해 제어기가 생성하여 다이(812)로 송신하는 SBM 커맨드(816)에 응답하여, 서브-블록들(808) 내의 데이터를 판독, 프로그래밍, 및 소거할 수 있다. 예를 들어, 다이(812)가 SBM 커맨드(816)를 수신할 때, 동시 판독들 및 프로그래밍들 또는 독립적인 소거들을 수행하기 위해 상이한 전압들이 상이한 서브-블록들 내의 워드 라인들에 인가되도록 허용하는 다이 내의 회로부가 활성화되거나 인에이블될 수 있다. 제어기(802)는, 호스트(806)로부터 구역들(814)의 정의를 수신하는 것에 응답하여 SBM 커맨드(816)를 발행할 수 있다. 제어기는 또한, SBM을 인에이블하라는 호스트(806)로부터의 요청(818)을 수신하는 것에 응답하여 SBM 커맨드를 발행할 수 있다.
동작 시에, 호스트(806)는 구역들(814)의 정의를 제어기(802)에 송신할 수 있으며, 이는 데이터가 ZNS 내의 구역들에 기록되어야 한다는 것을 제어기에 표시한다. 이어서, 제어기는 저장 디바이스 내의 개방 구역들의 수가 개방 구역 임계치(예컨대, 10개 또는 일부 다른 미리 정의된 수) 이상인지 여부를 결정할 수 있다. 예를 들어, 제어기는 호스트가 10개 초과의 구역들에 데이터를 기록할 계획인지(이는 대체적으로 적어도 10개의 개방 블록들을 요구할 것임) 여부를 확인할 수 있다. 개방 구역들의 수가 임계치 미만인 경우(예컨대, 총 9개 이하의 블록들과 같이, 구역들을 개별 블록들에 맵핑함으로 인해 생성될 허용가능한 수의 개방 블록들이 있음), 도 7에서 전술된 바와 같이, 제어기는 각각의 구역(814)의 LBA들을 단일 물리적 블록들에 맵핑할 수 있다. 이와 달리, 개방 구역들의 수가 임계치를 충족하는 경우, 도 9 내지 도 11 중 임의의 것에 관련하여 후술된 바와 같이, 제어기는 각각의 구역(814)의 LBA들을 서브-블록들(808)에 맵핑할 수 있다. 예를 들어, L2P 맵핑 테이블(120, 205) 내에서 LBA들을 PBA들에 맵핑할 때, 제어기는 LBA들이 맵핑되는 각각의 물리적 블록의 각자의 서브-블록을 표시하는 플래그 비트(예컨대, 0 또는 1)를 추가로 표시할 수 있다. 이어서, 호스트의 각각의 애플리케이션은, 예컨대, 제어기에게 LBA들의 순차적인 범위를 표시함으로써, 각자의 구역에 데이터를 기록할 수 있고, 제어기는 표시된 LBA들을 맵핑된 서브-블록(810)으로 변환하고 그에 따라 서브-블록 내에 데이터를 기록할 수 있다. 서브-블록들이 독립적으로 소거가능하기 때문에, 서브-블록들에의 구역들의 맵핑은 기록 증폭을 감소시키기 위해 GC를 감소시키거나 제거하는 ZNS의 이점을 유지하면서, ZNS의 전술한 단점들을 추가로 완화시킨다.
예를 들어, 단일 블록 맵핑으로부터 생성될 개방 블록들의 수가 너무 커서 상당한 DR 문제들을 야기할 경우, 제어기(802)는 각각의 구역을 상이한 블록들(810) 내의 2개의 서브-블록들(808)에 맵핑하여, 개방 블록들의 수를 감소시킬 수 있다. 도 9는, 각각의 구역을 상이한 블록들(902) 내의 2개의 서브-블록들(904)에 맵핑하는, 제어기가 생성할 수 있는 L2P 맵핑 테이블(900)의 예를 예시한다. 도 9의 예에서, 각각의 구역은, 512 바이트 섹터 크기를 가지면서, 크기가 64 MB에 걸쳐 있으며, 따라서 각각의 구역은 125000개의 LBA들을 포함할 수 있다. 더욱이, 각각의 블록은 64 MB의 데이터를 저장할 수 있고, 따라서 각각의 서브-블록은 32 MB의 데이터를 저장할 수 있다. 따라서, 도 7에서 상기에 예시된 바와 같이 각각의 구역(모두 125000개의 LBA들)을 각각의 블록(902)에 맵핑하기보다는, 여기서 제어기는 각각의 구역의 제1 절반(32 MB의 데이터)을 하나의 블록 내의 서브-블록에 맵핑하고 각각의 구역의 제2 절반(32 MB의 데이터)을 다른 블록 내의 서브-블록에 맵핑한다. 예를 들어, 제어기는 LBA들 0 내지 62499(구역 0의 제1 절반)를 블록 0의 서브-블록 0에 맵핑할 수 있고, 제어기는 LBA들 62500 내지 124999(구역 0의 제2 절반)를 블록 1의 서브-블록 0에 맵핑할 수 있고, 제어기는 LBA들 125000 내지 187499(구역 1의 제1 절반)를 블록 0의 서브-블록 1에 맵핑할 수 있고, 제어기는 LBA들 187500 내지 249999(구역 1의 제2 절반)를 블록 1의 서브-블록 1에 맵핑할 수 있다. 이러한 방식으로, 호스트가 각각의 구역의 제1 LBA로부터 시작하여 구역 0 및 구역 1 내에 데이터를 순차적으로 기록할 때, 초기에는 블록 0만이 기록된다. 따라서, 제어기는 오직, 구역 0 및 구역 1의 제1 절반이 채워지고 블록 0이 완전히 기록된(즉, 블록 0은 폐쇄 블록이 됨) 후에, 블록 1에 기록하기 시작할 것이다. 이러한 접근법은 생성할 개방 블록들의 총 수를, 예컨대, 절반으로 감소시킨다. 예를 들어, 구역 0 및 구역 1이 절반만 채워지더라도, 도 7의 예에서의 경우와 같이 2개의 블록들(블록 0 및 블록 1 둘 모두)보다는, 1개의 블록(블록 1)만이 개방될 것이다.
다른 예에서, 블록이 나중에, 1개의 서브-블록이 이제 (이전과 같은 블록이 아니라) 구역 크기에 걸쳐 있도록 하는 스케일링으로 인해 크기가 2배가 되는 경우, 제어기는 스케일링을 수용하도록 구역을 1개의 서브-블록에 맵핑하고 GC의 감소 또는 제거를 여전히 유지할 수 있다. 도 10은, 각각의 구역을 상이한 블록들(1002) 내의 1개의 서브-블록(1004)에 맵핑하는, 제어기가 생성할 수 있는 L2P 맵핑 테이블(1000)의 예를 예시한다. 도 10의 예에서, 각각의 구역은, 512 바이트 섹터 크기를 가지면서, 크기가 64 MB에 걸쳐 있으며, 따라서 각각의 구역은 125000개의 LBA들을 포함할 수 있다. 더욱이, 각각의 블록의 크기는, 각각의 블록이 이제 128 MB의 데이터를 저장할 수 있도록 하는 스케일링으로 인해 증가하였고, 따라서 각각의 서브-블록은 64 MB의 데이터를 저장할 수 있다. 따라서, 도 9에서 상기에 예시된 바와 같이, 각각의 구역의 절반(62500개의 LBA들)을 각각의 서브-블록에 맵핑하기보다는, 여기서 제어기는 각각의 구역을 각각의 2배-크기 서브-블록에 맵핑한다. 예를 들어, 제어기는, 도 9와 관련하여 전술된 바와 유사한 서브-블록 맵핑을 사용하여, LBA들 0 내지 62499(구역 0의 제1 절반) 및 LBA들 62500 내지 124999(구역 0의 제2 절반)를 블록 0의 서브-블록 0에 맵핑할 수 있다. 이러한 방식으로, 비록 스케일링으로 인해 블록들의 크기가 2배가 되더라도, 전체 구역을 서브-블록에 맵핑함으로써 ZNS에 대한 각각의 블록 내의 미사용 공간이 회피될 수 있다. 이러한 접근법은 또한, 블록 내의 워드 라인들의 수가 증가되더라도 서브-블록들이 독립적으로 소거될 수 있기 때문에, GC의 감소 또는 제거를 유지한다.
추가의 예에서, 제어기가 호스트로부터 (예컨대, SBM 요청(818) 내에서) 구역들이 완전히 기록되지 않을 것이라는 표시를 수신하는 경우(예컨대, 애플리케이션이 그러한 구역들에 소량의 데이터만을 기록할 것임), 제어기는 구역들을 개별 서브-블록들에 맵핑하여 구역을 다 써버리는 상황을 방지할 수 있다. 도 11은, 2개의 구역들을 동일한 블록(1102) 내의 1개의 서브-블록(1004)에 맵핑하는, 제어기가 생성할 수 있는 L2P 맵핑 테이블(1100)의 예를 예시한다. 도 11의 예에서, 각각의 구역은, 512 바이트 섹터 크기를 가지면서, 크기가 64 MB에 걸쳐 있으며, 따라서 각각의 구역은 125000개의 LBA들을 포함할 수 있다. 더욱이, 각각의 블록은 64 MB의 데이터를 저장할 수 있고, 따라서 각각의 서브-블록은 32 MB의 데이터를 저장할 수 있다. 따라서, 도 9에서 상기에 예시된 바와 같이 1개의 구역을 2개의 서브-블록들에 맵핑하기보다는, 여기서 제어기는, 각각의 구역의 다른 절반이 미사용될 것이라는 표시(어떠한 데이터도 그들 LBA들에 저장되지 않을 것임)에 기초하여, 각각의 구역의 절반을 서브-블록에 맵핑한다. 예를 들어, 제어기는, 도 9와 관련하여 전술된 바와 유사한 서브-블록 맵핑을 사용하여, LBA들 0 내지 62499(구역 0의 제1 절반)를 블록 0의 서브-블록 0에 맵핑하고 LBA들 125000 내지 187499(구역 1의 제1 절반)를 블록 0의 서브-블록 1에 맵핑할 수 있다. 그러나, 도 9의 예에서와는 달리, 제어기는 LBA들 62500 내지 124999(구역 0의 제2 절반) 및 LBA들 187500 내지 249999(구역 1의 제2 절반)를 블록 1에 맵핑하지 않을 수 있는데, 그 이유는 이들 영역들이 호스트에 의해 미사용될 것으로 표시되었기 때문이다. 대신에, 블록 1은 다른 구역들에 맵핑될 수 있다. 이러한 방식으로, 저장 디바이스 내의 구역들의 수가 효과적으로 증가될 수 있다. 예를 들어, 도 9의 예에서 전술된 바와 같이, 블록 0 및 블록 1 내의 서브-블록들을 구역 0 및 구역 1에 맵핑하기보다는, 여기서 제어기는 블록 0 내의 서브-블록들만을 구역 0 및 1에 맵핑할 수 있는데, 그 이유는 각각의 구역의 절반은 기록되지 않을 것이고, 이에 따라, 제어기가 블록 1을 2개 더의 절반-기록된 구역들에 맵핑하도록 허용하기 때문이다. 따라서, 그것의 애플리케이션들이 다양한 구역들 내에 소량의 데이터만을 저장할 것이라는 (예컨대, SBM을 활성화하라는 요청 내의 또는 일부 다른 메시지 내의) 호스트로부터의 표시에 응답하여, 제어기는 더 많은 블록들이 추가 구역들에 맵핑하는 데 이용가능하도록 허용할 수 있다.
도 12는 서브-블록 맵핑에 기초하여 구역들에 데이터를 기록하기 위한 방법의 예시적인 흐름도(1200)를 예시한다. 예를 들어, 이 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은 후술되는 바와 같은 제어기(예컨대, 제어기(123, 802))를 사용하여, 또는 일부 다른 적합한 수단에 의해 제어될 수 있다.
블록(1202)에 의해 표현되는 바와 같이, 제어기는 (예컨대, ZNS 내에서) 구역 내에 기록될 데이터를 호스트로부터 수신할 수 있다. 이 구역은 복수의 논리적 어드레스들을 포함할 수 있다. 예를 들어, 도 6 내지 도 8을 참조하면, 제어기(702, 802)는 구역(602, 712, 814) 내에 기록될 데이터(704, 804)를 호스트 디바이스(706, 806)로부터 수신할 수 있다. 이 구역(602)은 복수의 논리적 어드레스들(604)을 포함할 수 있다. 제어기(702, 802)는 호스트(706, 806)로부터, 논리적 어드레스들(604)과 구역(602)의 연관성을 수신할 수 있다. 예를 들어, 제어기는 구역들(712, 814)을 표시하는 호스트로부터의 메시지 내에서, 도 6에 예시된 것과 같은, 논리 어드레스들에의 구역들의 맵핑을 수신할 수 있다.
블록(1204)에 의해 표현되는 바와 같이, 제어기는 개방 구역들의 수가 개방 구역 임계치를 충족하는지 여부를 결정할 수 있다. 개방 구역들의 수가 개방 구역 임계치를 충족하는 경우, 블록(1206)으로 표현되는 바와 같이, 제어기는, 예컨대 도 8 내지 도 11과 관련하여 전술된 바와 같이, 서브-블록 모드(SBM)를 인에이블하고 구역을 메모리의 서브-블록(들)에 맵핑할 수 있다. 이와 달리, 개방 구역들의 수가 개방 구역 임계치를 충족하지 않으면, 예컨대, 도 7과 관련하여 전술된 바와 같이, 제어기는 구역들을 블록들에 맵핑할 수 있다.
예를 들어, 도 1 및 도 6 내지 도 11을 참조하면, 메모리(예컨대, NVM(110))는 복수의 블록들(708, 810, 902, 1002, 1102)을 포함할 수 있고, 여기서 블록들 각각은 복수의 서브-블록들(808, 904, 1004, 1104)을 포함하고, 제어기(123, 802)는 구역(602)을 서브-블록들 중 적어도 하나에 맵핑할 수 있다. 예컨대, 도 8과 관련하여 전술된 바와 같이, 서브-블록들 각각은 독립적으로 판독가능하고, 프로그래밍가능하고, 소거가능할 수 있다. 제어기는 개방 구역들의 수(예컨대, 개방되거나 개방 블록에 대응하는 구역들(602)의 수)를 결정하고, 개방 구역들의 수가 임계치(예컨대, 10개 또는 일부 다른 수와 같은 개방 구역 임계치)를 충족하는 것에 응답하여 개방 구역들을 서브-블록들 중 적어도 하나에 맵핑할 수 있다.
일례에서, 구역은 2개의 서브-블록들에 맵핑될 수 있고, 2개의 서브-블록들은 상이한 블록들로부터의 것이다. 이러한 예에서, 상이한 블록들 각각은 상이한 구역에 맵핑되는 다른 서브-블록을 포함할 수 있다. 예를 들어, 도 9를 참조하면, 구역 0은 블록 0 내의 서브-블록 0 및 블록 1 내의 서브-블록 0에 맵핑될 수 있다. 더욱이, 블록들(예컨대, 블록 0 및 블록 1) 각각은 상이한 구역(예컨대, 구역 1)에 맵핑되는 다른 서브-블록(예컨대, 서브-블록 1)을 포함할 수 있다.
다른 예에서, 구역이 부분적으로 미사용된다는 호스트로부터의 표시에 응답하여, 구역은 서브-블록들 중 하나에 맵핑될 수 있고, 서브-블록들 중 하나는 블록들 중 하나 내에 있다. 이러한 예에서, 블록들 중 하나는 상이한 구역에 맵핑되는 다른 서브-블록을 포함할 수 있다. 예를 들어, 도 11을 참조하면, 구역 0이 완전히 기록되지 않을 것이라는 호스트(806)로부터의 표시에 응답하여, 구역 0은 블록 0 내의 서브-블록 0에 맵핑될 수 있다. 더욱이, 블록 0은 상이한 구역(예컨대, 구역 1)에 맵핑되는 다른 서브-블록(예컨대, 서브-블록 1)을 포함할 수 있다. 제어기는 구역들(814)과 연관된 데이터(804)를 서브-블록들(808) 내에 기록하라는 요청(예컨대, SBM 요청(818))을 수신하고, 요청에 응답하여 구역들 각각을 서브-블록들 중 적어도 하나에 맵핑할 수 있다. 요청은 구역이 부분적으로 미사용된다는 호스트로부터의 표시를 포함할 수 있다.
마지막으로, 블록(1208)에 의해 표현되는 바와 같이, 제어기는 모든 구역들이 호스트로부터의 데이터로 기록되었는지 여부를 결정할 수 있다. 그렇지 않은 경우, 제어기는 (단계(1204)에서 전술된 바와 같이 서브-블록들 또는 블록들에 맵핑되는 바와 같이) 구역 내에 데이터를 기록하고, 각각의 구역에 대해 상기 프로세스를 반복할 것이다. 이와 달리, 모든 구역들이 데이터로 기록되면, 프로세스가 종료될 것이다.
따라서, 본 발명에 설명된 저장 디바이스는 불량한 DR을 갖는 다수의 개방 블록들, 증가된 블록 크기들에 대한 불가변성, 및 제한된 이용가능한 구역들을 포함하는 ZNS의 제한들을 완화할 수 있다. 각각의 구역이 상이한 블록들 내의 2개의 서브-블록들에 맵핑되게 함으로써, 저장 디바이스 내에 개방 블록들이 전통적인 ZNS에서보다 더 적게 생성되어, 데이터 신뢰성이 더 높아질 수 있다. 더욱이, 특정 애플리케이션의 더 적은 데이터가 프로그래밍되어 저장 디바이스가 구역들을 다 써버리는 경우에, 각각의 구역을 하나의 서브-블록에 맵핑시키는 것은 런-타임 동안 구역들의 수를 효과적으로 증가시킬 수 있다. 추가로, 저장 디바이스의 블록 크기들이 스케일링되거나 증가되더라도, GC 및 기록 증폭을 감소시키는 데 있어서의 ZNS의 이익들이 여전히 유지될 수 있는데, 그 이유는 구역 용량과 블록 크기 사이의 부정합이 서브-블록 맵핑으로 인해 회피될 수 있고, 전체 블록 용량이 계속 사용될 수 있기 때문이다.
본 발명의 다양한 태양들은 당업자가 본 발명을 실시할 수 있게 하기 위해 제공된다. 본 개시내용 전반에 걸쳐서 제시된 예시적인 실시예들에 대한 다양한 수정들은 당업자에게 용이하게 명백할 것이며, 본 명세서에 개시된 개념들은 다른 자기 저장 디바이스들로 확장될 수 있다. 따라서, 청구범위는 본 발명의 다양한 태양들로 제한되는 것으로 의도되지 않으며, 청구항의 언어와 일치하는 전체 범주에 부합되어야 한다. 당업자에게 알려져 있거나 나중에 알려지게 될 본 개시내용 전반에 걸쳐 기술된 예시적인 실시예들의 다양한 컴포넌트들에 대한 모든 구조적 및 기능적 등가물들은 명백히 본 명세서에 참고로 포함되며, 청구범위에 의해 포괄되도록 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도, 그러한 개시내용이 청구항에서 명시적으로 인용되는지 여부에 관계없이 공중에게 전용되는 것으로 의도되지 않는다. 청구항 구성요소도, 그 구성요소가 문구 "~하기 위한 수단"을 사용하여 명시적으로 인용되지 않는 한, 또는, 방법 청구항의 경우, 그 구성요소가 문구 "~하기 위한 단계"를 사용하여 인용되지 않는 한, 미국 35 U.S.C. §112의 규정 또는 다른 사법권 내에서 유사한 법령 또는 법규 하에서 해석되어서는 안 된다.

Claims (20)

  1. 저장 디바이스로서,
    복수의 블록들을 포함하는 메모리 - 상기 블록들 각각은 복수의 서브-블록들을 포함함 - ; 및
    구역(zone)을 상기 서브-블록들 중 적어도 하나에 맵핑하도록 구성된 제어기 - 상기 구역은 복수의 논리적 어드레스들을 포함함 -
    를 포함하고,
    상기 제어기는 개방 구역들의 수를 결정하도록, 그리고 상기 개방 구역들의 수가 임계치를 충족하는 것에 응답하여 상기 구역을 상기 서브-블록들 중 적어도 하나에 맵핑하도록 추가로 구성되는, 저장 디바이스.
  2. 제1항에 있어서, 상기 서브-블록들 각각은 독립적으로 프로그래밍가능하고 소거가능한, 저장 디바이스.
  3. 제1항에 있어서, 상기 제어기는 호스트로부터, 상기 논리적 어드레스들과 상기 구역의 연관성을 수신하도록 추가로 구성되는, 저장 디바이스.
  4. 삭제
  5. 제1항에 있어서, 상기 구역은 2개의 상기 서브-블록들에 맵핑되고, 상기 2개의 서브-블록들은 상이한 블록들로부터의 것인, 저장 디바이스.
  6. 제5항에 있어서, 상기 상이한 블록들 각각은 상이한 구역에 맵핑되는 다른 서브-블록을 포함하는, 저장 디바이스.
  7. 제1항에 있어서, 상기 구역이 부분적으로 미사용된다는 호스트로부터의 표시에 응답하여, 상기 구역은 상기 서브-블록들 중 하나에 맵핑되고, 상기 서브-블록들 중 하나는 상기 블록들 중 하나 내에 있는, 저장 디바이스.
  8. 제7항에 있어서, 상기 블록들 중 하나는 상이한 구역에 맵핑되는 다른 서브-블록을 포함하는, 저장 디바이스.
  9. 저장 디바이스로서,
    복수의 블록들을 포함하는 메모리 - 상기 블록들 각각은 복수의 서브-블록들을 포함함 - ; 및
    개방 구역들의 수를 결정하도록, 그리고 상기 개방 구역들의 수가 임계치를 충족하는 것에 응답하여 개방 구역들을 상기 서브-블록들에 맵핑하도록 구성된 제어기를 포함하는, 저장 디바이스.
  10. 제9항에 있어서, 상기 서브-블록들 각각은 독립적으로 판독가능하고 프로그래밍가능한, 저장 디바이스.
  11. 제9항에 있어서, 상기 제어기는 호스트로부터, 복수의 논리적 어드레스들과 상기 개방 구역들 각각의 연관성을 수신하도록 추가로 구성되는, 저장 디바이스.
  12. 제9항에 있어서, 상기 개방 구역들 각각은 2개의 상기 서브-블록들에 맵핑되고, 상기 2개의 서브-블록들은 상이한 블록들로부터의 것인, 저장 디바이스.
  13. 제9항에 있어서, 상기 개방 구역들 각각은, 상기 개방 구역들이 완전히 기록되지 않을 것이라는 호스트로부터의 표시에 응답하여, 상기 서브-블록들 중 하나에 맵핑되는, 저장 디바이스.
  14. 저장 디바이스로서,
    복수의 블록들을 포함하는 메모리 - 상기 블록들 각각은 복수의 서브-블록들을 포함함 - ; 및
    상기 서브-블록들 내에 구역들과 연관된 데이터를 기록하라는 요청을 수신하도록, 그리고 상기 요청에 응답하여 상기 구역들 각각을 상기 서브-블록들 중 적어도 하나에 맵핑하도록 구성된 제어기
    를 포함하고,
    상기 제어기는 개방된 상기 구역들의 수를 결정하도록, 그리고 개방된 상기 구역들의 수가 임계치를 충족하는 것에 응답하여 상기 구역들을 상기 서브-블록들에 맵핑하도록 추가로 구성되는, 저장 디바이스.
  15. 제14항에 있어서, 상기 서브-블록들 각각은 독립적으로 판독가능하고 소거가능한, 저장 디바이스.
  16. 제14항에 있어서, 상기 제어기는 호스트로부터, 복수의 논리적 어드레스들과 상기 구역들 각각의 연관성을 수신하도록 추가로 구성되는, 저장 디바이스.
  17. 삭제
  18. 제14항에 있어서, 상기 구역들 각각은 2개의 상기 서브-블록들에 맵핑되고, 상기 2개의 서브-블록들은 상이한 블록들로부터의 것인, 저장 디바이스.
  19. 제14항에 있어서, 상기 요청은 상기 구역들이 부분적으로 미사용된다는 호스트로부터의 표시를 포함하는, 저장 디바이스.
  20. 제19항에 있어서, 상기 구역들 각각은 상기 표시에 응답하여 상기 서브-블록들 중 하나에 맵핑되는, 저장 디바이스.
KR1020210082728A 2020-09-04 2021-06-24 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화 KR102652694B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063074936P 2020-09-04 2020-09-04
US63/074,936 2020-09-04
US17/180,625 US11455244B2 (en) 2020-09-04 2021-02-19 Zoned namespace limitation mitigation using sub block mode
US17/180,625 2021-02-19

Publications (2)

Publication Number Publication Date
KR20220031490A KR20220031490A (ko) 2022-03-11
KR102652694B1 true KR102652694B1 (ko) 2024-03-28

Family

ID=80266815

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210082728A KR102652694B1 (ko) 2020-09-04 2021-06-24 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화

Country Status (4)

Country Link
US (1) US11455244B2 (ko)
KR (1) KR102652694B1 (ko)
CN (1) CN114138682A (ko)
DE (1) DE102021115374A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220027064A1 (en) * 2015-04-10 2022-01-27 Pure Storage, Inc. Two or more logical arrays having zoned drives
KR20230081505A (ko) * 2021-11-30 2023-06-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그의 동작 방법
CN114625321A (zh) * 2022-03-25 2022-06-14 阿里巴巴(中国)有限公司 数据写入方法以及装置
US11954367B2 (en) 2022-06-15 2024-04-09 Western Digital Technologies, Inc. Active time-based command prioritization in data storage devices
EP4332971A3 (en) * 2022-08-31 2024-05-15 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and operating method of storage device
US20240160562A1 (en) * 2022-11-10 2024-05-16 Western Digital Technologies, Inc. ZONE-BASED GARBAGE COLLECTION IN ZNS SSDs
US20240161828A1 (en) * 2022-11-14 2024-05-16 Sandisk Technologies Llc Non-volatile memory with sub-blocks
CN117369729B (zh) * 2023-12-04 2024-02-06 武汉麓谷科技有限公司 一种zns ssd的附加写入实现方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101916718B1 (ko) * 2012-02-28 2018-11-09 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 메모리 관리 방법
US9368130B2 (en) 2012-07-16 2016-06-14 Marvell International Ltd. Data storage system, method of writing to storage in the data storage system, hard disk and method of forming the hard disk
US9466382B2 (en) * 2012-11-14 2016-10-11 Sandisk Technologies Llc Compensation for sub-block erase
JP5781109B2 (ja) * 2013-03-01 2015-09-16 株式会社東芝 不揮発性半導体記憶装置
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9449698B1 (en) 2015-10-20 2016-09-20 Sandisk Technologies Llc Block and zone erase algorithm for memory
KR102570367B1 (ko) * 2016-04-21 2023-08-28 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
KR102469539B1 (ko) 2017-12-22 2022-11-22 삼성전자주식회사 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 저장 장치
US11101001B2 (en) 2018-05-08 2021-08-24 Sandisk Technologies Llc Non-volatile memory with multi-plane mixed sub-block programming
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping
US11789612B2 (en) * 2020-06-16 2023-10-17 Sandisk Technologies Llc Plane programming scheme for non-volatile memory with large block sizes

Also Published As

Publication number Publication date
CN114138682A (zh) 2022-03-04
KR20220031490A (ko) 2022-03-11
DE102021115374A1 (de) 2022-03-10
US11455244B2 (en) 2022-09-27
US20220075716A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
KR102652694B1 (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
TWI770218B (zh) 記憶體系統及其操作方法
CN110955384B (zh) 数据储存装置以及非挥发式存储器控制方法
US11513723B2 (en) Read handling in zoned namespace devices
JP2017503266A (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US11543986B2 (en) Electronic system including host, memory controller and memory device and method of operating the same
US11347420B2 (en) Attribute mapping in multiprotocol devices
KR102502318B1 (ko) 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법
US20230418485A1 (en) Host device, storage device, and electronic device
US11481136B1 (en) Very low sized zone support for storage devices
US11403011B1 (en) Host memory buffer allocation management
US11892928B2 (en) Delayed thermal throttling and associated data routing techniques
US11481150B2 (en) Read modify write optimization for video performance
US11775222B2 (en) Adaptive context metadata message for optimized two-chip performance
US11954350B2 (en) Storage device and method of operating the same
US11556249B2 (en) Delaying random data relocation for reducing write amplification in storage devices
US20240069773A1 (en) Open block relocation
US20230359391A1 (en) Allocation of host memory buffer for sustained sequential writes
TWI705328B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
US20240160562A1 (en) ZONE-BASED GARBAGE COLLECTION IN ZNS SSDs
KR20230063857A (ko) 스토리지 장치 및 전자 장치
KR20240002402A (ko) 라이트 포인터 및 라이트 카운트를 이용하여 네임스페이스를 관리하는 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
KR20220159270A (ko) 스토리지 장치 및 그 동작 방법

Legal Events

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