KR20210079394A - 솔리드 스테이트 드라이브들 내의 zns들 - Google Patents

솔리드 스테이트 드라이브들 내의 zns들 Download PDF

Info

Publication number
KR20210079394A
KR20210079394A KR1020217018881A KR20217018881A KR20210079394A KR 20210079394 A KR20210079394 A KR 20210079394A KR 1020217018881 A KR1020217018881 A KR 1020217018881A KR 20217018881 A KR20217018881 A KR 20217018881A KR 20210079394 A KR20210079394 A KR 20210079394A
Authority
KR
South Korea
Prior art keywords
zone
zones
controller
host device
storage device
Prior art date
Application number
KR1020217018881A
Other languages
English (en)
Other versions
KR102580577B1 (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 KR20210079394A publication Critical patent/KR20210079394A/ko
Application granted granted Critical
Publication of KR102580577B1 publication Critical patent/KR102580577B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Abstract

본 발명은 대체적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스는 제어기 및 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 제어기는 업데이트 구역 메타데이터에 의해 잘 알려진 에러들을 활용하여, 하나 이상의 제1 논리 블록 어드레스들이 스킵되었음을 나타내도록, 그리고 다음 유효 논리 블록 어드레스가 데이터를 저장하는 데 이용가능함을 나타내도록 구성된다. 제어기는, 구역 메타데이터를 업데이트하여, 하나 이상의 풀 구역들을 재설정할 것을 호스트 디바이스에 권고하도록, 하나 이상의 개방 구역들을 풀 상태로 전이시킬 것을 호스트 디바이스에 권고하도록, 하나 이상의 개방 구역들이 풀 상태로 전이되었음을 호스트 디바이스에 경보하도록, 그리고 복수의 구역들 각각의 기록가능 구역 용량을 호스트 디바이스에 통지하도록 추가로 구성된다.

Description

솔리드 스테이트 드라이브들 내의 ZNS들
관련 출원의 상호 참조
본 출원은 2019년 12월 27일자로 출원된 미국 출원 제16/728,917호에 대한 우선권을 주장하고, 상기 출원은 2019년 9월 25일자로 출원된 미국 가특허 출원 제62/905,894의 이익을 주장하며, 상기 출원들 둘 모두는 본 명세서에 참고로 포함된다.
기술분야
본 발명의 실시예들은 대체적으로 솔리드 스테이트 드라이브(sold state drive, SSD)들과 같은 저장 디바이스들에 관한 것이다.
SSD들과 같은 저장 디바이스들은 비교적 낮은 레이턴시와 고용량 저장이 요구되는 응용예들에서의 컴퓨터들에 사용될 수 있다. 예를 들어, SSD들은, 특히 랜덤 판독들 및 기록들을 위해, 하드 디스크 드라이브(hard disk drive, HDD)들보다 더 낮은 레이턴시를 나타낼 수 있다. 전형적으로, SSD의 제어기는 호스트 디바이스로부터 메모리 디바이스로 데이터를 판독 또는 기록하는 커맨드를 수신한다. 메모리 디바이스의 양은 네임스페이스(namespace)로 지칭되고, 제어기는 메모리 디바이스의 하나 이상의 네임스페이스들로부터 데이터를 판독하거나 그들에 데이터를 기록하도록 구성된다. 각각의 네임스페이스는, 소거 블록들과 같은, 매체의 물리적 위치에 대응하는 복수의 논리 블록 어드레스(logical block address, LBA)들 또는 섹터들로 구성된다.
저장 디바이스가 소거 블록들에 데이터를 기록하는 동안 I/O 에러들, 전하 누설, 및/또는 판독/프로그래밍 교란들과 같은 에러를 경험할 때, 저장 디바이스는 전형적으로, 호스트 디바이스로부터 에러를 마스킹하고, 백엔드(backend) 상의 에러를 관리한다. 이와 같이, 호스트 디바이스는 에러가 발생했음을 인식하지 못하며, 데이터가 저장되는 위치를 더 이상 인식하지 못한다. 더욱이, 저장 디바이스에 의해 경험되는 일부 에러들은 하나 이상의 소거 블록들이 데이터를 저장할 수 없게 할 수 있다. 그러한 경우들에 있어서, 저장 디바이스는 호스트 디바이스로부터의 커맨드들을 여전히 수신하면서, 잘못된 소거 블록들로부터 모든 데이터를 판독하고 새로운 세트의 소거 블록들에 데이터를 재기록하는데, 이는 비쌀 수 있고, 매체에 대한 총 기록 수를 감소시킬 수 있고, 저장 디바이스의 전체 성능을 저하시킬 수 있다.
따라서, 저장 디바이스를 동작시키는 새로운 방법이 필요하다.
본 발명은 대체적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스는 제어기 및 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 제어기는 업데이트 구역 메타데이터에 의해 잘 알려진 에러들을 활용하여, 하나 이상의 제1 논리 블록 어드레스들이 스킵되었음을 나타내도록, 그리고 다음 유효 논리 블록 어드레스가 데이터를 저장하는 데 이용가능함을 나타내도록 구성된다. 제어기는, 구역 메타데이터를 업데이트하여, 하나 이상의 풀 구역(full zone)들을 재설정할 것을 호스트 디바이스에 권고하도록, 하나 이상의 개방 구역들을 풀(full) 상태로 전이시킬 것을 호스트 디바이스에 권고하도록, 하나 이상의 개방 구역들이 풀 상태로 전이되었음을 호스트 디바이스에 경보하도록, 그리고 복수의 구역들 각각의 기록가능 구역 용량을 호스트 디바이스에 통지하도록 추가로 구성된다.
일 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 매체 유닛은 복수의 다이들을 포함하며, 복수의 다이들 각각은 복수의 소거 블록들을 포함한다. 저장 디바이스는 매체 유닛에 커플링되는 제어기를 추가로 포함하며, 제어기는 구역 메타데이터를 업데이트하여, 복수의 구역들 중 하나 이상의 풀 구역들을 재설정할 것을 호스트 디바이스에 권고하도록, 구역 메타데이터를 업데이트하여, 복수의 구역들 중 하나 이상의 개방 구역들을 풀 상태로 전이시킬 것을 호스트 디바이스에 권고하도록, 하나 이상의 개방 구역들을 풀 상태로 전이시키도록, 그리고 구역 메타데이터를 업데이트하여, 하나 이상의 개방 구역들이 풀 상태로 전이되었음을 호스트 디바이스에 경보하도록 구성된다.
다른 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 매체 유닛은 복수의 다이들을 포함하며, 복수의 다이들 각각은 복수의 소거 블록들을 포함한다. 저장 디바이스는, 매체 유닛에 커플링되는 제어기를 추가로 포함하며, 제어기는, 복수의 구역들 각각의 기록가능 구역 용량을 결정하도록 - 기록가능 구역 용량은 각각의 구역의 총 구역 저장 용량과 동일하거나 그보다 적고, 각각의 구역의 기록가능 용량은 하나 이상의 소거 블록들의 용량에 맞춰 조정됨 -, 그리고 구역 메타데이터를 업데이트하여, 복수의 구역들 각각의 기록가능 구역 용량을 호스트 디바이스에 통지하도록 구성된다.
일 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 매체 유닛은 복수의 다이들을 포함하며, 복수의 다이들 각각은 복수의 소거 블록들을 포함한다. 저장 디바이스는 매체 유닛에 커플링되는 제어기를 추가로 포함하며, 제어기는 복수의 구역들 중 제1 구역 내의 하나 이상의 제1 논리 블록 어드레스들에 데이터를 기록하라는 기록 커맨드를 수신하여, 제1 구역 내의 하나 이상의 제1 논리 블록 어드레스들에 데이터를 기록하는 동안 에러를 경험할 시, 제1 구역의 기록 포인터를 업데이트하여, 제1 구역 내의 다음 유효 논리 블록 어드레스를 가리키도록; 그리고 구역 메타데이터를 업데이트하여, 하나 이상의 제1 논리 블록 어드레스들이 스킵되었음을 나타내고 다음 유효 논리 블록 어드레스가 제1 구역에 데이터를 저장하는 데 이용가능함을 나타내도록 구성된다.
상기에 언급된 본 발명의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 발명의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이들 실시예 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 단지 본 발명의 전형적인 실시예들을 도시하는 것이므로 본 발명의 범주를 제한하는 것으로 간주되지 않아야 한다는 것에 유의해야 하는데, 이는 본 발명이 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이다.
도 1은 일 실시예에 따른, 저장 시스템을 예시하는 개략 블록도이다.
도 2는 일 실시예에 따른, 판독 또는 기록 커맨드를 실행하기 위해 저장 디바이스를 동작시키는 방법을 예시하는 블록도이다.
도 3a는 일 실시예에 따른, 저장 디바이스에서 활용되는 ZNS(zoned namespace)들을 도시한다.
도 3b는 일 실시예에 따른, 도 3a의 저장 디바이스의 ZNS들에 대한 상태도를 도시한다.
이해를 촉진하기 위해, 도면들에 공통인 동일한 요소들을 지시하기 위해, 가능한 경우, 동일한 도면 부호들이 사용되었다. 일 실시예에 개시된 요소들이 구체적인 언급 없이도 다른 실시예들에서 유익하게 이용될 수 있다는 것이 고려된다.
하기에서, 본 발명의 실시예들을 참조한다. 그러나, 본 발명은 설명된 특정 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 대신에, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든지 또는 그렇지 않든지 간에, 본 발명을 구현하고 실시하기 위해 고려된다. 게다가, 본 발명의 실시예들이 다른 가능한 해법들에 비해 그리고/또는 종래 기술에 비해 이점들을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 발명의 제한이 아니다. 따라서, 하기의 태양들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것이며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한으로 간주되지 않는다. 마찬가지로, "본 발명"에 대한 언급은 본 명세서에 개시되는 임의의 발명의 주제의 일반화로서 해석되어서는 안 되며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한인 것으로 간주되어서는 안된다.
본 발명은 일반적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스는 제어기 및 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 제어기는 업데이트 구역 메타데이터에 의해 잘 알려진 에러들을 활용하여, 하나 이상의 제1 논리 블록 어드레스들이 스킵되었음을 나타내도록, 그리고 다음 유효 논리 블록 어드레스가 데이터를 저장하는 데 이용가능함을 나타내도록 구성된다. 제어기는, 구역 메타데이터를 업데이트하여, 하나 이상의 풀 구역들을 재설정할 것을 호스트 디바이스에 권고하도록, 하나 이상의 개방 구역들을 풀 상태로 전이시킬 것을 호스트 디바이스에 권고하도록, 하나 이상의 개방 구역들이 풀 상태로 전이되었음을 호스트 디바이스에 경보하도록, 그리고 복수의 구역들 각각의 기록가능 구역 용량을 호스트 디바이스에 통지하도록 추가로 구성된다.
도 1은 본 발명의 하나 이상의 기법들에 따른, 저장 디바이스(106)가 호스트 디바이스(104)를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템(100)을 예시하는 개략 블록도이다. 예를 들어, 호스트 디바이스(104)는 데이터를 저장 및 검색하기 위해 저장 디바이스(106)에 포함된 비휘발성 메모리 디바이스들(110)을 이용할 수 있다. 호스트 디바이스(104)는 호스트 DRAM(138)을 포함한다. 일부 예들에서, 저장 시스템(100)은 저장 어레이로서 동작할 수 있는, 저장 디바이스(106)와 같은, 복수의 저장 디바이스들을 포함할 수 있다. 예를 들어, 저장 시스템(100)은 호스트 디바이스(104)를 위한 대용량 저장 디바이스로서 집합적으로 기능하는 RAID(redundant array of inexpensive/independent disks)로서 구성된 복수의 저장 디바이스들(106)을 포함할 수 있다.
저장 시스템(100)은 저장 디바이스(106)와 같은 하나 이상의 저장 디바이스에 그리고/또는 그로부터 데이터를 저장 및/또는 검색할 수 있는 호스트 디바이스(104)를 포함한다. 도 1에 예시된 바와 같이, 호스트 디바이스(104)는 인터페이스(114)를 통해 저장 디바이스(106)와 통신할 수 있다. 호스트 디바이스(104)는 컴퓨터 서버, NAS(network attached storage) 유닛, 데스크톱 컴퓨터, 노트북(즉, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 전화 핸드셋, 예컨대 소위 "스마트" 폰, 소위 "스마트" 패드, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수 있다.
저장 디바이스(106)는 제어기(108), 비휘발성 메모리(110)(NVM(110)), 전력 공급부(111), 휘발성 메모리(112), 및 인터페이스(114)를 포함한다. 제어기(108)는 구역 관리부(120)를 포함한다. 일부 예들에서, 저장 디바이스(106)는 명료함을 위해 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다. 예를 들어, 저장 디바이스(106)는, 저장 디바이스(106)의 컴포넌트들이 기계적으로 부착되는 그리고 저장 디바이스(106)의 컴포넌트들 등을 전기적으로 상호연결하는 전기전도성 트레이스들을 포함하는 인쇄 회로 기판(PCB)을 포함할 수 있다. 일부 예들에서, 저장 디바이스(106)의 물리적 치수들 및 커넥터 구성들은 하나 이상의 표준 폼 팩터들을 따를 수 있다. 일부 예시적인 표준 폼 팩터들은 2.5" 데이터 저장 디바이스(예컨대, HDD 또는 SSD), 2.5" 데이터 저장 디바이스, 1.8" 데이터 저장 디바이스, PCI(peripheral component interconnect), PCI-X(PCI-extended), PCIe(PCI Express)(예컨대, PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI 등)를 포함하지만, 이들로 제한되지 않는다. 일부 예들에서, 저장 디바이스(106)는 호스트 디바이스(104)의 마더보드에 직접 커플링(예컨대, 직접 솔더링)될 수 있다.
저장 디바이스(106)의 인터페이스(114)는 호스트 디바이스(104)와 데이터를 교환하기 위한 데이터 버스 및 호스트 디바이스(104)와 커맨드들을 교환하기 위한 제어 버스 중 하나 또는 둘 모두를 포함할 수 있다. 인터페이스(114)는 임의의 적합한 프로토콜에 따라 동작할 수 있다. 예를 들어, 인터페이스(114)는 하기의 프로토콜들 중 하나 이상의 프로토콜들에 따라 동작할 수 있다: ATA(advanced technology attachment)(예컨대, SATA(serial-ATA) 및 PATA(parallel-ATA)), FCP(Fibre Channel Protocol), SCSI(small computer system interface), SAS(serially attached SCSI), NVMe(non-volatile memory express), OpenCAPI, GenZ, CCIX(Cache Coherent Interface Accelerator), OCSSD(Open Channel SSD), CXL(Coherent Accelerator) 등. 인터페이스(114)의 전기 접속(예컨대, 데이터 버스, 제어 버스, 또는 둘 모두)은 제어기(108)에 전기적으로 접속되어, 호스트 디바이스(104)와 제어기(108) 사이의 전기 접속을 제공하여서, 데이터가 호스트 디바이스(104)와 제어기(108) 사이에서 교환될 수 있게 한다. 일부 예들에서, 인터페이스(114)의 전기 접속은 또한 저장 디바이스(106)가 호스트 디바이스(104)로부터 전력을 수신할 수 있게 할 수 있다. 예를 들어, 도 1에 예시된 바와 같이, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 전력을 수신할 수 있다.
저장 디바이스(106)는 복수의 메모리 디바이스들을 포함할 수 있는 NVM(110)을 포함한다. NVM(110)은 데이터를 저장 및/또는 검색하도록 구성될 수 있다. 예를 들어, NVM(110)의 메모리 디바이스는 데이터를 저장할 것을 메모리 디바이스에 명령하는 제어기(108)로부터 데이터 및 메시지를 수신할 수 있다. 유사하게, NVM(110)의 메모리 디바이스는 데이터를 검색할 것을 메모리 디바이스에 명령하는 제어기(108)로부터 메시지를 수신할 수 있다. 일부 예들에서, 메모리 디바이스들의 각각은 다이로 지칭될 수 있다. 일부 예들에서, 단일 물리적 칩이 복수의 다이들(즉, 복수의 메모리 디바이스들)을 포함할 수 있다. 일부 예들에서, 메모리 디바이스들 각각은 비교적 많은 양들의 데이터(예컨대, 128 MB, 256 MB, 412 MB, 1 GB, 2 GB, 3 GB, 8 GB, 16 GB, 22 GB, 54 GB, 128 GB, 256 GB, 412 GB, 1 TB 등)를 저장하도록 구성될 수 있다.
일부 예들에서, NVM(110)의 각각의 메모리 디바이스는 플래시 메모리 디바이스들, PCM(phase-change memory) 디바이스들, ReRAM(resistive random-access memory) 디바이스들, MRAM(magnetoresistive random-access memory) 디바이스들, F-RAM(ferroelectric random-access memory), 홀로그래픽 메모리 디바이스들, 하드 디스크 드라이브(HDD)들, 및 임의의 다른 유형의 비휘발성 메모리 디바이스들과 같은 임의의 유형의 비휘발성 메모리 디바이스들을 포함할 수 있다.
NVM(110)은 복수의 플래시 메모리 디바이스들을 포함할 수 있다. 플래시 메모리 디바이스들은 NAND 또는 NOR 기반 플래시 메모리 디바이스들을 포함할 수 있고, 각각의 플래시 메모리 셀에 대한 트랜지스터의 플로팅 게이트에 포함된 전하에 기초하여 데이터를 저장할 수 있다. NAND 플래시 메모리 디바이스들에서, 플래시 메모리 디바이스는 복수의 블록들로 분할될 수 있으며, 이들은 복수의 페이지들로 분할될 수 있다. 특정 메모리 디바이스 내의 복수의 블록들 중의 각각의 블록은 복수의 NAND 셀들을 포함할 수 있다. NAND 셀들의 행(row)들은 워드라인을 이용하여 전기적으로 접속되어 복수의 페이지들 중 소정 페이지를 정의할 수 있다. 복수의 페이지들 각각 내의 각자의 셀들은 각자의 비트 라인들에 전기적으로 접속될 수 있다. 또한, NAND 플래시 메모리 디바이스들은 2D 또는 2D 디바이스들일 수 있고, 싱글 레벨 셀(SLC), 멀티-레벨 셀(MLC), 트리플 레벨 셀(TLC), 또는 쿼드 레벨 셀(QLC)일 수 있다. 제어기(108)는, 페이지 레벨에서는 NAND 플래시 메모리 디바이스들에 데이터를 기록하고 그들로부터 데이터를 판독할 수 있고, 블록 레벨에서는 NAND 플래시 메모리 디바이스들로부터 데이터를 소거할 수 있다.
NVM(110)의 일부분은 NVM(110)의 용량이 복수의 구역들로 분할되도록 논리 블록들로 포맷화될 수 있다. 구역들 각각은 NVM(110)의 복수의 물리 또는 소거 블록들을 포함하고, 소거 블록들 각각은 복수의 논리 블록들과 연관된다. 논리 블록들 각각은 고유 LBA 또는 섹터와 연관된다. 구역들 각각은 NVM(110)의 하나 이상의 소거 블록들의 용량에 맞춰 조정되는 크기를 가질 수 있다. 제어기(108)가, 예컨대 호스트 디바이스(104)로부터 커맨드를 수신할 때, 제어기(108)는 NVM(110)의 복수의 소거 블록들과 연관된 복수의 논리 블록들로부터 데이터를 판독하고 그에 데이터를 기록할 수 있다.
저장 디바이스(106)는 저장 디바이스(106)의 하나 이상의 컴포넌트에 전력을 제공할 수 있는 전력 공급부(111)를 포함한다. 표준 모드에서 동작할 때, 전력 공급부(111)는 호스트 디바이스(104)와 같은 외부 디바이스에 의해 제공되는 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 예를 들어, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 수신된 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 일부 예들에서, 전력 공급부(111)는 셧다운 모드에서 동작할 때, 예컨대 외부 디바이스로부터의 전력 수신이 중단되는 경우 하나 이상의 컴포넌트들에 전력을 제공하도록 구성된 하나 이상의 전력 저장 컴포넌트들을 포함할 수 있다. 이러한 방식으로, 전력 공급부(111)는 온보드 백업 전원으로서 기능할 수 있다. 하나 이상의 전력 저장 컴포넌트의 일부 예들은 커패시터들, 수퍼 커패시터들, 배터리들 등을 포함하지만 이로 제한되지 않는다. 일부 예들에서, 하나 이상의 전력 저장 컴포넌트에 의해 저장될 수 있는 전력의 양은 하나 이상의 전력 저장 컴포넌트의 비용 및/또는 크기(예를 들어, 면적/부피)의 함수일 수 있다. 다시 말해서, 하나 이상의 전력 저장 컴포넌트에 의해 저장되는 전력의 양이 증가함에 따라, 하나 이상의 전력 저장 컴포넌트의 비용 및/또는 크기가 또한 증가한다.
저장 디바이스(106)는 또한, 휘발성 메모리(112)를 포함하며, 이는 제어기(108)에 의해 정보를 저장하는 데 사용될 수 있다. 휘발성 메모리(112)는 하나 이상의 휘발성 메모리 디바이스들로 구성될 수 있다. 일부 예들에서, 제어기(108)는 휘발성 메모리(112)를 캐시로서 사용할 수 있다. 예를 들어, 제어기(108)는, 캐싱된 정보가 NVM(110)에 기록될 때까지, 캐싱된 정보를 휘발성 메모리(112)에 저장할 수 있다. 도 1에 도시된 바와 같이, 휘발성 메모리(112)는 전력 공급부(111)로부터 수신된 전력을 소비할 수 있다. 휘발성 메모리(112)의 예들은 RAM(random-access memory), DRAM(dynamic random access memory), SRAM(static RAM), 및 SDRAM(synchronous dynamic RAM)(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 등)을 포함하지만, 이들로 제한되지 않는다.
저장 디바이스(106)는 제어기(108)를 포함하며, 이는 저장 디바이스(106)의 하나 이상의 동작들을 관리할 수 있다. 예를 들어, 제어기(108)는 NVM(110)으로부터의 데이터의 판독 및/또는 그에의 데이터의 기록을 관리할 수 있다. 제어기(108)는 구역들에 대한 판독 및 기록들뿐만 아니라, 가비지(garbage) 수집 목적들을 위한 구역들로의 그리고 그들로부터의 유효 데이터의 재위치를 관리하는 구역 관리부(ZM)(120)를 포함할 수 있다. 구역 메타데이터(122)는 구역 관리부(120) 또는 제어기(108) 중 어느 하나에 저장될 수 있다. 일부 실시예들에서, 저장 디바이스(106)가 호스트 디바이스(104)로부터 기록 커맨드를 수신할 때, 제어기(108)는 NVM(110)에 데이터를 저장하라는 데이터 저장 커맨드를 개시할 수 있고, 데이터 저장 커맨드의 진행을 모니터링할 수 있다. 제어기(108)는 저장 시스템(100)의 적어도 하나의 동작 특성을 결정할 수 있고, 적어도 하나의 동작 특성을 NVM(110)에 저장할 수 있다.
구역 메타데이터(122)는 각각의 구역의 상태와 같은 복수의 구역들 각각에 관한 정보를 저장한다. 구역 메타데이터(122)는, 하나 이상의 구역들에 관하여 호스트 디바이스(104)에 권고들을 행하거나, 하나 이상의 구역들이 업데이트되거나 변경되었음을 호스트 디바이스(104)에 통지하거나, 또는 하나 이상의 구역들에서 발생했을 수 있는 이벤트들을 호스트 디바이스(104)에 통지하기 위해 제어기(108) 또는 ZM(120)에 의해 업데이트될 수 있다. 구역 메타데이터(122)는 제어기(108) 또는 ZM(120)이 업데이트할 수 있는 복수의 속성들 또는 필드들을 포함한다. 예를 들어, 구역 메타데이터(122)는, 도 3a 및 도 3b를 참조하여 하기에서 논의되는 바와 같이, Writeable Zone Capacity 속성, Transition Zone to Full Recommendation 속성, Controller Transitioned Full Zone 속성, Reset Full Zone Anticipated 속성뿐만 아니라, 일정 구역 내의 I/O 에러들, 프로그램 실패들, 및 임의의 스킵된 LBA들에 관한 데이터를 포함할 수 있다.
제어기(108) 및/또는 ZM(120)은 구역 메타데이터(122)가 하나 이상의 선택 속성들(예컨대, Writeable Zone Capacity 속성, Transition Zone to Full Recommendation 속성, Controller Transitioned Full Zone 속성, 및 Reset Full Zone Anticipated 속성)로 업데이트되었음을, 그리고 호스트 디바이스(104)가 구역 메타데이터(122)에 발생한 변화들의 리스트를 판독하거나 검색해야 함을 호스트 디바이스(104)에 통지하는 이벤트 또는 통지를 발행하도록 구성된다. 구역 메타데이터(122)는 호스트 디바이스(104)가 저장 디바이스(106)와 동기화하여, 호스트 디바이스(104)가 저장 디바이스(106)에서의 임의의 관련있는 발생들을 완전히 인식할 수 있게 한다. 예를 들어, 구역 메타데이터(122)는, 호스트 디바이스(104)가 임의의 주어진 시간에 저장 디바이스(106) 내의 임의의 저장된 데이터의 위치 또는 호스트 디바이스(104)로부터의 데이터를 저장 디바이스(106)에 기록하는 동안 발생하는 임의의 I/O 에러들을 인식할 수 있게 한다.
도 2는 일 실시예에 따른, 판독 또는 기록 커맨드를 실행하도록 저장 디바이스를 동작시키는 방법(200)을 예시하는 블록도이다. 방법(200)은 호스트 디바이스(104), 및 제어기(108)를 포함하는 저장 디바이스(106)를 갖는 저장 시스템(100)과 함께 사용될 수 있다. 방법(200)은 호스트 디바이스, 및 커맨드 프로세서를 포함하는 저장 디바이스와 함께 사용될 수 있다.
방법(200)은 동작(250)에서 시작되며, 여기서 호스트 디바이스는 엔트리로서 제출 큐 내에 커맨드를 기록한다. 호스트 디바이스는 동작(250)에서 제출 큐 내에 하나 이상의 커맨드들을 기록할 수 있다. 커맨드들은 판독 커맨드들 또는 기록 커맨드들일 수 있다. 호스트 디바이스는 하나 이상의 제출 큐들을 포함할 수 있다. 호스트 디바이스는, 하나 이상의 커맨드들의 순차적 기록 순서(즉, 순차적 프로세싱 순서)와는 무관하게, 임의의 순서(즉, 제출 순서)로 하나 이상의 커맨드들을 제출 큐에 기록할 수 있다.
동작(252)에서, 호스트 디바이스는 하나 이상의 업데이트된 제출 큐 테일 포인터들을 기록하고, 도어벨을 울리거나 인터럽트 신호를 전송하여, 실행될 준비가 된 새로운 커맨드를 저장 디바이스에 통지하거나 시그널링한다. 도어벨 신호는 도 2의 도어벨(218)일 수 있다. 호스트는 업데이트된 제출 큐 테일 포인터를 기록하고 하나 초과의 제출 큐들이 있는 경우에 제출 큐들 각각에 대한 도어벨 또는 인터럽트 신호를 전송할 수 있다. 동작(254)에서, 도어벨 또는 인터럽트 신호의 수신에 응답하여, 저장 디바이스의 제어기는 하나 이상의 제출 큐로부터 커맨드를 페치하고, 제어기가 커맨드를 수신하거나 또는 DMA가 커맨드를 판독한다.
동작(256)에서, 제어기는 커맨드를 프로세싱하고, 커맨드와 관련된 데이터를 호스트 디바이스 메모리에 기록하거나 전달한다. 제어기는 한 번에 하나 초과의 커맨드를 프로세싱할 수 있다. 제어기는 하나 이상의 커맨드들을 제출 순서로 또는 순차적 순서로 프로세싱할 수 있다. 기록 커맨드를 프로세싱하는 것은 커맨드와 관련된 데이터를 기록할 구역을 식별하는 것, 구역의 하나 이상의 LBA에 데이터를 기록하는 것, 및 구역 내의 다음 이용가능 LBA를 식별하기 위해 구역의 기록 포인터를 전진시키는 것을 포함할 수 있다.
동작(258)에서, 일단 커맨드가 완전히 프로세싱되었다면, 제어기는 실행된 커맨드에 대응하는 완료 엔트리를 호스트 디바이스의 완료 큐에 기록하고, 새롭게 기록된 완료 엔트리를 가리키도록 CQ 헤드 포인터를 이동시키거나 업데이트한다.
동작(260)에서, 제어기는 인터럽트 신호 또는 도어벨을 생성하여 호스트 디바이스에 전송한다. 인터럽트 신호는, 커맨드가 실행되었고 커맨드와 연관된 데이터는 메모리 디바이스에서 이용가능함을 나타낸다. 인터럽트 신호는 추가로, 완료 큐가 판독 또는 프로세싱될 준비가 되어 있음을 호스트 디바이스에 통지한다.
동작(262)에서, 호스트 디바이스는 완료 엔트리를 프로세싱한다. 동작(264)에서, 호스트 디바이스는 업데이트된 CQ 헤드 포인터를 저장 디바이스에 기록하고, 도어벨을 울리거나 인터럽트 신호를 저장 디바이스에 전송하여 완료 엔트리를 해제한다.
도 3a는 일 실시예에 따른, 저장 디바이스(300)에서 활용되는 ZNS들(302) 뷰를 도시한다. 저장 디바이스(300)는 ZNS(302) 뷰를 호스트 디바이스에 제시할 수 있다. 도 3b는 일 실시예에 따른, 저장 디바이스(300)의 ZNS(302)에 대한 상태도(350)를 도시한다. 저장 디바이스(300)는 도 1의 저장 시스템(100)의 저장 디바이스(106)일 수 있다. 저장 디바이스(300)는 하나 이상의 ZNS들(302)을 가질 수 있고, 각각의 ZNS(302)는 상이한 크기들일 수 있다. 저장 디바이스(300)는 하나 이상의 ZNS들(302)에 더하여 하나 이상의 종래의 네임스페이스들을 추가로 포함할 수 있다. 게다가, ZNS(302)는 SAS를 위한 ZBC(zoned block command) 및/또는 SATA를 위한 ZAC(zoned-device ATA command set)일 수 있다.
저장 디바이스(300)에서, ZNS(302)는 용량이 복수의 구역들(306a 내지 306n)(구역들(306)로 총칭됨)로 분할되도록 논리 블록들로 포맷화될 수 있는 NVM의 양이다. 구역들(306) 각각은 매체 유닛 또는 NVM(304)의 복수의 물리 또는 소거 블록들(도시되지 않음)을 포함하고, 소거 블록들 각각은 복수의 논리 블록들(도시되지 않음)과 연관된다. 구역들(306) 각각은 NVM 또는 NAND 디바이스의 하나 이상의 소거 블록들의 용량에 맞춰 조정되는 크기를 가질 수 있다. 제어기(308)가, 예컨대 호스트 디바이스(도시되지 않음) 또는 호스트 디바이스의 제출 큐로부터 커맨드를 수신할 때, 제어기(308)는 ZNS(302)의 복수의 소거 블록들과 연관된 복수의 논리 블록들로부터 데이터를 판독하고 그에 데이터를 기록할 수 있다. 논리 블록들 각각은 고유 LBA 또는 섹터와 연관된다.
일 실시예에서, NVM(304)은 NAND 디바이스이다. NAND 디바이스는 하나 이상의 다이들을 포함한다. 하나 이상의 다이들 각각은 하나 이상의 평면들을 포함한다. 하나 이상의 평면들 각각은 하나 이상의 소거 블록들을 포함한다. 하나 이상의 소거 블록들 각각은 하나 이상의 워드라인들(예컨대, 256개의 워드라인들)을 포함한다. 하나 이상의 워드라인들 각각은 하나 이상의 페이지들에 어드레싱될 수 있다. 예를 들어, MLC NAND 다이는 상위 페이지 및 하위 페이지를 사용하여 전체 워드라인의 각각의 셀에서 2개의 비트들에 도달할 수 있다(예컨대, 페이지당 16 kB). 또한, 각각의 페이지는 전체 페이지와 동일하거나 그보다 작은 입도로 액세스될 수 있다. 제어기는 빈번하게, 512 바이트의 사용자 데이터 입도 LBA 크기들로 NAND에 액세스할 수 있다. 따라서, 하기 설명에서 언급되는 바와 같이, NAND 위치들은 512 바이트의 입도와 동일하다. 이와 같이, MCL NAND의 2개의 페이지들에 대한 512 바이트의 LBA 크기 및 16 kB의 페이지 크기는 워드라인당 약 16개의 NAND 위치들을 생성한다. 그러나, NAND 위치 크기는 제한적인 것으로 의도되지 않으며, 단지 예로서 사용된다.
데이터가 소거 블록에 기록될 때, 이에 상응하게, 구역(306) 내에서 하나 이상의 논리 블록들이 업데이트되어, 데이터가 NVM(304) 내에서 어디에 위치되는지를 추적한다. 데이터는, 구역(306)이 풀이 될 때까지 한 번에 하나의 구역(306)에 기록되거나, 또는 다수의 구역들(306)이 부분적으로 풀이 될 수 있도록 다수의 구역들(306)에 기록될 수 있다. 유사하게, 특정 구역(306)에 데이터를 기록할 때, 데이터는 인접 블록으로 이동할 때까지, NAND 위치들의 순차적 순서로 또는 워드라인별로, 한 번에 하나의 블록씩 복수의 소거 블록들에 기록될 수 있고(즉, 제2 소거 블록으로 이동하기 전에 제1 소거 블록이 풀이 될 때까지 제1 소거 블록에 기록됨), 더 큰 병렬 방식으로 각각의 블록을 부분적으로 충전하도록 NAND 위치들의 순차적 순서로 또는 워드라인 별로 한 번에 다수의 블록들에 기록될 수 있다(즉, 각각의 소거 블록의 제2 NAND 위치에 기록되기 전에 각각의 소거 블록의 제1 NAND 위치에 기록됨).
제어기(308)가 각각의 구역마다 데이터를 저장할 소거 블록들을 선택할 때, 제어기(308)는 구역 개방 시간에 소거 블록들을 선택할 수 있을 것이거나, 제어기(308)는 소거 블록들을, 그러한 특정 소거 블록의 제1 NAND 위치 또는 워드라인을 충전하는 것이 필요하게 될 때 선택할 수 있다. 이는, 다음 소거 블록을 시작하기 전에 하나의 소거 블록을 완전히 충전하는 전술된 방법이 활용될 때 더 차별화될 수 있다. 제어기(308)는 시간 차이를 사용하여 JIT(just-in-time) 기반으로 더 최적의 소거 블록을 선택할 수 있다. 어느 소거 블록이 각각의 구역 및 그의 연속적인 LBA들에 대해 할당되고 배정되는 지의 결정이 제어기(308) 내에서 항상 0개 이상의 공존(concurrent) 구역들에 대해 일어나는 중일 수 있다.
구역들(306) 각각은 구역 시작 논리 블록 어드레스(zone starting logical block address, ZSLBA) 또는 구역 시작 섹터와 연관된다. ZSLBA는 구역(306) 내의 제1 이용가능 LBA이다. 예를 들어, 제1 구역(306a)은 ZaSLBA와 연관되고, 제2 구역(306b)은 ZbSLBA와 연관되고, 제3 구역(306c)은 ZcSLBA와 연관되고, 제4 구역(306d)은 ZdSLBA와 연관되고, 제n 구역(306n)(즉, 마지막 구역)은 ZnSLBA와 연관된다. 각각의 구역(306)은 그의 ZSLBA에 의해 식별되고, 순차적 기록들을 수신하도록 구성된다(즉, 기록 커맨드들이 수신되는 순서로 NVM(110)에 데이터를 기록함).
데이터가 구역(306)에 기록됨에 따라, 기록 포인터(310)는 전진되거나 업데이트되어, 다음 기록 시작 지점을 추적하기 위해 데이터를 기록할 구역(306) 내의 다음 이용가능 블록을 가리키거나 나타낸다(즉, 이전 기록의 완료 지점이 후속 기록의 시작 지점과 동일함). 따라서, 기록 포인터(310)는 구역(306)에 대한 후속 기록이 어디에서 시작될지를 나타낸다. 후속 기록 커맨드들은 '구역 추가(zone append)' 커맨드들이며, 여기서 후속 기록 커맨드와 연관된 데이터는 기록 포인터(310)가 다음 시작 지점으로서 나타내고 있는 위치에 있는 구역(306)에 추가된다. 기록 순서화를 위해 구역(306) 내의 LBA들의 순서화된 리스트가 저장될 수 있다. 각각의 구역(306)은 그 자신의 기록 포인터(310)를 가질 수 있다. 따라서, 기록 커맨드가 수신될 때, 구역이 그의 ZSLBA에 의해 식별되고, 기록 포인터(310)는 식별된 구역 내에서 데이터의 기록이 시작되는 곳을 결정한다.
도 3b는 도 3a의 ZNS(302)에 대한 상태도(350)를 도시한다. 상태도(350)에서, 각각의 구역은 비어 있음(empty), 활성(active), 풀, 또는 오프라인(offline)과 같은 상이한 상태에 있을 수 있다. 구역이 비어 있을 때, 구역에는 데이터가 없고(즉, 구역 내의 소거 블록들 중 어느 것도 현재 데이터를 저장하고 있지 않음), 기록 포인터는 ZSLBA에 있다(즉, WP=0). 일단 구역에 대해 기록이 스케줄링된다면 또는 호스트에 의해 구역 개방 커맨드가 발행되는 경우, 비어 있는 구역이 개방 및 활성 구역으로 전환된다. 구역 개방 상태와 구역 폐쇄 상태 - 이들은 둘 모두 활성 상태들임 - 간에 구역을 이동시키기 위해 구역 관리(ZM) 커맨드들이 사용될 수 있다. 구역이 활성인 경우, 구역은 기록될 수 있는 개방 블록들을 포함하고, 호스트는 활성 상태에서의 권고 시간에 대한 설명을 제공받을 수 있다. 제어기(308)는 ZM을 포함한다. 구역 메타데이터는 ZM 및/또는 제어기(308)에 저장될 수 있다.
용어 "~에 기록됨"은, 사용자 데이터가 모든 이용가능 NAND 위치들을 충전하지는 않았을 때 소거 블록 내의 0개 이상의 NAND 위치들 및/또는 소거 블록 내의 부분 충전된 NAND 위치들 상에 사용자 데이터를 프로그래밍하는 것을 포함한다. 용어 "기록됨"은 내부 드라이브 처리 요구들(에러 비트들이 개방 소거 블록들 상에 더 빨리 축적되기 때문에 개방 블록 데이터 리텐션 문제들)로 인해 구역을 풀로 이동시키는 것, 특히 결함 상태를 추적하거나 발견하기에 너무 많은 개방 구역들과 같이, 리소스 제약들로 인해 저장 디바이스(300)가 구역을 폐쇄하거나 충전하는 것, 또는 특히 드라이브를 전송할 데이터가 더 이상 없음, 컴퓨터 셧다운, 호스트 상의 에러 처리, 추적을 위한 제한된 호스트 리소스들과 같은 문제들로 인해 호스트 디바이스가 구역을 폐쇄하는 것을 추가로 포함할 수 있다.
활성 구역들은 개방 상태 또는 폐쇄 상태일 수 있다. 개방 구역은, 기록될 준비가 되어 있고 현재 리소스들이 할당되어 있는 비어 있는 또는 부분적 풀 구역이다. 기록 커맨드 또는 구역 추가 커맨드와 함께 호스트 디바이스로부터 수신된 데이터는 현재 이전 데이터로 충전되지 않은 개방 소거 블록에 프로그래밍될 수 있다. 폐쇄 구역은 현재 계속적으로 호스트로부터 기록들을 수신하고 있지 않은 비어 있는 또는 부분적 풀 구역이다. 개방 상태로부터 폐쇄 상태로의 구역의 이동은, 제어기(308)가 다른 태스크들에 리소스들을 재할당할 수 있게 한다. 이들 태스크들은 개방된 다른 구역들, 다른 종래의 비-구역 영역들, 또는 다른 제어기 요구들을 포함할 수 있지만, 이들로 제한되지 않는다.
개방 구역과 폐쇄 구역 둘 모두에서, 기록 포인터는 ZSLBA와 구역의 마지막 LBA의 끝 사이의 어딘가의 구역 내의 위치를 가리키고 있다(즉, WP>0). 활성 구역들은 ZM에 의한 지정에 따라, 또는 구역에 대해 기록이 스케줄링되는 경우에 개방 상태와 폐쇄 상태 사이에서 전환할 수 있다. 또한, ZM은 구역이 비어 있는 구역으로 다시 전환되도록 구역에 저장된 데이터를 클리어하거나 소거하기 위해 활성 구역을 재설정할 수 있다. 일단 활성 구역이 풀이 되면, 구역은 풀 상태로 전환된다. 풀 구역은 데이터로 완전히 충전되는 구역이고, 데이터를 기록할 이용가능 블록을 더 이상 갖지 않는다(즉, WP=구역 용량(ZCAP)). 풀 구역에서, 기록 포인터는 구역의 기록가능 용량의 끝을 가리킨다. 풀 구역들에 저장된 데이터의 판독 커맨드들은 여전히 실행될 수 있다.
구역들은 256 MiB 또는 512 MiB와 같은 임의의 총 용량을 가질 수 있다. 그러나, 하나 이상의 제외된 소거 블록들 및 XOR 데이터를 저장하는 각각의 구역의 일부분과 같은, 각각의 구역의 작은 부분이 데이터를 기록하는 데 액세스불가능할 수 있지만, 여전히 판독될 수 있다. 예를 들어, 구역(306)의 총 용량이 512 MiB인 경우, ZCAP는 470 MiB일 수 있으며, 이는 데이터를 기록하는 데 이용가능한 용량인 반면, 42 MiB는 데이터를 기록하는 데 이용 불가능하다. 구역의 기록가능 용량(ZCAP)은 총 구역 저장 용량과 동일하거나 그보다 적다. 저장 디바이스(300)는 구역 재설정 시에 각각의 구역의 ZCAP를 결정할 수 있다. 예를 들어, 제어기(308) 또는 ZM은 각각의 구역의 ZCAP를 결정할 수 있다. 저장 디바이스(300)는 구역이 재설정될 때 구역의 ZCAP를 결정할 수 있다.
Writeable ZCAP의 속성은 구역 메타데이터에 추가되고, 저장 디바이스(300)는 Writeable ZCAP 속성을 업데이트하여, 호스트 디바이스에 대한 구역(306)의 기록가능 용량을 나타낼 수 있다. 호스트 디바이스는 구역 메타데이터로부터 Writeable ZCAP의 속성을 판독하여, 저장 디바이스가 구역(306)의 저장 디바이스 선택된 ZCAP를 결정할 수 있고, 따라서, 호스트 디바이스는 얼마나 많은 데이터가 구역(306)에 저장될 수 있는지를 인식한다. 저장 디바이스(300)는 구역들(306) 각각에 적용되는 Writeable ZCAP 속성을 업데이트할 수 있다. 구역 메타데이터를 ZCAP 속성으로 업데이트할 시, 제어기(308) 및/또는 ZM은 구역 메타데이터가 변경되었음을 호스트 디바이스에 통지하는 이벤트를 발행할 수 있다.
구역(306)의 ZCAP는 물리 매체 경계들의 용량에 맞춰, 예컨대 하나 이상의 소거 블록들에 맞춰 조정하도록 선택될 수 있는데, 이는 데이터를 기록할 때 호스트 디바이스 및 저장 디바이스(300)가 협력할 수 있게 한다. 구역(306)에 저장된 모든 데이터는 유효하거나 무효일 것이고, 호스트 디바이스는 저장 디바이스와는 독립적으로 데이터의 상태를 추적한다. 그 결과, 호스트 애플리케이션 또는 호스트 디바이스가 이제 이러한 프로세스를 관리함에 따라, 저장 디바이스는 데이터를 이동시켜 새로운 기록들을 위한 소거 블록들을 해제할 필요가 없다. 따라서, 디바이스-측 기록 증폭 인자가 제거된다.
ZM은 풀 구역을 재설정하여, 구역이, 비어 있는 구역으로 다시 전환되도록 구역에 저장된 데이터의 소거를 스케줄링할 수 있다. 풀 구역이 재설정될 때, 구역에서 데이터가 즉시 클리어되지 않을 수 있지만, 구역은 기록될 준비가 된 비어 있는 구역으로서 마킹될 수 있다. 그러나, 재설정 구역은 개방 및 활성 구역으로 전환하기 전에 소거되어야 한다. ZM 재설정과 ZM 개방 사이에서 언제든지 구역이 소거될 수 있다. 구역을 재설정할 시, 저장 디바이스(300)는 재설정 구역의 새로운 ZCAP를 결정할 수 있고, 구역 메타데이터 내의 Writeable ZCAP 속성을 업데이트할 수 있다. 오프라인 구역은 데이터를 기록하는 데 이용 불가능한 구역이다. 오프라인 구역은 활성임이 없이, 풀 상태, 비어 있는 상태, 또는 부분적 풀 상태에 있을 수 있다.
구역을 재설정하는 것은 구역에 저장된 모든 데이터를 클리어하거나 모든 데이터의 소거를 스케줄링하기 때문에, 개별 소거 블록들의 가비지 수집에 대한 필요성이 제거되어, 저장 디바이스(300)의 전체 가비지 수집 프로세스를 개선한다. 저장 디바이스(300)는 소거를 위해 하나 이상의 소거 블록들을 마킹할 수 있다. 새로운 구역이 형성될 예정이고 저장 디바이스(300)가 ZM 개방을 예상할 때, 소거를 위해 마킹된 하나 이상의 소거 블록들이 이어서 소거될 수 있다. 저장 디바이스(300)는 추가로, 소거 블록들의 소거 시에 구역의 물리적 지원(backing)을 결정 및 생성할 수 있다. 따라서, 일단 새로운 구역이 개방되고 소거 블록들이 구역을 형성하기 위해 선택되고 있다면, 소거 블록들은 소거되었을 것이다. 게다가, 구역이 재설정될 때마다, 구역(306)에 대한 기록 포인터(310) 및 LBA들에 대한 새로운 순서가 선택되어, 구역(306)이 순차적 순서를 벗어나 커맨드들을 수신하는 것을 용인할 수 있게 할 수 있다. 기록 포인터(310)는, 커맨드에 대해 어떤 시작 LBA가 나타내지든, 커맨드가 기록될 수 있도록 선택적으로 턴오프될 수 있다.
다시 도 3a를 참조하면, 제어기(308)가 호스트로부터 기록 커맨드를 수신하거나 또는 직접 메모리 액세스(DMA)가 기록 데이터를 판독할 때, 제어기(308)는 커맨드와 연관된 데이터를 기록하기 위해 비어 있는 소거 블록을 선택할 수 있고, 비어 있는 구역(306)은 활성 및 개방 구역(306)으로 전환된다. 기록 커맨드는 새로운 데이터를 기록하는 커맨드일 수 있거나, 또는 가비지 수집 목적으로 유효 데이터를 다른 구역으로 이동시키는 커맨드일 수 있다. 제어기(308)는 호스트 디바이스에 의해 파퓰레이트(populate)된 제출 큐로부터 새로운 커맨드들을 DMA 판독 또는 풀-인(pull-in)하도록 구성된다.
활성 구역(306)으로 방금 전환된 비어 있는 구역(306)에서, 데이터가 구역(306), 및 ZSLBA에서 시작된 구역(306)의 순차 LBA들의 연관된 세트에 배정되는데, 이는 기록 포인터(310)가 제1 이용가능 논리 블록으로서 ZSLBA와 연관된 논리 블록을 나타내고 있기 때문이다. 데이터는 구역(306)의 물리적 위치에 할당된 하나 이상의 소거 블록들 또는 NAND 위치들에 기록될 수 있다. 기록 커맨드와 연관된 데이터가 구역(306)에 기록된 후에, 기록 포인터(310)는 호스트 기록에 이용가능한 다음 LBA(즉, 제1 기록의 완료 지점)를 가리키도록 업데이트된다. 이러한 호스트 기록 커맨드로부터의 기록 데이터는 구역의 물리적 지원을 위해 선택된 소거 블록 내의 다음 이용가능 NAND 위치로 순차적으로 프로그래밍된다.
일부 실시예들에서, NAND 위치는 워드라인과 동일할 수 있다. 그러한 실시예에서, 기록 커맨드가 워드라인보다 더 작은 경우, 제어기는, 선택적으로, 다수의 기록 커맨드들로 구성된 전체 워드라인을 프로그래밍하기 전에 DRAM 또는 SRAM과 같은 다른 메모리 위치에서 여러 기록 커맨드들을 선택적으로 병합할 수 있다. 워드라인보다 더 긴 기록 커맨드들은 데이터 중 일부를 갖는 완전한 워드라인을 프로그래밍 및 충전할 수 있을 것이고, 워드라인을 넘는 여분의 데이터는 다음 워드라인을 충전하는 데 사용될 것이다. 본 설명의 목적들을 위해, 기록 데이터 크기들은 512 바이트의 NAND 위치와 동일하지만; 그러나, 이는 제한하고자 하는 것은 아니다.
예를 들어, 제어기(308)는 제3 구역(306c)에 대한 제1 기록 커맨드, 또는 제1 구역 추가 커맨드를 수신할 수 있다. 호스트는 구역(306)의 어느 논리 블록이 제1 커맨드와 관련된 데이터를 기록할지를 순차적으로 식별한다. 이어서, 제1 커맨드와 연관된 데이터는 기록 포인터(310)에 의해 나타내지는 바와 같은 제3 구역(306c) 내의 제1 또는 다음 이용가능 LBA(들)에 기록되고, 기록 포인터(310)는 호스트 기록을 위해 이용가능한 다음 이용가능 LBA를 가리키도록 전진되거나 업데이트된다(즉, WP>0). 제어기(308)가 제3 구역(306c)에 대한 제2 기록 커맨드, 또는 제2 구역 추가 커맨드를 수신하는 경우, 제2 기록 커맨드와 연관된 데이터는 기록 포인터(310)에 의해 식별된 제3 구역(306c) 내의 다음 이용가능 LBA(들)에 기록된다. 일단 제2 커맨드와 연관된 데이터가 제3 구역(306c)에 기록되면, 기록 포인터(310)는 호스트 기록을 위해 이용가능한 다음 이용가능 LBA를 가리키도록 다시 한 번 전진되거나 업데이트된다. 제3 구역(306c)을 재설정하는 것은 기록 포인터(310)를 다시 ZcSLBA로 이동시키고(즉, WP=0), 제3 구역(306c)은 비어 있는 구역으로 전환된다.
구역의 소거 블록들 또는 NAND 위치들에 대해 사용자 데이터를 기록하는 것(즉, 셀을 프로그래밍하는 것)은, 셀의 전압이 주어진 논리 상태에 대한 범위 내에 있을 때까지 전자들을 셀 내로 펄싱함으로써 행해진다. 전압은 오로지 증가만 할 수 있고, 셀이 다시 프로그래밍될 수 있게 되기 전에 비워져야 한다(즉, 플래시 블록 소거를 통해야 함). 프로그래밍은 에너지-소비 프로세스이며, 이는 전하들이 이웃 셀들로 흐르게 하여, 이에 따라, 가능하게는, 이웃 셀의 논리 상태를 변화시킬 수 있다.
인근 셀들에 대한 전하 누설들을 감소시키기 위해, 셀들의 2-단계 프로그래밍이 활용될 수 있다. 다중-레벨 셀들(MLC)에 대한 2-단계 프로그래밍에서, 예를 들어, 제1 프로그램은 제1 셀의 하위 비트에서 실행되고(즉, 고-에너지 조립형(coarse-grained) 프로그램), 이어서, 제2 프로그램이 제1 셀의 상위 비트에서 실행된다(즉, 저-에너지 미립형(fine-grained) 프로그램). 제1 셀의 하위 비트를 프로그래밍하는 것과 상위 비트를 프로그래밍하는 것 사이에는, 이웃하는 제2 셀의 하위 비트가 프로그래밍된다. 셀간 간섭이 있던 경우, 제1 셀의 미립화된 프로그래밍은 이웃하는 제2 셀의 전류-전압을 감지할 수 있고, 필요한 논리 상태에 대해 필요한 에너지만을 펄싱할 수 있다. 한편, 미립화된 프로그램에 의해 프로그래밍되지 않은 셀들은 판독불가능한데, 이는 미립화된 프로그램이 완료될 때까지 호스트 데이터가 판독불가능해지게 한다.
2-단계 프로그래밍을 사용할 때의 다른 트레이드오프는, 부분적으로 프로그래밍된 상태의 셀들이 간섭 및 판독 교란들을 더 잘 프로그래밍하는 경향이 있다는 것인데, 이는 미립화된 프로그래밍 단계에서 셀의 적절한 전압을 판독할 능력에 영향을 미친다 - 이는 무효한 논리 상태가 저장되게 한다. 전하 누설 및 판독/프로그래밍 교란들과 같은 에러들은 셀들의 논리 상태가, 전자들이 셀들에 출입하는 결과로서 변하게 한다.
도 3b에서 전술된 것과 같은 개방 구역들은 판독 교란들, 2-단계 프로그래밍 모델, 및/또는 매체들의 다른 물리적 속성들로부터 에러들이 일어나기 쉬우며, 이는 저장 디바이스(300)가 그러한 에러들을 보상하기 위해 신뢰성을 유지하도록 일정 세트의 소거 블록들을 확보하거나 패딩할 필요가 있게 할 수 있다. 에러들을 경험하는 개방 구역들은 일정 구역이 제어기(308)에 의해 풀 상태로 조기에 전이되어, 이에 따라, 매체들에 대한 기록들의 수를 감소시키게 할 수 있다. 그러한 경우들에 있어서, 호스트 디바이스는 사용자 데이터로 구역(306)을 충전할 기회를 갖지 않아서, 기록 용량이 낭비되게 한다.
그러나, ZNS(302)를 활용하는 저장 디바이스(300)는, 호스트 디바이스가 곧 완료될 구역들 또는 제어기 완료된 구역들을 인식할 수 있도록 호스트 디바이스와 협력하여, 호스트 디바이스가 일찍 통지될 수 있게 하고 필요한 경우에 데이터를 개방 구역에 배치할 수 있게 할 수 있다. 저장 디바이스(300)와 호스트 디바이스 사이의 협력을 도모하기 위해, 2개의 새로운 속성들 또는 필드들이 개방 구역 상에서 실행될 구역 메타데이터에 추가된다: Transition Zone to Full Recommendation 및 Controller Transitioned Full Zone. 제어기(308)는, 저장 디바이스(300)가 개방 구역을 풀 상태로 전이시키려고 의도함을 호스트 디바이스에 통지할 수 있고, 이후에, 호스트가 응답하지 않는 경우, 개방 구역을 풀 상태로 자율적으로 전이시킬 수 있다. 예를 들어, 제어기(308) 및/또는 저장 디바이스(300)의 ZM은, 호스트 디바이스가 개방 구역을 풀 상태로 전이시키지 않는 경우 미리결정된 시간 후에 개방 구역을 자율적으로 전이시킬 수 있다. 제어기(308)가 전이를 개시하는 경우, Controller Transitioned Full Zone 속성이 업데이트될 것이다.
Transition Zone to Full Recommendation 및 Controller Transitioned Full Zone의 속성들은 구역이 개방 상태에 있는 동안의 임의의 시간에 업데이트될 수 있고, 이와 같이, 저장 디바이스(300)는 NVM Express 규격에서 Asynchronous Event Notifications 프레임워크를 통한 통지들을 이용한다. Transition Zone to Full Recommendation 및 Controller Transitioned Full Zone의 값들 또는 속성들이 업데이트될 때마다, 저장 디바이스(300)는 구역 메타데이터가 변경되었음을 호스트 디바이스에 통지하는 이벤트를 발행할 수 있다. 이어서, 호스트 디바이스는 변경들의 리스트를 검색해야 하며, 호스트 디바이스가 필요한 것으로 간주하는 임의의 완화들을 수행해야 한다.
유사하게, 도 3b에서 전술된 바와 같은 풀 구역들은 판독 교란들 및 전하 누설들로 인해 어떤 지점에서 재기록되어야 한다. 풀 구역이 재기록되어야 할 때, 모든 데이터는 저장 디바이스(300)의 관점에서 유효하다. 전형적으로, 저장 디바이스(300)는 특정 풀 구역(예컨대, 제1 구역(306a))을 지원하는 소거 블록들로부터 모든 데이터를 판독해야 할 것이고, 호스트 디바이스에 대해 구역(예컨대, 제1 구역(306a))의 풀 상태를 유지하면서 상이한 구역(예컨대, 제2 구역(306b)) 내의 새로운 세트의 소거 블록들에 데이터를 재기록해야 할 것이다. 풀 구역들을 재기록하는 것이 고가의 동작임을 고려하면, 호스트 디바이스는 풀 구역이 재기록되고 액션을 취해야 할 때 통지받을 수 있다.
Reset Full Zone Anticipated의 속성 또는 필드는 풀 구역이 재설정되어야 함을 호스트 디바이스에 경보하기 위해 구역 메타데이터에 추가된다. 제어기(308)는, 그것이 데이터를 재기록할 것을 호스트 디바이스에 권고함을 호스트 디바이스에 통지하기 위해 Reset Full Zone Anticipated 속성 또는 비트를 설정할 수 있거나, 또는 데이터가 호스트 디바이스에 대해 더 이상 유효하지 않은 경우에 풀 구역을 자율적으로 재설정할 수 있다. 이와 같이, 저장 디바이스(300) 및 호스트 디바이스는 전통적인 가비지 수집 프로세스에 협력하여, 불필요한 재기록들을 제거하고 저장 디바이스(300)의 전체 성능을 개선할 수 있다.
호스트 디바이스가 풀 구역을 재설정하지 않는 경우(즉, 데이터에 대한 필요성을 갖지 않는 것으로 인해, 또는 데이터가 어딘가 다른 곳에 재기록된 경우), 저장 디바이스(300)는 데이터를 내부적으로 리프레쉬 또는 재설정할 수 있고, Reset Full Zone Anticipated 속성을 업데이트하여, 그것이 데이터를 리프레쉬 또는 재설정하려고 더 이상 시도하지 않아야 함을 호스트 디바이스가 통지받게 할 수 있다. 예를 들어, 저장 디바이스(300)의 제어기(308)는, 호스트 디바이스가 데이터를 재기록하지 않는 경우, 미리결정된 시간 후에 풀 구역을 재설정할 수 있다. 구역을 재설정하는 것 또는 재기록하는 것이 1초 미만이 걸리기 때문에, 일정 구역으로부터의 데이터를 동시에 재위치시키는, 저장 디바이스와 호스트 디바이스 사이의 경합 조건(race condition)은 가능성이 없을 것 같다.
또한, ZNS(302)는 호스트 기록들이 구역(306)당 단일 기록 I/O로 퇴행(degenerate)하게 할 수 있는 엄격한 기록 순서화를 도입한다. 이와 같이, 구역(306)에 대한 기록들은 순차적이어야 하고, 구역(306)을 재기록하는 것은 구역(306)이 먼저 재설정될 것을 요구한다. 엄격한 기록 순서화를 고수하지 않는 임의의 I/O들을 발행하는 것은 제어기에 의한 I/O 에러들을 초래한다.
ZNS(302)를 활용하는 저장 디바이스(300)가 호스트 디바이스에 기록 에러를 반환할 때, 반환된 에러들은 단일 구역 내에 위치된다. 따라서, 블라스트 반경은 제한되며, 따라서 I/O 에러는 치명적인 것으로 간주되지 않는다. ZNS(302)는 I/O 에러들이 기록들 상에서 반환될 수 있게 하고, 저장 디바이스는 잘 알려진 I/O 에러들을 활용한다. 발생하는 임의의 에러들이 구역 메타데이터에 기록될 수 있다. 이와 같이, 에러들은 저장 디바이스(300)가 호스트 디바이스에 통신할 수 있는 추가적인 정보를 저장 디바이스(300)에 제공한다. 호스트 디바이스는 구역 메타데이터를 판독하여, 에러가 발생한 이유뿐만 아니라 에러의 원인을 결정하고 어느 소거 블록들 또는 NAND 위치들이 에러에 의해 영향을 받는지를 정밀하게 결정할 수 있다. 이어서, 호스트 디바이스는 에러가 발생한 위치들에 데이터를 저장하는 것을 보류할 것을 알고 있다.
예를 들어, 저장 디바이스(300)가 구역(306) 내의 LBA에 기록할 때 에러 또는 프로그래밍 실패를 경험하는 경우, 기록 포인터는 데이터를 저장하는 데 이용가능한 다음 유효 LBA로 전진하기 위해 하나 이상의 LBA들 앞으로 스킵할 수 있다. 이어서, 호스트 디바이스는 구역 메타데이터를 판독하여, 저장 디바이스(300)와 함께 재동기화하기 위해 얼마나 많은 LBA들이 스킵되었는지를 결정할 수 있고, 기록 포인터에 의해 나타내지는 다음 유효 LBA에서 데이터를 기록하기 시작할 수 있다. 따라서, 저장 디바이스(300)가 호스트 디바이스로부터 에러를 마스킹하고 백엔드 상에서의 에러를 관리하는 것이 아니라, 저장 디바이스(300)는 에러 또는 프로그래밍 실패를 경험한 하나 이상의 LBA들에 데이터를 저장하지 않을 것을 호스트 디바이스에 경보할 수 있다. 이와 같이, 호스트 디바이스는 데이터가 저장되는 위치를 항상 인식할 것이다.
다른 예에서, 저장 디바이스(300)가 구역 내의 LBA에 기록할 때 에러 또는 프로그래밍 실패를 경험하는 경우, 저장 디바이스(300)는 전체 구역(306)이 데이터를 저장하는 데 부적합하다고 결정할 수 있다. 개방 구역(306)이 데이터를 저장하는 데 더 이상 적합하지 않은 경우, 저장 디바이스(300)는 부적합한 구역(306)을 풀 상태로 전이시킬 수 있고, 구역 메타데이터 내의 Controller Transitioned Full Zone의 속성을 업데이트하여, 구역(306)이 풀 상태로 전이되었음을 호스트 디바이스에 경보할 수 있다. 이어서, 호스트 디바이스는 전이된 구역(306)이 데이터를 저장하는 데 이용가능하지 않음을 알고 있고, 데이터를 호스트 디바이스의 선택의 새로운 구역(306)에 기록할 수 있다.
잘 알려진 I/O 에러들 또는 프로그래밍 실패를 활용함으로써, 호스트 디바이스 및 저장 디바이스(300)는 데이터 배치에 대해 협력하고, 호스트 디바이스는 동일한 온도를 갖는 데이터를 정렬하여 함께 머무르게 하여, 종래의 SSD들에서 발견되는 바와 같은 고가의 가비지 수집 루틴들을 제거하고 디바이스 기록 증폭 인자를 감소시킬 수 있다. 게다가, 저장 디바이스(300)는, 에러 또는 프로그래밍 실패를 경험했거나 개방 구역이 풀 상태로 전이되었던 하나 이상의 LBA들에 데이터를 저장하지 않을 것을 호스트 디바이스에 경보할 수 있고, 데이터를 저장하는 데 더 이상 사용되지 않을 수 있다. 이와 같이, 호스트 디바이스는 데이터가 저장되고 있는 위치를 끊임없이 인식한다.
게다가, 구역 메타데이터 내의 속성들을 활용하여, 드라이브 측 상에서 무엇이 일어나고 있는지를 호스트 디바이스에 통지함으로써, 가비지 수집을 개선하기 위해 확보된 디바이스 측 기록 증폭 인자 및 드라이브의 오버-프로비저닝은 둘 모두가 제거되어, 호스트 디바이스가 사용할 저장 용량을 증가시킬 수 있다. 추가적으로, 저장 디바이스 및 호스트 디바이스는 전통적인 가비지 수집 프로세스에 협력하여, 불필요한 재기록들을 제거하고 저장 디바이스의 전체 성능을 개선할 수 있다.
일 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 매체 유닛은 복수의 다이들을 포함하며, 복수의 다이들 각각은 복수의 소거 블록들을 포함한다. 저장 디바이스는 매체 유닛에 커플링되는 제어기를 추가로 포함하며, 제어기는 구역 메타데이터를 업데이트하여, 복수의 구역들 중 하나 이상의 풀 구역들을 재설정할 것을 호스트 디바이스에 권고하도록, 구역 메타데이터를 업데이트하여, 복수의 구역들 중 하나 이상의 개방 구역들을 풀 상태로 전이시킬 것을 호스트 디바이스에 권고하도록, 하나 이상의 개방 구역들을 풀 상태로 전이시키도록, 그리고 구역 메타데이터를 업데이트하여, 하나 이상의 개방 구역들이 풀 상태로 전이되었음을 호스트 디바이스에 경보하도록 구성된다.
제어기는, Reset Full Zone Anticipated, Transition Zone to Full Recommendation, 또는 Controller Transitioned Full Zone의 구역 메타데이터 내의 속성을 업데이트할 시에 구역 메타데이터가 변경되었음을 호스트 디바이스에 통지하는 이벤트를 발행하도록 구성된다. 구역 메타데이터는 하나 이상의 풀 구역들을 재설정시킬 것을 호스트 디바이스에 권고하기 위해 Reset Full Zone Anticipated의 속성으로 업데이트된다. 구역 메타데이터는 하나 이상의 개방 구역들을 풀 상태로 전이시킬 것을 호스트 디바이스에 권고하기 위해 Transition Zone to Full Recommendation의 속성으로 업데이트된다. 구역 메타데이터는 하나 이상의 개방 구역들이 풀 상태로 전이되었음을 호스트 디바이스에 경보하기 위해 Controller Transitioned Full Zone의 속성으로 업데이트된다. 제어기는, 하나 이상의 풀 구역들에 저장된 데이터가 더 이상 유효하지 않을 때, 하나 이상의 풀 구역들을 자율적으로 재설정시키도록 추가로 구성된다. 제어기는, 구역 메타데이터를 업데이트하여, 하나 이상의 풀 구역들이 판독 교란들 또는 전하 누설들에 의해 영향을 받을 때, 하나 이상의 풀 구역들을 재설정할 것을 호스트 디바이스에 권고하도록, 그리고 구역 메타데이터를 업데이트하여, 하나 이상의 구역들이 데이터를 저장하는 데 부적합함을 결정할 시, 하나 이상의 개방 구역들을 풀 상태로 전이시킬 것을 호스트 디바이스에 권고하도록 추가로 구성된다.
다른 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 매체 유닛은 복수의 다이들을 포함하며, 복수의 다이들 각각은 복수의 소거 블록들을 포함한다. 저장 디바이스는, 매체 유닛에 커플링되는 제어기를 추가로 포함하며, 제어기는, 복수의 구역들 각각의 기록가능 구역 용량을 결정하도록 - 기록가능 구역 용량은 각각의 구역의 총 구역 저장 용량과 동일하거나 그보다 적고, 각각의 구역의 기록가능 용량은 하나 이상의 소거 블록들의 용량에 맞춰 조정됨 -, 그리고 구역 메타데이터를 업데이트하여, 복수의 구역들 각각의 기록가능 구역 용량을 호스트 디바이스에 통지하도록 구성된다.
제어기는 구역 메타데이터 내의 Writeable ZCAP 속성을 업데이트하여, 기록가능 구역 용량을 호스트 디바이스에 통지한다. 적어도 하나의 구역의 기록가능 구역 용량은 적어도 하나의 구역의 총 구역 저장 용량보다 작다. 총 구역 저장 용량보다 작은 기록가능 구역 용량을 갖는 적어도 하나의 구역은 데이터를 기록하기 위해 액세스불가능한 판독가능 부분을 포함한다. 적어도 하나의 구역의 판독가능 부분은 XOR 데이터를 저장한다. 제어기는 구역 재설정 시에 각각의 구역의 기록가능 구역 용량을 결정하도록 구성된다. 제어기는, 구역 메타데이터 내의 Writeable ZCAP 속성을 업데이트할 시에 구역 메타데이터가 변경되었음을 호스트 디바이스에 통지하기 위한 이벤트를 발행하도록 구성된다.
일 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 매체 유닛은 복수의 다이들을 포함하며, 복수의 다이들 각각은 복수의 소거 블록들을 포함한다. 저장 디바이스는 매체 유닛에 커플링되는 제어기를 추가로 포함하며, 제어기는 복수의 구역들 중 제1 구역 내의 하나 이상의 제1 논리 블록 어드레스들에 데이터를 기록하라는 기록 커맨드를 수신하여, 제1 구역 내의 하나 이상의 제1 논리 블록 어드레스들에 데이터를 기록하는 동안 에러를 경험할 시, 제1 구역의 기록 포인터를 업데이트하여, 제1 구역 내의 다음 유효 논리 블록 어드레스를 가리키도록; 그리고 구역 메타데이터를 업데이트하여, 하나 이상의 제1 논리 블록 어드레스들이 스킵되었음을 나타내고 다음 유효 논리 블록 어드레스가 제1 구역에 데이터를 저장하는 데 이용가능함을 나타내도록 구성된다.
매체 유닛은 비휘발성 메모리 디바이스이다. 구역 메타데이터를 업데이트하여, 하나 이상의 제1 논리 블록 어드레스들이 스킵되었음을 나타내도록 하는 것은, 하나 이상의 제1 논리 블록 어드레스들이 데이터를 저장할 수 없음을 호스트 디바이스에 경보한다. 제2 구역 내의 하나 이상의 제2 논리 블록 어드레스들에 데이터를 기록하는 동안 에러를 경험할 시, 제어기는 제2 구역이 데이터를 저장하는 데 부적합함을 결정하도록 구성된다. 제어기는 제2 구역을 풀 상태로 전이시키도록, 그리고 제2 구역이 풀 상태로 전이되었음을 호스트 디바이스를 경보하기 위해 구역 메타데이터를 업데이트하도록 추가로 구성된다. 구역 메타데이터는 제2 구역이 풀 상태로 전이되었음을 호스트 디바이스에 경보하기 위해 Controller Transitioned Full Zone의 속성으로 업데이트된다. 제어기는, Controller Transitioned Full Zone의 속성으로 구역 메타데이터를 업데이트할 시에 구역 메타데이터가 변경되었음을 호스트 디바이스에 통지하기 위한 이벤트를 발행하도록 추가로 구성된다.
전술한 것은 본 발명의 실시예들에 관한 것이지만, 본 발명의 다른 및 추가 실시예들이 본 발명의 기본 범주로부터 벗어남이 없이 고안될 수 있으며, 본 발명의 그 범주는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 저장 디바이스로서,
    매체 유닛 - 상기 매체 유닛의 용량은 복수의 구역들로 분할되고, 상기 매체 유닛은 복수의 다이들을 포함하고, 상기 복수의 다이들 각각은 복수의 소거 블록들을 포함함 -; 및
    상기 매체 유닛에 커플링되는 제어기를 포함하며, 상기 제어기는,
    구역 메타데이터를 업데이트하여, 상기 복수의 구역들 중 하나 이상의 풀 구역(full zone)들을 재설정할 것을 호스트 디바이스에 권고하도록;
    상기 구역 메타데이터를 업데이트하여, 상기 복수의 구역들 중 하나 이상의 개방 구역들을 풀 상태로 전이시킬 것을 상기 호스트 디바이스에 권고하도록;
    상기 하나 이상의 개방 구역들을 상기 풀 상태로 전이시키도록; 그리고
    상기 구역 메타데이터를 업데이트하여, 상기 하나 이상의 개방 구역들이 상기 풀 상태로 전이되었음을 상기 호스트 디바이스에 경보하도록 구성되는, 저장 디바이스.
  2. 제1항에 있어서, 상기 제어기는, Reset Full Zone Anticipated, Transition Zone to Full Recommendation, 또는 Controller Transitioned Full Zone의 상기 구역 메타데이터 내의 속성을 업데이트할 시에 상기 구역 메타데이터가 변경되었음을 상기 호스트 디바이스에 통지하는 이벤트를 발행하도록 구성되는, 저장 디바이스.
  3. 제1항에 있어서, 상기 구역 메타데이터는 상기 하나 이상의 풀 구역들을 재설정할 것을 상기 호스트 디바이스에 권고하기 위해 Reset Full Zone Anticipated의 속성으로 업데이트되는, 저장 디바이스.
  4. 제1항에 있어서, 상기 구역 메타데이터는 상기 하나 이상의 개방 구역들을 상기 풀 상태로 전이시킬 것을 상기 호스트 디바이스에 권고하기 위해 Transition Zone to Full Recommendation의 속성으로 업데이트되는, 저장 디바이스.
  5. 제1항에 있어서, 상기 구역 메타데이터는 상기 하나 이상의 개방 구역들이 상기 풀 상태로 전이되었음을 상기 호스트 디바이스에 경보하기 위해 Controller Transitioned Full Zone의 속성으로 업데이트되는, 저장 디바이스.
  6. 제1항에 있어서, 상기 제어기는, 상기 하나 이상의 풀 구역들에 저장된 데이터가 더 이상 유효하지 않을 때, 상기 하나 이상의 풀 구역들을 자율적으로 재설정시키도록 추가로 구성되는, 저장 디바이스.
  7. 제1항에 있어서, 상기 제어기는,
    상기 구역 메타데이터를 업데이트하여, 상기 하나 이상의 풀 구역들이 판독 교란들 또는 전하 누설들에 의해 영향을 받을 때, 상기 하나 이상의 풀 구역들을 재설정할 것을 상기 호스트 디바이스에 권고하도록; 그리고
    상기 구역 메타데이터를 업데이트하여, 상기 하나 이상의 구역들이 데이터를 저장하는 데 부적합함을 결정할 시, 상기 하나 이상의 개방 구역들을 상기 풀 상태로 전이시킬 것을 상기 호스트 디바이스에 권고하도록 추가로 구성되는, 저장 디바이스.
  8. 저장 디바이스로서,
    매체 유닛 - 상기 매체 유닛의 용량은 복수의 구역들로 분할되고, 상기 매체 유닛은 복수의 다이들을 포함하고, 상기 복수의 다이들 각각은 복수의 소거 블록들을 포함함 -; 및
    상기 매체 유닛에 커플링되는 제어기를 포함하며, 상기 제어기는,
    상기 복수의 구역들 각각의 기록가능 구역 용량을 결정하도록 - 상기 기록가능 구역 용량은 각각의 구역의 총 구역 저장 용량과 동일하거나 그보다 작고, 각각의 구역의 상기 기록가능 용량은 하나 이상의 소거 블록들의 용량에 맞춰 조정됨 -; 그리고
    구역 메타데이터를 업데이트하여, 상기 복수의 구역들 각각의 기록가능 구역 용량을 호스트 디바이스에 통지하도록 구성되는, 저장 디바이스.
  9. 제8항에 있어서, 상기 제어기는 상기 구역 메타데이터 내의 Writeable ZCAP 속성을 업데이트하여, 상기 기록가능 구역 용량을 상기 호스트 디바이스에 통지하는, 저장 디바이스.
  10. 제8항에 있어서, 적어도 하나의 구역의 기록가능 구역 용량은 상기 적어도 하나의 구역의 총 구역 저장 용량보다 작고, 상기 총 구역 저장 용량보다 작은 기록가능 구역 용량을 갖는 상기 적어도 하나의 구역은 데이터를 기록하기 위해 액세스불가능한 판독가능 부분을 포함하는, 저장 디바이스.
  11. 제10항에 있어서, 상기 적어도 하나의 구역의 판독가능 부분은 XOR 데이터를 저장하는, 저장 디바이스.
  12. 제8항에 있어서, 상기 제어기는 구역 재설정 시에 각각의 구역의 기록가능 구역 용량을 결정하도록 구성되는, 저장 디바이스.
  13. 제8항에 있어서, 상기 제어기는, 상기 구역 메타데이터 내의 Writeable ZCAP 속성을 업데이트할 시에 상기 구역 메타데이터가 변경되었음을 상기 호스트 디바이스에 통지하기 위한 이벤트를 발행하도록 구성되는, 저장 디바이스.
  14. 저장 디바이스로서,
    매체 유닛 - 상기 매체 유닛의 용량은 복수의 구역들로 분할되고, 상기 매체 유닛은 복수의 다이들을 포함하고, 상기 복수의 다이들 각각은 복수의 소거 블록들을 포함함 -; 및
    상기 매체 유닛에 커플링되는 제어기를 포함하며, 상기 제어기는,
    상기 복수의 구역들 중 제1 구역 내의 하나 이상의 제1 논리 블록 어드레스들에 데이터를 기록하라는 기록 커맨드를 수신하도록;
    상기 제1 구역 내의 상기 하나 이상의 제1 논리 블록 어드레스들에 상기 데이터를 기록하는 동안 에러를 경험할 시, 상기 제1 구역의 기록 포인터를 업데이트하여, 상기 제1 구역 내의 다음 유효 논리 블록 어드레스를 가리키도록; 그리고
    구역 메타데이터를 업데이트하여, 상기 하나 이상의 제1 논리 블록 어드레스들이 스킵되었음을 나타내도록, 그리고 상기 다음 유효 논리 블록 어드레스가 상기 제1 구역에 상기 데이터를 저장하는 데 이용가능함을 나타내도록 구성되는, 저장 디바이스.
  15. 제14항에 있어서, 상기 매체 유닛은 비휘발성 메모리 디바이스인, 저장 디바이스.
  16. 제14항에 있어서, 상기 구역 메타데이터를 업데이트하여, 상기 하나 이상의 제1 논리 블록 어드레스들이 스킵되었음을 나타내도록 하는 것은, 상기 하나 이상의 제1 논리 블록 어드레스들이 데이터를 저장할 수 없음을 호스트 디바이스에 경보하는, 저장 디바이스.
  17. 제14항에 있어서, 제2 구역 내의 하나 이상의 제2 논리 블록 어드레스들에 데이터를 기록하는 동안 에러를 경험할 시, 상기 제어기는 상기 제2 구역이 상기 데이터를 저장하는 데 부적합함을 결정하도록 구성되는, 저장 디바이스.
  18. 제17항에 있어서, 상기 제어기는,
    상기 제2 구역을 풀 상태로 전이시키도록; 그리고
    상기 구역 메타데이터를 업데이트하여, 상기 제2 구역이 상기 풀 상태로 전이되었음을 호스트 디바이스에 경보하도록 추가로 구성되는, 저장 디바이스.
  19. 제18항에 있어서, 상기 구역 메타데이터는 상기 제2 구역이 상기 풀 상태로 전이되었음을 상기 호스트 디바이스에 경보하기 위해 Controller Transitioned Full Zone의 속성으로 업데이트되는, 저장 디바이스.
  20. 제19항에 있어서, 상기 제어기는, Controller Transitioned Full Zone의 속성으로 상기 구역 메타데이터를 업데이트할 시에 상기 구역 메타데이터가 변경되었음을 상기 호스트 디바이스에 통지하기 위한 이벤트를 발행하도록 추가로 구성되는, 저장 디바이스.
KR1020217018881A 2019-09-25 2020-03-18 솔리드 스테이트 드라이브들 내의 zns들 KR102580577B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962905894P 2019-09-25 2019-09-25
US62/905,894 2019-09-25
US16/728,917 US11209989B2 (en) 2019-09-25 2019-12-27 Zoned namespaces in solid-state drives
US16/728,917 2019-12-27
PCT/US2020/023413 WO2021061190A1 (en) 2019-09-25 2020-03-18 Zoned namespaces in solid-state drives

Publications (2)

Publication Number Publication Date
KR20210079394A true KR20210079394A (ko) 2021-06-29
KR102580577B1 KR102580577B1 (ko) 2023-09-19

Family

ID=74880857

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217018881A KR102580577B1 (ko) 2019-09-25 2020-03-18 솔리드 스테이트 드라이브들 내의 zns들

Country Status (5)

Country Link
US (2) US11209989B2 (ko)
KR (1) KR102580577B1 (ko)
CN (1) CN113196226A (ko)
DE (1) DE112020000184T5 (ko)
WO (1) WO2021061190A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210286517A1 (en) * 2016-10-04 2021-09-16 Pure Storage, Inc. Utilizing Allocation Shares To Improve Parallelism In A Zoned Drive Storage System
US20200089407A1 (en) * 2019-11-22 2020-03-19 Intel Corporation Inter zone write for zoned namespaces
US11593258B2 (en) * 2019-11-26 2023-02-28 Micron Technology, Inc. Enhanced filesystem support for zone namespace memory
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping
US11860791B2 (en) * 2020-04-24 2024-01-02 Netapp, Inc. Methods for managing input-output operations in zone translation layer architecture and devices thereof
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
KR20220060372A (ko) * 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11604591B2 (en) * 2020-12-17 2023-03-14 Micron Technology, Inc. Associating data types with stream identifiers for mapping onto sequentially-written memory devices
US20220244869A1 (en) * 2021-02-02 2022-08-04 Micron Technology, Inc. File system storage allocation based on zones of a memory device
US11307931B1 (en) * 2021-03-19 2022-04-19 Micron Technology, Inc. Using zones to manage capacity reduction due to storage device failure
US11733884B2 (en) 2021-03-19 2023-08-22 Micron Technology, Inc. Managing storage reduction and reuse with failing multi-level memory cells
US11650881B2 (en) 2021-03-19 2023-05-16 Micron Technology, Inc. Managing storage reduction and reuse in the presence of storage device failures
US11520656B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction and recovery due to storage device failure
US11892909B2 (en) 2021-03-19 2024-02-06 Micron Technology, Inc. Managing capacity reduction due to storage device failure
US11520500B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction when downshifting multi-level memory cells
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
US11543993B1 (en) * 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
US20230009642A1 (en) * 2021-07-07 2023-01-12 Micron Technology, Inc. Programmable metadata
US11748195B2 (en) * 2022-01-05 2023-09-05 International Business Machines Corporation Detect multifold disturbance and minimize read-disturb errors in NAND flash
US11853612B2 (en) * 2022-04-06 2023-12-26 Western Digital Technologies, Inc. Controlled system management based on storage device thermal load
CN117369729B (zh) * 2023-12-04 2024-02-06 武汉麓谷科技有限公司 一种zns ssd的附加写入实现方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090300082A1 (en) * 2008-06-02 2009-12-03 Ming-Dar Chen Method for memory space management
KR20150138528A (ko) * 2014-05-29 2015-12-10 삼성전자주식회사 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법
US20170038994A1 (en) * 2015-08-06 2017-02-09 Kabushiki Kaisha Toshiba Storage device and data reading method
US9830111B1 (en) * 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
KR20180035026A (ko) * 2016-09-28 2018-04-05 전자부품연구원 오케스트레이션 기반 최적 스토리지 할당을 위한 예측형 후보군 선정 방법
US10417190B1 (en) * 2014-09-25 2019-09-17 Amazon Technologies, Inc. Log-structured file system for zone block devices with small zones

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8380915B2 (en) * 2010-01-27 2013-02-19 Fusion-Io, Inc. Apparatus, system, and method for managing solid-state storage media
US8537669B2 (en) 2010-04-27 2013-09-17 Hewlett-Packard Development Company, L.P. Priority queue level optimization for a network flow
US8670310B2 (en) 2010-12-21 2014-03-11 Hewlett-Packard Development Company, L.P. Dynamic balancing priority queue assignments for quality-of-service network flows
KR101925870B1 (ko) 2012-03-21 2018-12-06 삼성전자주식회사 Ssd 콘트롤러 및 그의 제어 방법
US8848577B2 (en) 2012-09-24 2014-09-30 Apple Inc. Bandwidth management
US20140169102A1 (en) * 2012-12-19 2014-06-19 Western Digital Technologies, Inc. Log-likelihood ratio and lumped log-likelihood ratio generation for data storage systems
US9792349B2 (en) * 2013-06-12 2017-10-17 Oracle International Corporation In-database sharded queue
US9710199B2 (en) * 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10732856B2 (en) * 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
US10339044B2 (en) * 2016-03-30 2019-07-02 Sandisk Technologies Llc Method and system for blending data reclamation and data integrity garbage collection
US10209897B2 (en) * 2016-12-01 2019-02-19 Toshiba Memory Corporation Storage device and control method of the same
US10095568B2 (en) * 2017-02-08 2018-10-09 Seagate Technology Llc Background reads to condition programmed semiconductor memory cells
US11941279B2 (en) * 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US10474582B2 (en) * 2017-04-28 2019-11-12 Seagate Technology Llc NAND flash storage device and methods using non-NAND storage cache
US10430356B2 (en) 2017-04-28 2019-10-01 Nvidia Corporation Low overhead copy engine fault and switch mechanism
KR20180130140A (ko) 2017-05-29 2018-12-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 방법
US10564857B2 (en) 2017-11-13 2020-02-18 Western Digital Technologies, Inc. System and method for QoS over NVMe virtualization platform using adaptive command fetching
US10430106B2 (en) 2018-02-16 2019-10-01 Microsoft Technology Licensing, Llc Policy based tiered allocation for hybrid storage devices
US10996894B2 (en) * 2019-07-17 2021-05-04 International Business Machines Corporation Application storage segmentation reallocation
US10990526B1 (en) * 2020-04-30 2021-04-27 Micron Technology, Inc. Handling asynchronous power loss in a memory sub-system that programs sequentially
US11327684B2 (en) * 2020-05-14 2022-05-10 Western Digital Technologies, Inc. Storage system and method for host memory access

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090300082A1 (en) * 2008-06-02 2009-12-03 Ming-Dar Chen Method for memory space management
US9830111B1 (en) * 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
KR20150138528A (ko) * 2014-05-29 2015-12-10 삼성전자주식회사 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법
US10417190B1 (en) * 2014-09-25 2019-09-17 Amazon Technologies, Inc. Log-structured file system for zone block devices with small zones
US20170038994A1 (en) * 2015-08-06 2017-02-09 Kabushiki Kaisha Toshiba Storage device and data reading method
KR20180035026A (ko) * 2016-09-28 2018-04-05 전자부품연구원 오케스트레이션 기반 최적 스토리지 할당을 위한 예측형 후보군 선정 방법

Also Published As

Publication number Publication date
US20210089217A1 (en) 2021-03-25
KR102580577B1 (ko) 2023-09-19
DE112020000184T5 (de) 2021-08-05
US11209989B2 (en) 2021-12-28
US20220100390A1 (en) 2022-03-31
WO2021061190A1 (en) 2021-04-01
CN113196226A (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
KR102580577B1 (ko) 솔리드 스테이트 드라이브들 내의 zns들
KR102370760B1 (ko) 존 네임스페이스에 대한 존 형성
US11126378B1 (en) Rate limit on the transitions of zones to open
US11294827B2 (en) Non-sequential zoned namespaces
US11520660B2 (en) Storage devices hiding parity swapping behavior
US20200409601A1 (en) Hold of Write Commands in Zoned Namespaces
US11500727B2 (en) ZNS parity swapping to DRAM
CN114730290A (zh) 将变化日志表移动至与分区对准
US11960753B2 (en) Solution for super device imbalance in ZNS SSD
US11966618B2 (en) Purposeful super device imbalance for ZNS SSD efficiency
US11537293B2 (en) Wear leveling methods for zoned namespace solid state drive
US11210027B2 (en) Weighting of read commands to zones in storage devices
US11847337B2 (en) Data parking for ZNS devices
US11687263B2 (en) Full die recovery in ZNS SSD
US11656984B2 (en) Keeping zones open with intermediate padding
US11226761B2 (en) Weighted read commands and open block timer for storage devices

Legal Events

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