KR20210001898A - 존 네임스페이스에 대한 존 형성 - Google Patents

존 네임스페이스에 대한 존 형성 Download PDF

Info

Publication number
KR20210001898A
KR20210001898A KR1020200035479A KR20200035479A KR20210001898A KR 20210001898 A KR20210001898 A KR 20210001898A KR 1020200035479 A KR1020200035479 A KR 1020200035479A KR 20200035479 A KR20200035479 A KR 20200035479A KR 20210001898 A KR20210001898 A KR 20210001898A
Authority
KR
South Korea
Prior art keywords
zone
dies
available
blocks
erase block
Prior art date
Application number
KR1020200035479A
Other languages
English (en)
Other versions
KR102370760B1 (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 KR20210001898A publication Critical patent/KR20210001898A/ko
Application granted granted Critical
Publication of KR102370760B1 publication Critical patent/KR102370760B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시는 일반적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스는 컨트롤러 및 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 존으로 분할된다. 매체 유닛은 복수의 다이를 포함하며, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 컨트롤러는 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 제1 이용가능 소거 블록들 중 하나 이상을 선택하도록 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외된다.

Description

존 네임스페이스에 대한 존 형성{ZONE FORMATION FOR ZONED NAMESPACES}
관련 출원의 상호 참조
본 출원은 2019년 6월 28일자로 출원된 미국 가특허 출원 제62/868,785호의 이익을 주장하며, 이 출원은 본 명세서에 참고로 포함된다.
기술분야
본 개시의 실시예들은 일반적으로 솔리드 스테이트 드라이브들(SSD들)과 같은 저장 디바이스들에 관한 것이다.
SSD들과 같은 저장 디바이스들은 비교적 낮은 레이턴시와 고용량 저장이 요구되는 응용들에서 컴퓨터들에 사용될 수 있다. 예를 들어, SSD들은, 특히 랜덤 판독들 및 기입들에 대해, 하드 디스크 드라이브들(HDD들)보다 더 낮은 레이턴시를 나타낼 수 있다. 전형적으로, SSD의 컨트롤러는 호스트 디바이스로부터 메모리 디바이스로 데이터를 판독 또는 기입하는 커맨드를 수신한다. 데이터는 메모리 디바이스 내의 하나 이상의 소거 블록에 판독 및 기입된다. 일단 데이터가 하나 이상의 소거 블록에 프로그래밍되면, 소거 블록은 소거되거나 클리어되고, 소거 블록들의 프리 풀(free pool)로 되돌려진 다음, 다시 데이터로 재프로그래밍될 수 있다.
그러나, 소거 블록들의 각각의 프로그램-소거 사이클은 소거 블록들에 대한 노화 및 마모량을 증가시켜, 잠재적으로 소거 블록들의 리텐션 능력 및 내구성을 감소시킬 뿐만 아니라 데이터의 비트 에러 레이트를 증가시킨다. 하나 이상의 소거 블록이 다른 소거 블록들보다 더 자주 선택될 수 있는데, 이는 과하게 사용된 소거 블록들이 사용할 수 없게 되고, 손상되고, 그리고/또는 데이터를 저장하는 데 이용할 수 없게 되는 결과를 야기할 수 있다.
따라서, 필요한 것은 소거 블록들의 노화 및 마모를 완화시키는 저장 디바이스를 동작시키는 새로운 방법이다.
본 개시는 일반적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스는 컨트롤러 및 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 존으로 분할된다. 매체 유닛은 복수의 다이를 포함하며, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 컨트롤러는 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 제1 이용가능 소거 블록들 중 하나 이상을 선택하도록 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외된다.
일 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 존으로 분할된다. 매체 유닛은 복수의 다이를 포함하며, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 저장 디바이스는 매체 유닛에 결합된 컨트롤러를 추가로 포함하며, 컨트롤러는 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 제1 이용가능 소거 블록들 중 하나 이상을 선택하도록 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외된다.
다른 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 존으로 분할된다. 매체 유닛은 복수의 다이를 포함하며, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 저장 디바이스는 매체 유닛에 결합된 컨트롤러를 추가로 포함하며, 컨트롤러는 제1 존을 비어 있는 상태로부터 활성 상태로 전환하고, 복수의 다이 각각의 프리 풀 내의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이의 프리 풀로부터 비교된 제1 이용가능 소거 블록들 중 하나 이상의 제1 소거 블록을 제거하도록 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외되어 적어도 하나의 다이의 프리 풀에 남는다. 저장 디바이스는 제2 존을 비어 있는 상태로부터 활성 상태로 전환하고, 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제2 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 비교된 제1 이용가능 소거 블록들 중 하나 이상의 제2 소거 블록을 제거하도록 추가로 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제2 존으로부터 제외되어 적어도 하나의 다이의 프리 풀에 남는다.
다른 실시예에서, 저장 디바이스를 위한 하나 이상의 존을 형성하는 방법은 제1 존을 비어 있는 상태로부터 활성 상태로 전환하는 단계를 포함한다. 저장 디바이스는 복수의 다이를 포함하고, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 방법은 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하는 단계, 및 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 제1 이용가능 소거 블록들 중 하나 이상을 선택하는 단계를 추가로 포함한다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외된다.
상기에 언급된 본 개시의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 개시의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이들 실시예 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 단지 본 개시의 전형적인 실시예를 예시할 뿐이며 그에 따라, 본 개시에 대해 다른 동등하게 효과적인 실시예들로 인정될 수 있는, 본 개시의 범위의 제한으로 간주되어서는 안된다는 점에 유의해야 한다.
도 1은 일 실시예에 따른, 저장 시스템을 예시하는 개략 블록도이다.
도 2는 다른 실시예에 따른, 호스트 디바이스에 결합된 저장 디바이스를 포함하는 저장 시스템을 예시한다.
도 3은 일 실시예에 따른, 판독 또는 기입 커맨드를 실행하기 위해 저장 디바이스를 동작시키는 방법을 예시하는 블록도이다.
도 4a는 일 실시예에 따른, 저장 디바이스에서 이용되는 존 네임스페이스 뷰를 예시한다.
도 4b는 일 실시예에 따른, 도 4a의 저장 디바이스의 존 네임스페이스에 대한 상태도를 예시한다.
도 5는 일 실시예에 따른, 복수의 다이로부터 선택된 복수의 소거 블록으로 구성된 존을 예시한다.
도 6a는 일 실시예에 따른, 복수의 존을 형성하는 데 이용되는 복수의 소거 블록을 각각 포함하는 복수의 단일 평면 다이를 예시한다.
도 6b는 어느 다이들로부터의 어느 소거 블록들이 도 6a의 각각의 존을 형성하는 데 사용되는지를 디스플레이하는 테이블을 예시한다.
도 7a 내지 도 7c는 복수의 다이로부터 선택된 복수의 소거 블록으로 구성된 존들의 예시적인 실시예들을 예시한다.
이해를 촉진하기 위해, 도면들에 공통인 동일한 요소들을 지시하기 위해, 가능한 경우, 동일한 도면 부호들이 사용되었다. 일 실시예에 개시된 요소들이 구체적인 언급 없이도 다른 실시예들에서 유익하게 이용될 수 있다는 것이 고려된다.
하기에서, 본 개시의 실시예들을 참조한다. 그러나, 본 개시는 설명된 특정 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 대신에, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든지 또는 그렇지 않든지 간에, 본 개시를 구현하고 실시하기 위해 고려된다. 게다가, 본 개시의 실시예가 다른 가능한 해법들에 비해 그리고/또는 종래 기술에 비해 이점을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 개시의 제한이 아니다. 따라서, 하기의 태양들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것이며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한으로 간주되지 않는다. 마찬가지로, "본 개시"에 대한 언급은 본 명세서에 개시되는 임의의 독창적인 주제의 일반화로서 해석되어서는 안되며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한인 것으로 간주되어서는 안된다.
본 개시는 일반적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스는 컨트롤러 및 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 존으로 분할된다. 매체 유닛은 복수의 다이를 포함하며, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 컨트롤러는 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 제1 이용가능 소거 블록들 중 하나 이상을 선택하도록 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외된다.
도 1은 본 개시의 하나 이상의 기술에 따른, 저장 디바이스(106)가 호스트 디바이스(104)를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템(100)을 예시하는 개략 블록도이다. 예를 들어, 호스트 디바이스(104)는 데이터를 저장 및 검색하기 위해 저장 디바이스(106)에 포함된 비휘발성 메모리 디바이스들(110)을 이용할 수 있다. 호스트 디바이스(104)는 호스트 DRAM(138)을 포함한다. 일부 예들에서, 저장 시스템(100)은 저장 어레이로서 동작할 수 있는, 저장 디바이스(106)와 같은, 복수의 저장 디바이스를 포함할 수 있다. 예를 들어, 저장 시스템(100)은 호스트 디바이스(104)를 위한 대용량 저장 디바이스로서 집합적으로 기능하는 저가/독립 디스크들(RAID)의 중복 어레이로서 구성된 복수의 저장 디바이스(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)의 컴포넌트들 등을 전기적으로 상호접속하는 전기 전도성 트레이스들을 포함하는 인쇄 기판(PB)을 포함할 수 있다. 일부 예들에서, 저장 디바이스(106)의 물리적 치수들 및 커넥터 구성들은 하나 이상의 표준 폼 팩터를 따를 수 있다. 일부 예시적인 표준 폼 팩터들은 3.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), PCI, 및 PCIe, NVMe(non-volatile memory express), OpenCAPI, GenZ, CCIX(Cache Coherent Interface Accelerator), OCSSD(Open Channel SSD) 등. 인터페이스(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, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 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), 홀로그래픽 메모리 디바이스들, 및 임의의 다른 유형의 비휘발성 메모리 디바이스들과 같은 임의의 유형의 비휘발성 메모리 디바이스들을 포함할 수 있다.
NVM(110)은 복수의 플래시 메모리 디바이스 또는 매체 유닛을 포함할 수 있다. 플래시 메모리 디바이스들은 NAND 또는 NOR 기반 플래시 메모리 디바이스들을 포함할 수 있고, 각각의 플래시 메모리 셀에 대한 트랜지스터의 플로팅 게이트에 포함된 전하에 기초하여 데이터를 저장할 수 있다. NAND 플래시 메모리 디바이스들에서, 플래시 메모리 디바이스는 복수의 블록들로 분할될 수 있으며, 이들은 복수의 페이지들로 분할될 수 있다. 특정 메모리 디바이스 내의 복수의 블록들 중의 각각의 블록은 복수의 NAND 셀들을 포함할 수 있다. NAND 셀들의 행들은 워드 라인을 이용하여 전기적으로 접속되어 복수의 페이지들 중 소정 페이지를 정의할 수 있다. 복수의 페이지들 각각 내의 각자의 셀들은 각자의 비트 라인들에 전기적으로 접속될 수 있다. 또한, NAND 플래시 메모리 디바이스들은 2D 또는 3D 디바이스들일 수 있고, 싱글 레벨 셀(SLC), 멀티-레벨 셀(MLC), 트리플 레벨 셀(TLC), 또는 쿼드 레벨 셀(QLC)일 수 있다. 컨트롤러(108)는 페이지 레벨에서 NAND 플래시 메모리 디바이스들에 데이터를 기입하고 그로부터 데이터를 판독하고 블록 레벨에서 NAND 플래시 메모리 디바이스들로부터 데이터를 소거할 수 있다.
저장 디바이스(106)는 저장 디바이스(106)의 하나 이상의 컴포넌트에 전력을 제공할 수 있는 전력 공급부(111)를 포함한다. 표준 모드에서 동작할 때, 전력 공급부(111)는 호스트 디바이스(104)와 같은 외부 디바이스에 의해 제공되는 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 예를 들어, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 수신된 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 일부 예들에서, 전력 공급부(111)는 셧다운 모드에서 동작할 때, 예컨대 외부 디바이스로부터의 전력 수신이 중단되는 경우 하나 이상의 컴포넌트에 전력을 제공하도록 구성된 하나 이상의 전력 저장 컴포넌트를 포함할 수 있다. 이러한 방식으로, 전력 공급부(111)는 온보드 백업 전원으로서 기능할 수 있다. 하나 이상의 전력 저장 컴포넌트의 일부 예들은 커패시터들, 수퍼 커패시터들, 배터리들 등을 포함하지만 이로 제한되지 않는다. 일부 예들에서, 하나 이상의 전력 저장 컴포넌트에 의해 저장될 수 있는 전력의 양은 하나 이상의 전력 저장 컴포넌트의 비용 및/또는 크기(예를 들어, 면적/부피)의 함수일 수 있다. 다시 말해서, 하나 이상의 전력 저장 컴포넌트에 의해 저장되는 전력의 양이 증가함에 따라, 하나 이상의 전력 저장 컴포넌트의 비용 및/또는 크기가 또한 증가한다.
저장 디바이스(106)는 또한 휘발성 메모리(112)를 포함하며, 이는 컨트롤러(108)에 의해 정보를 저장하는 데 사용될 수 있다. 휘발성 메모리(112)는 하나 이상의 휘발성 메모리 디바이스들로 구성될 수 있다. 일부 예들에서, 컨트롤러(108)는 휘발성 메모리(112)를 캐시로서 사용할 수 있다. 예를 들어, 컨트롤러(108)는 캐싱된 정보가 비휘발성 메모리(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)으로부터의 데이터의 판독 및/또는 그에의 데이터의 기입을 관리할 수 있다. 일부 실시예들에서, 저장 디바이스(106)가 호스트 디바이스(104)로부터 기입 커맨드를 수신할 때, 컨트롤러(108)는 NVM(110)에 데이터를 저장하는 데이터 저장 커맨드를 개시하고 데이터 저장 커맨드의 진행을 모니터링할 수 있다. 컨트롤러(108)는 저장 시스템(100)의 적어도 하나의 동작 특성을 결정하고 적어도 하나의 동작 특성을 NVM(110)에 저장할 수 있다. 일부 실시예들에서, 저장 디바이스(106)가 호스트 디바이스(104)로부터 기입 커맨드를 수신할 때, 컨트롤러(108)는 NVM(110)에 데이터를 전송하기 전에 기입 커맨드와 관련된 데이터를 내부 메모리(120)에 임시로 저장한다.
도 2는 다른 실시예에 따른, 호스트 디바이스(204)에 결합된 저장 디바이스(206)를 포함하는 저장 시스템(200)을 예시한다. 저장 시스템(200)은 도 1의 저장 시스템(100), 호스트 디바이스(104), 및 저장 디바이스(106)일 수 있다.
저장 디바이스(206)는 호스트 디바이스(204)로부터 커맨드들 및 데이터를 전송 및 수신할 수 있고, 커맨드 프로세서(220)를 포함한다. 커맨드 프로세서(220)는 도 1의 컨트롤러(108)일 수 있다. 커맨드 프로세서(220)는 NAND 액세스와 같은 메모리 디바이스 액세스를 스케줄링할 수 있고, 이전에 수신된 커맨드가 동일한 메모리 디바이스에 대한 기입을 요구하기 전에 메모리 디바이스에 대한 판독을 수행할 수 있다. 커맨드 프로세서(220)는 하나 이상의 메모리 디바이스(228) 및 커맨드 페치(222)에 결합된다. 하나 이상의 메모리 디바이스(228)는 NAND 비휘발성 메모리 디바이스들일 수 있다. 커맨드 페치(222)는 제출 큐 중재(224)에 결합된다. 제출 큐 중재(224)는 하나 이상의 제출 큐 헤드 및 테일 포인터(226)에 결합된다.
호스트 디바이스(204)는 하나 이상의 처리 유닛 또는 CPU 애플리케이션(234)에 결합된 하나 이상의 호스트 소프트웨어 애플리케이션(232)으로 구성된다. 일 실시예에서, 소프트웨어 애플리케이션(232)은 시스템(200)의 각각의 사용자에 대한 레이턴시 QoS를 도출하기 위해 제한된 솔리드 스테이트 드라이브 큐 깊이를 갖는다. 호스트 디바이스(204)는 관련된 QoS가 없는 운영 시스템(OS) 또는 소프트웨어 애플리케이션(240)을 추가로 포함한다. CPU(234)는 인터커넥트(236)에 그리고 호스트 DRAM(238)에 결합된다. 호스트 DRAM(238)은 제출 큐 데이터를 저장할 수 있다. 인터커넥트(236)는 저장 디바이스(206)에 결합된다. 인터커넥트(236)는 제출 큐 헤드 및 테일 포인터들(226)과 커맨드 페치(222) 둘 모두와 통신할 수 있다.
CPU(234)는 저장 디바이스(206)에 전송할 하나 이상의 커맨드(216)를 생성하며, 커맨드 페치 신호(244)를 통해 저장 디바이스(206)로부터 커맨드들을 전송 및 수신할 수 있다. CPU(234)는 추가로 인터럽트 또는 도어벨(218)을 저장 디바이스(206)에 전송하여 저장 디바이스(206)에게 하나 이상의 커맨드(216)를 통지할 수 있다. CPU(234)는 저장 디바이스(206)에 제출된 데이터-큐 깊이를 제한할 수 있다. 큐 깊이(QD)는 저장 디바이스(206)에 큐잉된 커맨드들의 최대 수이고, 데이터-QD는 QD로 큐잉된 커맨드들과 관련된 데이터의 양이다. 일 실시예에서, 저장 디바이스(206)의 데이터-QD(242)는 저장 디바이스(206)의 대역폭과 동등하다. 데이터-QD(242)는 최고 레벨로 제한되는데, 그 최고 레벨 아래에서 저장 디바이스(206)는 원하는 레이턴시 QoS를 여전히 유지할 수 있다. 이어서 커맨드 프로세서(220)는 호스트 디바이스(204)로부터 수신된 커맨드들을 처리한다.
도 3은 일 실시예에 따른, 판독 또는 기입 커맨드를 실행하기 위해 저장 디바이스를 동작시키는 방법(300)을 예시하는 블록도이다. 방법(300)은 호스트 디바이스(104) 및 컨트롤러(108)를 포함하는 저장 디바이스(106)를 갖는 저장 시스템(100)과 함께 사용될 수 있다. 방법(300)은 추가로 호스트 디바이스(204) 및 커맨드 프로세서(220)를 포함하는 저장 디바이스(206)를 갖는 저장 시스템(200)과 함께 사용될 수 있다.
방법(300)은 동작 350에서 시작되며, 여기서 호스트 디바이스는 엔트리로서 제출 큐 내에 커맨드를 기입한다. 호스트 디바이스는 동작 350에서 제출 큐 내에 하나 이상의 커맨드를 기입할 수 있다. 커맨드들은 판독 커맨드들 또는 기입 커맨드들일 수 있다. 호스트 디바이스는 하나 이상의 제출 큐를 포함할 수 있다.
동작 352에서, 호스트 디바이스는 하나 이상의 업데이트된 제출 큐 테일 포인터를 기입하고 도어벨을 울리거나 인터럽트 신호를 전송하여 저장 디바이스에게 실행될 준비가 된 새로운 커맨드를 통지하거나 시그널링한다. 도어벨 신호는 도 2의 도어벨(218)일 수 있다. 호스트는 업데이트된 제출 큐 테일 포인터를 기입하고 하나 초과의 제출 큐가 있다면 제출 큐들 각각에 대한 도어벨 또는 인터럽트 신호를 전송할 수 있다. 동작 354에서, 도어벨 또는 인터럽트 신호의 수신에 응답하여, 저장 디바이스의 컨트롤러는 하나 이상의 제출 큐로부터 커맨드를 페치하고, 컨트롤러는 커맨드를 수신한다.
동작 356에서, 컨트롤러는 커맨드를 처리하고 커맨드와 관련된 데이터를 호스트 디바이스 메모리에 기입하거나 전송한다. 컨트롤러는 한 번에 하나 초과의 커맨드를 처리할 수 있다. 컨트롤러는 하나 이상의 커맨드를 제출 순서로 또는 순차적 순서로 처리할 수 있다. 기입 커맨드를 처리하는 것은 커맨드와 관련된 데이터를 기입할 존을 식별하는 것, 존의 하나 이상의 LBA에 데이터를 기입하는 것, 및 존 내의 다음 이용가능 LBA를 식별하기 위해 존의 기입 포인터를 전진시키는 것을 포함할 수 있다.
동작 358에서, 일단 커맨드가 완전히 처리되면, 컨트롤러는 실행된 커맨드에 대응하는 완료 엔트리를 호스트 디바이스의 완료 큐에 기입하고 새로 기입된 완료 엔트리를 가리키도록 CQ 헤드 포인터를 이동시키거나 업데이트한다.
동작 360에서, 컨트롤러는 인터럽트 신호 또는 도어벨을 생성하여 호스트 디바이스에 전송한다. 인터럽트 신호는 커맨드가 실행되었고 커맨드와 관련된 데이터가 메모리 디바이스에서 이용가능하다는 것을 지시한다. 인터럽트 신호는 추가로 호스트 디바이스에게 완료 큐가 판독 또는 처리될 준비가 되었음을 통지한다.
동작 362에서, 호스트 디바이스는 완료 엔트리를 처리한다. 동작 364에서, 호스트 디바이스는 업데이트된 CQ 헤드 포인터를 저장 디바이스에 기입하고 도어벨을 울리거나 인터럽트 신호를 저장 디바이스에 전송하여 완료 엔트리를 해제한다.
도 4a는 일 실시예에 따른, 저장 디바이스(400)에서 이용되는 존 네임스페이스(ZNS)(402) 뷰를 예시한다. 저장 디바이스(400)는 ZNS(402) 뷰를 호스트 디바이스에 제공할 수 있다. 도 4b는 일 실시예에 따른, 저장 디바이스(400)의 ZNS(402)에 대한 상태도(450)를 예시한다. 저장 디바이스(400)는 도 1의 저장 시스템(100)의 저장 디바이스(106) 또는 도 2의 저장 시스템(200)의 저장 디바이스(206)일 수 있다. 저장 디바이스(400)는 하나 이상의 ZNS(402)를 가질 수 있고, 각각의 ZNS(402)는 상이한 크기들일 수 있다. 저장 디바이스(400)는 하나 이상의 존 네임스페이스(402)에 더하여 하나 이상의 종래의 네임스페이스를 추가로 포함할 수 있다. 또한, ZNS(402)는 SAS를 위한 존 블록 커맨드(ZBC) 및/또는 SATA를 위한 존-디바이스 ATA 커맨드 세트(ZAC)일 수 있다.
저장 디바이스(400)에서, ZNS(402)는 용량이 복수의 존(406a 내지 406n)(집합적으로 존들(406)로 지칭됨)으로 분할되도록 논리 블록들로 포맷될 수 있는 NVM의 양이다. 존들(406) 각각은 매체 유닛 또는 NVM(404)의 복수의 물리 또는 소거 블록(이제 도시됨)을 포함하고, 소거 블록들 각각은 복수의 논리 블록(도시되지 않음)과 관련된다. 컨트롤러(408)가 예컨대 호스트 디바이스(도시되지 않음) 또는 호스트 디바이스의 제출 큐로부터 커맨드를 수신할 때, 컨트롤러(408)는 ZNS(402)의 복수의 소거 블록과 관련된 복수의 논리 블록으로부터 데이터를 판독하고 그에 데이터를 기입할 수 있다. 논리 블록들 각각은 고유 LBA 또는 섹터와 관련된다.
일 실시예에서, NVM(404)은 NAND 디바이스이다. NAND 디바이스는 하나 이상의 다이를 포함한다. 하나 이상의 다이 각각은 하나 이상의 평면을 포함한다. 하나 이상의 평면 각각은 하나 이상의 소거 블록을 포함한다. 하나 이상의 소거 블록 각각은 하나 이상의 워드라인(예를 들어, 256개의 워드라인)을 포함한다. 하나 이상의 워드라인 각각은 하나 이상의 페이지에서 어드레싱될 수 있다. 예를 들어, MLC NAND 다이는 전체 워드라인의 각각의 셀에서 2개의 비트에 도달하기 위해 상위 페이지 및 하위 페이지를 사용할 수 있다(예를 들어, 페이지당 16 kB). 또한, 각각의 페이지는 전체 페이지와 동일하거나 그보다 작은 입도로 액세스될 수 있다. 컨트롤러는 512 바이트의 사용자 데이터 입도 LBA 크기들로 NAND에 자주 액세스할 수 있다. 따라서, 전체에 걸쳐 언급된 바와 같이, NAND 위치들은 512 바이트의 입도와 동일하다. 그렇기 때문에, MCL NAND의 2개의 페이지에 대한 512 바이트의 LBA 크기 및 16 kB의 페이지 크기는 워드라인당 약 16개의 NAND 위치를 야기한다. 그러나, 이 NAND 위치 크기는 제한적인 것으로 의도되지 않으며, 단지 비제한적인 예로서 사용된다.
데이터가 소거 블록에 기입될 때, NVM(404) 내에서 데이터가 위치하는 곳을 추적하기 위해 존(406) 내에서 하나 이상의 논리 블록이 대응하여 업데이트된다. 데이터는 존(406)이 가득 찰 때까지 한 번에 하나의 존(406)에 기입되거나, 다수의 존(406)이 부분적으로 찰 수 있도록 다수의 존(406)에 기입될 수 있다. 유사하게, 특정 존(406)에 데이터를 기입할 때, 데이터는 인접한 블록으로 이동할 때까지 페이지 별로 또는 워드라인 별로 NAND 위치들의 순차적 순서로 복수의 소거 블록에 한 번에 하나의 블록씩 기입되거나(즉, 제2 소거 블록으로 이동하기 전에 제1 소거 블록이 가득 찰 때까지 제1 소거 블록에 기입), 더 병렬 방식으로 각각의 블록을 부분적으로 채우기 위해 페이지 별로 또는 워드라인 별로 NAND 위치들의 순차적 순서로 한 번에 다수의 블록에 기입될 수 있다(즉, 각각의 소거 블록의 제2 NAND 위치 또는 페이지에 기입하기 전에 각각의 소거 블록의 제1 NAND 위치 또는 페이지를 기입).
존들(406) 각각은 존 시작 논리 블록 어드레스(ZSLBA)와 관련된다. ZSLBA는 존(406) 내의 제1 이용가능 LBA이다. 예를 들어, 제1 존(406a)은 ZaSLBA와 관련되고, 제2 존(406b)은 ZbSLBA와 관련되고, 제3 존(406c)은 ZcSLBA와 관련되고, 제4 존(406d)은 ZdSLBA와 관련되고, 제n 존(406n)(즉, 마지막 존)은 ZnSLBA와 관련된다. 각각의 존(406)은 그의 ZSLBA에 의해 식별되고, 순차적 기입들(즉, 기입 커맨드들이 수신되는 순서로 NVM(110)에 데이터를 기입)을 수신하도록 구성된다.
데이터가 존(406)에 기입됨에 따라, 기입 포인터(410)는 다음 기입 시작 지점(즉, 이전 기입의 완료 지점이 후속 기입의 시작 지점과 동일함)을 추적하기 위해 데이터를 기입할 존(406) 내의 다음 이용가능 블록을 가리키거나 지시하기 위해 전진되거나 업데이트된다. 따라서, 기입 포인터(410)는 존(406)에 대한 후속 기입이 시작될 곳을 지시한다. 후속 기입 커맨드들은 '존 추가(zone append)' 커맨드들이며, 여기서 후속 기입 커맨드와 관련된 데이터는 기입 포인터(410)가 다음 시작 지점으로서 지시하고 있는 위치에서 존(406)에 추가된다. 기입 순서화를 위해 존(406) 내의 LBA들의 순서화된 리스트가 저장될 수 있다. 각각의 존(406)은 그 자신의 기입 포인터(410)를 가질 수 있다. 따라서, 기입 커맨드가 수신될 때, 존(406)이 그의 ZSLBA에 의해 식별되고, 기입 포인터(410)는 식별된 존(406) 내에서 데이터의 기입이 시작되는 곳을 결정한다.
도 4b는 도 4a의 ZNS(402)에 대한 상태도(450)를 예시한다. 상태도(450)에서, 각각의 존은 비어 있음(empty), 활성(active), 가득 참(full), 또는 오프라인(offline)과 같은 상이한 상태에 있을 수 있다. 존이 비어 있을 때, 존에는 데이터가 없고(즉, 존 내의 소거 블록들 중 어느 것도 현재 데이터를 저장하고 있지 않음) 기입 포인터는 ZSLBA에 있다(즉, WP=0). 일단 존에 대해 기입이 스케줄링되면 또는 호스트에 의해 존 열기 커맨드가 발행되면 비어 있는 존이 열린 및 활성 존으로 전환된다. 존 열림 상태와 존 닫힘 상태 - 이들은 둘 모두 활성 상태들임 - 간에 존을 이동시키기 위해 존 관리(ZM) 커맨드들이 사용될 수 있다. 존이 활성이면, 존은 기입될 수 있는 열린 블록들을 포함하고, 호스트는 ZM 또는 컨트롤러에 의해 활성 상태에서의 권장 시간에 대한 설명을 제공받을 수 있다. 컨트롤러는 ZM을 포함할 수 있다.
용어 "기입됨"은 사용자 데이터가 모든 이용가능 워드라인들을 채우지는 않았을 때 소거 블록 내의 0개 이상의 워드라인, 소거, 및/또는 소거 블록 내의 부분적으로 채워진 워드라인들에 사용자 데이터를 프로그래밍하는 것을 포함한다. 용어 "기입됨"은 내부 드라이브 처리 요구들(에러 비트들이 열린 소거 블록들 상에 더 빨리 축적되기 때문에 열린 블록 데이터 리텐션 문제들)로 인해 존을 닫는 것, 특히 결함 상태를 추적하거나 발견하기에 너무 많은 열린 존들과 같이, 리소스 제약들로 인해 저장 디바이스(400)가 존을 닫는 것, 또는 특히 드라이브를 전송할 데이터가 더 이상 없음, 컴퓨터 셧다운, 호스트 상의 에러 처리, 추적을 위한 제한된 호스트 리소스들과 같은 문제들로 인해 호스트 디바이스가 존을 닫는 것을 추가로 포함할 수 있다.
활성 존들은 열린 상태 또는 닫힌 상태일 수 있다. 열린 존은 기입될 준비가 되어 있고 현재 리소스들이 할당되어 있는 비어 있는 또는 부분적으로 찬 존이다. 기입 커맨드 또는 존 추가 커맨드와 함께 호스트 디바이스로부터 수신된 데이터는 현재 이전 데이터로 채워지지 않은 열린 소거 블록에 프로그래밍될 수 있다. 호스트 디바이스로부터 인입된 새로운 데이터 또는 재배치되고 있는 유효 데이터가 열린 존에 기입될 수 있다. 가비지 컬렉션 목적으로 유효 데이터가 하나의 존(예를 들어, 제1 존(402a))으로부터 다른 존(예를 들어, 제3 존(402c))으로 이동될 수 있다. 닫힌 존은 현재 계속적으로 호스트로부터 기입들을 수신하고 있지 않은 비어 있는 또는 부분적으로 찬 존이다. 열린 상태로부터 닫힌 상태로의 존의 이동은 컨트롤러(408)가 다른 작업들에 리소스들을 재할당할 수 있게 한다. 이들 작업은 열려 있는 다른 존들, 다른 종래의 비-존 영역들, 또는 다른 컨트롤러 요구들을 포함할 수 있지만, 이로 제한되지 않는다.
열린 존과 닫힌 존 둘 모두에서, 기입 포인터는 ZSLBA와 존의 마지막 LBA의 끝 사이의 어딘가의 존 내의 위치를 가리키고 있다(즉, WP>0). 활성 존들은 ZM에 의한 지정에 따라, 또는 존에 대해 기입이 스케줄링되면 열린 상태와 닫힌 상태 사이에서 전환할 수 있다. 또한, ZM은 존이 다시 비어 있는 존으로 전환되도록 존에 저장된 데이터를 클리어하거나 소거하기 위해 활성 존을 리셋할 수 있다. 일단 활성 존이 가득 차면, 존은 가득 찬 상태로 전환된다. 가득 찬 존은 데이터로 완전히 채워진, 그리고 더 이상 데이터를 기입할 이용가능 블록이 없는 존이다(즉, WP=존 용량(ZCAP)). 가득 찬 존들에 저장된 데이터의 판독 커맨드들은 여전히 실행될 수 있다.
ZM은 가득 찬 존을 리셋하여, 존이 다시 비어 있는 존으로 전환되도록 존에 저장된 데이터의 소거를 스케줄링할 수 있다. 가득 찬 존이 리셋될 때, 존이 기입될 준비가 된 비어 있는 존으로서 마킹될 수 있지만, 존으로부터 데이터가 즉시 클리어되지 않을 수 있다. 그러나, 리셋 존은 활성 존으로 전환하기 전에 소거되어야 한다. ZM 리셋과 ZM 열기 사이에서 언제든지 존이 소거될 수 있다. 오프라인 존은 데이터를 기입하는 데 이용할 수 없는 존이다. 오프라인 존은 활성 상태임이 없이 가득 찬 상태, 비어 있는 상태, 또는 부분적으로 찬 상태에 있을 수 있다.
존을 리셋하는 것은 존에 저장된 데이터의 소거를 스케줄링하거나 클리어하기 때문에, 개별 소거 블록들의 가비지 컬렉션에 대한 필요성이 제거되어, 저장 디바이스(400)의 전체 가비지 컬렉션 프로세스를 개선한다. 저장 디바이스(400)는 소거를 위해 하나 이상의 소거 블록을 마킹할 수 있다. 새로운 존이 형성될 예정이고 저장 디바이스(400)가 ZM 열기를 예상할 때, 소거를 위해 마킹된 하나 이상의 소거 블록이 이어서 소거될 수 있다. 저장 디바이스(400)는 추가로 소거 블록들의 소거시에 존의 물리적 지원을 결정 및 생성할 수 있다. 따라서, 일단 새로운 존이 열리고 존을 형성하기 위해 소거 블록들이 선택되고 있다면, 소거 블록들은 소거되었을 것이다. 또한, 존이 리셋될 때마다, 존(406)에 대한 기입 포인터(410) 및 LBA들에 대한 새로운 순서가 선택될 수 있어, 존(406)이 순차적 순서를 벗어나 커맨드들을 수신하는 것에 관대할 수 있게 할 수 있다. 기입 포인터(410)는 선택적으로 어떤 시작 LBA가 커맨드에 대해 지시될지라도 커맨드가 기입될 수 있도록 턴 오프될 수 있다.
다시 도 4a를 참조하면, 컨트롤러(408)가 기입 커맨드를 개시하거나 인입할 때, 컨트롤러(408)는 커맨드와 관련된 데이터를 기입할 비어 있는 존(406)을 선택할 수 있고, 비어 있는 존(406)은 활성 존(406)으로 전환된다. 본 명세서에서 사용된 바와 같이, 컨트롤러(408)가 기입 커맨드를 개시, 수신, 또는 인입하는 것은 기입 커맨드 또는 기입 커맨드를 판독하는 직접 메모리 액세스(DMA)를 수신하는 것을 포함한다. 기입 커맨드는 새로운 데이터를 기입하는 커맨드이거나, 가비지 컬렉션 목적으로 유효 데이터를 다른 존으로 이동시키는 커맨드일 수 있다. 컨트롤러(408)는 호스트 디바이스에 의해 채워진 제출 큐로부터 새로운 커맨드들을 DMA 판독 또는 인입하도록 구성된다.
활성 존(406)으로 방금 전환된 비어 있는 존(406)에서, 데이터는 ZSLBA에서 시작하여 존(406)에 기입되는데, 그 이유는 기입 포인터(410)가 ZSLBA와 관련된 논리 블록을 제1 이용가능 논리 블록으로서 지시하고 있기 때문이다. 데이터는 존(406)의 물리적 위치에 할당된 하나 이상의 소거 블록 또는 NAND 위치에 기입될 수 있다. 기입 커맨드와 관련된 데이터가 존(406)에 기입된 후에, 기입 포인터(410)는 다음 기입 시작 지점(즉, 제1 기입의 완료 지점)을 추적하기 위해 존(406) 내의 다음 이용가능 블록을 가리키도록 업데이트된다. 대안적으로, 컨트롤러(408)는 데이터를 기입할 활성 존을 선택할 수 있다. 활성 존에서, 데이터는 다음 이용가능 블록으로서 기입 포인터(410)에 의해 지시된 논리 블록에 기입된다.
예를 들어, 컨트롤러(408)는 제3 존(406c)에 대한 제1 기입 커맨드, 또는 제1 존 추가 커맨드를 수신하거나 인입할 수 있다. 호스트는 존(406)의 어느 논리 블록이 제1 커맨드와 관련된 데이터를 기입할지를 순차적으로 식별한다. 이어서 제1 커맨드와 관련된 데이터는 기입 포인터(410)에 의해 지시된 바와 같은 제3 존(406c) 내의 제1 또는 다음 이용가능 LBA(들)에 기입되고, 기입 포인터(410)는 호스트 기입을 위해 이용가능한 다음 이용가능 LBA를 가리키도록 전진되거나 업데이트된다(즉, WP>0). 컨트롤러(408)가 제3 존(406c)에 대한 제2 기입 커맨드를 수신하거나 인입하면, 제2 기입 커맨드와 관련된 데이터는 기입 포인터(410)에 의해 식별된 제3 존(406c) 내의 다음 이용가능 LBA(들)에 기입된다. 일단 제2 커맨드와 관련된 데이터가 제3 존(406c)에 기입되면, 기입 포인터(410)는 호스트 기입을 위해 이용가능한 다음 이용가능 LBA를 가리키도록 다시 한 번 전진되거나 업데이트된다. 존(406c)을 리셋하는 것은 기입 포인터(410)를 다시 ZcSLBA로 이동시키고(즉, WP=0), 존(406c)은 비어 있는 존으로 전환된다.
도 5는 일 실시예에 따른, 복수의 다이(502)로부터 선택된 복수의 소거 블록(504)으로 구성된 존(500)을 예시한다. 존(500)은 도 4a의 ZNS(402)의 존(406)일 수 있다. 존(500)은 컨트롤러(108)에 결합된 도 1의 NVM(110)의 존일 수 있다.
도 1의 저장 디바이스(106) 또는 도 2의 저장 디바이스(206)와 같은 저장 디바이스가 복수의 다이(502)를 포함하는, 도 1의 NVM(110)과 같은, 메모리 디바이스에 결합된다. 32개의 다이(502)가 도시되어 있지만, 임의의 수의 다이가 포함될 수 있다. 각각의 다이(502)는 한 쌍의 평면(506)으로 구성되고, 각각의 평면(506)은 복수의 소거 블록(504)으로 구성된다.
존(500)은 32개 중 30개의 다이(502)의 각각의 평면(506)으로부터 소거 블록(504)을 선택하고, 소거 블록들(504)에 대응하는 논리 블록 어드레스를 존(500)에 할당하거나 관련시킴으로써 형성된다. 총 32개의 다이(502) 중에서, 30개의 다이(502)가 데이터를 저장하는 데 이용될 수 있고, 하나의 XOR 다이(502a)가 XOR 데이터를 저장하는 데 이용될 수 있고, 하나의 제외된 또는 스킵된 다이(502b)가 존(500)에서 이용되지 않는 가장 덜 바람직한 소거 블록(504)으로 구성될 수 있다. XOR 다이(502a)는 선택적이며, 이용될 때 다이 고장 보호를 제공하고 영향력(leverage)을 최대화한다. 스킵된 다이(502b)의 제외된 소거 블록들(504)은 그들이 다른 존을 형성하기 위해 선택되어, 최적화 문제들을 제거할 수 있도록 블록들의 이용가능 프리 풀에 남는다.
존(500)은 256 MiB 또는 512 MiB와 같은 임의의 용량(ZCAP)을 가질 수 있다. 그러나, 스킵된 다이(502b)의 하나 이상의 제외된 소거 블록(504) 및 XOR 데이터를 저장하는 존(500)의 부분과 같은, 존(500)의 작은 부분이 데이터를 기입하기 위해 액세스 불가할 수 있지만, 여전히 판독될 수 있다. 예를 들어, 존(500)의 총 용량이 512 MiB이면, ZCAP는 470 MiB일 수 있으며, 이는 데이터를 기입하는 데 이용가능한 용량인 반면, 42 MiB는 데이터를 기입하는 데 이용할 수 없다.
도 6a는 일 실시예에 따른, 복수의 존(600)을 형성하는 데 이용되는 복수의 소거 블록(604)을 각각 포함하는 복수의 단일 평면 다이(602)를 예시한다. 도 6b는 어느 다이들(602)로부터의 어느 소거 블록들(604)이 각각의 존(600)을 형성하는 데 사용되는지를 디스플레이하는 테이블(650)을 예시한다. 각각의 존(600)은 도 4a의 ZNS(402)의 존(406) 또는 도 5의 존(500)일 수 있다. 각각의 존(600)은 컨트롤러(108)에 결합된 도 1의 NVM(110)의 존일 수 있고, NVM(110)은 복수의 다이(602)를 포함할 수 있다. 또한, 존(600)은 256 MiB 또는 512 MiB와 같은 임의의 용량을 가질 수 있다. 그러나, 도 5의 스킵된 다이(502b)와 같은 하나 이상의 스킵된 다이의 제외된 소거 블록들 및 XOR 데이터를 저장하는 존(600)의 부분과 같은, 존(600)의 작은 부분이 데이터를 기입하기 위해 액세스 불가할 수 있지만, 여전히 판독될 수 있다. 예를 들어, 존(600)의 총 용량이 512 MiB, 470 MiB이면, ZCAP는 470 MiB일 수 있으며, 이는 데이터를 기입하는 데, 데이터를 기입하는 데 이용가능한 용량인 반면, 42 MiB는 데이터를 기입하는 데 이용할 수 없다.
도 6a 및 도 6b의 실시예에서, 각각의 존(6000-6003)(집합적으로 존들(600)로 지칭됨)은 선택적인 XOR 다이(도시되지 않음)뿐만 아니라, 총 4개의 다이(602) 중 3개의 상이한 다이(602)로부터 선택된 3개의 소거 블록(604)을 포함한다. 4개의 다이(602)만이 도시되어 있지만, 임의의 수의 다이(602)가 이용될 수 있다. 또한, 각각의 다이(602)가 4개의 소거 블록(604)만을 포함하는 것으로 도시되어 있지만, 다이들(602)은 임의의 수의 소거 블록(604)을 포함할 수 있다. 또한, 단일 평면 다이들(602)보다는 도 5의 다이들(502)과 같은 이중 평면 다이들(602)이 이용될 수 있다.
도 6a에서, 각각의 다이(6020-6023)(집합적으로 다이들(602)로 지칭됨)는 복수의 소거 블록(EB)(604)을 포함한다. 예를 들어, 제1 다이(6020)는 EB3, EB7, EB11, 및 EB15를 포함하고, 제2 다이(6021)는 EB4, EB8, EB12, 및 EB16을 포함하고, 제3 다이(6022)는 EB5, EB9, EB13, 및 EB17을 포함하고, 제4 다이(6023)는 EB6, EB10, EB14, 및 EB18을 포함한다. 소거 블록들(604) 각각은 존 형성을 위해 선택될 때까지 소거 블록들(604)의 프리 풀(도시되지 않음)에 있다. 소거 블록들(604)의 프리 풀은 존(600)에서 현재 이용되고 있지 않은 모든 선택되지 않은 또는 이용가능 소거 블록들(604)의 풀이다.
각각의 소거 블록(604)은 특정 소거 블록(604)의 노화를 추정하는 숫자와 함께 도시되어 있다. 예를 들어, EB3은 0의 추정 노화를 갖는 반면 EB6은 2의 추정 노화를 갖는다. 존(600)을 형성하기 위한 소거 블록들(604)을 선택할 때, 가장 낮은 추정 노화를 갖는 소거 블록들(604)(즉, 가장 젊은 소거 블록들)이 먼저 선택된다. 가장 젊은 소거 블록들(604)은 지금까지 가장 적은 수의 프로그램-소거 사이클을 갖고, 가장 큰 추정 내구성을 갖고, 그리고/또는 가장 큰 추정 리텐션을 갖는 소거 블록들(604)일 수 있다. 젊은 소거 블록(604)을 지시할 수 있는 다른 팩터들은 데이터의 현재 비트 에러 레이트(BER), 판독 속도, 프로그램 속도, 데이터 리텐션 정량, 판독/프로그램 디스터브, 가장 많이 최근에 사용됨, 및 가장 덜 최근에 사용됨을 포함한다. 추정 노화를 결정하기 위해 소거 블록(604)의 하나 이상의 노화 팩터가 조합되거나 집계될 수 있다. 유사하게, 존(600)을 형성하기 위한 소거 블록들(604)을 선택할 때, 다이(602)의 노화가 추정될 수 있고, 가장 젊은 다이들(602)로부터 소거 블록들(604)이 선택될 수 있다. 존(600)에 대해 소거 블록(604)이 선택될 때마다, 소거 블록(604)은 프리 풀로부터 제거된다.
테이블(650)은 복수의 존(6000 내지 6003)을 예시한다. 존들(600) 각각은 활성 존들로 전환하기 위해 형성되고 있는 비어 있는 존들일 수 있다. 각각의 존(600)을 형성하기 위해, 컨트롤러 또는 ZM은 가장 젊은 소거 블록들(604)을 선택하기 위해 각각의 다이(602) 내의 제1 이용가능 소거 블록(604)의 추정 노화를 비교하도록 구성된다. 컨트롤러 또는 ZM은 가장 늙은 소거 블록을 제외하면서 존(600)에 대해 3개의 가장 젊은 소거 블록들(604)을 선택하여, 소거 블록들(604) 각각의 마모 레벨이 완화될 수 있고 블록들 사이에 균일하게 분산될 수 있게 한다.
제1 존(6000)을 형성하기 위해, 다이들(602) 각각에서 제1 이용가능 소거 블록들(604) 각각의 추정 노화가 서로 비교되고, 가장 큰 추정 노화를 갖는 소거 블록(604)은 스킵된다. 그렇기 때문에, 제1 존(6000)은 제1 다이(6020)로부터의 0의 추정 노화를 갖는 EB3, 제2 다이(6021)로부터의 0의 추정 노화를 갖는 EB4, 및 제3 다이(6022)로부터의 1의 추정 노화를 갖는 EB5로 구성된다. 제4 다이(6023)의 제1 이용가능 소거 블록(604), EB6은 2의 추정 노화 - 이는 제1, 제2, 및 제3 다이들(6020 내지 6022) 내의 제1 이용가능 소거 블록들(604)(예를 들어, EB3, EB4, EB5)의 추정 노화보다 큼 - 를 가지므로, EB6은 제외되거나 스킵되고, 제1 존(6000)에 대한 제4 다이(6023)로부터 어떤 소거 블록(604)도 선택되지 않는다. 따라서, 제4 다이(6023)는 제1 존(6000)에 소거 블록을 기여하는 것으로부터 제외된다. EB6은 제4 다이(6023)에 대한 소거 블록들의 프리 풀에 남아 있으며, 다른 존(600)을 형성하기 위해 선택되어 최적화 문제들을 제거할 수 있다. EB6을 프리 풀에 남기는 것은 EB6이 복구될 수 있게 하고, 추가로 각각의 다이(602) 내의 소거 블록들(604) 각각의 마모 레벨이 완화될 수 있거나 가능한 한 고르게 분산될 수 있게 한다.
제1 존(6000)을 형성하기 위해 EB3, EB4, 및 EB5가 선택되었으므로, EB3, EB4, 및 EB5는 더 이상 제1, 제2 및 제3 다이들(6020 내지 6022)에 대한 블록들의 프리 풀에서 이용가능하지 않다. 그렇기 때문에, 0의 추정 노화를 갖는 EB7은 제1 다이(6020)로부터의 제1 이용가능 소거 블록(604)이고, 0의 추정 노화를 갖는 EB8은 제2 다이(6021)로부터의 제1 이용가능 소거 블록(604)이고, 1의 추정 노화를 갖는 EB9는 제3 다이(6022)로부터의 제1 이용가능 소거 블록(604)이고, 2의 추정 노화를 갖는 EB6은 제4 다이(6023)로부터의 제1 이용가능 소거 블록(604)이다. 3개의 가장 젊은 제1 이용가능 소거 블록(604)은 제2 존(6001)을 형성하기 위해 다시 선택되는 반면 가장 늙은 소거 블록(604)은 스킵된다.
따라서, 제2 존(6001)은 EB7 제1 다이(6020), 제2 다이(6021)로부터의 EB8, 및 제3 다이(6022)로부터의 EB9로 구성된다. 제4 다이(6023)의 제1 이용가능 소거 블록(604), EB6은 2의 추정 노화 - 이는 제1, 제2, 및 제3 다이들(6020 내지 6022) 내의 제1 이용가능 소거 블록들(604)(예를 들어, EB7, EB8, EB9)의 추정 노화보다 큼 - 를 가지므로, EB6은 한 번 더 제외되거나 스킵되고, 제2 존(6001)에 대한 제4 다이(6023)로부터 어떤 소거 블록(604)도 선택되지 않는다. 따라서, 제4 다이(6023)는 제2 존(6001)에 소거 블록을 기여하는 것으로부터 제외된다. 다시, EB6은 제4 다이(6023)에 대한 소거 블록들의 프리 풀에 남아 있으며, 다른 존(600)을 형성하기 위해 선택되어 최적화 문제들을 제거할 수 있다.
유사하게, 제3 존(6002)이 제1 다이(6020)로부터의 0의 추정 노화를 갖는 EB11, 제3 다이(6022)로부터의 2의 추정 노화를 갖는 EB13, 및 제4 다이(6023)로부터의 2의 추정 노화를 갖는 EB6으로 구성된다. 제2 다이(6021)의 제1 이용가능 소거 블록(604), EB12는 3의 추정 노화 - 이는 제1, 제3, 및 제4 다이들(6020, 6022, 6023) 내의 제1 이용가능 소거 블록들(604)(예를 들어, EB11, EB13, EB6)의 추정 노화보다 큼 - 를 가지므로, EB12는 제외되거나 스킵되고, 제3 존(6002)에 대한 제2 다이(6021)로부터 어떤 소거 블록(604)도 선택되지 않는다. 따라서, 제2 다이(6021)는 제3 존(6002)에 소거 블록을 기여하는 것으로부터 제외된다. EB12는 제2 다이(6021)에 대한 소거 블록들의 프리 풀에 남아 있으며, 다른 존(600)을 형성하기 위해 선택되어 최적화 문제들을 제거할 수 있다.
제3 존(6002)의 형성에 이어서, 1의 추정 노화를 갖는 EB15는 제1 다이(6020)로부터의 제1 이용가능 소거 블록(604)이고, 3의 추정 노화를 갖는 EB12는 제2 다이(6021)로부터의 제1 이용가능 소거 블록(604)이고, 2의 추정 노화를 갖는 EB17은 제3 다이(6022)로부터의 제1 이용가능 소거 블록(604)이고, 3의 추정 노화를 갖는 EB10은 제4 다이(6023)로부터의 제1 이용가능 소거 블록(604)이다. 제4 존(6003)을 형성하기 위해, 제1 다이(6020)로부터 EB15가 선택되고, 제3 다이(6022)로부터 EB17이 선택되고, 제2 다이(6021)로부터의 EB12 또는 제4 다이(6023)로부터의 EB10이 선택된다. 제2 다이(6021)의 제1 이용가능 소거 블록(604), EB12와 제4 다이(6023)의 제1 이용가능 소거 블록, EB10은 동일한 3의 추정 노화를 가지므로, EB12 또는 EB10이 제4 존(6003)을 형성하기 위해 선택될 수 있다.
그러나, 하나 이상의 다이(602)의 제1 이용가능 소거 블록(604)이 동일한 추정 노화를 갖는 실시예에서(예를 들어, EB12 및 EB10), 소거 블록들(604)의 더 큰 이용가능 프리 풀을 갖는 다이(602)로부터의 소거 블록(604)이 선택된다. 따라서, 제4 존(6003)의 예에서, 제2 다이(6021)는 프리 풀에 2개의 소거 블록(604)(예를 들어, EB12 및 EB16)을 갖는 반면, 제4 다이(6023)는 프리 풀에 3개의 소거 블록(604)(예를 들어, EB10, EB14, 및 EB18)을 갖는다. 따라서, 제2 다이(6021)는 제4 존(6003)에 소거 블록을 기여하는 것으로부터 제외된다. 다시, EB12는 제2 다이(6021)에 대한 소거 블록들의 프리 풀에 남아 있으며, 다른 존(600)을 형성하기 위해 선택되어 최적화 문제들을 제거할 수 있다.
또한, 하나 이상의 다이(602)의 제1 이용가능 소거 블록(604)이 동일한 추정 노화를 가질 때, 첫 번째로 마주치는 다이(602)(예를 들어, 제2 다이(6021))가 항상 선택되는 것을 방지하기 위해 다른 팩터들이 고려될 수 있다. 예를 들어, 가장 큰 추정 리텐션을 갖는 소거 블록(604)이 선택될 수 있거나, 가장 적게 선택된 다이(602)에 대한 가장 많이 선택된 다이(602)의 델타에 대해 한계가 설정될 수 있거나, 존 형성의 시작 지점이 변경될 수 있다(즉, 제1 다이(6020)와는 상이한 다이(602)에서 시작).
존(600)이 데이터가 소거되고, 소거 상태로 전환된 다음, 활성 상태로 전환될 때마다, 존(600)은 전술된 방법에 따라 새로운 소거 블록들(604)로 재형성될 수 있다. 존(600)이 소거되고 소거 상태로 전환될 때, 존(600)의 소거 블록들(604)은 각각의 다이(602) 내의 소거 블록들(604)의 프리 풀로 되돌려진다. 프리 풀로 되돌려질 때, 소거 블록들(604) 각각의 노화가 재추정될 수 있다.
도 7a 내지 도 7c는 본 명세서에 개시된 실시예들에 따른, 복수의 다이(702)로부터 선택된 복수의 소거 블록(704)으로 구성된 존들(700, 750, 770)을 각각 예시한다. 존들(700, 750, 770) 각각은 개별적으로 도 4a의 ZNS(402)의 존(406) 또는 도 6a 및 도 6b의 존(600)일 수 있다. 각각의 존들(700, 750, 770)은 컨트롤러(108)에 결합된 도 1의 NVM(110)의 존일 수 있고, NVM(110)은 복수의 다이(702)를 포함할 수 있다. 또한, 존들(700, 750, 770) 각각은 도 6a 및 도 6b에 설명된 바와 같이 형성될 수 있으며, 여기서 컨트롤러 또는 존 관리(ZM)는 가장 젊은 소거 블록들(704)을 선택하기 위해 각각의 다이(702) 내의 제1 이용가능 소거 블록(704)의 추정 노화를 비교하도록 구성된다.
다이들(702) 각각이 2개의 평면(706)으로 도시되어 있지만, 다이들(702)은 하나 이상의 평면(706)을 포함할 수 있다. 컨트롤러는 복수의 다이(702) 각각의 각각의 평면(706) 내의 제1 이용가능 소거 블록(704)의 추정 노화를 서로 비교하고, 다이들(702) 중 하나 이상으로부터 하나 이상의 평면(706)을 선택하고, 존(700, 750, 770)을 형성하기 위해 추정 노화들에 기초하여 하나 이상의 평면(706)으로부터 하나 이상의 소거 블록(704)을 선택하도록 구성된다. 다이(즉, 스킵된 다이(702b))의 적어도 하나의 평면(706)으로부터의 적어도 하나의 소거 블록(704)이 존에 하나 이상의 소거 블록(704)을 기여하는 것으로부터 제외된다.
또한, 존들(700, 750, 770) 각각은 256 MiB 또는 512 MiB와 같은 임의의 용량을 가질 수 있다. 그러나, 스킵된 다이들(702b)로부터의 제외된 소거 블록들(704) 및 XOR 데이터를 저장하는 존들(700, 750, 770)의 부분과 같은, 각각의 존(700, 750, 770)의 작은 부분이 데이터를 기입하기 위해 액세스 불가할 수 있지만, 여전히 판독될 수 있다. 예를 들어, 존(700, 750, 770)의 총 용량이 512 MiB이면, 470 MiB는 데이터를 기입하는 데 이용가능할 수 있는 반면 42 MiB는 데이터를 기입하는 데 이용할 수 없다.
도 7a는 16개의 다이(702)를 포함하는 메모리 디바이스로부터 형성된 예시적인 존(700)을 예시한다. 16개의 다이(702) 중에서, 14개의 다이(702)가 데이터를 저장하는 데 이용되고, 하나의 XOR 다이(702a)가 XOR 데이터를 위해 이용되고, 가장 늙은 또는 최악의 소거 블록들을 포함하는 하나의 스킵된 다이(702b)가 존(700)에 포함되지 않는다. 스킵된 다이(702b)의 제외된 소거 블록(들)(704)은 프리 풀에 남아 있으며, 다른 존을 형성하기 위해 선택되어 최적화 문제들을 제거할 수 있다.
도 7b는 8개의 다이(702)를 포함하는 메모리 디바이스로부터 형성된 다른 예시적인 존(750)을 예시한다. 8개의 다이(702) 중에서, 6개의 다이(702)가 데이터를 저장하는 데 이용되고, 하나의 XOR 다이(702a)가 XOR 데이터를 위해 이용되고, 가장 늙은 또는 최악의 소거 블록들을 포함하는 하나의 스킵된 다이(702b)가 존(750)에 포함되지 않는다. 스킵된 다이(702b)의 제외된 소거 블록(들)(704)은 프리 풀에 남아 있으며, 다른 존을 형성하기 위해 선택되어 최적화 문제들을 제거할 수 있다.
도 7c는 16개의 다이(702)를 포함하는 메모리 디바이스로부터 형성된 또 다른 예시적인 존(770)을 예시한다. 16개의 다이(702) 중에서, 11개의 다이(702)가 데이터를 저장하는 데 이용되고, 하나의 XOR 다이(702a)가 XOR 데이터를 위해 이용되고, 가장 늙은 또는 최악의 소거 블록들을 포함하는 4개의 스킵된 다이(702b)가 존(770)에 포함되지 않는다. 도 6a 및 도 6b는 하나의 다이(702)로부터의 하나의 소거 블록(704)만을 스킵하는 것을 설명하였지만, 다수의 다이(702)로부터의 다수의 소거 블록(704)이 스킵될 수 있다. 스킵된 다이(702b)의 제외된 소거 블록(들)(704)은 프리 풀에 남아 있으며, 다른 존을 형성하기 위해 선택되어 최적화 문제들을 제거할 수 있다.
존을 형성할 때 가장 큰 추정 노화, 가장 많은 수의 프로그램-소거 사이클, 또는 가장 적은 추정량의 리텐션을 갖는 소거 블록을 제외함으로써, 최적화 문제들을 제거하면서 모든 소거 블록들의 마모 레벨이 가능한 한 고르게 분산될 수 있다. 제외되거나 스킵된 소거 블록(들)은 더 젊은 소거 블록들이 이용되는 동안 복구될 수 있어서, 소거 블록들 각각 사이의 노화 갭을 최소화하고 하나 이상의 소거 블록이 불균형한 양의 프로그램-소거 사이클을 겪는 것을 방지할 수 있다. 그렇기 때문에, 소거 블록들 각각의 마모 레벨이 완화되어, 사용할 수 없게 되거나 손상되는 소거 블록의 수를 최소화할 것이다.
일 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 존으로 분할된다. 매체 유닛은 복수의 다이를 포함하며, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 저장 디바이스는 매체 유닛에 결합된 컨트롤러를 추가로 포함하며, 컨트롤러는 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 제1 이용가능 소거 블록들 중 하나 이상을 선택하도록 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외된다.
컨트롤러는 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하는 것을 반복하고, 복수의 다이 중 하나 이상의 다이로부터 제1 이용가능 소거 블록들 중 하나 이상을 선택하여 제2 존을 형성하도록 추가로 구성될 수 있으며, 여기서 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제2 존으로부터 제외된다. 제1 존으로부터 제외된 적어도 하나의 제1 이용가능 소거 블록은 제2 존으로부터 제외된 동일한 적어도 하나의 제1 이용가능 소거 블록일 수 있다. 제1 존으로부터 제외된 적어도 하나의 제1 이용가능 소거 블록은 제2 존으로부터 제외된 적어도 하나의 제1 이용가능 소거 블록과는 상이한 소거 블록일 수 있다. 제1 존으로부터 제외된 적어도 하나의 다이의 적어도 하나의 제1 이용가능 소거 블록은 제1 존을 형성하기 위해 선택된 하나 이상의 소거 블록보다 더 큰 추정 노화를 가질 수 있다. 제1 존은 XOR 데이터를 저장하기 위한 적어도 하나의 XOR 소거 블록을 추가로 포함할 수 있다. 제1 존으로부터 제외된 적어도 하나의 다이의 적어도 하나의 제1 이용가능 소거 블록은 적어도 하나의 다이의 프리 풀에 남아 있을 수 있다.
다른 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 존으로 분할된다. 매체 유닛은 복수의 다이를 포함하며, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 저장 디바이스는 매체 유닛에 결합된 컨트롤러를 추가로 포함하며, 컨트롤러는 제1 존을 비어 있는 상태로부터 활성 상태로 전환하고, 복수의 다이 각각의 프리 풀 내의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이의 프리 풀로부터 비교된 제1 이용가능 소거 블록들 중 하나 이상의 제1 소거 블록을 제거하도록 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외되어 적어도 하나의 다이의 프리 풀에 남는다. 저장 디바이스는 제2 존을 비어 있는 상태로부터 활성 상태로 전환하고, 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고, 제2 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 비교된 제1 이용가능 소거 블록들 중 하나 이상의 제2 소거 블록을 제거하도록 추가로 구성된다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제2 존으로부터 제외되어 적어도 하나의 다이의 프리 풀에 남는다.
제1 존으로부터 제외된 적어도 하나의 제1 이용가능 소거 블록은 제2 존으로부터 제외된 적어도 하나의 제1 이용가능 소거 블록과는 상이한 소거 블록일 수 있다. 제1 존으로부터 제외된 적어도 하나의 다이의 적어도 하나의 제1 이용가능 소거 블록은 제1 존을 형성하기 위해 제거된 하나 이상의 제1 소거 블록보다 더 큰 추정 노화를 가질 수 있다. 제1 존으로부터 제외된 적어도 하나의 다이의 적어도 하나의 제1 이용가능 소거 블록은 제1 존을 형성하기 위해 제거된 하나 이상의 제1 소거 블록보다 더 많은 추정 수의 프로그램-소거 사이클을 겪었을 수 있다. 제2 존으로부터 제외된 적어도 하나의 다이의 적어도 하나의 제1 이용가능 소거 블록은 제2 존을 형성하기 위해 제거된 하나 이상의 제2 소거 블록보다 더 많은 추정 수의 프로그램-소거 사이클을 겪었을 수 있다.
컨트롤러는 제1 이용가능 소거 블록들 중 하나 이상이 동일한 추정 노화를 갖는 것으로 결정하고, 동일한 추정 노화를 갖는 하나 이상의 제1 이용가능 소거 블록을 포함하는 다이들 각각의 프리 풀의 크기를 비교하고, 프리 풀의 크기에 기초하여 동일한 추정 노화를 갖는 하나 이상의 제1 이용가능 소거 블록 중의 소거 블록을 제외하도록 추가로 구성될 수 있다. 제외된 소거 블록은 가장 작은 크기의 프리 풀을 갖는 다이에 배치될 수 있다.
다른 실시예에서, 저장 디바이스를 위한 하나 이상의 존을 형성하는 방법은 제1 존을 비어 있는 상태로부터 활성 상태로 전환하는 단계를 포함한다. 저장 디바이스는 복수의 다이를 포함하고, 복수의 다이 각각은 복수의 소거 블록을 포함한다. 방법은 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하는 단계, 및 제1 존을 형성하기 위해 추정 노화들에 기초하여 복수의 다이 중 하나 이상의 다이로부터 제1 이용가능 소거 블록들 중 하나 이상을 선택하는 단계를 추가로 포함한다. 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 제1 존으로부터 제외된다.
방법은 제1 이용가능 소거 블록들 중 하나 이상이 동일한 추정 노화를 갖는 것으로 결정하는 단계, 및 소거 블록의 추정 리텐션 또는 비트 에러 레이트에 기초하여 동일한 추정 노화를 갖는 하나 이상의 제1 이용가능 소거 블록 중의 소거 블록을 제외하는 단계를 추가로 포함할 수 있다. 제1 존을 형성하기 위해 선택된 제1 이용가능 소거 블록들 중 하나 이상은 하나 이상의 다이의 프리 풀로부터 제거될 수 있다. 제1 존으로부터 제외된 적어도 하나의 다이의 적어도 하나의 제1 이용가능 소거 블록은 적어도 하나의 다이의 소거 블록들의 프리 풀에 남아 있을 수 있다. 제1 존으로부터 제외된 적어도 하나의 다이의 적어도 하나의 제1 이용가능 소거 블록은 제1 존을 형성하기 위해 선택된 하나 이상의 제1 이용가능 소거 블록보다 더 큰 추정 노화 또는 더 많은 양의 추정 프로그램-소거 사이클을 가질 수 있다. 복수의 다이 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하는 단계는 복수의 다이 각각의 소거 블록들 또는 프리 풀의 크기를 서로 비교하는 단계를 추가로 포함할 수 있다.
전술한 것은 본 개시의 실시예들에 관한 것이지만, 본 개시의 다른 및 추가 실시예들이 본 개시의 기본 범위로부터 벗어남이 없이 고안될 수 있으며, 본 개시의 그 범위는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 저장 디바이스로서,
    매체 유닛 - 상기 매체 유닛의 용량은 복수의 존들로 분할되고, 상기 매체 유닛은 복수의 다이들을 포함하며, 상기 복수의 다이들 각각은 복수의 소거 블록들을 포함함 -; 및
    상기 매체 유닛에 결합된 컨트롤러를 포함하며, 상기 컨트롤러는,
    상기 복수의 다이들 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고,
    제1 존을 형성하기 위해 상기 추정 노화들에 기초하여 상기 복수의 다이들 중 하나 이상의 다이로부터 상기 제1 이용가능 소거 블록들 중 하나 이상을 선택하도록 - 상기 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 상기 제1 존으로부터 제외됨 - 구성되는, 저장 디바이스.
  2. 제1항에 있어서, 상기 컨트롤러는,
    상기 복수의 다이들 각각에서의 상기 제1 이용가능 소거 블록의 상기 추정 노화를 서로 비교하는 것을 반복하고,
    제2 존을 형성하기 위해 상기 추정 노화들에 기초하여 상기 복수의 다이들 중 하나 이상의 다이로부터 상기 제1 이용가능 소거 블록들 중 하나 이상을 선택하도록 - 상기 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 상기 제2 존으로부터 제외됨 - 추가로 구성되는, 저장 디바이스.
  3. 제2항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 제2 존으로부터 제외된 동일한 적어도 하나의 제1 이용가능 소거 블록인, 저장 디바이스.
  4. 제2항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 제2 존으로부터 제외된 상기 적어도 하나의 제1 이용가능 소거 블록과는 상이한 소거 블록인, 저장 디바이스.
  5. 제1항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 다이의 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 제1 존을 형성하기 위해 선택된 상기 하나 이상의 제1 이용가능 소거 블록보다 더 큰 추정 노화를 갖는, 저장 디바이스.
  6. 제1항에 있어서, 상기 제1 존은 XOR 데이터를 저장하기 위한 적어도 하나의 XOR 소거 블록을 추가로 포함하는, 저장 디바이스.
  7. 제1항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 다이의 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 적어도 하나의 다이의 프리 풀(free pool)에 남아 있는, 저장 디바이스.
  8. 저장 디바이스로서,
    매체 유닛 - 상기 매체 유닛의 용량은 복수의 존들로 분할되고, 상기 매체 유닛은 복수의 다이들을 포함하며, 상기 복수의 다이들 각각은 복수의 소거 블록들을 포함함 -; 및
    상기 매체 유닛에 결합된 컨트롤러를 포함하며, 상기 컨트롤러는,
    제1 존을 비어 있는 상태로부터 활성 상태로 전환하고,
    상기 복수의 다이들 각각의 프리 풀 내의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하고,
    상기 제1 존을 형성하기 위해 상기 추정 노화들에 기초하여 상기 복수의 다이들 중 하나 이상의 다이의 상기 프리 풀로부터 상기 비교된 제1 이용가능 소거 블록들 중 하나 이상의 제1 소거 블록을 제거하고 - 상기 복수의 다이들 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 상기 제1 존으로부터 제외되어 상기 적어도 하나의 다이의 상기 프리 풀에 남아 있음 -,
    제2 존을 상기 비어 있는 상태로부터 상기 활성 상태로 전환하고,
    상기 복수의 다이들 각각에서의 상기 제1 이용가능 소거 블록의 상기 추정 노화를 서로 비교하고,
    상기 제2 존을 형성하기 위해 상기 추정 노화들에 기초하여 상기 복수의 다이들 중 하나 이상의 다이로부터 상기 비교된 제1 이용가능 소거 블록들 중 하나 이상의 제2 소거 블록을 제거하도록 - 상기 복수의 다이들 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 상기 제2 존으로부터 제외되어 상기 적어도 하나의 다이의 상기 프리 풀에 남아 있음 - 구성되는, 저장 디바이스.
  9. 제8항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 제2 존으로부터 제외된 상기 적어도 하나의 제1 이용가능 소거 블록과는 상이한 소거 블록인, 저장 디바이스.
  10. 제8항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 다이의 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 제1 존을 형성하기 위해 제거된 상기 하나 이상의 제1 소거 블록보다 더 큰 추정 노화를 갖는, 저장 디바이스.
  11. 제8항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 다이의 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 제1 존을 형성하기 위해 제거된 상기 하나 이상의 제1 소거 블록보다 더 많은 추정 수의 프로그램-소거 사이클들을 겪은, 저장 디바이스.
  12. 제8항에 있어서, 상기 제2 존으로부터 제외된 상기 적어도 하나의 다이의 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 제2 존을 형성하기 위해 제거된 상기 하나 이상의 제2 소거 블록보다 더 많은 추정 수의 프로그램-소거 사이클들을 겪은, 저장 디바이스.
  13. 제8항에 있어서, 상기 컨트롤러는,
    상기 제1 이용가능 소거 블록들 중 하나 이상이 동일한 추정 노화를 갖는 것으로 결정하고,
    동일한 추정 노화를 갖는 상기 하나 이상의 제1 이용가능 소거 블록을 포함하는 상기 다이들 각각의 상기 프리 풀의 크기를 비교하고,
    상기 프리 풀의 상기 크기에 기초하여 동일한 추정 노화를 갖는 상기 하나 이상의 제1 이용가능 소거 블록 중의 소거 블록을 제외하도록 추가로 구성되는, 저장 디바이스.
  14. 제13항에 있어서, 상기 제외된 소거 블록은 가장 작은 크기의 프리 풀을 갖는 다이에 배치되는, 저장 디바이스.
  15. 저장 디바이스를 위한 하나 이상의 존을 형성하는 방법으로서,
    제1 존을 비어 있는 상태로부터 활성 상태로 전환하는 단계 - 상기 저장 디바이스는 복수의 다이들을 포함하고, 상기 복수의 다이들 각각은 복수의 소거 블록들을 포함함 -;
    상기 복수의 다이들 각각에서의 제1 이용가능 소거 블록의 추정 노화를 서로 비교하는 단계; 및
    상기 제1 존을 형성하기 위해 상기 추정 노화들에 기초하여 상기 복수의 다이들 중 하나 이상의 다이로부터 상기 제1 이용가능 소거 블록들 중 하나 이상을 선택하는 단계 - 상기 복수의 다이 중 적어도 하나의 다이로부터의 적어도 하나의 제1 이용가능 소거 블록은 상기 제1 존으로부터 제외됨 - 를 포함하는, 방법.
  16. 제15항에 있어서,
    상기 제1 이용가능 소거 블록들 중 하나 이상이 동일한 추정 노화를 갖는 것으로 결정하는 단계; 및
    상기 소거 블록의 추정 리텐션 또는 비트 에러 레이트에 기초하여 동일한 추정 노화를 갖는 상기 하나 이상의 제1 이용가능 소거 블록 중의 소거 블록을 제외하는 단계를 추가로 포함하는, 방법.
  17. 제15항에 있어서, 상기 제1 존을 형성하기 위해 선택된 상기 제1 이용가능 소거 블록들 중 상기 하나 이상은 상기 하나 이상의 다이의 프리 풀로부터 제거되는, 방법.
  18. 제15항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 다이의 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 적어도 하나의 다이의 소거 블록들의 프리 풀에 남아 있는, 방법.
  19. 제15항에 있어서, 상기 제1 존으로부터 제외된 상기 적어도 하나의 다이의 상기 적어도 하나의 제1 이용가능 소거 블록은 상기 제1 존을 형성하기 위해 선택된 상기 하나 이상의 제1 이용가능 소거 블록보다 더 큰 추정 노화 또는 더 많은 양의 추정 프로그램-소거 사이클들을 갖는, 방법.
  20. 제15항에 있어서, 상기 복수의 다이들 각각에서의 상기 제1 이용가능 소거 블록의 상기 추정 노화를 서로 비교하는 단계는 상기 복수의 다이들 각각의 소거 블록들 또는 프리 풀의 크기를 서로 비교하는 단계를 추가로 포함하는, 방법.
KR1020200035479A 2019-06-28 2020-03-24 존 네임스페이스에 대한 존 형성 KR102370760B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962868785P 2019-06-28 2019-06-28
US62/868,785 2019-06-28
US16/703,646 2019-12-04
US16/703,646 US11416161B2 (en) 2019-06-28 2019-12-04 Zone formation for zoned namespaces

Publications (2)

Publication Number Publication Date
KR20210001898A true KR20210001898A (ko) 2021-01-06
KR102370760B1 KR102370760B1 (ko) 2022-03-04

Family

ID=73747497

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200035479A KR102370760B1 (ko) 2019-06-28 2020-03-24 존 네임스페이스에 대한 존 형성

Country Status (4)

Country Link
US (1) US11416161B2 (ko)
KR (1) KR102370760B1 (ko)
CN (1) CN112148627A (ko)
DE (1) DE102020107659A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220099874A (ko) * 2021-01-07 2022-07-14 실리콘 모션 인코포레이티드 저장 장치, 플래시 메모리 컨트롤러 및 그 제어 방법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11402999B2 (en) * 2019-12-03 2022-08-02 Burlywood, Inc. Adaptive wear leveling using multiple partitions
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping
US11249896B2 (en) 2019-12-20 2022-02-15 Micron Technology, Inc. Logical-to-physical mapping of data groups with data locality
KR20210125774A (ko) * 2020-04-09 2021-10-19 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
EP4278263A1 (en) * 2021-02-04 2023-11-22 Huawei Technologies Co., Ltd. Persistence logging over nvm express for storage devices application
US11340987B1 (en) 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
US11630593B2 (en) * 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification 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
JP2022171208A (ja) 2021-04-30 2022-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US11797377B2 (en) 2021-10-05 2023-10-24 Netapp, Inc. Efficient parity determination in zoned solid-state drives of a storage system
US11803329B2 (en) 2021-11-22 2023-10-31 Netapp, Inc. Methods and systems for processing write requests in a storage system
US11687263B2 (en) 2021-12-01 2023-06-27 Western Digital Technologies, Inc. Full die recovery in ZNS SSD
WO2023113944A1 (en) * 2021-12-16 2023-06-22 Netapp, Inc. Scalable solid-state storage system and methods thereof
US11861231B2 (en) 2021-12-16 2024-01-02 Netapp, Inc. Scalable solid-state storage system and methods thereof
US20240111456A1 (en) * 2022-10-02 2024-04-04 Silicon Motion, Inc. Storage device controller and method capable of allowing incoming out-of-sequence write command signals
CN117369729B (zh) * 2023-12-04 2024-02-06 武汉麓谷科技有限公司 一种zns ssd的附加写入实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080021684A (ko) * 2005-06-08 2008-03-07 샌디스크 아이엘 엘티디 프로그램 가능한 내구력을 가진 플래시 메모리
US20150046664A1 (en) * 2013-08-08 2015-02-12 SMART Storage Systems, Inc. Storage Control System with Settings Adjustment Mechanism and Method of Operation Thereof
KR20150038308A (ko) * 2012-08-23 2015-04-08 애플 인크. 메모리 블록들의 호스트-지원형 압축
KR20190063054A (ko) * 2017-11-29 2019-06-07 삼성전자주식회사 메모리 시스템 및 이의 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US8898376B2 (en) * 2012-06-04 2014-11-25 Fusion-Io, Inc. Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9361222B2 (en) * 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9582201B2 (en) * 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
US10649661B2 (en) 2017-06-26 2020-05-12 Western Digital Technologies, Inc. Dynamically resizing logical storage blocks
JP2019020788A (ja) 2017-07-11 2019-02-07 東芝メモリ株式会社 メモリシステムおよび制御方法
US11294594B2 (en) 2017-08-07 2022-04-05 Kioxia Corporation SSD architecture supporting low latency operation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080021684A (ko) * 2005-06-08 2008-03-07 샌디스크 아이엘 엘티디 프로그램 가능한 내구력을 가진 플래시 메모리
KR20150038308A (ko) * 2012-08-23 2015-04-08 애플 인크. 메모리 블록들의 호스트-지원형 압축
US20150046664A1 (en) * 2013-08-08 2015-02-12 SMART Storage Systems, Inc. Storage Control System with Settings Adjustment Mechanism and Method of Operation Thereof
KR20190063054A (ko) * 2017-11-29 2019-06-07 삼성전자주식회사 메모리 시스템 및 이의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220099874A (ko) * 2021-01-07 2022-07-14 실리콘 모션 인코포레이티드 저장 장치, 플래시 메모리 컨트롤러 및 그 제어 방법

Also Published As

Publication number Publication date
KR102370760B1 (ko) 2022-03-04
US20200409589A1 (en) 2020-12-31
DE102020107659A1 (de) 2020-12-31
CN112148627A (zh) 2020-12-29
US11416161B2 (en) 2022-08-16

Similar Documents

Publication Publication Date Title
KR102370760B1 (ko) 존 네임스페이스에 대한 존 형성
US11640266B2 (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
US11436153B2 (en) Moving change log tables to align to zones
US11520523B2 (en) Data integrity protection of ZNS needs
CN114730250A (zh) 根据存储设备中的分区对读取命令加权
US11847337B2 (en) Data parking for ZNS devices
US11656984B2 (en) Keeping zones open with intermediate padding
US11853571B2 (en) Storage devices hiding parity swapping behavior
US11138066B1 (en) Parity swapping to DRAM
US20210333996A1 (en) Data Parking for SSDs with Streams
CN114730247A (zh) 具有数据的最小写入大小的存储设备
US20210334032A1 (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