KR20210080171A - Zoned namespace with zone grouping - Google Patents

Zoned namespace with zone grouping Download PDF

Info

Publication number
KR20210080171A
KR20210080171A KR1020200123900A KR20200123900A KR20210080171A KR 20210080171 A KR20210080171 A KR 20210080171A KR 1020200123900 A KR1020200123900 A KR 1020200123900A KR 20200123900 A KR20200123900 A KR 20200123900A KR 20210080171 A KR20210080171 A KR 20210080171A
Authority
KR
South Korea
Prior art keywords
zone
size
erase block
persistent storage
storage devices
Prior art date
Application number
KR1020200123900A
Other languages
Korean (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 KR20210080171A publication Critical patent/KR20210080171A/en

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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Abstract

An embodiment of an electronic device may include one or more substrates, and logic coupled to the one or more substrates, wherein the logic controls access to two or more persistent storage devices - at least one of the two or more persistent storage devices is logically organized into namespaces partitioned into two or more zones. The logic determines two or more different zone size dependent parameters associated with the two or more persistent storage devices, determines the smallest aligned boundary based on each of the two or more different zone size dependent parameters, and sets a zone group size for access to the two or more persistent storage devices based on the determined smallest aligned boundary. Other embodiments are disclosed and claimed.

Description

구역 그룹화를 갖는 구역화된 네임스페이스{ZONED NAMESPACE WITH ZONE GROUPING}ZONED NAMESPACE WITH ZONE GROUPING

종래의 하드 디스크 드라이브(HDD)는 SMR(shingled magnetic recording) 기술을 이용할 수 있다. NAND 기반 솔리드 스테이트 드라이브(SSD)와 같은, 비휘발성 메모리(NVM) 저장 디바이스는 FTL(flash transition layer)을 이용하여 NAND 기반 매체를 관리할 수 있다. NVM Express(NVMe) 사양(NVMe 2.0 기본 사양, nvmexpress.org)은 ZNS(Zoned Namespace)의 이용을 제공한다. ZNS 인터페이스는 구역에 대한 순차 기입을 요구할 수 있고, SMR 인터페이스는 순차 필수 구역(sequential required zone) 및 순차 선호 구역(sequential preferred zone)을 지원할 수 있다.A conventional hard disk drive (HDD) may use a shingled magnetic recording (SMR) technology. A non-volatile memory (NVM) storage device, such as a NAND-based solid state drive (SSD), may use a flash transition layer (FTL) to manage NAND-based media. The NVM Express (NVMe) specification (NVMe 2.0 Base Specification, nvmexpress.org) provides for the use of Zoned Namespaces (ZNSs). The ZNS interface may require sequential writing of zones, and the SMR interface may support sequential required zones and sequential preferred zones.

본 명세서에서 설명된 내용은 첨부 도면에 제한으로서가 아니라 예로서 예시되어 있다. 예시의 단순성 및 명확성을 위해, 도면에 예시된 요소가 반드시 일정한 축척으로 그려져 있지는 않다. 예를 들어, 명확성을 위해, 일부 요소의 치수가 다른 요소에 비해 과장될 수 있다. 게다가, 적절한 것으로 간주되는 경우, 대응하는 또는 유사한 요소를 가리키기 위해 도면들 간에 참조 라벨(reference label)이 반복되었다. 도면에서:
도 1은 실시예에 따른 전자 시스템의 예의 블록 다이어그램이다;
도 2는 실시예에 따른 전자 장치의 예의 블록 다이어그램이다;
도 3a 내지 도 3c는 실시예에 따른 스토리지를 제어하는 방법의 예의 플로차트이다;
도 4는 실시예에 따른 분산형 전자 저장 시스템의 다른 예의 블록 다이어그램이다;
도 5는 실시예에 따른 구역화된 네임스페이스의 예의 예시적인 다이어그램이다;
도 6은 실시예에 따른 다양한 크기 요구사항 및 제약조건의 예의 예시적인 다이어그램이다;
도 7a 및 도 7b는 실시예에 따른 구역 그룹의 예의 블록 다이어그램이다;
도 8은 실시예에 따른 컴퓨팅 시스템의 예의 블록 다이어그램이다;
도 9는 실시예에 따른 SSD의 예의 블록 다이어그램이다.
The subject matter described herein is illustrated in the accompanying drawings by way of example and not limitation. For simplicity and clarity of illustration, elements illustrated in the drawings are not necessarily drawn to scale. For example, for clarity, the dimensions of some elements may be exaggerated relative to others. In addition, where deemed appropriate, reference labels have been repeated between the figures to indicate corresponding or similar elements. From the drawing:
1 is a block diagram of an example of an electronic system according to an embodiment;
2 is a block diagram of an example of an electronic device according to an embodiment;
3A-3C are flowcharts of examples of a method for controlling storage according to an embodiment;
4 is a block diagram of another example of a distributed electronic storage system according to an embodiment;
5 is an exemplary diagram of an example of a zoned namespace according to an embodiment;
6 is an exemplary diagram of an example of various size requirements and constraints in accordance with an embodiment;
7A and 7B are block diagrams of examples of zone groups according to an embodiment;
8 is a block diagram of an example of a computing system according to an embodiment;
9 is a block diagram of an example of an SSD according to an embodiment.

하나 이상의 실시예 또는 구현예가 첨부 도면을 참조하여 이제 설명된다. 특정 구성 및 배열이 논의되지만, 이것이 예시 목적으로만 행해진다는 것을 이해되어야 한다. 관련 기술 분야의 통상의 기술자는 이 설명의 사상 및 범위를 벗어나지 않으면서 다른 구성 및 배열이 이용될 수 있다는 것을 인식할 것이다. 본 명세서에서 설명된 기술 및/또는 배열이 또한 본 명세서에서 설명된 것 이외의 다양한 다른 시스템 및 애플리케이션에서 이용될 수 있다는 것이 관련 기술 분야의 통상의 기술자에게 명백할 것이다.One or more embodiments or implementations are now described with reference to the accompanying drawings. While specific constructions and arrangements are discussed, it should be understood that this is done for illustrative purposes only. Those of ordinary skill in the art will recognize that other configurations and arrangements may be utilized without departing from the spirit and scope of this description. It will be apparent to those skilled in the art that the techniques and/or arrangements described herein may also be used in a variety of other systems and applications other than those described herein.

이하의 설명이, 예를 들어, SoC(system-on-a-chip) 아키텍처와 같은 아키텍처에서 나타날 수 있는 다양한 구현을 기술하지만, 본 명세서에서 설명된 기술 및/또는 배열의 구현이 특정 아키텍처 및/또는 컴퓨팅 시스템으로 제한되지 않고, 유사한 목적을 위해 임의의 아키텍처 및/또는 컴퓨팅 시스템에 의해 구현될 수 있다. 예를 들어, 다수의 집적 회로(IC) 칩 및/또는 패키지, 및/또는 셋톱 박스, 스마트 폰 등과 같은 다양한 컴퓨팅 디바이스 및/또는 CE(consumer electronic) 디바이스를 이용하는 다양한 아키텍처가 본 명세서에서 설명된 기술 및/또는 배열을 구현될 수 있다. 게다가, 이하의 설명이 시스템 컴포넌트의 로직 구현, 유형 및 상호관계, 로직 파티셔닝/통합 선택 사항 등과 같은 수많은 특정 세부 사항을 기술할 수 있지만, 청구된 주제는 그러한 특정 세부 사항 없이 실시될 수 있다. 다른 예에서, 예를 들어, 제어 구조 및 전체 소프트웨어 명령어 시퀀스와 같은 일부 내용은 본 명세서에서 개시된 내용을 모호하게 하지 않기 위해 상세하게 제시되지 않을 수 있다.Although the following description describes various implementations that may appear in architectures, such as, for example, system-on-a-chip (SoC) architectures, implementations of the techniques and/or arrangements described herein are dependent on specific architectures and/or arrangements. or a computing system, and may be implemented by any architecture and/or computing system for similar purposes. For example, various architectures using multiple integrated circuit (IC) chips and/or packages, and/or various computing devices such as set-top boxes, smart phones, and/or consumer electronic (CE) devices, are described herein. and/or arrangement may be implemented. Furthermore, although the following description may set forth numerous specific details such as logic implementations, types and interrelationships of system components, logic partitioning/integration options, etc., claimed subject matter may be practiced without such specific details. In other instances, some content, such as, for example, control structures and entire software instruction sequences, may not be presented in detail in order not to obscure the subject matter disclosed herein.

본 명세서에서 개시된 내용은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 본 명세서에서 개시된 내용은 또한 하나 이상의 프로세서에 의해 판독되어 실행될 수 있는, 머신 판독 가능 매체에 저장된 명령어로 구현될 수 있다. 머신 판독 가능 매체는 머신(예를 들어, 컴퓨팅 디바이스)에 의해 판독 가능한 형태로 정보를 저장하거나 전송하기 위한 임의의 매체 및/또는 메커니즘을 포함할 수 있다. 예를 들어, 머신 판독 가능 매체는 ROM(read only memory); RAM(random access memory); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 디바이스; 전기, 광학, 음향 또는 다른 형태의 전파 신호(예를 들어, 캐리어 파, 적외선 신호, 디지털 신호 등) 및 기타를 포함할 수 있다.The content disclosed herein may be implemented in hardware, firmware, software, or any combination thereof. The subject matter disclosed herein may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by one or more processors. Machine-readable media may include any media and/or mechanism for storing or transmitting information in a form readable by a machine (eg, a computing device). For example, the machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory device; electrical, optical, acoustic or other forms of propagated signals (eg, carrier waves, infrared signals, digital signals, etc.) and others.

본 명세서에서 "일 구현예", "구현예", "예시적인 구현예" 등에 대한 언급은 설명된 구현예가 특정 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 특정 특징, 구조, 또는 특성을 반드시 포함하는 것은 아닐 수 있다는 것을 나타낸다. 더욱이, 그러한 문구가 동일한 구현예를 반드시 지칭하는 것은 아니다. 게다가, 특정 특징, 구조, 또는 특성이 실시예와 관련하여 설명될 때, 본 명세서에서 명시적으로 설명되어 있는지에 관계없이 그러한 특징, 구조, 또는 특성을 다른 구현예와 관련하여 실시하는 것을 본 기술분야의 통상의 기술자가 알고 있다고 여겨진다.References herein to “one embodiment,” “an embodiment,” “an exemplary embodiment,” or the like, indicate that the described embodiment may include a particular feature, structure, or characteristic, but that all embodiments may not necessarily include the particular feature, structure, or characteristic. It indicates that it may not necessarily include the property. Moreover, such phrases are not necessarily referring to the same embodiment. Moreover, when a particular feature, structure, or characteristic is described in connection with an embodiment, the present technology refers to practicing that feature, structure, or characteristic in connection with another embodiment, whether or not explicitly described herein. It is believed to be known to one of ordinary skill in the art.

본 명세서에서 설명된 다양한 실시예는 메모리 컴포넌트 및/또는 메모리 컴포넌트에 대한 인터페이스를 포함할 수 있다. 그러한 메모리 컴포넌트는 휘발성 메모리 및/또는 비휘발성(NV) 메모리를 포함할 수 있다. 휘발성 메모리는 매체에 의해 저장된 데이터의 상태를 유지하기 위해 전력을 필요로 하는 저장 매체일 수 있다. 휘발성 메모리의 비제한적인 예는, DRAM(dynamic RAM) 또는 SRAM(static RAM)과 같은, 다양한 유형의 RAM(random access memory)을 포함할 수 있다. 메모리 모듈에서 사용될 수 있는 하나의 특정 유형의 DRAM은 SDRAM(synchronous dynamic RAM)이다. 특정 실시예에서, 메모리 컴포넌트의 DRAM은, DDR(double data rate) SDRAM에 대한 JESD79F, DDR2 SDRAM에 대한 JESD79-2F, DDR3 SDRAM에 대한 JESD79-3F, DDR4 SDRAM에 대한 JESD79-4A, LPDDR(Low Power DDR)에 대한 JESD209, LPDDR2에 대한 JESD209-2, LPDDR3에 대한 JESD209-3, 및 LPDDR4에 대한 JESD209-4(이들 표준은 jedec.org에서 이용 가능함)와 같은, JEDEC(Joint Electron Device Engineering Council)에 의해 발표된 표준을 준수할 수 있다. 그러한 표준(및 유사한 표준)은 DDR 기반 표준이라고 지칭될 수 있고, 그러한 표준을 구현하는 저장 디바이스의 통신 인터페이스는 DDR 기반 인터페이스라고 지칭될 수 있다.Various embodiments described herein may include memory components and/or interfaces to memory components. Such memory components may include volatile memory and/or non-volatile (NV) memory. Volatile memory may be a storage medium that requires power to maintain the state of data stored by the medium. Non-limiting examples of volatile memory may include various types of random access memory (RAM), such as dynamic RAM (DRAM) or static RAM (SRAM). One specific type of DRAM that may be used in memory modules is synchronous dynamic RAM (SDRAM). In certain embodiments, the DRAM of the memory component is: JESD79F for double data rate (DDR) SDRAM, JESD79-2F for DDR2 SDRAM, JESD79-3F for DDR3 SDRAM, JESD79-4A for DDR4 SDRAM, Low Power (LPDDR) to the Joint Electron Device Engineering Council (JEDEC), such as JESD209 for DDR), JESD209-2 for LPDDR2, JESD209-3 for LPDDR3, and JESD209-4 for LPDDR4 (these standards are available at jedec.org). standards published by the Such standards (and similar standards) may be referred to as DDR-based standards, and communication interfaces of storage devices implementing such standards may be referred to as DDR-based interfaces.

NVM은 매체에 의해 저장된 데이터의 상태를 유지하기 위해 전력을 필요로 하지 않는 저장 매체이다. 일 실시예에서, 메모리 디바이스는, NAND 또는 NOR 기술에 기초한 것과 같은, 블록 어드레싱 가능 메모리 디바이스를 포함할 수 있다. 메모리 디바이스는, 3차원(3D) 크로스포인트 메모리 디바이스, 또는 다른 바이트 어드레싱 가능 제자리 기입(write-in-place) 비휘발성 메모리 디바이스와 같은, 미래 세대의 비휘발성 디바이스를 또한 포함할 수 있다. 일 실시예에서, 메모리 디바이스는 칼코게나이드 글라스(chalcogenide glass), 다중 임계 레벨 NAND 플래시 메모리, NOR 플래시 메모리, 단일 또는 다중 레벨 PCM(Phase Change Memory), 저항성 메모리, 나노와이어 메모리, 강유전성 트랜지스터 RAM(FeTRAM), 반강유전성 메모리, 멤리스터 기술을 포함하는 자기 저항 RAM(MRAM) 메모리, 금속 산화물 베이스, 산소 공공 베이스를 포함하는 저항성 메모리 및 전도성 브리지 RAM(CB-RAM), 또는 스핀 전달 토크(STT)-MRAM, 스핀트로닉 자기 접합 메모리 기반 디바이스, MTJ(magnetic tunneling junction) 기반 디바이스, DW(Domain Wall) 및 SOT(Spin Orbit Transfer) 기반 디바이스, 사이리스터 기반 메모리 디바이스, 또는 이들 중 임의의 것의 조합, 또는 다른 메모리를 사용하는 메모리 디바이스일 수 있거나 또는 이를 포함할 수 있다. 메모리 디바이스는 다이 자체 및/또는 패키징된 메모리 제품을 지칭할 수 있다. 특정 실시예에서, 비휘발성 메모리를 갖는 메모리 컴포넌트는, JESD218, JESD219, JESD220-1, JESD223B, JESD223-1, 또는 다른 적당한 표준(본 명세서에서 인용된 JEDEC 표준은 jedec.org에서 이용 가능함)과 같은, JEDEC에 의해 발표된 하나 이상의 표준을 준수할 수 있다.NVM is a storage medium that does not require power to maintain the state of the data stored by the medium. In one embodiment, the memory device may comprise a block addressable memory device, such as based on NAND or NOR technology. Memory devices may also include future generations of non-volatile devices, such as three-dimensional (3D) crosspoint memory devices, or other byte addressable write-in-place non-volatile memory devices. In one embodiment, the memory device is chalcogenide glass, multi-threshold level NAND flash memory, NOR flash memory, single or multi-level phase change memory (PCM), resistive memory, nanowire memory, ferroelectric transistor RAM ( FeTRAM), antiferroelectric memory, magnetoresistive RAM (MRAM) memory with memristor technology, resistive and conductive bridge RAM (CB-RAM) with metal oxide base, oxygen vacancy base, or spin transfer torque (STT) -MRAM, spintronic magnetic junction memory based device, MTJ (magnetic tunneling junction) based device, DW (Domain Wall) and SOT (Spin Orbit Transfer) based device, thyristor based memory device, or a combination of any of these, or other It may be or may include a memory device that uses memory. A memory device may refer to the die itself and/or to a packaged memory product. In certain embodiments, a memory component with non-volatile memory is configured such as JESD218, JESD219, JESD220-1, JESD223B, JESD223-1, or other suitable standard (the JEDEC standard cited herein is available at jedec.org). , can comply with one or more standards published by JEDEC.

도 1을 참조하면, 전자 시스템(10)의 실시예는 제어기(11), 및 제어기(11)에 통신 가능하게 결합된 로직(13)을 포함할 수 있다. 일부 실시예에 따르면, 로직(13)은 2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하도록 구성될 수 있으며, 여기서 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스(예를 들어, NVMe 사양을 준수하는 ZNS)로 논리적으로 구성된다. 로직(13)은 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하고, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계(smallest aligned boundary)를 결정하며, 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하도록 추가로 구성될 수 있다. 예를 들어, 로직(13)은 애플리케이션에 대한 선호 구역 크기를 결정하고, 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하며, 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다.Referring to FIG. 1 , an embodiment of an electronic system 10 may include a controller 11 , and logic 13 communicatively coupled to the controller 11 . According to some embodiments, logic 13 may be configured to control access to two or more persistent storage devices, wherein at least one of the two or more persistent storage devices includes a namespace partitioned into two or more zones (eg, For example, ZNS conforming to the NVMe specification). The logic 13 determines two or more different zone size dependent parameters associated with the two or more persistent storage devices, and determines a smallest aligned boundary based on each of the two or more different zone size dependent parameters, the determined and set the zone group size for access to the two or more persistent storage devices based on the minimum alignment boundary. For example, logic 13 determines a preferred region size for an application, determines a first erase block size for a first one of the two or more persistent storage devices, and determines a preferred region size and a first erase block size. may be configured to determine a minimum alignment boundary based on

일부 실시예에서, 로직(13)은 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다. 예를 들어, 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함할 수 있고, 제2 저장 디바이스는 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함할 수 있다. 일부 실시예에서, 로직(13)은 구역 네임스페이스 서브-그룹 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정하도록 추가로 구성될 수 있다. 일부 실시예에서, 로직(13)은 부가적으로 또는 대안적으로 구역 네임스페이스 구역 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 구역 용량에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다. 본 명세서에서의 실시예들 중 임의의 실시예에서, 적어도 하나의 영구 저장 디바이스는 SSD(예를 들어, NAND 기반 SSD)를 포함할 수 있다.In some embodiments, logic 13 determines a second erase block size for a second one of the two or more persistent storage devices, based on the preferred zone size, the first erase block size, and the second erase block size to determine the minimum alignment boundary. For example, the first storage device may include a first type of NAND media and the second storage device may include a second type of NAND media that is different from the first type of NAND media. In some embodiments, the logic 13 is further configured to determine a zone namespace sub-group capacity and to determine a minimum alignment boundary based on a preferred zone size, a first erase block size, and a zone namespace sub-group capacity. can be configured. In some embodiments, logic 13 additionally or alternatively determines a zone namespace zone capacity and determines a minimum alignment boundary based on a preferred zone size, a first erase block size, and a zone namespace zone capacity. can be configured to In any of the embodiments herein, the at least one persistent storage device may include an SSD (eg, a NAND-based SSD).

상기 제어기(11), 영구 저장 디바이스, 로직(13), 및 다른 시스템 컴포넌트 각각의 실시예는 하드웨어, 소프트웨어, 또는 이들의 임의의 적합한 조합으로 구현될 수 있다. 예를 들어, 하드웨어 구현은, 예를 들어, PLA(programmable logic array), FPGA(field programmable gate array), CPLD(complex programmable logic device)와 같은 구성 가능한 로직, 또는, 예를 들어, ASIC(application specific integrated circuit), CMOS(complementary metal oxide semiconductor) 또는 TTL(transistor-transistor logic) 기술과 같은 회로 기술을 사용하는 고정 기능 로직 하드웨어, 또는 이들의 임의의 조합을 포함할 수 있다. 제어기(11)의 실시예는 범용 제어기, 특수 목적 제어기, 메모리 제어기, 스토리지 제어기, 마이크로컨트롤러, 범용 프로세서, 특수 목적 프로세서, 중앙 프로세서 유닛(CPU), 실행 유닛 등을 포함할 수 있다. 일부 실시예에서, 영구 저장 디바이스(들), 및/또는 로직(13)은, (예를 들어, 동일한 다이 상의) 제어기(11)를 포함한, 다양한 컴포넌트에 위치되거나 그와 공존(co-located)할 수 있다.Each embodiment of the controller 11, persistent storage device, logic 13, and other system components may be implemented in hardware, software, or any suitable combination thereof. For example, a hardware implementation may include, for example, configurable logic such as a programmable logic array (PLA), a field programmable gate array (FPGA), a complex programmable logic device (CPLD), or, for example, an application specific (ASIC) integrated circuit), fixed function logic hardware using circuit technology such as complementary metal oxide semiconductor (CMOS) or transistor-transistor logic (TTL) technology, or any combination thereof. Embodiments of the controller 11 may include a general purpose controller, a special purpose controller, a memory controller, a storage controller, a microcontroller, a general purpose processor, a special purpose processor, a central processor unit (CPU), an execution unit, and the like. In some embodiments, persistent storage device(s), and/or logic 13 are located in or co-located with various components, including controller 11 (eg, on the same die) can do.

대안적으로 또는 부가적으로, 이들 컴포넌트의 전부 또는 일부는 프로세서 또는 컴퓨팅 디바이스에 의해 실행될 RAM(random access memory), ROM(read only memory), PROM(programmable ROM), 펌웨어, 플래시 메모리 등과 같은 머신 또는 컴퓨터 판독 가능 저장 매체에 저장된 로직 명령어 세트로서 하나 이상의 모듈에 구현될 수 있다. 예를 들어, 컴포넌트의 동작을 수행하기 위한 컴퓨터 프로그램 코드는, PYTHON, PERL, JAVA, SMALLTALK, C++, C# 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어를 포함하여, 하나 이상의 운영 체제(OS)에 적용 가능한/적절한 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 예를 들어, 영구 저장 디바이스(들), 다른 영구 저장 매체, 또는 다른 시스템 메모리는, 제어기(11)에 의해 실행될 때, 시스템(10)으로 하여금 시스템(10)의 하나 이상의 컴포넌트, 특징, 또는 양태를 구현하게 하는 명령어 세트를 저장할 수 있다(예를 들어, 로직(13)은 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하고, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하며, 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하는 등을 한다).Alternatively or additionally, all or some of these components may be implemented by a processor or computing device on a machine or machine, such as random access memory (RAM), read only memory (ROM), programmable ROM (PROM), firmware, flash memory, or the like. It may be implemented in one or more modules as a set of logic instructions stored in a computer-readable storage medium. For example, computer program code for performing the operation of a component may be an object-oriented programming language such as PYTHON, PERL, JAVA, SMALLTALK, C++, C#, etc. and conventional procedural programming such as a "C" programming language or similar programming language. It may be written in any combination of programming languages applicable/suitable to one or more operating systems (OSs), including languages. For example, persistent storage device(s), other persistent storage media, or other system memory, when executed by controller 11 , cause system 10 to cause one or more components, features, or aspects of system 10 . (e.g., logic 13 determines two or more different zone size dependent parameters associated with the two or more persistent storage devices, and assigns to each of the two or more different zone size dependent parameters. determine a minimum alignment boundary based on the determined minimum alignment boundary, and set a zone group size for access to two or more persistent storage devices based on the determined minimum alignment boundary, etc.).

이제 도 2를 살펴보면, 전자 장치(15)의 실시예는 하나 이상의 기판(16), 및 하나 이상의 기판(16)에 결합된 로직(17)을 포함할 수 있다. 로직(17)은 2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하도록 구성될 수 있고, 여기서 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성된다. 로직(17)은 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하고, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하며, 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하도록 추가로 구성될 수 있다. 예를 들어, 로직(17)은 애플리케이션에 대한 선호 구역 크기를 결정하고, 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하며, 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다.Referring now to FIG. 2 , an embodiment of an electronic device 15 may include one or more substrates 16 , and logic 17 coupled to the one or more substrates 16 . Logic 17 may be configured to control access to two or more persistent storage devices, wherein at least one of the two or more persistent storage devices is logically organized into a namespace partitioned into two or more zones. Logic 17 determines two or more different zone size dependent parameters associated with the two or more persistent storage devices, determines a minimum alignment boundary based on each of the two or more different zone size dependent parameters, and based on the determined minimum alignment boundary to set the zone group size for access to two or more persistent storage devices. For example, logic 17 determines a preferred region size for an application, determines a first erase block size for a first one of the two or more persistent storage devices, and determines a preferred region size and a first erase block size. may be configured to determine a minimum alignment boundary based on

일부 실시예에서, 로직(17)은 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다. 예를 들어, 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함할 수 있고, 제2 저장 디바이스는 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함할 수 있다. 일부 실시예에서, 로직(17)은 구역 네임스페이스 서브-그룹 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정하도록 추가로 구성될 수 있다. 일부 실시예에서, 로직(17)은 부가적으로 또는 대안적으로 구역 네임스페이스 구역 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 구역 용량에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다. 본 명세서에서의 실시예들 중 임의의 실시예에서, 적어도 하나의 영구 저장 디바이스는 SSD(예를 들어, NAND 기반 SSD)를 포함할 수 있다.In some embodiments, logic 17 determines a second erase block size for a second one of the two or more persistent storage devices, based on the preferred zone size, the first erase block size, and the second erase block size. to determine the minimum alignment boundary. For example, the first storage device may include a first type of NAND media and the second storage device may include a second type of NAND media that is different from the first type of NAND media. In some embodiments, logic 17 is further configured to determine a zone namespace sub-group capacity and to determine a minimum alignment boundary based on a preferred zone size, a first erase block size, and a zone namespace sub-group capacity. can be configured. In some embodiments, logic 17 additionally or alternatively determines a zone namespace zone capacity and determines a minimum alignment boundary based on a preferred zone size, a first erase block size, and a zone namespace zone capacity. can be configured to In any of the embodiments herein, the at least one persistent storage device may include an SSD (eg, a NAND-based SSD).

로직(17)의 실시예는, 예를 들어, 본 명세서에서 설명된 것과 같은, 시스템, 장치, 컴퓨터, 디바이스 등에서 구현될 수 있다. 더 상세하게는, 로직(17)의 하드웨어 구현은, 예를 들어, PLA, FPGA, CPLD와 같은 구성 가능한 로직, 또는, 예를 들어, ASIC, CMOS, 또는 TTL 기술과 같은 회로 기술을 사용하는 고정 기능 로직 하드웨어, 또는 이들의 임의의 조합을 포함할 수 있다. 대안적으로 또는 부가적으로, 로직(17)은 프로세서 또는 컴퓨팅 디바이스에 의해 실행될 RAM, ROM, PROM, 펌웨어, 플래시 메모리 등과 같은 머신 또는 컴퓨터 판독 가능 저장 매체에 저장된 로직 명령어 세트로서 하나 이상의 모듈에 구현될 수 있다. 예를 들어, 컴포넌트의 동작을 수행하기 위한 컴퓨터 프로그램 코드는, PYTHON, PERL, JAVA, SMALLTALK, C++, C# 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어를 포함하여, 하나 이상의 OS에 적용 가능한/적절한 프로그래밍 언어의 임의의 조합으로 작성될 수 있다.Embodiments of logic 17 may be implemented in, for example, a system, apparatus, computer, device, etc., as described herein. More specifically, the hardware implementation of logic 17 may be a configurable logic such as, for example, PLA, FPGA, CPLD, or fixed using circuit technology such as, for example, ASIC, CMOS, or TTL technology. functional logic hardware, or any combination thereof. Alternatively or additionally, logic 17 may be implemented in one or more modules as a set of logic instructions stored in a machine or computer readable storage medium such as RAM, ROM, PROM, firmware, flash memory, etc. to be executed by a processor or computing device. can be For example, computer program code for performing the operation of a component may be an object-oriented programming language such as PYTHON, PERL, JAVA, SMALLTALK, C++, C#, etc. and conventional procedural programming such as a "C" programming language or similar programming language. It may be written in any combination of programming languages applicable/suitable to one or more OSs, including languages.

예를 들어, 로직(17)은 하나 이상의 기판(16)을 포함할 수 있는 반도체 장치 상에 구현될 수 있으며, 로직(17)은 하나 이상의 기판(16)에 결합된다. 일부 실시예에서, 로직(17)은 반도체 기판(들)(예를 들어, 실리콘, 사파이어, 갈륨-비소 등) 상의 구성 가능한 로직 및 고정 기능 하드웨어 로직 중 하나 이상에서 적어도 부분적으로 구현될 수 있다. 예를 들어, 로직(17)은 기판(들)(16) 내에 배치되는 트랜지스터 채널 영역을 갖는 기판(들)(16)에 결합된 트랜지스터 어레이 및/또는 다른 집적 회로 컴포넌트를 포함할 수 있다. 로직(17)과 기판(들)(16) 사이의 인터페이스는 가파른 접합(abrupt junction)이 아닐 수 있다. 로직(17)은 또한 기판(들)(16)의 초기 웨이퍼 상에 성장되는 에피택셜 층을 포함하는 것으로 간주될 수 있다.For example, logic 17 may be implemented on a semiconductor device that may include one or more substrates 16 , and logic 17 is coupled to one or more substrates 16 . In some embodiments, logic 17 may be implemented at least in part in one or more of configurable logic and fixed function hardware logic on a semiconductor substrate(s) (eg, silicon, sapphire, gallium-arsenide, etc.). For example, logic 17 may include a transistor array and/or other integrated circuit component coupled to substrate(s) 16 having a transistor channel region disposed within substrate(s) 16 . The interface between logic 17 and substrate(s) 16 may not be an abrupt junction. Logic 17 may also be considered to include an epitaxial layer grown on the initial wafer of substrate(s) 16 .

이제 도 3a 내지 도 3c를 살펴보면, 스토리지를 제어하는 방법(20)의 실시예는 블록(21)에서 2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하는 단계 - 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -, 블록(22)에서 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하는 단계, 블록(23)에서 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하는 단계, 및 블록(24)에서 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하는 단계를 포함할 수 있다. 예를 들어, 방법(20)은 블록(25)에서 애플리케이션에 대한 선호 구역 크기를 결정하는 단계, 블록(26)에서 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하는 단계, 및 블록(27)에서 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하는 단계를 포함할 수 있다.Referring now to FIGS. 3A-3C , an embodiment of a method 20 for controlling storage includes, in block 21 , controlling access to two or more persistent storage devices, wherein at least one of the two or more persistent storage devices comprises: logically organized into a namespace partitioned into two or more zones, determining in block 22 two or more different zone size dependent parameters associated with the two or more persistent storage devices; determining a minimum alignment boundary based on each of the zone size dependent parameters, and setting a zone group size for access to the two or more persistent storage devices based on the minimum alignment boundary determined in block 24 . can For example, the method 20 may include determining a preferred zone size for an application at block 25 , and determining a first erase block size for a first one of the two or more persistent storage devices at block 26 . and determining a minimum alignment boundary at block 27 based on the preferred region size and the first erase block size.

방법(20)의 일부 실시예는 블록(28)에서 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하는 단계, 및 블록(29)에서 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하는 단계를 추가로 포함할 수 있다. 예를 들어, 블록(30)에서 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함할 수 있고, 제2 저장 디바이스는 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함할 수 있다. 방법(20)의 일부 실시예는 블록(31)에서 구역 네임스페이스 서브-그룹 용량을 결정하는 단계, 및 블록(32)에서 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정하는 단계를 추가로 포함할 수 있다. 방법(20)은 부가적으로 또는 대안적으로 블록(33)에서 구역 네임스페이스 구역 용량을 결정하는 단계, 및 블록(34)에서 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 구역 용량에 기초하여 최소 정렬 경계를 결정하는 단계를 포함할 수 있다. 본 명세서에서의 실시예들 중 임의의 실시예에서, 블록(35)에서 적어도 하나의 영구 저장 디바이스는 SSD를 포함할 수 있다.Some embodiments of method 20 include determining, at block 28 , a second erase block size for a second one of the two or more persistent storage devices, and at block 29 , a preferred zone size, a first erase. The method may further include determining a minimum alignment boundary based on the block size and the second erase block size. For example, at block 30 the first storage device may include a first type of NAND media, and the second storage device may include a second type of NAND media that is different from the first type of NAND media. . Some embodiments of method 20 include determining, at block 31 , a zone namespace sub-group capacity, and at block 32 , a preferred zone size, a first erase block size, and a zone namespace sub-group capacity. The method may further include determining a minimum alignment boundary based on . The method 20 additionally or alternatively includes determining, at block 33, a zone namespace zone capacity, and at block 34, a preferred zone size, a first erase block size, and a zone namespace zone capacity. determining a minimum alignment boundary based on the In any of the embodiments herein, the at least one persistent storage device at block 35 may include an SSD.

방법(20)의 실시예는, 예를 들어, 본 명세서에서 설명된 것과 같은, 시스템, 장치, 컴퓨터, 디바이스 등에서 구현될 수 있다. 더 상세하게는, 방법(20)의 하드웨어 구현은, 예를 들어, PLA, FPGA, CPLD와 같은 구성 가능한 로직, 또는, 예를 들어, ASIC, CMOS, 또는 TTL 기술과 같은 회로 기술을 사용하는 고정 기능 로직 하드웨어, 또는 이들의 임의의 조합을 포함할 수 있다. 대안적으로 또는 부가적으로, 방법(20)은 프로세서 또는 컴퓨팅 디바이스에 의해 실행될 RAM, ROM, PROM, 펌웨어, 플래시 메모리 등과 같은 머신 또는 컴퓨터 판독 가능 저장 매체에 저장된 로직 명령어 세트로서 하나 이상의 모듈에 구현될 수 있다. 예를 들어, 컴포넌트의 동작을 수행하기 위한 컴퓨터 프로그램 코드는, PYTHON, PERL, JAVA, SMALLTALK, C++, C# 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어를 포함하여, 하나 이상의 OS에 적용 가능한/적절한 프로그래밍 언어의 임의의 조합으로 작성될 수 있다.Embodiments of method 20 may be implemented in, for example, a system, apparatus, computer, device, etc., as described herein. More specifically, the hardware implementation of method 20 may be fixed using configurable logic, such as, for example, PLA, FPGA, CPLD, or circuit technology, such as, for example, ASIC, CMOS, or TTL technology. functional logic hardware, or any combination thereof. Alternatively or additionally, method 20 may be implemented in one or more modules as a set of logic instructions stored in a machine or computer readable storage medium such as RAM, ROM, PROM, firmware, flash memory, etc. to be executed by a processor or computing device. can be For example, computer program code for performing the operation of a component may be an object-oriented programming language such as PYTHON, PERL, JAVA, SMALLTALK, C++, C#, etc. and conventional procedural programming such as a "C" programming language or similar programming language. It may be written in any combination of programming languages applicable/suitable to one or more OSs, including languages.

예를 들어, 방법(20)은 아래의 예 22 내지 예 28과 관련하여 설명된 바와 같이 컴퓨터 판독 가능 매체 상에 구현될 수 있다. 방법(20)의 실시예 또는 부분은 펌웨어, 애플리케이션(예를 들어, 애플리케이션 프로그래밍 인터페이스(API)를 통해), 또는 운영 체제(OS) 상에서 실행되는 드라이버 소프트웨어로 구현될 수 있다. 부가적으로, 로직 명령어는 어셈블러 명령어, ISA(instruction set architecture) 명령어, 머신 명령어, 머신 종속 명령어, 마이크로코드, 상태 설정 데이터, 집적 회로에 대한 구성 데이터, 전자 회로를 개인화하는 상태 정보 및/또는 하드웨어(예를 들어, 호스트 프로세서, 중앙 프로세싱 유닛/CPU, 마이크로컨트롤러 등)에 고유한 다른 구조 컴포넌트를 포함할 수 있다.For example, method 20 may be implemented on a computer-readable medium as described in connection with Examples 22-28 below. Embodiments or portions of method 20 may be implemented in firmware, an application (eg, via an application programming interface (API)), or driver software running on an operating system (OS). Additionally, logic instructions may include assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, state setting data, configuration data for integrated circuits, state information that personalizes electronic circuits, and/or hardware It may include other architectural components specific to (eg, host processor, central processing unit/CPU, microcontroller, etc.).

도 4를 참조하면, 분산형 전자 저장 시스템(40)의 실시예는 2개 이상의 영구 저장 디바이스(44)에 통신 가능하게 결합된 하나 이상의 호스트 디바이스(42)를 포함할 수 있다. 예를 들어, 영구 저장 디바이스들(44) 중 하나 이상은 HDD를 포함할 수 있고, 영구 저장 디바이스들(44) 중 하나 이상은 SSD를 포함할 수 있으며, 영구 저장 디바이스들(44) 중 하나 이상은 플래시 메모리 디바이스 등을 포함할 수 있다. 예를 들어, 저장 디바이스(44)는 SLC(single level cell), MLC(multi-level cell), TLC(triple level cell), QLC(quad level cell) 등을 포함한 상이한 유형의 NAND 기반 매체를 포함할 수 있다. 저장 디바이스들(44) 중 하나 이상은 NVMe 사양을 준수하는 ZNS 기술을 지원할 수 있다.4 , an embodiment of a distributed electronic storage system 40 may include one or more host devices 42 communicatively coupled to two or more persistent storage devices 44 . For example, one or more of persistent storage devices 44 may include an HDD, one or more of persistent storage devices 44 may include an SSD, and one or more of persistent storage devices 44 . may include a flash memory device and the like. For example, storage device 44 may include different types of NAND-based media including single level cell (SLC), multi-level cell (MLC), triple level cell (TLC), quad level cell (QLC), and the like. can One or more of the storage devices 44 may support ZNS technology compliant with the NVMe specification.

호스트 디바이스들(42) 및 저장 디바이스들(44) 각각은 제어기 로직(46)을 포함할 수 있다. 일부 실시예에 따르면, 제어기 로직(46)은 ZNS 기술을 지원하는 적어도 하나의 저장 디바이스(44)를 포함한, 저장 디바이스들(44)에 대한 액세스를 제어하도록 구성될 수 있다. 제어기 로직(46)은 저장 디바이스들(44)과 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하고, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하며, 결정된 최소 정렬 경계에 기초하여 저장 디바이스들(44)에 대한 액세스를 위한 구역 그룹 크기를 설정하도록 추가로 구성될 수 있다. 예를 들어, 제어기 로직(46)은 호스트 디바이스들(42) 중 하나 상의 애플리케이션에 대한 선호 구역 크기를 결정하고, 저장 디바이스들(44) 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하며, 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다.Each of host devices 42 and storage devices 44 may include controller logic 46 . According to some embodiments, controller logic 46 may be configured to control access to storage devices 44 , including at least one storage device 44 supporting ZNS technology. The controller logic 46 determines two or more different region size dependent parameters associated with the storage devices 44 , determines a minimum alignment boundary based on each of the two or more different region size dependent parameters, and determines the minimum alignment boundary at the determined minimum alignment boundary. It may be further configured to set a zone group size for access to storage devices 44 based on it. For example, controller logic 46 determines a preferred zone size for an application on one of host devices 42 , determines a first erase block size for a first one of storage devices 44 , and , determine the minimum alignment boundary based on the preferred region size and the first erase block size.

일부 실시예에서, 제어기 로직(46)은 저장 디바이스들(44) 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다. 예를 들어, 제1 저장 디바이스는 제1 유형의 NAND 매체(예를 들어, TLC)를 포함할 수 있고, 제2 저장 디바이스는 제2 유형의 NAND 매체(예를 들어, QLC)를 포함할 수 있다. 일부 실시예에서, 제어기 로직(46)은 ZNS 서브-그룹 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 ZNS 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정하도록 추가로 구성될 수 있다. 일부 실시예에서, 제어기 로직(46)은 부가적으로 또는 대안적으로 ZNS 구역 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 ZNS 구역 용량에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다. 도 4에 예시된 바와 같이, 제어기 로직(46)의 다양한 양태는 호스트 디바이스들(42) 및 저장 디바이스들(44) 간에 분산될 수 있다.In some embodiments, the controller logic 46 determines a second erase block size for a second one of the storage devices 44 and is based on the preferred zone size, the first erase block size, and the second erase block size. and determine a minimum alignment boundary based on the For example, a first storage device may include a first type of NAND medium (eg, TLC) and a second storage device may include a second type of NAND medium (eg, QLC) have. In some embodiments, the controller logic 46 may be further configured to determine a ZNS sub-group capacity and to determine a minimum alignment boundary based on a preferred zone size, a first erase block size, and a ZNS sub-group capacity. have. In some embodiments, the controller logic 46 may additionally or alternatively be configured to determine a ZNS zone capacity and to determine a minimum alignment boundary based on a preferred zone size, a first erase block size, and a ZNS zone capacity. can As illustrated in FIG. 4 , various aspects of controller logic 46 may be distributed among host devices 42 and storage devices 44 .

상기 호스트 디바이스들(42), 저장 디바이스들(44), 제어기 로직(46), 및 다른 시스템 컴포넌트들 각각의 실시예는 하드웨어, 소프트웨어, 또는 이들의 임의의 적합한 조합으로 구현될 수 있다. 예를 들어, 하드웨어 구현은, 예를 들어, PLA, FPGA, CPLD와 같은 구성 가능한 로직, 또는, 예를 들어, ASIC, CMOS, 또는 TTL 기술과 같은 회로 기술을 사용하는 고정 기능 로직 하드웨어, 또는 이들의 임의의 조합을 포함할 수 있다. 제어기 로직(46)의 실시예는 범용 제어기, 특수 목적 제어기, 메모리 제어기, 스토리지 제어기, 마이크로컨트롤러, 범용 프로세서, 특수 목적 프로세서, 중앙 프로세서 유닛(CPU), 실행 유닛 등에 포함될 수 있다.Each embodiment of the host devices 42 , storage devices 44 , controller logic 46 , and other system components may be implemented in hardware, software, or any suitable combination thereof. For example, the hardware implementation may include, for example, configurable logic such as PLA, FPGA, CPLD, or fixed function logic hardware using, for example, circuit technology such as ASIC, CMOS, or TTL technology, or these may include any combination of Embodiments of controller logic 46 may be included in general purpose controllers, special purpose controllers, memory controllers, storage controllers, microcontrollers, general purpose processors, special purpose processors, central processor units (CPUs), execution units, and the like.

대안적으로 또는 부가적으로, 이들 컴포넌트의 전부 또는 부분은 프로세서 또는 컴퓨팅 디바이스에 의해 실행될 RAM, ROM, PROM, 펌웨어, 플래시 메모리 등과 같은 머신 또는 컴퓨터 판독 가능 저장 매체에 저장된 로직 명령어 세트로서 하나 이상의 모듈에 구현될 수 있다. 예를 들어, 컴포넌트의 동작을 수행하기 위한 컴퓨터 프로그램 코드는, PYTHON, PERL, JAVA, SMALLTALK, C++, C# 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어를 포함하여, 하나 이상의 OS에 적용 가능한/적절한 프로그래밍 언어의 임의의 조합으로 작성될 수 있다.Alternatively or additionally, all or part of these components may be one or more modules as a set of logic instructions stored in a machine or computer readable storage medium such as RAM, ROM, PROM, firmware, flash memory, etc. to be executed by a processor or computing device. can be implemented in For example, computer program code for performing the operation of a component may be an object-oriented programming language such as PYTHON, PERL, JAVA, SMALLTALK, C++, C#, etc. and conventional procedural programming such as a "C" programming language or similar programming language. It may be written in any combination of programming languages applicable/suitable to one or more OSs, including languages.

도 5를 참조하면, 구역화된 네임스페이스(50)의 실시예는 구역 N, 구역 N+1, 구역 N+2 등을 포함한 구역들로 분할된 네임스페이스 범위를 포함할 수 있으며, 여기서 N>0이다. 각각의 구역은 구역 시작 논리 블록 어드레스(ZSLBA)에서 시작하여 ZMAX까지의 논리 블록 어드레스(LBA)의 범위를 가지며, 여기서 ZMAX = ZSLBA + ZSIZE(구역의 크기)이다. NVMe 2.0 기본 사양에 설명된 바와 같이, ZNS 기술은 이하의 요구사항들 중 하나 이상을 갖는 구역을 이용할 수 있다: 구역은 네임스페이스에 고정된 크기의 LBA 파티션을 만든다; 구역은 순차 기입 액세스 및 랜덤 판독 액세스를 지원한다; 구역 데이터가 디바이스에 의해 논리적으로 이동되지 않는다(예를 들어, 웨어 레벨링(wear leveling) 등과 같은 매체 관리로 인해 물리적 위치가 변경될 수 있음); 오버라이트(overwrite)를 가능하게 하기 위해 구역이 명시적으로 리셋되어야 한다; 및/또는 구역은 정수 개수의 LBA, 따라서 기입/데이터에서 구역 크기의 배수만을 지원한다. 일부 실시예는 유리하게도 구역화된 네임스페이스에 하나 이상의 부가 기능 능력을 제공한다.Referring to FIG. 5 , an embodiment of a zoned namespace 50 may include a namespace scope partitioned into zones including zone N, zone N+1, zone N+2, etc., where N>0 to be. Each zone has a range of logical block addresses (LBA) starting from zone start logical block address (ZSLBA) to ZMAX, where ZMAX = ZSLBA + ZSIZE (size of zone). As described in the NVMe 2.0 Base Specification, ZNS technology may utilize zones that have one or more of the following requirements: Zones create fixed-size LBA partitions in a namespace; Zones support sequential write access and random read access; Zone data is not logically moved by the device (eg, physical location may change due to media management such as wear leveling, etc.); Zones must be explicitly reset to enable overwrite; and/or zones only support an integer number of LBAs, thus multiples of zone size in write/data. Some embodiments advantageously provide one or more additional functional capabilities to the zoned namespace.

일부 실시예는 유리하게도 플랫폼 및 SSD 파라미터를 개선시키거나 최적화하기 위해 구역 그룹화를 위한 기술을 제공할 수 있다. 예를 들어, QLC 기술 및 HDD와의 비용 격차 감소를 통해, 하이퍼스케일러에서의 고용량 스토리지는 SSD를 더 효과적으로 이용할 수 있다. ZNS 기술은 고용량 스토리지에 대해 HDD로부터 SSD로의 전환을 가능하게 하기 위해 다양한 NAND 문제를 해결할 수 있다. 예를 들어, HDD는 SMR에 기반한 구역화된 블록 디바이스(zoned block device, ZBD) 인터페이스(예를 들어, 구역 블록 커맨드(zone block command, ZBC) 및/또는 구역화된 디바이스 ATA 커맨드(zoned-device ATA command, ZAC))와 함께 종래 방식으로 이용될 수 있다. 기존의 ZBC/ZAC 대규모 인프라스트럭처는 비용 효과적인 방식으로 QLC 능력을 이용하는 효율적인 ZNS 데이터 관리에 활용될 수 있다. 이러한 비용 및 효율성 개선을 달성하기 위해, ZNS는 SSD가 호스트 대신에 LBA를 정의하는 순차 데이터 액세스를 가능하게 한다. 구역은 전체적으로 기입 및 소거될 수 있으며, 따라서 조각 모음(defragmentation)의 필요성을 없애주는 것은 물론 내부 데이터 이동을 줄여준다. 감소된 NAND 비용뿐만 아니라 DRAM의 감소 및 SSD 수명을 연장시키는 향상된 디바이스 내구성을 포함하는, ZNS를 통해 달성되는 비용 절감이 사용자에게 전달될 수 있다.Some embodiments may advantageously provide techniques for grouping zones to improve or optimize platform and SSD parameters. For example, by reducing the cost gap with QLC technology and HDDs, high-capacity storage in hyperscalers can make better use of SSDs. ZNS technology can solve a variety of NAND issues to enable the transition from HDD to SSD for high-capacity storage. For example, the HDD is a zoned block device (ZBD) interface based on SMR (eg, a zone block command (ZBC) and/or a zoned-device ATA command , ZAC)) can be used in a conventional manner. Existing ZBC/ZAC large-scale infrastructure can be utilized for efficient ZNS data management using QLC capabilities in a cost-effective manner. To achieve these cost and efficiency improvements, ZNS enables sequential data access where SSDs define LBAs on behalf of the host. Zones can be globally written and erased, thus eliminating the need for defragmentation as well as reducing internal data movement. The cost savings achieved with ZNS can be passed on to users, including reduced NAND costs as well as reduced DRAM and improved device durability to extend SSD lifespan.

그렇지만, HDD를 SSD로 대체하기 위해 종래의 ZNS 기술을 이용하는 데에는 다양한 문제점이 있다. 예를 들어, 한 가지 문제점은 SMR 구역이 임의의 요구된 용량으로 구성될 수 있기 때문에 SMR 에코 시스템이 어떠한 구역 크기 제약조건도 갖지 않는다는 것이다. 종래에는, ZNS를 지원하는 플래시 디바이스 상에서의 구역 용량이 "NAND 물리적 소거 블록 크기"에 의해 제약된다. 플랫폼 또는 시스템 레벨 알고리즘은 데이터를 보호하기 위해 소거 코딩을 구현한다. 하나의 소거 코딩된 데이터 블롭이 다수의 블롭으로 분할될 수 없기 때문에, 소거 코딩 입도가 구역 용량 요구사항을 주도한다. 이는 플래시 기반 구역 용량이 소거 코딩 블롭 크기의 배수일 필요가 있다는 것을 의미한다. 각각의 소거 블록 용량은 소거 블록당 페이지 수, 서브 블록당 플레인 수를 포함하여 상이한 NAND 유형(예컨대, TLC, QLC 등)에 대해 상이할 수 있다. 이러한 플랫폼 레벨 요구사항, 크로스 플랫폼 SMR 레벨 구현 및 요구된 구역 크기를 구성하는 NAND 능력은 소프트웨어 및 ZNS 구현을 일반화하기 위한 하이퍼스케일러에게 어려운 문제를 야기한다. 다수의 NAND SSD 공급업체가 상이한 용량을 갖는 소거 블록 크기를 이용하기 때문에 이 문제의 규모가 커진다.However, there are various problems in using the conventional ZNS technology to replace the HDD with the SSD. For example, one problem is that the SMR ecosystem does not have any zone size constraints because SMR zones can be configured with any required capacity. Conventionally, the area capacity on flash devices supporting ZNS is constrained by "NAND Physical Erase Block Size". Platform or system level algorithms implement erasure coding to protect data. Because one erasure coded data blob cannot be split into multiple blobs, erasure coding granularity drives the regional capacity requirements. This means that the flash based zone capacity needs to be a multiple of the erase coding blob size. Each erase block capacity may be different for different NAND types (eg, TLC, QLC, etc.), including the number of pages per erase block and the number of planes per sub-block. These platform-level requirements, cross-platform SMR-level implementations, and NAND ability to configure the required zone size pose challenges for hyperscalers to generalize software and ZNS implementations. This problem is magnified as many NAND SSD vendors use erase block sizes with different capacities.

도 6을 참조하면, 다양한 크기 요구사항 및 제약조건의 예시적인 다이어그램은 상이한 크기가 어떻게 애플리케이션 소프트웨어 구현에 어려운 상황을 야기할 수 있는지를 보여준다. 예를 들어, 특정 소프트웨어 애플리케이션 또는 스토리지 요구는, 스토리지 시스템에 배치된 소거 코딩 크기, 상이한 유형의 NAND에 대한 다양한 소거 블록 크기 등에 잘 매핑될 수 있거나 그렇지 않을 수 있는, 선호 또는 최적 구역 크기를 가질 수 있다. 이 문제는 공급업체, NAND 유형, 및 용량에 걸쳐 상호 교환 가능한 표준 블록 기반 SSD에 ZNS를 적용할 때 특히 극복하기 어려울 수 있다. 유리하게는, 아래에서 더 상세히 설명되는 바와 같이, 일부 실시예는 이 문제를 극복하기 위해 구역 그룹화 기술을 제공할 수 있다.Referring to FIG. 6 , an exemplary diagram of various size requirements and constraints shows how different sizes can create difficult situations for application software implementation. For example, a particular software application or storage need may have a preferred or optimal zone size, which may or may not map well to the erase coding size deployed in the storage system, various erase block sizes for different types of NAND, etc. have. This problem can be particularly difficult to overcome when applying ZNS to standard block-based SSDs that are interchangeable across vendors, NAND types, and capacities. Advantageously, as described in more detail below, some embodiments may provide a zone grouping technique to overcome this problem.

다른 문제는 저비용 하이퍼스케일러가 더 나은 성능을 달성하기 위해 가장 작은 실현가능 구역 용량을 선호할 수 있다는 것이다. 작은 구역 크기는 (예를 들어, 실제 구현 능력을 넘어설 수 있는) 메타데이터, DRAM 공간 요구사항, 및 큰 로그 페이지 크기에 대한 상당한 오버헤드를 추가한다. 예를 들어, 32 TB 드라이브의 경우, 구역 정보를 정의하는 로그 페이지는 32 MB의 크기를 갖고 PCIe 버스를 통해 모든 정보를 전송하는 것은 10 ms 이상 걸릴 수 있다. 수백 마이크로 초의 커맨드 대기시간으로 인해, 구역을 관리하기 위한 전체 대기 시간 및 오버헤드가 많은 애플리케이션에서 허용 가능하지 않을 수 있다. 유리하게는, 아래에서 더 상세히 설명되는 바와 같이, 일부 실시예는 이 문제를 극복하기 위해 구역 그룹화 기술을 제공할 수 있다.Another problem is that low-cost hyperscalers may prefer the smallest feasible area capacity to achieve better performance. The small area size adds significant overhead for metadata (eg, which may exceed actual implementation capabilities), DRAM space requirements, and large log page sizes. For example, for a 32 TB drive, the log page defining the zone information is 32 MB in size and transferring all the information over the PCIe bus can take more than 10 ms. With command latency of hundreds of microseconds, the overall latency and overhead to manage a zone may not be acceptable for many applications. Advantageously, as described in more detail below, some embodiments may provide a zone grouping technique to overcome this problem.

다른 문제는 예상된 구역 크기와 NAND 물리적 블록 크기가 정렬되지 않는 경우, 구역 리셋 커맨드가 물리적 블록 상의 모든 데이터를 무효화시킬 수 없다는 것이다. 이는 비용 및 내구성 면에서 수익을 감소시킬 수 있는 예상치 못한 기입 증폭을 초래한다. 다른 문제는, 구역 크기가 소거 블록 크기와 정렬되지 않는 경우, 일부 여분의 물리적 공간이 사용되지 않게 되고, 그에 의해 각각의 구역에 대한 NAND 용량의 일정 비율을 낭비하게 된다는 것이다. 아래에서 더 상세히 설명되는 바와 같이, 일부 실시예는 유리하게도 이들 문제 중 하나 이상을 극복하기 위해 구역 그룹화 기술을 제공한다.Another problem is that if the expected region size and the NAND physical block size do not align, the region reset command cannot invalidate all data on the physical block. This results in unexpected write amplification that can reduce revenue in terms of cost and durability. Another problem is that if the region size is not aligned with the erase block size, some extra physical space is not used, thereby wasting a percentage of the NAND capacity for each region. As described in more detail below, some embodiments advantageously provide zone grouping techniques to overcome one or more of these problems.

일부 실시예는 유리하게도 모든 또는 가장 중요한 경계를 결합시키는 정렬된 경계에 구역을 집결시키는 구역 그룹화 기술을 제공한다. 예를 들어, 호스트는 단일 구역 그룹 내에 모든 원하는 변수를 포함시키는 것을 용이하게 하는 구역 그룹을 생성할 수 있다. 예를 들어, NAND 용량은 보통 어떤 바이너리 용량에 맞춰진다. 일부 실시예는 (1) 구역 그룹 경계 내에서의 데이터 전송 및 저장이 심리스(seamless)하고; (2) NAND 블록 크기와 같은 임의의 내부 변수가 구역 그룹 내에 숨겨져 있으며; 그리고/또는 (3) 각각의 구역 그룹 내에서, 각각의 구역은 NVMe 표준에 정의된 동일한 규칙을 따르도록 하는 방식으로 NAND 용량에 기초하여 구역 그룹을 생성할 수 있다. 유리하게도, 호스트가 수행하는 일은 호스트에 의해 이용되는 임의의 작업 조합(working combination)에 대해 구역 그룹을 정의하는 것이 전부이다.Some embodiments advantageously provide zone grouping techniques for clustering zones on aligned boundaries that combine all or most important boundaries. For example, a host may create a zone group that facilitates including all desired variables within a single zone group. For example, NAND capacity is usually tailored to some binary capacity. Some embodiments provide that (1) data transmission and storage within zone group boundaries is seamless; (2) any internal variables such as NAND block size are hidden within the zone group; and/or (3) within each zone group, create zone groups based on NAND capacity in such a way that each zone follows the same rules defined in the NVMe standard. Advantageously, all the host does is define a group of zones for any working combination used by the host.

표 1 내지 표 3은 일부 실시예에 따른 구역 그룹화에 대한 상이한 예를 보여준다. 표 1은 72 MB의 NAND 소거 블록 크기를 갖는 제1 구역 그룹 예를 보여준다. 표 2는 96 MB의 NAND 소거 블록 크기를 갖는 제2 구역 그룹 예를 보여준다. 표 3은 32 MB의 NAND 소거 블록 크기를 갖는 제3 구역 그룹 예를 보여준다.Tables 1-3 show different examples of zone grouping according to some embodiments. Table 1 shows an example of a first zone group with a NAND erase block size of 72 MB. Table 2 shows an example of a second zone group with a NAND erase block size of 96 MB. Table 3 shows an example of a third zone group with a NAND erase block size of 32 MB.

Figure pat00001
Figure pat00001

Figure pat00002
Figure pat00002

Figure pat00003
Figure pat00003

일부 실시예에 따르면, 구역 그룹화 방법은 모든 구역 크기 종속 파라미터의 최소 정렬 경계를 찾는 것을 포함할 수 있다. 제1 구역 그룹에 대해, 구역 그룹 용량은 SMR 구역에 대해 4608 MB일 수 있고, 이는 네 개의(4개의) ZNS 서브그룹을 포함한다. 예를 들어, 각각의 ZNS 서브그룹은 NVMe 표준에 정의된 바와 같이 9개의 구역을 포함할 수 있으며, 여기서 ZNS 구역 크기는 128 MB이다. 유리하게도, 구역은 모든 변수에 걸쳐 일정하며, 이는 구역 그룹 경계를 가로지르는 심리스한 데이터 전송을 용이하게 한다. 예를 들어, 그러한 심리스한 데이터 전송은, 예시적인 표 1 내지 표 3에서 구역 그룹 1 내지 구역 그룹 3 전부에 걸쳐 일정한, 하나의 ZNS 구역 용량의 기본 단위와 동일한 구역 그룹 크기 또는 상이한 구역 그룹 크기 내에서 수행될 수 있다.According to some embodiments, the zone grouping method may include finding a minimum alignment boundary of all zone size dependent parameters. For the first zone group, the zone group capacity may be 4608 MB for the SMR zone, which includes four (four) ZNS subgroups. For example, each ZNS subgroup may contain 9 zones as defined in the NVMe standard, where the ZNS zone size is 128 MB. Advantageously, the zones are constant across all variables, which facilitates seamless data transfer across zone group boundaries. For example, such seamless data transmission may be in the same zone group size as the basic unit of one ZNS zone capacity or within a different zone group size, constant across all zone groups 1 to 3 in the exemplary Tables 1-3. can be performed in

제한이 아닌 설명의 목적으로, 다른 예에서, 하이퍼스케일러 데이터 센터 제공업체는 지리적으로 분산된 2개의 데이터 센터 위치(예를 들어, 하나는 유럽에 있고 하나는 미국에 있음)를 갖는다. 데이터 센터는 데이터 핫니스(data hotness)에 기초하여 SMR HDD 및 ZNS SSD에 데이터를 저장한다. 사용성에 따라, SMR 구역과 SSD 구역 간에 데이터가 전송된다. 또한 정전 동안 및 복제 동안, 지리적으로 분산된 2개의 데이터 센터 위치 간에 데이터가 전송된다.For purposes of illustration and not limitation, in another example, a hyperscaler data center provider has two geographically dispersed data center locations (eg, one in Europe and one in the United States). The data center stores data in SMR HDD and ZNS SSD based on data hotness. Depending on availability, data is transferred between the SMR zone and the SSD zone. Data is also transferred between two geographically dispersed data center locations during outages and during replication.

이 예에서, 미국에 있는 데이터 센터 위치는 32 MB의 블록 크기를 갖는 NAND 플래시 디바이스를 이용하고 유럽에 있는 데이터 센터 위치는 96 MB 블록 크기를 갖는 SSD를 갖는다. 일관된 소거 코딩 알고리즘은 예시적인 128 MB 구역 크기를 요구할 수 있다. 종래의 ZNS 기술은, 상이한 유형의 NAND가 상이한 블록 크기를 갖기 때문에, 양쪽 데이터 센터 위치에 대해 일관된 소거 코딩 알고리즘을 지원하지 않을 수 있다. 종래에는, 플래시 블록 크기가 정렬되지 않은 구역은 기입 증폭을 증가시켜, ZNS 기술에 의해 제공되는 많은 또는 모든 이점을 감소시킬 수 있다. 유리하게는, 구역 그룹화 기술의 실시예는 상이한 유형의 NAND 기술이 128 MB 구역 크기를 지원할 수 있게 하고 각각의 데이터 센터 위치가 일관된 소거 코딩 알고리즘을 이용할 수 있게 할 수 있다. 예를 들어, 이전 페이지에서의 마지막 2개의 테이블에서 제시된 바와 같이 1536 MB의 SMR 서브그룹이 생성될 때, 유럽 데이터 센터 위치의 구역화된 SSD가 데이터 센터 애플리케이션 소프트웨어에 표준 블록 디바이스 SSD처럼 보일 수 있다. 이러한 그룹 경계를 사용하면, 양쪽 NAND 유형이 128 MB 용량을 갖는 12개의 구역을 포함할 수 있어, 데이터 센터에 걸쳐, SMR 구역 및 SSD 구역에 걸쳐 1536 MB 입도로 데이터 전송을 가능하게 한다. 예를 들어, 호스트는 128 MB 용량을 갖는 12개의 ZNS 구역을 포함하는 하나의 서브그룹을 열 수 있다. 모든 구역이 이어서 병렬로 기입될 수 있고, 데이터 수명에 따라, 구역 그룹 내의 모든 구역이 소거되거나 SMR 구역들로 동시에 전송될 수 있다.In this example, a data center location in the United States uses a NAND flash device with a block size of 32 MB and a data center location in Europe has an SSD with a block size of 96 MB. A consistent erasure coding algorithm may require an exemplary 128 MB region size. Conventional ZNS technology may not support a consistent erasure coding algorithm for both data center locations because different types of NAND have different block sizes. Conventionally, regions where flash block sizes are not aligned can increase write amplification, reducing many or all of the benefits provided by ZNS technology. Advantageously, embodiments of zone grouping techniques may enable different types of NAND technology to support 128 MB zone sizes and enable each data center location to use a consistent erasure coding algorithm. For example, when an SMR subgroup of 1536 MB is created as shown in the last two tables on the previous page, a zoned SSD in a European data center location may appear to the data center application software like a standard block device SSD. Using this group boundary, both NAND types can contain 12 zones with 128 MB capacity, enabling data transfer at 1536 MB granularity across data centers, across SMR zones and SSD zones. For example, a host can open one subgroup containing 12 ZNS zones with 128 MB capacity. All zones can then be written in parallel and, depending on the data lifetime, all zones within a zone group can be erased or sent to SMR zones simultaneously.

이하의 예에서, ZNS 구역 용량은 96 MB일 수 있고, 이하의 방정식은 다양한 구역 그룹 및 크기를 결정하는 데 이용될 수 있다:In the example below, the ZNS zone capacity may be 96 MB, and the following equation may be used to determine the various zone groups and sizes:

[수학식 1][Equation 1]

SMR 구역 크기 = n * NAND 플래시 소거 블록 SMR zone size = n * NAND flash erase blocks

= m * ZNS 구역 용량 = m * ZNS zone capacity

도 7a 및 도 7b를 참조하면, 구역 그룹(70)의 실시예는 ZNS 구역 용량의 배수(예를 들어, m = 4)(예를 들어, 4 * 96 MB = 384 MB)이고 또한 NAND 플래시 소거 블록 용량의 어떤 배수(예를 들어, EB = 64 MB의 경우, n = 6 * 64 = 384 MB)인 SMR 구역 크기를 포함할 수 있다. ZNS 구역은 수학식 1의 우측에 정의된 바와 같은 SMR 구역 크기에 들어맞는다. 유리하게는, 본 명세서에서 설명된 구역 그룹화 기술의 실시예에 따라 생성되는 적합한 구역 그룹은 SMR 구역을 갖는 HDD 및/또는 임의의 블록 크기 및 기술을 갖는 SSD를 포함하는, 임의의 기본 하드웨어에 걸쳐 이식 가능할 수 있다. 일부 실시예는 유리하게도 확장성 및 일반화를 가능하게 하여 매우 다양한 플랫폼 및 애플리케이션에 걸쳐 구역을 더 사용 가능하게 만들 수 있다. 다른 구현에서, 구역 그룹 기술의 실시예는 SMR 구역을 SSD 구역에 정렬시키는 데 사용될 뿐만 아니라 한 유형의 NAND의 SSD 구역을 다른 유형의 NAND에 정렬시키는 데에도 사용될 수 있다.7A and 7B , an embodiment of a zone group 70 is a multiple of the ZNS zone capacity (eg, m = 4) (eg, 4 * 96 MB = 384 MB) and also NAND flash erase It may include an SMR zone size that is any multiple of the block capacity (eg, for EB = 64 MB, n = 6 * 64 = 384 MB). The ZNS zone fits the SMR zone size as defined on the right side of equation (1). Advantageously, suitable zone groups created according to embodiments of zone grouping techniques described herein span any underlying hardware, including HDDs with SMR zones and/or SSDs with any block size and technology. may be transplantable. Some embodiments may advantageously allow for scalability and generalization, making zones more usable across a wide variety of platforms and applications. In other implementations, embodiments of the zone group technique may be used to align an SMR zone to an SSD zone, as well as align an SSD zone of one type of NAND to another type of NAND.

본 명세서에서 논의된 기술은 다양한 컴퓨팅 시스템(예를 들어, 데스크톱, 워크스테이션, 서버, 랙 시스템 등과 같은 비-모바일 컴퓨팅 디바이스, 스마트 폰, 태블릿, UMPC(Ultra-Mobile Personal Computer), 랩톱 컴퓨터, 울트라북 컴퓨팅 디바이스, 스마트 워치, 스마트 안경, 스마트 팔찌 등과 같은 모바일 컴퓨팅 디바이스, 및/또는 사물 인터넷(IoT) 디바이스(예를 들어, 센서, 카메라 등)와 같은 클라이언트/에지 디바이스를 포함함)에서 제공될 수 있다.The techniques discussed herein can be applied to a variety of computing systems (eg, non-mobile computing devices such as desktops, workstations, servers, rack systems, etc., smartphones, tablets, Ultra-Mobile Personal Computers (UMPCs), laptop computers, ultra to be provided in mobile computing devices such as book computing devices, smart watches, smart glasses, smart bracelets, etc., and/or client/edge devices such as Internet of Things (IoT) devices (eg, sensors, cameras, etc.) can

이제 도 8을 참조하면, 컴퓨팅 시스템(100)의 실시예는 하나 이상의 프로세서(102-1 내지 102-N)(일반적으로 본 명세서에서 "프로세서들(102)" 또는 "프로세서(102)"라고 지칭됨)를 포함할 수 있다. 프로세서들(102)은 상호연결부(interconnection) 또는 버스(104)를 통해 통신할 수 있다. 각각의 프로세서(102)는 다양한 컴포넌트를 포함할 수 있으며, 그중 일부만이 명확성을 위해 프로세서(102-1)를 참조하여 논의된다. 그에 따라, 나머지 프로세서들(102-2 내지 102-N) 각각은 프로세서(102-1)를 참조하여 논의된 동일하거나 유사한 컴포넌트를 포함할 수 있다.Referring now to FIG. 8 , an embodiment of a computing system 100 is one or more processors 102-1 through 102-N (generally referred to herein as “processors 102” or “processor 102”). ) may be included. Processors 102 may communicate via an interconnection or bus 104 . Each processor 102 may include various components, some of which are discussed with reference to processor 102-1 for clarity. Accordingly, each of the remaining processors 102 - 2 through 102 -N may include the same or similar components discussed with reference to the processor 102-1 .

일부 실시예에서, 프로세서(102-1)는 하나 이상의 프로세서 코어(106-1 내지 106-M)(본 명세서에서 "코어들(106)" 또는 더 일반적으로 "코어(106)"라고 지칭됨), 캐시(108)(다양한 실시예에서 공유 캐시 또는 전용 캐시(private cache)일 수 있음), 및/또는 라우터(110)를 포함할 수 있다. 프로세서 코어들(106)은 단일 집적 회로(IC) 칩 상에 구현될 수 있다. 더욱이, 칩은 하나 이상의 공유 및/또는 전용 캐시(예컨대, 캐시(108)), 버스 또는 상호연결부(예컨대, 버스 또는 상호연결부(112)), 로직(160), 메모리 제어기, 또는 다른 컴포넌트를 포함할 수 있다.In some embodiments, processor 102-1 includes one or more processor cores 106-1 through 106-M (referred to herein as “cores 106” or more generally “core 106”). , a cache 108 (which may be a shared cache or a private cache in various embodiments), and/or a router 110 . The processor cores 106 may be implemented on a single integrated circuit (IC) chip. Moreover, the chip may include one or more shared and/or dedicated caches (eg, cache 108 ), a bus or interconnect (eg, bus or interconnect 112 ), logic 160 , a memory controller, or other components. can do.

일부 실시예에서, 라우터(110)는 프로세서(102-1) 및/또는 시스템(100)의 다양한 컴포넌트들 사이에서 통신하는 데 사용될 수 있다. 더욱이, 프로세서(102-1)는 하나 초과의 라우터(110)를 포함할 수 있다. 더욱이, 다수의 라우터(110)는 프로세서(102-1) 내부 또는 외부의 다양한 컴포넌트들 사이의 데이터 라우팅을 가능하게 하기 위해 통신할 수 있다.In some embodiments, router 110 may be used to communicate between processor 102-1 and/or various components of system 100 . Moreover, the processor 102-1 may include more than one router 110 . Moreover, multiple routers 110 may communicate to facilitate data routing between various components inside or outside the processor 102-1.

캐시(108)는 코어들(106)과 같은, 프로세서(102-1)의 하나 이상의 컴포넌트에 의해 이용되는 데이터(예를 들어, 명령어를 포함함)를 저장할 수 있다. 예를 들어, 캐시(108)는 프로세서(102)의 컴포넌트에 의한 더 빠른 액세스를 위해 메모리(114)에 저장된 데이터를 로컬로 캐싱할 수 있다. 도 8에 도시된 바와 같이, 메모리(114)는 상호연결부(104)를 통해 프로세서들(102)과 통신할 수 있다. 일부 실시예에서, 캐시(108)(공유될 수 있음)는 다양한 레벨을 가질 수 있으며, 예를 들어, 캐시(108)는 중간 레벨 캐시(mid-level cache) 및/또는 최종 레벨 캐시(last-level cache, LLC)일 수 있다. 또한, 코어들(106) 각각은 레벨 1(L1) 캐시(116-1)(일반적으로 본 명세서에서 "L1 캐시(116)"라고 지칭됨)를 포함할 수 있다. 프로세서(102-1)의 다양한 컴포넌트는 캐시(108)와 직접적으로, 버스(예를 들어, 버스(112)), 및/또는 메모리 제어기 또는 허브를 통해 통신할 수 있다.Cache 108 may store data (eg, including instructions) used by one or more components of processor 102-1, such as cores 106 . For example, cache 108 may locally cache data stored in memory 114 for faster access by components of processor 102 . 8 , memory 114 may communicate with processors 102 via interconnect 104 . In some embodiments, cache 108 (which may be shared) may have various levels, for example, cache 108 may be a mid-level cache and/or a last-level cache. level cache, LLC). Additionally, each of the cores 106 may include a level 1 (L1) cache 116 - 1 (generally referred to herein as “L1 cache 116 ”). The various components of the processor 102-1 may communicate with the cache 108 directly, via a bus (eg, bus 112), and/or through a memory controller or hub.

도 8에 도시된 바와 같이, 메모리(114)는 메모리 제어기(120)를 통해 시스템(100)의 다른 컴포넌트에 결합될 수 있다. 메모리(114)는 휘발성 메모리를 포함할 수 있고 메인 메모리라고 상호 교환 가능하게 지칭될 수 있다. 비록 메모리 제어기(120)가 상호연결부(104)와 메모리(114) 사이에 결합되는 것으로 도시되어 있지만, 메모리 제어기(120)는 시스템(100)의 다른 곳에 위치될 수 있다. 예를 들어, 메모리 제어기(120) 또는 그의 부분은 일부 실시예에서 프로세서들(102) 중 하나 내에 제공될 수 있다.8 , memory 114 may be coupled to other components of system 100 via memory controller 120 . Memory 114 may include volatile memory and may be referred to interchangeably as main memory. Although memory controller 120 is shown coupled between interconnect 104 and memory 114 , memory controller 120 may be located elsewhere in system 100 . For example, memory controller 120 or a portion thereof may be provided within one of processors 102 in some embodiments.

시스템(100)은 네트워크 인터페이스(128)(예를 들어, 유선 또는 무선 인터페이스를 통해 컴퓨터 네트워크 및/또는 클라우드(129)와 통신함)를 통해 다른 디바이스/시스템/네트워크와 통신할 수 있다. 예를 들어, 네트워크 인터페이스(128)는 네트워크/클라우드(129)와 무선으로(예를 들어, IEEE(Institute of Electrical and Electronics Engineers) 802.11 인터페이스(IEEE 802.11a/b/g/n/ac 등을 포함함), 셀룰러 인터페이스, 3G, 4G, LTE, 블루투스 등을 통해) 통신하는 안테나(도시되지 않음)를 포함할 수 있다.System 100 may communicate with other devices/systems/networks via network interface 128 (eg, communicates with computer networks and/or cloud 129 via wired or wireless interfaces). For example, network interface 128 includes network/cloud 129 and wireless (eg, Institute of Electrical and Electronics Engineers (IEEE) 802.11 interfaces (IEEE 802.11a/b/g/n/ac, etc.) ), and an antenna (not shown) for communicating via a cellular interface, 3G, 4G, LTE, Bluetooth, etc.).

시스템(100)은 SSD 제어기 로직(125)을 통해 상호연결부(104)에 결합된 SSD 디바이스(130)와 같은 저장 디바이스를 또한 포함할 수 있다. 따라서, 로직(125)은 SSD 디바이스(130)에 대한 시스템(100)의 다양한 컴포넌트에 의한 액세스를 제어할 수 있다. 더욱이, 비록 로직(125)이 도 8에서 상호연결부(104)에 직접적으로 결합되는 것으로 도시되어 있지만, 로직(125)은 대안적으로 스토리지 버스/상호연결부(예컨대, SATA(Serial Advanced Technology Attachment) 버스, PCI(Peripheral Component Interconnect)(또는 PCIe(PCI EXPRESS) 인터페이스), NVMe(NVM EXPRESS) 등)를 통해 시스템(100)의 하나 이상의 다른 컴포넌트와 통신할 수 있다(예를 들어, 스토리지 버스가 버스 브리지, 칩세트 등과 같은 어떤 다른 로직을 통해 상호연결부(104)에 결합되는 경우). 부가적으로, 로직(125)은 메모리 제어기 로직(예컨대, 도 9를 참조하여 논의된 것)에 통합되거나 또는 다양한 실시예에서 동일한 집적 회로(IC) 디바이스 상에(예를 들어, SSD 디바이스(130)와 동일한 회로 보드 디바이스 상에 또는 SSD 디바이스(130)와 동일한 인클로저 내에) 제공될 수 있다.System 100 may also include a storage device, such as SSD device 130 , coupled to interconnect 104 via SSD controller logic 125 . Accordingly, logic 125 may control access by various components of system 100 to SSD device 130 . Moreover, although logic 125 is shown coupled directly to interconnect 104 in FIG. 8 , logic 125 may alternatively be a storage bus/interconnect (eg, a Serial Advanced Technology Attachment (SATA) bus). , may communicate with one or more other components of system 100 via a Peripheral Component Interconnect (PCI) (or PCI EXPRESS interface (PCIe), NVM EXPRESS (NVMe), etc.) , when coupled to interconnect 104 via some other logic such as a chipset, etc.). Additionally, logic 125 may be integrated into memory controller logic (eg, discussed with reference to FIG. 9 ) or on the same integrated circuit (IC) device in various embodiments (eg, SSD device 130 ) ) on the same circuit board device or in the same enclosure as the SSD device 130 ).

게다가, 로직(125) 및/또는 SSD 디바이스(130)는 하나 이상의 센서(도시되지 않음)의 상태 또는 그에 의해 검출되는 값을 나타내는 (예를 들어, 하나 이상의 비트 또는 신호의 형태의) 정보를 수신하기 위해 하나 이상의 센서에 결합될 수 있다. 이러한 센서(들)는, 온도, 동작 주파수, 동작 전압, 전력 소비, 및/또는 코어 간 통신 활동 등과 같은 시스템/플랫폼의 전력/열 거동에 영향을 미치는 다양한 인자의 변동을 감지하기 위해, 코어들(106), 상호연결부(104 또는 112), 프로세서(102) 외부의 컴포넌트, SSD 디바이스(130), SSD 버스, SATA 버스, 로직(125), 로직(160) 등을 포함한, 시스템(100)(또는 본 명세서에서 논의된 다른 컴퓨팅 시스템)의 컴포넌트들에 근접하게 제공될 수 있다.In addition, logic 125 and/or SSD device 130 receives information (eg, in the form of one or more bits or signals) indicative of the status of or values detected by one or more sensors (not shown). It may be coupled to one or more sensors to These sensor(s) may be used to detect variations in various factors affecting the power/thermal behavior of the system/platform, such as temperature, operating frequency, operating voltage, power consumption, and/or inter-core communication activity, etc. System 100 (including 106 , interconnects 104 or 112 , components external to processor 102 , SSD device 130 , SSD bus, SATA bus, logic 125 , logic 160 , etc.) or other computing systems discussed herein).

도 9는 실시예에 따른, SSD 디바이스(130)의 다양한 컴포넌트의 블록 다이어그램을 예시한다. 도 9에 예시된 바와 같이, 로직(160)은 다양한 위치에, 예컨대, SSD 디바이스(130) 또는 제어기(382) 등의 내부에 위치될 수 있고, 도 8과 관련하여 논의된 바와 유사한 기술을 포함할 수 있다. SSD 디바이스(130)는 제어기(382)(제어기(382)는 차례로 하나 이상의 프로세서 코어 또는 프로세서(384) 및 메모리 제어기 로직(386)을 포함함), 캐시(138), RAM(388), 펌웨어 스토리지(390), 및 하나 이상의 메모리 디바이스(392-1 내지 392-N)(집합적으로 메모리(392)라고 함, NAND 플래시, NOR 플래시, 또는 다른 유형의 비휘발성 메모리를 포함할 수 있음)를 포함한다. 메모리(392)는 하나 이상의 메모리 채널 또는 버스를 통해 메모리 제어기 로직(386)에 결합된다. 또한, SSD 디바이스(130)는 인터페이스(예컨대, SATA, SAS, PCIe, NVMe 인터페이스 등)를 통해 로직(125)과 통신한다. 도 1 내지 도 7b를 참조하여 논의된 특징들/양태들/동작들 중 하나 이상은 도 8 및/또는 도 9의 컴포넌트들 중 하나 이상에 의해 수행될 수 있다. 프로세서(384) 및/또는 제어기(382)는 메모리 디바이스(392-1 내지 392-N)에 기입되거나 그로부터 판독되는 데이터를 압축/압축 해제(또는 그의 압축/압축 해제를 다른 방식으로 야기)할 수 있다. 또한, 도 1 내지 도 7b의 특징들/양태들/동작들 중 하나 이상이 펌웨어(390)에 프로그래밍될 수 있다. 게다가, SSD 제어기 로직(125)은 로직(160)을 또한 포함할 수 있다.9 illustrates a block diagram of various components of SSD device 130 , in accordance with an embodiment. As illustrated in FIG. 9 , logic 160 may be located in various locations, such as within SSD device 130 or controller 382 , etc., including techniques similar to those discussed with respect to FIG. 8 . can do. SSD device 130 includes controller 382 (controller 382 in turn includes one or more processor cores or processors 384 and memory controller logic 386), cache 138, RAM 388, firmware storage. 390, and one or more memory devices 392-1 through 392-N (collectively referred to as memory 392, which may include NAND flash, NOR flash, or other types of non-volatile memory); do. Memory 392 is coupled to memory controller logic 386 via one or more memory channels or buses. SSD device 130 also communicates with logic 125 via an interface (eg, SATA, SAS, PCIe, NVMe interface, etc.). One or more of the features/aspects/acts discussed with reference to FIGS. 1-7B may be performed by one or more of the components of FIGS. 8 and/or 9 . Processor 384 and/or controller 382 may compress/decompress (or otherwise cause compression/decompression thereof) data written to or read from memory devices 392-1 through 392-N. have. Additionally, one or more of the features/aspects/acts of FIGS. 1-7B may be programmed into firmware 390 . In addition, SSD controller logic 125 may also include logic 160 .

도 8 및 도 9에 예시된 바와 같이, SSD 디바이스(130)는, SSD 디바이스(130)와 동일한 인클로저에 있을 수 있고 그리고/또는 SSD 디바이스(130)의 인쇄 회로 보드(PCB) 상에 완전히 통합될 수 있는, 로직(160)을 포함할 수 있다. 시스템(100)은 SSD 디바이스(130) 외부에 추가 로직(160)을 포함할 수 있다. 유리하게는, 로직(160)은 시스템(10), 장치(15), 방법(20)(도 3a 내지 도 3c), 시스템(40)(도 4), 구역화된 네임스페이스(50)(도 5), 구역 그룹(70)(도 7a 및 도 7b)의 하나 이상의 양태, 및/또는 본 명세서에서 논의된 특징들 중 임의의 것을 구현하기 위한 기술을 포함할 수 있다. 예를 들어, 로직(160)은 본 명세서에서 설명된 다양한 실시예의 호스트 디바이스/컴퓨터 시스템/에이전트 양태를 구현하기 위한 기술(예를 들어, SSD 디바이스(130)에 정보를 요청하는 것, 정보를 SSD 디바이스(130)에 송신하는 것, 구역 그룹을 생성하는 것 등) 및 또한 NVMe ZNS 기술을 구현하고 2개 이상의 구역으로 분할된 네임스페이스로 SSD 디바이스(130)를 논리적으로 구성하기 위한 기술을 포함할 수 있다. 로직(160)은 2개 이상의 저장 디바이스(예를 들어, SSD 디바이스(130)를 포함함)과 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하고, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하며, 결정된 최소 정렬 경계에 기초하여 저장 디바이스들에 대한 액세스를 위한 구역 그룹 크기를 설정하도록 추가로 구성될 수 있다. 예를 들어, 로직(160)은 프로세서들(102) 중 하나 상의 애플리케이션에 대한 선호 구역 크기를 결정하고, 저장 디바이스들 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하며, 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다.8 and 9 , the SSD device 130 may be in the same enclosure as the SSD device 130 and/or be fully integrated on a printed circuit board (PCB) of the SSD device 130 . , which may include logic 160 . System 100 may include additional logic 160 external to SSD device 130 . Advantageously, logic 160 includes system 10 , apparatus 15 , method 20 ( FIGS. 3A-3C ), system 40 ( FIG. 4 ), zoned namespace 50 ( FIG. 5 ). ), one or more aspects of zone group 70 ( FIGS. 7A and 7B ), and/or techniques for implementing any of the features discussed herein. For example, logic 160 may include techniques for implementing host device/computer system/agent aspects of the various embodiments described herein (eg, requesting information from SSD device 130 , sending information to an SSD). transmitting to device 130 , creating zone groups, etc.) and also techniques for implementing NVMe ZNS technology and logically organizing SSD device 130 into namespaces divided into two or more zones. can The logic 160 determines two or more different zone size dependent parameters associated with the two or more storage devices (eg, including the SSD device 130 ) and based on each of the two or more different zone size dependent parameters. determine a minimum alignment boundary, and set a zone group size for access to the storage devices based on the determined minimum alignment boundary. For example, logic 160 determines a preferred region size for an application on one of processors 102 , determines a first erase block size for a first one of the storage devices, and determines a preferred region size and and determine a minimum alignment boundary based on the first erase block size.

일부 실시예에서, 로직(160)은 저장 디바이스들 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다. 예를 들어, 제1 저장 디바이스는 제1 유형의 NAND 매체(예를 들어, TLC)를 포함할 수 있고, 제2 저장 디바이스는 제2 유형의 NAND 매체(예를 들어, QLC)를 포함할 수 있다. 일부 실시예에서, 로직(160)은 ZNS 서브-그룹 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 ZNS 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정하도록 추가로 구성될 수 있다. 일부 실시예에서, 로직(160)은 부가적으로 또는 대안적으로 ZNS 구역 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 ZNS 구역 용량에 기초하여 최소 정렬 경계를 결정하도록 구성될 수 있다.In some embodiments, logic 160 determines a second erase block size for a second one of the storage devices, and determines the minimum alignment based on the preferred region size, the first erase block size, and the second erase block size. may be configured to determine boundaries. For example, a first storage device may include a first type of NAND medium (eg, TLC) and a second storage device may include a second type of NAND medium (eg, QLC) have. In some embodiments, logic 160 may be further configured to determine a ZNS sub-group capacity and to determine a minimum alignment boundary based on a preferred zone size, a first erase block size, and a ZNS sub-group capacity. . In some embodiments, logic 160 may additionally or alternatively be configured to determine a ZNS zone capacity and to determine a minimum alignment boundary based on a preferred zone size, a first erase block size, and a ZNS zone capacity. have.

다른 실시예에서, SSD 디바이스(130)는 임의의 적합한 스토리지/메모리 기술/매체로 대체될 수 있다. 일부 실시예에서, 로직(160)은 하나 이상의 기판(예를 들어, 실리콘, 사파이어, 갈륨 비화물, 인쇄 회로 보드(PCB) 등)에 결합될 수 있고, 하나 이상의 기판 내에 위치되는 트랜지스터 채널 영역을 포함할 수 있다. 다른 실시예에서, SSD 디바이스(130)는 2개 이상의 유형의 저장 매체를 포함할 수 있다. 예를 들어, 스토리지의 대부분은 NAND일 수 있고 INTEL 3DXP 매체와 같은 일부 더 빠르고 더 작은 입도로 액세스 가능한(예를 들어, 바이트 어드레싱 가능한) NVM을 추가로 포함할 수 있다. SSD 디바이스(130)는 대안적으로 또는 부가적으로 영구 휘발성 메모리(예를 들어, 배터리 또는 커패시터 백업 DRAM 또는 SRAM)를 포함할 수 있다. 예를 들어, SSD 디바이스(130)는 에너지 저장 커패시터를 갖는 PLI(POWER LOSS IMMINENT) 기술을 포함할 수 있다. 에너지 저장 커패시터는 진행 중인 임의의 커맨드를 완료하고 DRAM/SRAM 내의 임의의 데이터가 비휘발성 NAND 매체에 커밋되도록 하기 위해 충분한 에너지(전력)를 제공할 수 있다. 커패시터는 영구 휘발성 메모리에 대한 백업 배터리로서 역할할 수 있다. 도 8에 도시된 바와 같이, 로직(160)의 특징 또는 양태는 시스템(100) 전체에 분산될 수 있고, 그리고/또는 시스템(100)의 다양한 컴포넌트와 공존/통합될 수 있다.In other embodiments, SSD device 130 may be replaced with any suitable storage/memory technology/media. In some embodiments, logic 160 may be coupled to one or more substrates (eg, silicon, sapphire, gallium arsenide, printed circuit board (PCB), etc.) may include In other embodiments, SSD device 130 may include two or more types of storage media. For example, most of the storage may be NAND and may further include some faster, smaller granularity accessible (eg byte addressable) NVMs such as INTEL 3DXP media. SSD device 130 may alternatively or additionally include permanent volatile memory (eg, battery or capacitor backup DRAM or SRAM). For example, SSD device 130 may include POWER LOSS IMMINENT (PLI) technology with energy storage capacitors. The energy storage capacitor may provide sufficient energy (power) to complete any command in progress and cause any data in the DRAM/SRAM to be committed to the non-volatile NAND medium. The capacitor may serve as a backup battery for permanent volatile memory. As shown in FIG. 8 , features or aspects of logic 160 may be distributed throughout system 100 and/or coexist/integrate with various components of system 100 .

부가 비고 및 예Additional remarks and examples

예 1은 전자 장치를 포함하고, 이 전자 장치는 하나 이상의 기판, 및 하나 이상의 기판에 결합된 로직을 포함하고, 로직은 2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하고 - 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -, 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하며, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하고, 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정한다.Example 1 includes an electronic apparatus, the electronic apparatus comprising one or more substrates, and logic coupled to the one or more substrates, the logic controlling access to the two or more persistent storage devices, and the two or more persistent storage devices. at least one of which is logically organized into a namespace partitioned into two or more zones, determining two or more different zone size dependent parameters associated with the two or more persistent storage devices, based on each of the two or more different zone size dependent parameters to determine a minimum alignment boundary, and set a zone group size for access to two or more persistent storage devices based on the determined minimum alignment boundary.

예 2는 예 1의 장치를 포함하며, 여기서 로직은 추가로 애플리케이션에 대한 선호 구역 크기를 결정하고, 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하며, 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정한다.Example 2 includes the apparatus of example 1, wherein the logic further determines a preferred zone size for the application, determines a first erase block size for a first one of the two or more persistent storage devices, A minimum alignment boundary is determined based on the size and the first erase block size.

예 3은 예 2의 장치를 포함하며, 여기서 로직은 추가로 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정한다.Example 3 includes the apparatus of example 2, wherein the logic further determines a second erase block size for a second one of the two or more persistent storage devices, a preferred zone size, a first erase block size, and a second erase block size. 2 Determine the minimum alignment boundary based on the erase block size.

예 4는 예 3의 장치를 포함하고, 여기서 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함하고, 제2 저장 디바이스는 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함한다.Example 4 includes the apparatus of example 3, wherein the first storage device includes a first type of NAND medium, and the second storage device includes a second type of NAND medium that is different from the first type of NAND medium.

예 5는 예 2 내지 예 4 중 어느 한 예의 장치를 포함하며, 여기서 로직은 추가로 구역 네임스페이스 서브-그룹 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정한다.Example 5 includes the apparatus of any one of Examples 2-4, wherein the logic further determines a zone namespace sub-group capacity, a preferred zone size, a first erase block size, and a zone namespace sub-group Determine the minimum alignment boundary based on the capacity.

예 6은 예 2 내지 예 5 중 어느 한 예의 장치를 포함하며, 여기서 로직은 추가로 구역 네임스페이스 구역 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 구역 용량에 기초하여 최소 정렬 경계를 결정한다.Example 6 includes the apparatus of any one of Examples 2-5, wherein the logic further determines a zone namespace zone capacity, based on the preferred zone size, the first erase block size, and the zone namespace zone capacity. Determines the minimum alignment boundary.

예 7은 예 1 내지 예 6 중 어느 한 예의 장치를 포함하고, 여기서 적어도 하나의 영구 저장 디바이스는 솔리드 스테이트 드라이브를 포함한다.Example 7 includes the apparatus of any one of Examples 1-6, wherein the at least one persistent storage device comprises a solid state drive.

예 8은 전자 시스템을 포함하고, 이 전자 시스템은 제어기, 및 제어기에 통신 가능하게 결합된 로직을 포함하며, 로직은: 2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하고 - 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -, 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하며, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하고, 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정한다.Example 8 includes an electronic system comprising a controller, and logic communicatively coupled to the controller, the logic to: control access to the two or more persistent storage devices - the two or more persistent storage devices at least one of which is logically organized into a namespace partitioned into two or more zones, determining two or more different zone size dependent parameters associated with the two or more persistent storage devices, based on each of the two or more different zone size dependent parameters to determine a minimum alignment boundary, and set a zone group size for access to two or more persistent storage devices based on the determined minimum alignment boundary.

예 9는 예 8의 시스템을 포함하며, 여기서 로직은 추가로 애플리케이션에 대한 선호 구역 크기를 결정하고, 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하며, 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정한다.Example 9 includes the system of example 8, wherein the logic is further to determine a preferred zone size for the application, to determine a first erase block size for a first of the two or more persistent storage devices, and to determine a preferred zone size for a first one of the two or more persistent storage devices. A minimum alignment boundary is determined based on the size and the first erase block size.

예 10은 예 9의 시스템을 포함하며, 여기서 로직은 추가로 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정한다.Example 10 includes the system of example 9, wherein the logic further determines a second erase block size for a second one of the two or more persistent storage devices, the preferred zone size, the first erase block size, and the second erase block size. 2 Determine the minimum alignment boundary based on the erase block size.

예 11은 예 10의 시스템을 포함하고, 여기서 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함하고, 제2 저장 디바이스는 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함한다.Example 11 includes the system of example 10, wherein the first storage device includes a first type of NAND medium, and the second storage device includes a second type of NAND medium that is different from the first type of NAND medium.

예 12는 예 9 내지 예 11 중 어느 한 예의 시스템을 포함하며, 여기서 로직은 추가로 구역 네임스페이스 서브-그룹 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정한다.Example 12 includes the system of any one of Examples 9-11, wherein the logic further determines a zone namespace sub-group capacity, a preferred zone size, a first erase block size, and a zone namespace sub-group Determine the minimum alignment boundary based on the capacity.

예 13은 예 9 내지 예 12 중 어느 한 예의 시스템을 포함하며, 여기서 로직은 추가로 구역 네임스페이스 구역 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 구역 용량에 기초하여 최소 정렬 경계를 결정한다.Example 13 includes the system of any one of Examples 9-12, wherein the logic further determines a zone namespace zone capacity, based on the preferred zone size, the first erase block size, and the zone namespace zone capacity. Determines the minimum alignment boundary.

예 14는 예 8 내지 예 13 중 어느 한 예의 시스템을 포함하고, 여기서 적어도 하나의 영구 저장 디바이스는 솔리드 스테이트 드라이브를 포함한다.Example 14 includes the system of any one of Examples 8-13, wherein the at least one persistent storage device comprises a solid state drive.

예 15는 스토리지를 제어하는 방법을 포함하고, 이 방법은 2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하는 단계 - 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -, 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하는 단계, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하는 단계, 및 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하는 단계를 포함한다.Example 15 includes a method of controlling storage, the method comprising controlling access to two or more persistent storage devices, wherein at least one of the two or more persistent storage devices is logically divided into two or more zoned namespaces. comprising: determining at least two different zone size dependent parameters associated with the at least two persistent storage devices, determining a minimum alignment boundary based on each of the at least two different zone size dependent parameters, and the determined minimum alignment boundary and setting a zone group size for access to two or more persistent storage devices based on the

예 16은 예 15의 방법을 포함하며, 애플리케이션에 대한 선호 구역 크기를 결정하는 단계, 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하는 단계, 및 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하는 단계를 추가로 포함한다.Example 16 includes the method of Example 15, comprising determining a preferred zone size for an application, determining a first erase block size for a first one of the two or more persistent storage devices, and a preferred zone size and The method further includes determining a minimum alignment boundary based on the first erase block size.

예 17은 예 16의 방법을 포함하며, 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하는 단계, 및 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하는 단계를 추가로 포함한다.Example 17 includes the method of Example 16, determining a second erase block size for a second one of the two or more persistent storage devices, and a preferred zone size, a first erase block size, and a second erase block size. The method further includes determining a minimum alignment boundary based on the size.

예 18은 예 17의 방법을 포함하고, 여기서 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함하고, 제2 저장 디바이스는 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함한다.Example 18 includes the method of Example 17, wherein the first storage device includes a first type of NAND medium, and the second storage device includes a second type of NAND medium that is different from the first type of NAND medium.

예 19는 예 16 내지 예 18 중 어느 한 예의 방법을 포함하고, 구역 네임스페이스 서브-그룹 용량을 결정하는 단계, 및 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정하는 단계를 추가로 포함한다.Example 19 includes the method of any one of Examples 16-18, comprising determining a zone namespace sub-group capacity, and based on a preferred zone size, a first erase block size, and a zone namespace sub-group capacity. to determine a minimum alignment boundary.

예 20은 예 16 내지 예 19 중 어느 한 예의 방법을 포함하고, 구역 네임스페이스 구역 용량을 결정하는 단계, 및 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 구역 용량에 기초하여 최소 정렬 경계를 결정하는 단계를 추가로 포함한다.Example 20 includes the method of any one of Examples 16-19, comprising determining a zone namespace zone capacity, and a minimum alignment boundary based on a preferred zone size, a first erase block size, and a zone namespace zone capacity. It further comprises the step of determining.

예 21은 예 15 내지 예 20 중 어느 한 예의 방법을 포함하고, 여기서 적어도 하나의 영구 저장 디바이스는 솔리드 스테이트 드라이브를 포함한다.Example 21 includes the method of any one of Examples 15-20, wherein the at least one persistent storage device comprises a solid state drive.

예 22는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하게 하고 - 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -, 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하게 하며, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하게 하고, 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하게 하는 복수의 명령어를 포함하는 적어도 하나의 비일시적 머신 판독 가능 매체를 포함한다.Example 22, in response to being executed on the computing device, causes the computing device to control access to the two or more persistent storage devices, wherein at least one of the two or more persistent storage devices is partitioned into a namespace divided into two or more zones. logically configured, cause to determine two or more different zone size dependent parameters associated with the two or more persistent storage devices, to determine a minimum alignment boundary based on each of the two or more different zone size dependent parameters, and to cause the determined minimum alignment boundary to be determined. and at least one non-transitory machine-readable medium comprising a plurality of instructions to set a zone group size for access to the two or more persistent storage devices based on the

예 23은 예 22의 적어도 하나의 비일시적 머신 판독 가능 매체를 포함하고, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 애플리케이션에 대한 선호 구역 크기를 결정하게 하고, 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하게 하며, 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하게 하는 복수의 추가 명령어를 포함한다.Example 23 includes the at least one non-transitory machine-readable medium of Example 22, and in response to being executed on the computing device, cause the computing device to determine a preferred zone size for the application, one of the two or more persistent storage devices and a plurality of additional instructions to cause determining a first erase block size for the first storage device and to determine a minimum alignment boundary based on the preferred region size and the first erase block size.

예 24는 예 23의 적어도 하나의 비일시적 머신 판독 가능 매체를 포함하고, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하게 하고, 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하게 하는 복수의 추가 명령어를 포함한다.Example 24 includes the at least one non-transitory machine-readable medium of Example 23, and in response to being executed on the computing device, causes the computing device to cause a second erase block size for a second one of the two or more persistent storage devices. and determine a minimum alignment boundary based on the preferred region size, the first erase block size, and the second erase block size.

예 25는 예 24의 적어도 하나의 비일시적 머신 판독 가능 매체를 포함하고, 여기서 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함하고, 제2 저장 디바이스는 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함한다.Example 25 includes the at least one non-transitory machine-readable medium of Example 24, wherein the first storage device includes a first type of NAND medium, and wherein the second storage device is a second different than the first type of NAND medium. tangible NAND media.

예 26은 예 23 내지 예 25 중 어느 한 예의 적어도 하나의 비일시적 머신 판독 가능 매체를 포함하고, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 구역 네임스페이스 서브-그룹 용량을 결정하게 하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정하게 하는 복수의 추가 명령어를 포함한다.Example 26 includes the at least one non-transitory machine-readable medium of any one of Examples 23-25, wherein in response to being executed on the computing device, cause the computing device to determine a zone namespace sub-group capacity; and a plurality of additional instructions to cause determining a minimum alignment boundary based on a preferred zone size, a first erase block size, and a zone namespace sub-group capacity.

예 27은 예 23 내지 예 26 중 어느 한 예의 적어도 하나의 비일시적 머신 판독 가능 매체를 포함하고, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 구역 네임스페이스 구역 용량을 결정하게 하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 구역 용량에 기초하여 최소 정렬 경계를 결정하게 하는 복수의 추가 명령어를 포함한다.Example 27 includes the at least one non-transitory machine readable medium of any one of Examples 23-26, and in response to being executed on a computing device, cause the computing device to determine a zone namespace zone capacity, and to: and a plurality of additional instructions to cause determining a minimum alignment boundary based on the size, the first erase block size, and the zone namespace zone capacity.

예 28은 예 22 내지 예 27 중 어느 한 예의 적어도 하나의 비일시적 머신 판독 가능 매체를 포함하고, 여기서 적어도 하나의 영구 저장 디바이스는 솔리드 스테이트 드라이브를 포함한다.Example 28 includes the at least one non-transitory machine readable medium of any of Examples 22-27, wherein the at least one persistent storage device comprises a solid state drive.

예 29는 스토리지 제어기 장치를 포함하며, 2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하기 위한 수단 - 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -, 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하기 위한 수단, 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하기 위한 수단, 및 결정된 최소 정렬 경계에 기초하여 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하기 위한 수단을 포함한다.Example 29 includes a storage controller apparatus, means for controlling access to two or more persistent storage devices, wherein at least one of the two or more persistent storage devices is logically configured into a namespace partitioned into two or more zones; means for determining two or more different zone size dependent parameters associated with the two or more persistent storage devices, means for determining a minimum alignment boundary based on each of the two or more different zone size dependent parameters, and based on the determined minimum alignment boundary and means for setting a zone group size for access to the two or more persistent storage devices.

예 30은 예 29의 장치를 포함하며, 애플리케이션에 대한 선호 구역 크기를 결정하기 위한 수단, 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하기 위한 수단, 및 선호 구역 크기 및 제1 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하기 위한 수단을 추가로 포함한다.Example 30 includes the apparatus of example 29, comprising means for determining a preferred zone size for an application, means for determining a first erase block size for a first of the two or more persistent storage devices, and a preferred zone Further comprising means for determining a minimum alignment boundary based on the size and the first erase block size.

예 31은 예 30의 장치를 포함하며, 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하기 위한 수단, 및 선호 구역 크기, 제1 소거 블록 크기, 및 제2 소거 블록 크기에 기초하여 최소 정렬 경계를 결정하기 위한 수단을 추가로 포함한다.Example 31 includes the apparatus of example 30, means for determining a second erase block size for a second one of the two or more persistent storage devices, and a preferred zone size, a first erase block size, and a second erase It further includes means for determining a minimum alignment boundary based on the block size.

예 32는 예 31의 장치를 포함하고, 여기서 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함하고, 제2 저장 디바이스는 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함한다.Example 32 includes the apparatus of example 31, wherein the first storage device includes a first type of NAND medium, and the second storage device includes a second type of NAND medium that is different from the first type of NAND medium.

예 33은 예 30 내지 예 32 중 어느 한 예의 장치를 포함하고, 구역 네임스페이스 서브-그룹 용량을 결정하기 위한 수단, 및 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 서브-그룹 용량에 기초하여 최소 정렬 경계를 결정하기 위한 수단을 추가로 포함한다.Example 33 includes the apparatus of any one of Examples 30-32, wherein the means for determining a zone namespace sub-group capacity, and a preferred zone size, a first erase block size, and a zone namespace sub-group capacity Further comprising means for determining a minimum alignment boundary based on the.

예 34는 예 30 내지 예 33 중 어느 한 예의 장치를 포함하고, 구역 네임스페이스 구역 용량을 결정하고, 선호 구역 크기, 제1 소거 블록 크기, 및 구역 네임스페이스 구역 용량에 기초하여 최소 정렬 경계를 결정하기 위한 수단을 추가로 포함한다.Example 34 includes the apparatus of any one of Examples 30-33, to determine a zone namespace zone capacity, and to determine a minimum alignment boundary based on a preferred zone size, a first erase block size, and a zone namespace zone capacity. It further includes means for

예 35는 예 29 내지 예 34 중 어느 한 예의 장치를 포함하고, 여기서 적어도 하나의 영구 저장 디바이스는 솔리드 스테이트 드라이브를 포함한다.Example 35 includes the apparatus of any one of Examples 29-34, wherein the at least one persistent storage device comprises a solid state drive.

용어 "결합된"은 본 명세서에서 문제의 컴포넌트들 사이의, 직접적인 또는 간접적인, 임의의 유형의 관계를 지칭하는 데 사용될 수 있고, 전기적, 기계적, 유체, 광학적, 전자기적, 전기기계적 또는 다른 연결에 적용될 수 있다. 그에 부가하여, 용어 "제1", "제2" 등은 본 명세서에서 논의를 용이하게 하기 위해서만 사용될 수 있으며, 달리 언급되지 않는 한 특정의 시간적 또는 연대기적 의미를 지니지 않는다.The term “coupled” may be used herein to refer to any type of relationship, direct or indirect, between the components in question, and is an electrical, mechanical, fluid, optical, electromagnetic, electromechanical or other connection. can be applied to In addition, the terms “first”, “second”, etc. may be used herein only to facilitate discussion, and have no specific temporal or chronological meaning unless otherwise noted.

본 출원에서 그리고 청구항에서 사용되는 바와 같이, 용어 “~ 중 하나 이상”에 의해 연결(join)되는 항목들의 리스트는 열거된 용어들의 임의의 조합을 의미할 수 있다. 예를 들어, 문구 "A, B, 및 C 중 적어도 하나"와 문구 "A, B, 또는 C 중 적어도 하나" 둘 다는 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B, 및 C를 의미할 수 있다. 본 명세서에서 설명된 시스템의 다양한 컴포넌트는 소프트웨어, 펌웨어 및/또는 하드웨어 및/또는 이들의 임의의 조합으로 구현될 수 있다. 예를 들어, 본 명세서에서 논의된 시스템 또는 디바이스의 다양한 컴포넌트는, 예를 들어, 스마트 폰과 같은 컴퓨팅 시스템에서 발견될 수 있는 것과 같은 컴퓨팅 SoC의 하드웨어에 의해, 적어도 부분적으로, 제공될 수 있다. 본 기술 분야의 통상의 기술자는 본 명세서에서 설명된 시스템이 대응하는 도면에 묘사되지 않은 부가 컴포넌트를 포함할 수 있음을 인식할 수 있다. 예를 들어, 본 명세서에서 논의된 시스템은 명확성을 위해 묘사되지 않은 비트 스트림 멀티플렉서 또는 디멀티플렉서 모듈 등과 같은 부가 컴포넌트를 포함할 수 있다.As used in this application and in the claims, a list of items joined by the term “one or more of” may mean any combination of the listed terms. For example, the phrases “at least one of A, B, and C” and the phrase “at least one of A, B, or C” are both A; B; C; A and B; A and C; B and C; or A, B, and C. The various components of the systems described herein may be implemented in software, firmware and/or hardware and/or any combination thereof. For example, various components of a system or device discussed herein may be provided, at least in part, by hardware of a computing SoC, such as may be found in, for example, a computing system such as a smart phone. Those of ordinary skill in the art may recognize that the systems described herein may include additional components not depicted in the corresponding figures. For example, the systems discussed herein may include additional components, such as bit stream multiplexers or demultiplexer modules, which are not depicted for clarity.

본 명세서에서 논의된 예시적인 프로세스의 구현이 예시된 순서로 제시된 모든 동작의 수행을 포함할 수 있지만, 본 개시는 이 점에서 제한되지 않으며, 다양한 예에서, 본 명세서에서의 예시적인 프로세스의 구현은 제시된 동작의 서브세트만, 예시된 것과 상이한 순서로 수행되는 동작, 또는 부가 동작을 포함할 수 있다.Although implementation of the example processes discussed herein may include performing all of the acts presented in the order illustrated, the disclosure is not limited in this respect, and in various instances, implementation of the example processes herein may include: Only a subset of the actions presented may include actions performed in a different order than illustrated, or additional actions.

그에 부가하여, 본 명세서에서 논의된 동작들 중 임의의 하나 이상의 동작은 하나 이상의 컴퓨터 프로그램 제품에 의해 제공되는 명령어에 응답하여 수행될 수 있다. 그러한 프로그램 제품은, 예를 들어, 프로세서에 의해 실행될 때, 본 명세서에서 설명된 기능성을 제공할 수 있는 명령어를 제공하는 신호 베어링 매체(signal bearing media)를 포함할 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 머신 판독 가능 매체의 임의의 형태로 제공될 수 있다. 따라서, 예를 들어, 하나 이상의 그래픽 프로세싱 유닛(들) 또는 프로세서 코어(들)를 포함하는 프로세서는 하나 이상의 머신 판독 가능 매체에 의해 프로세서에 전달되는 프로그램 코드 및/또는 명령어 또는 명령어 세트에 응답하여 본 명세서에서의 예시적인 프로세스의 블록들 중 하나 이상의 블록을 수행할 수 있다. 일반적으로, 머신 판독 가능 매체는 본 명세서에서 설명된 디바이스들 및/또는 시스템들 중 임의의 것으로 하여금 본 명세서에서 논의된 동작들 중 적어도 일부 및/또는 본 명세서에서 논의된 디바이스, 시스템의 임의의 부분, 또는 임의의 모듈 또는 컴포넌트를 구현하게 할 수 있는 프로그램 코드 및/또는 명령어 또는 명령어 세트의 형태의 소프트웨어를 전달할 수 있다.In addition, any one or more of the operations discussed herein may be performed in response to instructions provided by one or more computer program products. Such a program product may include, for example, signal bearing media that, when executed by a processor, provide instructions that may provide the functionality described herein. The computer program product may be provided in any form in one or more machine-readable media. Thus, for example, a processor including one or more graphics processing unit(s) or processor core(s) may be viewed in response to program code and/or instructions or sets of instructions conveyed to the processor by one or more machine-readable media. One or more of the blocks of the example processes in the specification may be performed. In general, a machine-readable medium may cause any of the devices and/or systems described herein to at least some of the operations discussed herein and/or any part of the devices, systems, and/or systems discussed herein. , or software in the form of program code and/or instructions or sets of instructions that may cause any module or component to be implemented.

본 명세서에서 설명된 임의의 구현에서 사용되는 바와 같이, 용어 "모듈"은 본 명세서에서 설명된 기능성을 제공하도록 구성된 소프트웨어 로직, 펌웨어 로직, 하드웨어 로직, 및/또는 회로의 임의의 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어로서 구현될 수 있고, "하드웨어"는, 본 명세서에서 설명된 임의의 구현에서 사용되는 바와 같이, 예를 들어, 단독으로 또는 임의의 조합으로, 하드 와이어드 회로, 프로그래밍 가능 회로, 상태 머신 회로, 고정 기능 회로, 실행 유닛 회로, 및/또는 프로그래밍 가능 회로에 의해 실행되는 명령어를 저장하는 펌웨어를 포함할 수 있다. 모듈은, 집합적으로 또는 개별적으로, 더 큰 시스템의 일부를 형성하는 회로, 예를 들어, 집적 회로(IC), SoC(system on-chip) 등으로서 구현될 수 있다.As used in any implementation described herein, the term “module” refers to any combination of software logic, firmware logic, hardware logic, and/or circuitry configured to provide the functionality described herein. Software may be implemented as a software package, code and/or set of instructions or instructions, and "hardware" as used in any implementation described herein, for example, alone or in any combination, hard-wired circuitry, programmable circuitry, state machine circuitry, fixed function circuitry, execution unit circuitry, and/or firmware that stores instructions to be executed by the programmable circuitry. Modules, collectively or individually, may be implemented as circuits that form part of a larger system, eg, integrated circuits (ICs), systems on-chips (SoCs), and the like.

다양한 실시예는 하드웨어 요소, 소프트웨어 요소 또는 이 둘의 조합을 사용하여 구현될 수 있다. 하드웨어 요소의 예는 프로세서, 마이크로프로세서, 회로, 회로 요소(예를 들어, 트랜지스터, 저항기, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuit), PLD(programmable logic device), DSP(digital signal processor), FPGA(field programmable gate array), 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩세트 등을 포함할 수 있다. 소프트웨어의 예는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, API(application program interface), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심벌, 또는 이들의 임의의 조합을 포함할 수 있다. 일 실시예가 하드웨어 요소 및/또는 소프트웨어 요소를 사용하여 구현되는지를 결정하는 것은, 원하는 계산 레이트, 전력 레벨, 열 허용오차, 프로세싱 사이클 버짓, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약조건과 같은, 임의의 수의 인자에 따라 달라질 수 있다.Various embodiments may be implemented using hardware elements, software elements, or a combination of the two. Examples of hardware elements include processors, microprocessors, circuits, circuit elements (eg, transistors, resistors, capacitors, inductors, etc.), integrated circuits, application specific integrated circuits (ASICs), programmable logic devices (PLDs), digital signal processor), field programmable gate array (FPGA), logic gates, registers, semiconductor devices, chips, microchips, chipsets, and the like. Examples of software include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, APIs. (application program interface), instruction set, computing code, computer code, code segment, computer code segment, word, value, symbol, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements depends on the desired computation rate, power level, thermal tolerance, processing cycle budget, input data rate, output data rate, memory resources, data bus speed and It may depend on any number of factors, such as other design or performance constraints.

적어도 하나의 실시예의 하나 이상의 양태는, 머신에 의해 판독될 때, 머신으로 하여금 본 명세서에서 설명된 기술을 수행하도록 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 표현하는 머신 판독 가능 매체 상에 저장된 대표적인 명령어에 의해 구현될 수 있다. IP 코어라고 알려진, 그러한 표현은 유형적(tangible) 머신 판독 가능 매체 상에 저장될 수 있고, 로직 또는 프로세서를 실제로 제조하는 제조 머신에 로딩하기 위해, 다양한 고객 또는 제조 시설에 공급될 수 있다.One or more aspects of at least one embodiment are representative of, stored on a machine-readable medium, representing various logic within a processor that, when read by a machine, causes the machine to produce logic to perform the techniques described herein. It can be implemented by commands. Such representations, known as IP cores, may be stored on a tangible machine readable medium and supplied to various customers or manufacturing facilities for loading into a manufacturing machine that actually manufactures the logic or processor.

본 명세서에 기재된 특정 특징이 다양한 구현을 참조하여 설명되었지만, 이 설명이 제한적인 의미로 해석되는 것으로 의도되지 않는다. 따라서, 본 명세서에서 설명된 구현의 다양한 수정은 물론, 본 개시가 관련되어 있는 기술 분야의 통상의 기술자에게 명백한, 다른 구현이 본 개시의 사상 및 범위 내에 속하는 것으로 간주된다.While certain features described herein have been described with reference to various implementations, this description is not intended to be construed in a limiting sense. Accordingly, various modifications of the implementations described herein, as well as other implementations apparent to those skilled in the art to which this disclosure pertains, are considered to fall within the spirit and scope of this disclosure.

실시예가 그렇게 설명된 실시예로 제한되지 않고 첨부된 청구항의 범위를 벗어나지 않으면서 수정 및 변경하여 실시될 수 있다는 것이 인식될 것이다. 예를 들어, 상기 실시예는 특징들의 특정 조합을 포함할 수 있다. 그렇지만, 상기 실시예는 이 점에서 제한되지 않고, 다양한 구현에서, 상기 실시예는 그러한 특징들의 서브세트만을 실시하는 것, 그러한 특징들의 상이한 순서를 실시하는 것, 그러한 특징들의 상이한 조합을 실시하는 것, 및/또는 명시적으로 열거된 그 특징들 외의 부가 특징을 실시하는 것을 포함할 수 있다. 따라서, 실시예의 범위는, 그러한 청구항의 자격이 있는 등가물의 전체 범위와 함께, 첨부된 청구항을 참조하여 결정되어야 한다.It will be appreciated that the embodiments are not limited to the embodiments so described and can be practiced with modifications and variations without departing from the scope of the appended claims. For example, the embodiment may include a particular combination of features. However, the embodiment is not limited in this respect, and in various implementations, the embodiment implements only a subset of such features, implements a different order of such features, implements different combinations of such features , and/or implementing additional features other than those explicitly recited. Accordingly, the scope of embodiments should be determined with reference to the appended claims, along with the full scope of equivalents entitled to such claims.

Claims (20)

전자 장치로서,
하나 이상의 기판; 및
상기 하나 이상의 기판에 결합된 로직
을 포함하고, 상기 로직은:
2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하고 - 상기 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -,
상기 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하며,
상기 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계(smallest aligned boundary)를 결정하고,
상기 결정된 최소 정렬 경계에 기초하여 상기 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하는, 장치.
An electronic device comprising:
one or more substrates; and
logic coupled to the one or more substrates
, wherein the logic is:
control access to two or more persistent storage devices, wherein at least one of the two or more persistent storage devices is logically organized into a namespace partitioned into two or more zones;
determine at least two different zone size dependent parameters associated with the at least two persistent storage devices;
determine a smallest aligned boundary based on each of the two or more different zone size dependent parameters;
and set a zone group size for access to the two or more persistent storage devices based on the determined minimum alignment boundary.
제1항에 있어서, 상기 로직은 추가로:
애플리케이션에 대한 선호 구역 크기를 결정하고;
상기 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하며;
상기 선호 구역 크기 및 상기 제1 소거 블록 크기에 기초하여 상기 최소 정렬 경계를 결정하는, 장치.
The method of claim 1 , wherein the logic further comprises:
determine a preferred zone size for the application;
determine a first erase block size for a first one of the two or more persistent storage devices;
determine the minimum alignment boundary based on the preferred region size and the first erase block size.
제2항에 있어서, 상기 로직은 추가로:
상기 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하고,
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 제2 소거 블록 크기에 기초하여 상기 최소 정렬 경계를 결정하는, 장치.
3. The method of claim 2, wherein the logic further comprises:
determine a second erase block size for a second storage device among the two or more persistent storage devices;
determine the minimum alignment boundary based on the preferred region size, the first erase block size, and the second erase block size.
제3항에 있어서, 상기 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함하고, 상기 제2 저장 디바이스는 상기 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함하는, 장치.4. The apparatus of claim 3, wherein the first storage device comprises a first type of NAND media and the second storage device comprises a second type of NAND media that is different from the first type of NAND media. 제2항에 있어서, 상기 로직은 추가로:
구역 네임스페이스 서브-그룹 용량을 결정하고;
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 구역 네임스페이스 서브-그룹 용량에 기초하여 상기 최소 정렬 경계를 결정하는, 장치.
3. The method of claim 2, wherein the logic further comprises:
determine a zone namespace sub-group capacity;
determine the minimum alignment boundary based on the preferred zone size, the first erase block size, and the zone namespace sub-group capacity.
제2항에 있어서, 상기 로직은 추가로:
구역 네임스페이스 구역 용량을 결정하고;
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 구역 네임스페이스 구역 용량에 기초하여 상기 최소 정렬 경계를 결정하는, 장치.
3. The method of claim 2, wherein the logic further comprises:
determine zone namespace zone capacity;
determine the minimum alignment boundary based on the preferred zone size, the first erase block size, and the zone namespace zone capacity.
제1항에 있어서, 상기 적어도 하나의 영구 저장 디바이스는 솔리드 스테이트 드라이브를 포함하는, 장치.The apparatus of claim 1 , wherein the at least one persistent storage device comprises a solid state drive. 전자 시스템으로서,
제어기; 및
상기 제어기에 통신 가능하게 결합된 로직
을 포함하며, 상기 로직은:
2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하고 - 상기 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -,
상기 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하며,
상기 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계(smallest aligned boundary)를 결정하고,
상기 결정된 최소 정렬 경계에 기초하여 상기 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하는, 시스템.
An electronic system comprising:
controller; and
logic communicatively coupled to the controller
, wherein the logic is:
control access to two or more persistent storage devices, wherein at least one of the two or more persistent storage devices is logically organized into a namespace partitioned into two or more zones;
determine at least two different zone size dependent parameters associated with the at least two persistent storage devices;
determine a smallest aligned boundary based on each of the two or more different zone size dependent parameters;
and set a zone group size for access to the two or more persistent storage devices based on the determined minimum alignment boundary.
제8항에 있어서, 상기 로직은 추가로:
애플리케이션에 대한 선호 구역 크기를 결정하고;
상기 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하며;
상기 선호 구역 크기 및 상기 제1 소거 블록 크기에 기초하여 상기 최소 정렬 경계를 결정하는, 시스템.
9. The method of claim 8, wherein the logic further comprises:
determine a preferred zone size for the application;
determine a first erase block size for a first one of the two or more persistent storage devices;
determine the minimum alignment boundary based on the preferred region size and the first erase block size.
제9항에 있어서, 상기 로직은 추가로:
상기 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하고,
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 제2 소거 블록 크기에 기초하여 상기 최소 정렬 경계를 결정하는, 시스템.
10. The method of claim 9, wherein the logic further comprises:
determine a second erase block size for a second storage device among the two or more persistent storage devices;
determine the minimum alignment boundary based on the preferred region size, the first erase block size, and the second erase block size.
제10항에 있어서, 상기 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함하고, 상기 제2 저장 디바이스는 상기 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함하는, 시스템.The system of claim 10 , wherein the first storage device comprises a first type of NAND media and the second storage device comprises a second type of NAND media that is different from the first type of NAND media. 제9항에 있어서, 상기 로직은 추가로:
구역 네임스페이스 서브-그룹 용량을 결정하고;
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 구역 네임스페이스 서브-그룹 용량에 기초하여 상기 최소 정렬 경계를 결정하는, 시스템.
10. The method of claim 9, wherein the logic further comprises:
determine a zone namespace sub-group capacity;
determine the minimum alignment boundary based on the preferred zone size, the first erase block size, and the zone namespace sub-group capacity.
제9항에 있어서, 상기 로직은 추가로:
구역 네임스페이스 구역 용량을 결정하고;
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 구역 네임스페이스 구역 용량에 기초하여 상기 최소 정렬 경계를 결정하는, 시스템.
10. The method of claim 9, wherein the logic further comprises:
determine zone namespace zone capacity;
determine the minimum alignment boundary based on the preferred zone size, the first erase block size, and the zone namespace zone capacity.
제8항에 있어서, 상기 적어도 하나의 영구 저장 디바이스는 솔리드 스테이트 드라이브를 포함하는, 시스템.The system of claim 8 , wherein the at least one persistent storage device comprises a solid state drive. 스토리지를 제어하는 방법으로서,
2개 이상의 영구 저장 디바이스에 대한 액세스를 제어하는 단계 - 상기 2개 이상의 영구 저장 디바이스 중 적어도 하나는 2개 이상의 구역으로 분할된 네임스페이스로 논리적으로 구성됨 -;
상기 2개 이상의 영구 저장 디바이스와 연관된 2개 이상의 상이한 구역 크기 종속 파라미터를 결정하는 단계;
상기 2개 이상의 상이한 구역 크기 종속 파라미터 각각에 기초하여 최소 정렬 경계를 결정하는 단계; 및
상기 결정된 최소 정렬 경계에 기초하여 상기 2개 이상의 영구 저장 디바이스에 대한 액세스를 위한 구역 그룹 크기를 설정하는 단계
를 포함하는, 방법.
A method of controlling storage, comprising:
controlling access to two or more persistent storage devices, wherein at least one of the two or more persistent storage devices is logically organized into a namespace partitioned into two or more zones;
determining at least two different zone size dependent parameters associated with the at least two persistent storage devices;
determining a minimum alignment boundary based on each of the two or more different zone size dependent parameters; and
setting a zone group size for access to the two or more persistent storage devices based on the determined minimum alignment boundary;
A method comprising
제15항에 있어서,
애플리케이션에 대한 선호 구역 크기를 결정하는 단계;
상기 2개 이상의 영구 저장 디바이스 중 제1 저장 디바이스에 대한 제1 소거 블록 크기를 결정하는 단계; 및
상기 선호 구역 크기 및 상기 제1 소거 블록 크기에 기초하여 상기 최소 정렬 경계를 결정하는 단계를 추가로 포함하는, 방법.
16. The method of claim 15,
determining a preferred zone size for the application;
determining a first erase block size for a first one of the two or more persistent storage devices; and
and determining the minimum alignment boundary based on the preferred region size and the first erase block size.
제16항에 있어서,
상기 2개 이상의 영구 저장 디바이스 중 제2 저장 디바이스에 대한 제2 소거 블록 크기를 결정하는 단계; 및
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 제2 소거 블록 크기에 기초하여 상기 최소 정렬 경계를 결정하는 단계
를 추가로 포함하는, 방법.
17. The method of claim 16,
determining a second erase block size for a second one of the two or more persistent storage devices; and
determining the minimum alignment boundary based on the preferred region size, the first erase block size, and the second erase block size;
Further comprising a, method.
제17항에 있어서, 상기 제1 저장 디바이스는 제1 유형의 NAND 매체를 포함하고, 상기 제2 저장 디바이스는 상기 제1 유형의 NAND 매체와 상이한 제2 유형의 NAND 매체를 포함하는, 방법.18. The method of claim 17, wherein the first storage device comprises a first type of NAND media and the second storage device comprises a second type of NAND media that is different from the first type of NAND media. 제16항에 있어서,
구역 네임스페이스 서브-그룹 용량을 결정하는 단계; 및
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 구역 네임스페이스 서브-그룹 용량에 기초하여 상기 최소 정렬 경계를 결정하는 단계
를 추가로 포함하는, 방법.
17. The method of claim 16,
determining a zone namespace sub-group capacity; and
determining the minimum alignment boundary based on the preferred zone size, the first erase block size, and the zone namespace sub-group capacity;
Further comprising a, method.
제16항에 있어서,
구역 네임스페이스 구역 용량을 결정하는 단계; 및
상기 선호 구역 크기, 상기 제1 소거 블록 크기, 및 상기 구역 네임스페이스 구역 용량에 기초하여 상기 최소 정렬 경계를 결정하는 단계
를 추가로 포함하는, 방법.
17. The method of claim 16,
determining a zone namespace zone capacity; and
determining the minimum alignment boundary based on the preferred zone size, the first erase block size, and the zone namespace zone capacity;
Further comprising a, method.
KR1020200123900A 2019-12-20 2020-09-24 Zoned namespace with zone grouping KR20210080171A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/723,878 2019-12-20
US16/723,878 US11797433B2 (en) 2019-12-20 2019-12-20 Zoned namespace with zone grouping

Publications (1)

Publication Number Publication Date
KR20210080171A true KR20210080171A (en) 2021-06-30

Family

ID=70770328

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200123900A KR20210080171A (en) 2019-12-20 2020-09-24 Zoned namespace with zone grouping

Country Status (2)

Country Link
US (2) US11797433B2 (en)
KR (1) KR20210080171A (en)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US11797212B2 (en) * 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11726679B2 (en) * 2019-11-05 2023-08-15 Western Digital Technologies, Inc. Applying endurance groups to zoned namespaces
KR20210108107A (en) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 Memory system and operating method thereof
US11435914B2 (en) * 2020-03-30 2022-09-06 Western Digital Technologies, Inc. Dynamic ZNS open zone active limit
US11137920B1 (en) * 2020-04-30 2021-10-05 Micron Technology, Inc. Storing zones in a zone namespace on separate planes of a multi-plane memory device
US11137938B1 (en) 2020-04-30 2021-10-05 Micron Technology, Inc. Converting a multi-plane write operation into multiple single plane write operations performed in parallel on a multi-plane memory device
CN111758160B (en) * 2020-05-20 2021-10-01 长江存储科技有限责任公司 3D NAND flash memory device and integration method thereof
US11455244B2 (en) * 2020-09-04 2022-09-27 Western Digital Technologies, Inc. Zoned namespace limitation mitigation using sub block mode
US11442646B2 (en) 2020-09-09 2022-09-13 Western Digital Technologies Inc. Identified zones for optimal parity sharing zones
KR20220066601A (en) 2020-11-16 2022-05-24 삼성전자주식회사 Storage device, electronic system including the same storage device and the mehod of operating the same storage device
JP2022094705A (en) 2020-12-15 2022-06-27 キオクシア株式会社 Memory system and control method
CN112559193A (en) * 2020-12-31 2021-03-26 山东华芯半导体有限公司 Region information table management method based on host memory space
KR20220098894A (en) 2021-01-05 2022-07-12 삼성전자주식회사 Storage device including nonvolatile memory device and method of operating the same
US11422734B2 (en) * 2021-01-06 2022-08-23 Western Digital Technologies, Inc. Managing overwrite data within solid state drives
TWI775268B (en) 2021-01-07 2022-08-21 慧榮科技股份有限公司 Storage device, flash memory control and control method thereof
WO2022164490A1 (en) * 2021-01-27 2022-08-04 Pure Storage, Inc. Optimizing storage device access based on latency
CN117120985A (en) * 2021-02-04 2023-11-24 华为技术有限公司 Persistent logging based on NVM host controller interface specifications for storage device applications
US11809714B2 (en) * 2021-02-26 2023-11-07 Micron Technology, Inc. Effective storage allocation for sequentially-written memory devices
US20220291858A1 (en) * 2021-03-15 2022-09-15 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11816345B2 (en) * 2021-03-29 2023-11-14 Micron Technology, Inc. Zone block staging component for a memory subsystem with zoned namespace
US11733895B2 (en) * 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11748011B2 (en) 2021-03-31 2023-09-05 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
KR20220142195A (en) 2021-04-14 2022-10-21 에스케이하이닉스 주식회사 Storage device and operating method thereof
KR20230064849A (en) * 2021-11-04 2023-05-11 에스케이하이닉스 주식회사 Storage Device and Operating Method Therefor
US20230266897A1 (en) * 2022-02-24 2023-08-24 Micron Technology, Inc. Dynamic zone group configuration at a memory sub-system
US20230266898A1 (en) * 2022-02-24 2023-08-24 Micron Technology, Inc. Host Defined Zone Group Configuration At A Memory Sub-System
US11941273B2 (en) 2022-05-12 2024-03-26 Western Digital Technologies, Inc. Variable capacity Zone Namespace (ZNS) flash storage data path
US11922036B2 (en) 2022-05-12 2024-03-05 Western Digital Technologies, Inc. Host data stream assignment with space-leveling across storage block containers
US11880604B2 (en) 2022-05-12 2024-01-23 Western Digital Technologies, Inc. Read fused groups with uniform resource allocation
US20230409235A1 (en) * 2022-05-31 2023-12-21 Microsoft Technology Licensing, Llc File system improvements for zoned storage device operations
US11853203B1 (en) * 2022-06-23 2023-12-26 Western Digital Technologies, Inc. Systems and methods with variable size super blocks in zoned namespace devices
US20240069722A1 (en) * 2022-08-31 2024-02-29 Nvidia Corporation Dynamically assigning namespace type to memory devices

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US10642505B1 (en) * 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US10678703B2 (en) * 2017-11-16 2020-06-09 Micron Technology, Inc. Namespace mapping structual adjustment in non-volatile memory devices
US11416161B2 (en) * 2019-06-28 2022-08-16 Western Digital Technologies, Inc. Zone formation for zoned namespaces
US11209989B2 (en) * 2019-09-25 2021-12-28 Western Digital Technologies, Inc. Zoned namespaces in solid-state drives
US20200089407A1 (en) * 2019-11-22 2020-03-19 Intel Corporation Inter zone write for zoned namespaces
KR20210125774A (en) * 2020-04-09 2021-10-19 에스케이하이닉스 주식회사 Data Storage Apparatus and Operation Method Thereof

Also Published As

Publication number Publication date
US11797433B2 (en) 2023-10-24
US20200167274A1 (en) 2020-05-28
US20240020228A1 (en) 2024-01-18

Similar Documents

Publication Publication Date Title
US20240020228A1 (en) Zoned namespace with zone grouping
US20200089407A1 (en) Inter zone write for zoned namespaces
US10949120B2 (en) Host defined bandwidth allocation for SSD tasks
US11119672B2 (en) Dynamic single level cell memory controller
US20190073302A1 (en) Ssd boot based on prioritized endurance groups
US20200363998A1 (en) Controller and persistent memory shared between multiple storage devices
US11074172B2 (en) On-device-copy for hybrid SSD with second persistent storage media update of logical block address for first persistent storage media data
US11074004B2 (en) Tenant-based telemetry for persistent storage media
US20190303284A1 (en) Non-volatile file update media
US20210117123A1 (en) Accelerated raid rebuild offload
US10795838B2 (en) Using transfer buffer to handle host read collisions in SSD
US20190179554A1 (en) Raid aware drive firmware update
US20200363997A1 (en) Ssd managed host write atomicity with arbitrary transfer length
US20230305954A1 (en) Direct map memory extension for storage class memory
US11567862B2 (en) Configurable NVM set to tradeoff between performance and user space
US20200273525A1 (en) Ssd with reduced secure erase time and endurance stress
US10936201B2 (en) Low latency mirrored raid with persistent cache
US20230115831A1 (en) Storage device with client reconfigurable protocol
EP3876088A1 (en) Negotiated power-up for ssd data refresh
US11567877B2 (en) Memory utilized as both system memory and near memory
CN112905108A (en) Detection and error handling of high error rate blocks during copyback
US11971782B2 (en) On-SSD erasure coding with uni-directional commands
US20230185723A1 (en) Cache allocation techniques
KR20220092370A (en) Persistent data structure to track and manage ssd defects
CN118043768A (en) User configurable SLC memory size

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