KR20210096133A - 구역화된 네임스페이스들에서의 기록 커맨드들의 유지 - Google Patents

구역화된 네임스페이스들에서의 기록 커맨드들의 유지 Download PDF

Info

Publication number
KR20210096133A
KR20210096133A KR1020217017955A KR20217017955A KR20210096133A KR 20210096133 A KR20210096133 A KR 20210096133A KR 1020217017955 A KR1020217017955 A KR 1020217017955A KR 20217017955 A KR20217017955 A KR 20217017955A KR 20210096133 A KR20210096133 A KR 20210096133A
Authority
KR
South Korea
Prior art keywords
command
page
data associated
data
erase block
Prior art date
Application number
KR1020217017955A
Other languages
English (en)
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 KR20210096133A publication Critical patent/KR20210096133A/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/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/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/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/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명은 대체적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스의 제어기는 제1 커맨드의 데이터를 제1 시간에 검색하고, 제1 소거 블록 내의 제1 페이지로의 제1 커맨드의 데이터의 제1 패스 프로그래밍을 수행한다. 이어서, 제어기에 의해 제1 시간에 제2 커맨드의 데이터가 검색되고, 제어기는 제1 소거 블록 내의 제2 페이지로의 제2 커맨드의 데이터의 제1 패스 프로그래밍을 수행한다. 제2 커맨드를 검색 시에, 제어기는 제1 커맨드의 데이터를 제2 시간에 검색하고 제1 커맨드의 데이터를 제1 페이지에 기록하여 제2 패스 프로그래밍을 수행함으로써 제1 커맨드의 프로세싱을 완료한다. 제1 커맨드의 데이터는, 제2 패스 프로그래밍이 완료될 때까지 호스트 디바이스에 저장된다.

Description

구역화된 네임스페이스들에서의 기록 커맨드들의 유지
관련 출원들의 상호 참조
본 출원은 2019년 6월 28일자로 출원된 미국 가특허 출원 제62/868,792호의 이익을 주장하는, 2019년 11월 26일자로 출원된 미국 출원 제16/696,830호에 대한 우선권을 주장하며, 이들 둘 모두는 본 명세서에 참고로 포함된다.
기술분야
본 발명의 실시예들은 대체적으로 솔리드 스테이트 드라이브(sold state drive, SSD)들과 같은 저장 디바이스들에 관한 것이다.
SSD들과 같은 저장 디바이스들은 상대적으로 낮은 레이턴시 및 고용량 저장이 요구되는 응용들의 컴퓨터들에서 사용될 수 있다. 예를 들어, SSD들은, 특히 랜덤 판독들 및 기록들에 대해, 하드 디스크 드라이브(hard disk drive, HDD)들보다 더 낮은 레이턴시를 나타낼 수 있다. 전형적으로, SSD의 제어기는 호스트 디바이스로부터 데이터를 판독하고 기록하기 위한 커맨드를 수신한다. 기록 커맨드들의 경우, 커맨드와 연관된 데이터는 이어서 제어기의 메모리 또는 내부 버퍼에 일시적으로 저장된다. 일단 커맨드와 연관된 데이터가 제어기의 내부 메모리에 저장되면, 제어기는 커맨드 완료 엔트리(command completion entry)를 호스트로 전송한다. 한편, 커맨드와 연관된 데이터는 백그라운드에서 매체 또는 메모리 디바이스에 기록된다. 그와 같이, 데이터는 기록 커맨드의 프로세싱의 전체 지속기간 동안 제어기의 내부 메모리에 저장된다.
그러나, SSD 제어기들은 SSD들에 대한 전력 및 비용 둘 모두에 영향을 미치는 제한된 양의 내부 메모리를 갖는다. 제어기의 내부 메모리가 완전히 채워지면, 제어기는 병렬로 작업되는 커맨드들의 수를 감소시킬 수 있거나 또는 연관된 데이터를 인입(pulling-in)하지 않고 커맨드들을 파싱(parse)할 수 있다. 그와 같이, 커맨드 완료 엔트리가 전송되는 동안 그리고 데이터가 매체에 기록되는 동안, 커맨드와 연관된 데이터를 제어기의 내부 메모리에 일시적으로 저장하는 것은 전체 SSD 성능, 처리량, 및 효율성에 부정적인 영향을 주고, 커맨드들을 프로세싱하는 동안 소비되는 전력의 양을 증가시킨다.
따라서, 저장 디바이스의 성능 및 처리량을 증가시키면서 소비되는 전력의 양을 감소시키는 저장 디바이스를 동작시키는 방법이 필요하다.
본 발명은 대체적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스의 제어기는 제1 시간에 제1 커맨드의 데이터를 검색하고, 제1 소거 블록 내의 제1 페이지로의 제1 커맨드의 데이터의 제1 패스 프로그래밍을 수행한다. 이어서, 제어기에 의해 제1 시간에 제2 커맨드의 데이터가 검색되고, 제어기는 제1 소거 블록 내의 제2 페이지로의 제2 커맨드의 데이터의 제1 패스 프로그래밍을 수행한다. 제2 커맨드의 검색 시에, 제어기는 제2 시간에 제1 커맨드의 데이터를 검색하고 제1 커맨드의 데이터를 제1 페이지에 기록하여 제2 패스 프로그래밍을 수행함으로써 제1 커맨드의 프로세싱을 완료한다. 제1 커맨드의 데이터는 제2 패스 프로그래밍이 완료될 때까지 호스트 디바이스에 저장된다.
일 실시예에서, 저장 디바이스는 매체 유닛 및 매체 유닛에 커플링된 제어기를 포함하고, 여기서 매체 유닛의 용량은 복수의 구역들로 분할된다. 제어기는 매체 유닛의 제1 소거 블록 내의 제1 페이지에 데이터를 기록하라는 제1 커맨드를 검색하도록 - 제1 소거 블록은 복수의 구역들 중 제1 구역에 배치됨 -, 제1 소거 블록 내의 제2 페이지에 데이터를 기록하라는 제2 커맨드를 검색하도록, 그리고 제2 커맨드의 검색 시에, 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 기록하도록 구성된다.
다른 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 저장 디바이스는 매체 유닛에 커플링된 제어기를 추가로 포함한다. 제어기는 복수의 구역들 중 제1 구역의 제1 소거 블록 내의 제1 페이지에 데이터를 부분적으로 기록하라는 제1 커맨드와 연관된 데이터의 제1 패스 프로그래밍을 수행하도록, 제1 소거 블록 내의 제2 페이지에 데이터를 부분적으로 기록하라는 제2 커맨드와 연관된 데이터의 제1 패스 프로그래밍을 수행하도록, 제2 커맨드와 연관된 데이터의 제1 패스 프로그래밍의 수행 시에, 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 기록하라는 제2 패스 프로그래밍을 수행하도록 구성된다.
또 다른 실시예에서, 저장 디바이스는 매체 유닛 - 매체 유닛의 용량은 복수의 구역들로 분할됨 -, 및 매체 유닛에 커플링된 제어기를 포함한다. 제어기는 저장 디바이스의 제1 소거 블록 내의 제1 페이지에 데이터를 기록하라는 제1 커맨드를 검색하도록 - 제1 소거 블록은 복수의 구역들 중 제1 구역에 배치됨 -, 제1 시간 동안 인가되는 제1 전압 타깃에서 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 부분적으로 기록하도록, 제1 소거 블록 내의 제2 페이지에 데이터를 기록하라는 제2 커맨드를 검색하도록, 제1 전압 타깃에서 제1 소거 블록 내의 제2 페이지에 제2 커맨드와 연관된 데이터를 부분적으로 기록하도록, 그리고 제2 커맨드의 검색 시에, 제2 시간 동안 인가되는 제2 전압 타깃에서 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 기록하도록 - 제2 시간은 제1 시간보다 더 큼 - 구성된다.
상기에 언급된 본 발명의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 발명의 더 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이들 실시예들 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 본 발명의 전형적인 실시예들만을 예시하는 것이므로 본 발명의 범주를 제한하는 것으로 간주되지 않아야 하는데, 이는 본 발명이 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이라는 것에 유의해야 한다.
도 1은 일 실시예에 따른, 저장 시스템을 예시하는 개략적 블록도이다.
도 2는 다른 실시예에 따른, 호스트 디바이스에 커플링된 저장 디바이스를 포함하는 저장 시스템을 예시한다.
도 3은 일 실시예에 따른, 판독 또는 기록 커맨드를 실행하도록 저장 디바이스를 동작시키는 방법을 예시하는 블록도이다.
도 4a는 일 실시예에 따른, 저장 디바이스에서 이용되는 구역화된 네임스페이스(Zoned Namespace, ZNS)들을 예시한다.
도 4b는 일 실시예에 따른, 도 4a의 저장 디바이스의 구역화된 네임스페이스들에 대한 상태도를 예시한다.
도 5a는 일 실시예에 따른, 저장 디바이스를 동작시키는 방법을 예시한다.
도 5b는 도 5a의 방법에서 언급된 바와 같은 제1 패스 프로그래밍 및 제2 패스 프로그래밍에 대한 예상 전압 분포를 보여주는 예시적인 도면을 예시한다.
도 6은 다른 실시예에 따른, 저장 디바이스를 동작시키는 방법을 예시한다.
도 7은 일 실시예에 따른, 전력 실패(power fail) 동안 저장 디바이스를 동작시키는 방법을 예시한다.
도 8은 다른 실시예에 따른, 가비지 수집(garbage collection, GC) 프로세스 동안 ZNS를 이용하지 않는 저장 디바이스를 동작시키기 위한 방법을 예시한다.
이해를 용이하게 하기 위해, 도면들에 공통인 동일한 요소들을 지정하는 데, 가능한 경우, 동일한 도면 부호들이 사용되었다. 일 실시예에 개시된 요소들이 구체적인 언급 없이도 다른 실시예들에서 유익하게 이용될 수 있다는 것이 고려된다.
하기에서, 본 발명의 실시예들을 참조한다. 그러나, 본 발명은 기술된 특정 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 대신에, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든지 또는 그렇지 않든지 간에, 본 발명을 구현하고 실시하기 위해 고려된다. 게다가, 본 발명의 실시예들이 다른 가능한 해법들에 비해 그리고/또는 종래 기술에 비해 이점들을 달성할 수 있지만, 특정 이점이 주어진 실시예들에 의해 달성되는지 아닌지 여부는 본 발명의 제한이 아니다. 따라서, 하기의 태양들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것이며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소들 또는 제한들로 간주되지 않는다. 마찬가지로, "본 발명"에 대한 언급은 본 명세서에 개시되는 임의의 발명의 주제의 일반화로서 해석되어서는 않을 것이고, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한인 것으로 간주되지 않을 것이다.
본 발명은 대체적으로 저장 디바이스들을 동작시키는 방법들에 관한 것이다. 저장 디바이스의 제어기는 제1 시간에 제1 커맨드의 데이터를 검색하고, 제1 소거 블록 내의 제1 페이지로의 제1 커맨드의 데이터의 제1 패스 프로그래밍을 수행한다. 이어서, 제어기에 의해 제1 시간에 제2 커맨드의 데이터가 검색되고, 제어기는 제1 소거 블록 내의 제2 페이지로의 제2 커맨드의 데이터의 제1 패스 프로그래밍을 수행한다. 제2 커맨드의 검색 시에, 제어기는 제2 시간에 제1 커맨드의 데이터를 검색하고 제1 커맨드의 데이터를 제1 페이지에 기록하여 제2 패스 프로그래밍을 수행함으로써 제1 커맨드의 프로세싱을 완료한다. 제1 커맨드의 데이터는 제2 패스 프로그래밍이 완료될 때까지 호스트 디바이스에 저장된다.
도 1은 본 발명의 하나 이상의 기법들에 따른, 저장 디바이스(106)가 호스트 디바이스(104)에 대한 저장 디바이스로서 기능할 수 있는 저장 시스템(100)을 예시하는 개략적 블록도이다. 예를 들어, 호스트 디바이스(104)는 데이터를 저장하고 검색하기 위해 저장 디바이스(106)에 포함된 비휘발성 매체 유닛들(110)을 이용할 수 있다. 호스트 디바이스(104)는 호스트 DRAM(138)을 포함한다. 일부 예들에서, 저장 시스템(100)은 저장 디바이스(106)와 같은, 복수의 저장 디바이스들을 포함할 수 있고, 이는 저장 어레이로서 동작할 수 있다. 예를 들어, 저장 시스템(100)은 호스트 디바이스(104)에 대한 대용량 저장 디바이스로서 집합적으로 기능하는 저가의/독립적 디스크들의 중복 어레이(redundant array of inexpensive/independent disk, RAID)로서 구성되는 복수의 저장 디바이스들(106)을 포함할 수 있다.
저장 시스템(100)은 저장 디바이스(106)와 같은 하나 이상의 저장 디바이스들에 그리고/또는 그들로부터 데이터를 저장하고/하거나 검색할 수 있는 호스트 디바이스(104)를 포함한다. 도 1에 예시된 바와 같이, 호스트 디바이스(104)는 인터페이스(114)를 통해 저장 디바이스(106)와 통신할 수 있다. 호스트 디바이스(104)는 컴퓨터 서버들, NAS(network attached storage) 유닛들, 데스크톱 컴퓨터들, 노트북(즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 전화 핸드셋들, 예컨대 소위 "스마트" 폰들, 소위 "스마트" 패드들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게임 콘솔들, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수 있다.
저장 디바이스(106)는 제어기(108), 비휘발성 메모리(110)(non-volatile memory, NVM(110)), 전력 공급부(111), 휘발성 메모리(112), 및 인터페이스(114)를 포함한다. 제어기(108)는 내부 메모리(120) 또는 버퍼를 포함한다. 일부 예들에서, 저장 디바이스(106)는 명료함을 위해 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다. 예를 들어, 저장 디바이스(106)는 인쇄 기판(printed board, PB)을 포함할 수 있는데, 이에 저장 디바이스(106)의 컴포넌트들이 기계적으로 부착되고, 이는 저장 디바이스(106)의 컴포넌트들 등을 전기적으로 상호접속시키는 전기 전도성 트레이스들을 포함한다. 일부 예들에서, 저장 디바이스(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 셀들의 로우(row)들은 워드 라인을 사용하여 전기적으로 접속되어 복수의 페이지들 중 소정 페이지를 한정할 수 있다. 복수의 페이지들 각각 내의 각자의 셀들은 각자의 비트 라인들에 전기적으로 접속될 수 있다. 또한, NAND 플래시 메모리 디바이스들은 2D 또는 3D 디바이스들일 수 있고, SLC(single level cell), MLC(multi-level cell), TLC(triple level cell), 또는 QLC(quad level cell)일 수 있다. 제어기(108)는 페이지 레벨에서 NAND 플래시 메모리 디바이스들에 데이터를 기록하고 그들로부터 데이터를 판독하고, 블록 레벨에서 NAND 플래시 메모리 디바이스들로부터 데이터를 소거할 수 있다.
저장 디바이스(106)는 전력 공급부(111)를 포함하는데, 이는 저장 디바이스(106)의 하나 이상의 컴포넌트들에 전력을 제공할 수 있다. 표준 모드에서 동작할 때, 전력 공급부(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)는 제출 큐 중재부(submission queue arbitration)(224)에 커플링된다. 제출 큐 중재부(224)는 하나 이상의 제출 큐 헤드 및 테일 포인터들(226)에 커플링된다.
호스트 디바이스(204)는 하나 이상의 프로세싱 유닛들 또는 CPU 애플리케이션들(234)에 커플링된 하나 이상의 호스트 소프트웨어 애플리케이션들(232)로 구성된다. 일 실시예에서, 소프트웨어 애플리케이션들(232)은 시스템(200)의 각각의 사용자에 대한 레이턴시 QoS를 도출하기 위해 제한된 솔리드 스테이트 드라이브 큐 깊이를 갖는다. 호스트 디바이스(204)는 연관된 QoS가 없는 운영 시스템(operating system, 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)에 제출된 데이터-큐 깊이를 제한할 수 있다. 큐 깊이(queue depth, 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에서, 제어기는 커맨드를 프로세싱하고, 커맨드와 연관된 데이터를 호스트 디바이스 메모리에 기록하거나 이로 전송한다. 제어기는 한 번에 하나 초과의 커맨드를 프로세싱할 수 있다. 예를 들어, 수신된 제1 커맨드를 프로세싱하는 것은 제1 커맨드와 연관된 데이터를 NAND 메모리 디바이스와 같은 메모리 디바이스에 부분적으로 기록하는 것을 포함할 수 있다. 부분 기록은 데이터의 제1 패스 프로그래밍일 수 있다. 제2 커맨드를 수신 시에, 제어기는 제2 커맨드를 부분적으로 기록할 수 있고, 제1 커맨드의 기록(즉, 제2 패스 프로그래밍)을 완료할 수 있다.
동작 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를 위한 구역화된 블록 커맨드(zoned block command, ZBC) 및/또는 SATA를 위한 구역화된 디바이스 ATA 커맨드 세트(zoned-device ATA command, 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) 각각은 구역 시작 논리 블록 어드레스(zone starting logical block address, 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)를 가질 수 있다. 따라서, 기록 커맨드가 수신될 때, 구역이 그의 ZSLBA에 의해 식별되고, 기록 포인터(410)는 식별된 구역 내에서 데이터의 기록이 시작되는 곳을 결정한다.
도 4b는 도 4a의 ZNS(402)에 대한 상태도(450)를 예시한다. 상태도(450)에서, 각각의 구역은 비어 있음(empty), 활성(active), 가득 참(full), 또는 오프라인(offline)과 같은 상이한 상태에 있을 수 있다. 구역이 비어 있을 때, 구역에는 데이터가 없고(즉, 구역 내의 소거 블록들 중 어느 것도 현재 데이터를 저장하고 있지 않음) 기록 포인터는 ZSLBA에 있다(즉, WP=0). 일단 구역에 대해 기록이 스케줄링되면 또는 호스트에 의해 구역 열기 커맨드가 발행되면 비어 있는 구역이 열린 및 활성 구역으로 전환된다. 구역 열림 상태와 구역 닫힘 상태 - 이들은 둘 모두 활성 상태들임 - 사이에서 구역을 이동시키기 위해 구역 관리(zone management, 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)에 의해 나타내어진 논리 블록에 기록된다.
일부 실시예들에서, NAND 위치는 워드 라인과 동일할 수 있다. 그러한 실시예에서, 기록 커맨드가 워드라인보다 더 작은 경우, 제어기는, 선택적으로 다수의 기록 커맨드들로 구성된 전체 워드라인을 프로그래밍하기 전에 DRAM 또는 SRAM과 같은 다른 메모리 위치에서 여러 기록 커맨드들을 선택적으로 병합할 수 있다. 워드라인보다 더 긴 커맨드들을 기록하는 것은 데이터의 일부로 완전한 워드라인을 프로그래밍하고 채울 수 있을 것이고, 워드라인을 넘는 여분의 데이터는 다음 워드라인을 채우는 데 사용될 것이다. 그러나, NAND 위치는 워드라인과 동일한 것으로 제한되지 않고, 워드라인보다 더 큰 또는 더 작은 크기를 가질 수 있다. 예를 들어, 일부 실시예들에서, NAND 위치는 페이지의 크기와 동일할 수 있다.
예를 들어, 제어기(408)는 제3 구역(406c)에 대한 제1 기록 커맨드, 또는 제1 구역 추가 커맨드를 수신하거나, 인입하거나, 또는 DMA 판독할 수 있다. 호스트는 구역(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를 가리키도록 다시 한 번 전진되거나 업데이트된다. 제3 구역(406c)을 리셋하는 것은 기록 포인터(410)를 다시 ZcSLBA로 이동시키고(즉, WP=0), 제3 구역(406c)은 비어 있는 구역으로 전환된다.
도 5a는 일 실시예에 따른, 저장 디바이스를 동작시키기 위한 방법(500)을 예시한다. 도 5b는 방법(500)에서 언급된 바와 같은 제1 패스 프로그래밍(즉, "포기(foggy)" 프로그래밍) 및 제2 패스 프로그래밍(즉, "파인(fine)" 프로그래밍)에 대한 예상 전압 분포를 보여주는 예시적인 도면(550)을 예시한다. 방법(500)은 커맨드 프로세서(220)를 포함하는 도 2의 저장 시스템(200) 또는 제어기(108)를 포함하는 도 1의 저장 시스템(100)으로 이용될 수 있다. 방법(500)은 도 4의 ZNS(402)와 같은 ZNS를 이용하는 저장 디바이스로 구현될 수 있다.
동작(502)에서, 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 데이터를 기록하라는 제1 커맨드가 검색되고, 제1 커맨드와 연관된 데이터는 호스트 디바이스로부터 제1 시간에 저장 디바이스로 인입되거나, DMA 판독되거나, 또는 전송되고, 제1 커맨드는 부분적으로 프로세싱된다. 제1 소거 블록은 제1 구역에 있을 수 있다. 제1 소거 블록은 NAND 메모리 디바이스와 같은 매체 유닛 내에 배치된다. 일 실시예에서, 매체 유닛은 QLC NAND 매체 유닛이다. 제1 커맨드를 부분적으로 프로세싱하는 것은 제1 커맨드와 연관된 데이터를 판독하는 것, 및 제1 소거 블록 내의 제1 NAND 위치 또는 제1 페이지에 제1 커맨드와 연관된 데이터의 제1 패스 프로그래밍(즉, 데이터의 '포기' 프로그래밍)을 부분적으로 기록하거나 수행하는 것을 포함할 수 있다. 데이터의 부분 기록은 제1 시간 동안 제1 페이지 또는 제1 NAND 위치의 각각의 셀에 인가되는 제1 전압 타깃에서 수행된다. 제어기는 선택적으로 제1 커맨드와 연관된 데이터를 폐기할 수 있다.
일 실시예에서, 포기-파인 프로그래밍 및 NAND 페이지 순서들의 인터레이싱된 프로그래밍에 대한 이유는 포기 상태 동안 인가되는 고전압들 때문이고, 이는 이웃 페이지들 상에 높은 교란을 야기한다. 차후에 2개의 NAND 페이지들에서 포기 프로그래밍 전압들을 유지하는 것은, 더 낮은 전압들의 파인 프로그래밍 단계들이 이웃 페이지들 및 이웃 페이지들의 데이터를 방해하지 않는다는 것을 의미한다. 따라서, 가장 최근에 완료된 파인 프로그래밍된 페이지는 진행 중인 파인 프로그래밍 단계의 파인 프로그래밍에 의해서만 약간 영향을 받는다. 유사하게, 동일한 NAND 페이지는 포기 프로그래밍 전압들을 경험한 페이지로부터 2 페이지 떨어져 있다.
제1 커맨드와 연관된 데이터가 제1 페이지(또는 제1 NAND 위치)에 단지 부분적으로 기록되거나 완전히 폐기되기 때문에, 데이터는 일부 구현예들에서 판독가능하지 않을 수 있다. 추가적으로, 데이터가 부분적으로 기록되지만, 제1 커맨드는 미완료되고, 데이터는 제어기 내보다는 호스트 디바이스 내에 저장된다. 데이터가 제1 커맨드를 검색하는 것과 제1 커맨드와 연관된 데이터를 제1 소거 블록에 부분적으로 기록하는 것 사이에서 제어기의 내부 메모리를 통과할 수 있지만, 데이터는 제1 커맨드의 프로세싱 지속기간 동안 제어기 메모리에 저장되지 않는다.
동작(504)에서, 제1 소거 블록 내의 제2 페이지 또는 제2 NAND 위치에 데이터를 기록하라는 제2 커맨드가 검색되고, 제2 커맨드와 연관된 데이터는 호스트 디바이스로부터 제1 시간에 저장 디바이스로 인입되거나, DMA 판독되거나, 또는 전송되고, 제2 커맨드는 부분적으로 프로세싱된다. 제2 커맨드를 부분적으로 프로세싱하는 것은 제2 커맨드와 연관된 데이터를 판독하는 것, 및 제1 소거 블록 내의 제2 페이지 또는 제2 NAND 위치에 제2 커맨드와 연관된 데이터를 부분적으로 기록하거나 이의 제1 패스 프로그래밍(즉, 데이터의 '포기' 프로그래밍)을 수행하는 것을 포함할 수 있다. 데이터의 부분 기록은 제1 전압 타깃에서 수행된다. 일 실시예에서, 제2 커맨드는 매체 유닛의 제2 소거 블록에 기록될 수 있다. 제어기는 선택적으로 제2 커맨드와 연관된 데이터를 폐기할 수 있다.
동작(506)에서, 제2 커맨드를 검색 시에, 제1 커맨드의 프로세싱은, 제2 시간에 제1 커맨드와 연관된 데이터를 인입하거나, DMA 판독하거나, 또는 전송하고, 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 제1 커맨드와 연관된 데이터를 기록함으로써 완료된다. 제2 커맨드를 검색 시에 제1 커맨드와 연관된 데이터를 기록하는 것은 제1 전압 타깃보다 더 큰 제2 전압 타깃에서 수행되고, 데이터의 제2 패스 프로그래밍(즉, 데이터의 '파인' 프로그래밍)이다. 제2 전압 타깃은 제1 시간보다 더 큰 제2 시간 동안 제1 페이지 또는 제1 NAND 위치의 각각의 셀에 인가된다. 제2 커맨드를 검색하는 것은 제1 커맨드와 연관된 데이터의 전체 기록(full write)을 트리거한다(즉, 제1 커맨드와 연관된 데이터의 기록은 저장 디바이스가 제2 커맨드를 수신할 때까지 완료되지 않음). 따라서, 제1 커맨드는 제2 커맨드가 검색될 때까지 '담보물(hostage)'로 유지되고 있다(즉, 완료되지 않고, 부분적으로만 완료되고/되거나 일시정지됨). 제1 커맨드를 '담보물'로 유지하는 것은 호스트 디바이스로부터의 기록 완료 엔트리 또는 통지를 알려주지 않거나 지연시키는 것을 추가로 포함할 수 있다. 일단 제1 커맨드의 프로세싱이 완료되면, 데이터는 매체 유닛으로부터 판독가능하다.
제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치로의 제1 커맨드와 연관된 데이터의 기록에 이어서, 제어기는 제1 커맨드의 완료를 시그널링한다. 제어기는 제1 커맨드에 대응하는 제1 완료 엔트리를 완료 큐에 기록하고, 완료 큐 테일을 업데이트하여 제1 완료 엔트리를 가리키게 하고, 도어벨을 호스트 디바이스에 울리게 함으로써 제1 커맨드의 완료를 시그널링할 수 있다. 이어서, 방법(500)은 후속 커맨드들이 호스트 디바이스로부터 수신될 때 1 회 이상을 반복할 수 있다.
도 5b는 제1 패스 프로그래밍(즉, "포기" 프로그래밍) 및 제2 패스 프로그래밍(즉, "파인" 프로그래밍)에 대한 예상 전압 분포를 보여주는 예시적인 도면(550)을 예시한다. 도시된 바와 같이, 프로그래밍의 포기 상태(552)는 큰 펄스들의 전압을 인가하여 페이지 또는 NAND 위치의 셀들을 프로그래밍하는 한편, 파인 상태(554)는 더 작고 더 정밀한 펄스들의 전압을 인가하여 페이지 또는 NAND 위치의 셀들을 프로그래밍한다. 포기 상태(552)의 전압은 전압 상태들의 최종 분포에 대해 잘 제어되지 않을 수 있다. 그러한 정밀도의 결여는 포기 프로그래밍 상태가 속도에 대한 큰 변화를 통해 전압 분포를 이동시키기 때문이다. 파인 상태(554)의 전압은, 전압 상태가 정밀하게 제어된 상태에서 종결되도록 더 정밀하게 인가된다. 정밀하게 제어된 상태에 도달하기 위해, 더 작은 전압 증분들을 갖는 더 느린 프로그래밍 단계들이 적용되고, 매체 회로부는 이들 파인 전압 프로그래밍 단계들 동안 중간 및/또는 최종 상태의 여분의 감지를 적용할 수 있다.
상기 방법은 호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 충분히 큰(즉, 호스트 커맨드와 연관된 데이터가 하나의 페이지 크기 또는 하나의 NAND 위치 크기와 같음) 실시예를 설명한다. 그러나, 호스트 기록 커맨드가 너무 작아서 페이지 또는 NAND 위치를 채우기에 너무 작은(즉, 호스트 커맨드와 연관된 데이터는 하나의 페이지 크기 또는 하나의 NAND 위치 크기보다 작음) 또는 하나의 페이지 또는 하나의 NAND 위치에 대해 너무 큰(즉, 호스트 커맨드와 연관된 데이터는 하나의 페이지 크기 또는 하나의 NAND 위치 크기보다 큼) 실시예들에서, 상기 방법은 여전히 적용가능하다.
호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 너무 큰 실시예들에서, 호스트 기록 커맨드와 연관된 데이터는 먼저 페이지 크기들 또는 NAND 위치 크기들로 나누어진다. 호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 너무 작은 실시예들에서, 페이지 또는 NAND 위치를 채우기 위해 하나 초과의 호스트 커맨드가 필요할 수 있고, 페이지 또는 NAND 위치를 채우기 위해 다수의 호스트 기록 커맨드들이 병합될 수 있다. 또한, 페이지 또는 NAND 위치를 채우기에 너무 작은 호스트 기록 커맨드들이 선택적으로 통합될 수 있다. 기록 커맨드들을 통합하는 것은 이용될 수 있는 저장 디바이스에 의한 독립적인 결정이고, 저장 디바이스는 기록 커맨드들을 통합할지 여부를 선택할 때 큐 깊이를 고려할 수 있다.
도 6은 다른 실시예에 따른, 저장 디바이스를 동작시키기 위한 방법(600)을 예시한다. 방법(600)은 도 1의 저장 디바이스(106) 또는 도 2의 저장 디바이스(206)로 이용될 수 있다. 방법(600)은 도 4의 ZNS(402)와 같은 ZNS를 이용하는 저장 디바이스로 구현될 수 있다.
동작(602)에서, 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 데이터를 기록하라는 제1 커맨드가 저장 디바이스의 제어기에 의해 검색되고, 제1 커맨드와 연관된 데이터가 제1 시간에 인입되거나, DMA 판독되거나, 또는 전송된다. 제1 소거 블록은 제1 구역에 있을 수 있다. 일 실시예에서, 제1 커맨드는 도 1의 호스트 디바이스(104) 또는 도 2의 호스트 디바이스(204)와 같은 호스트 디바이스로부터 검색된다. 다른 실시예에서, 제1 커맨드와 연관된 데이터가 가비지 수집 목적들로 다른 소거 블록으로부터 검색된다. 제1 소거 블록은 NAND 매체 유닛과 같은 매체 유닛 또는 매체 내에 배치된다. 일 실시예에서, 매체 유닛은 QLC NAND 매체 유닛이다. 제1 커맨드를 검색하는 것은 호스트 디바이스로부터의 제1 커맨드와 연관된 데이터의 제1 판독을 수행하는 것을 포함한다.
동작(604)에서, 제1 커맨드와 연관된 데이터는 제1 전압 타깃에서 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 부분적으로 기록된다. 제1 전압 레벨은 제1 시간 동안 제1 페이지 또는 제1 NAND 위치의 각각의 셀에 인가된다. 데이터의 부분 기록은 도 5b에 기술된 바와 같은 '포기' 기록 또는 프로그래밍일 수 있다. 부분 기록은 데이터의 제1 패스 프로그래밍일 수 있다. 제어기는 선택적으로 제1 커맨드와 연관된 데이터를 폐기할 수 있다.
제1 커맨드와 연관된 데이터가 단지 제1 소거 블록에 부분적으로 기록되거나 폐기되기 때문에, 데이터는 판독가능하지 않다. 추가적으로, 데이터가 부분적으로 기록되지만, 제1 커맨드는 미완료되고, 데이터는 여전히 제어기 내보다는 호스트 디바이스 내에 저장된다. 데이터가 제1 커맨드를 검색하는 것과 제1 커맨드와 연관된 데이터를 제1 소거 블록에 부분적으로 기록하는 것 사이에서 제어기의 내부 메모리를 통과할 수 있지만, 데이터는 제1 커맨드의 프로세싱 지속기간 동안 제어기 메모리에 저장되지 않는다.
동작(606)에서, 동작(602)과 유사하게, 제1 소거 블록 내의 제2 페이지 또는 제2 NAND 위치에 데이터를 기록하라는 제2 커맨드가 제어기에 의해 검색되고, 데이터를 기록하라는 제2 커맨드와 연관된 데이터는 제1 시간에 인입되거나, DMA 판독되거나, 또는 전송된다. 제2 커맨드를 검색하는 것은 호스트 디바이스로부터의 제2 커맨드와 연관된 데이터의 제1 판독을 수행하는 것을 포함한다. 일 실시예에서, 제2 커맨드는 도 1의 호스트 디바이스(104) 또는 도 2의 호스트 디바이스(204)와 같은 호스트 디바이스로부터 검색된다. 다른 실시예에서, 제2 커맨드와 연관된 데이터는 가비지 수집 목적들로 다른 소거 블록으로부터 검색된다.
동작(608)에서, 동작(604)과 유사하게, 제2 커맨드와 연관된 데이터가 제1 전압 타깃에서 제1 소거 블록 내의 제2 페이지 또는 제2 NAND 위치에 부분적으로 기록된다. 일 실시예에서, 제2 커맨드는 매체 유닛의 제2 소거 블록에 기록될 수 있다. 제어기는 선택적으로 제2 커맨드와 연관된 데이터를 폐기할 수 있다.
동작(610)에서, 동작(606)에서 제2 커맨드를 검색 시에, 제1 커맨드와 연관된 데이터는 제2 시간에 인입되거나, DMA 판독되거나, 또는 전송되고, 제2 전압 타깃에서 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 기록된다. 제2 전압 타깃은 제1 시간보다 더 큰 제2 시간 동안 제1 페이지 또는 제1 NAND 위치의 각각의 셀에 인가된다. 제2 전압 타깃에서의 데이터의 기록은 도 5b에 기술된 바와 같은 '파인' 기록일 수 있다. 제2 전압 타깃에서의 데이터의 기록은 데이터의 제2 패스 프로그래밍일 수 있다. 제2 전압 타깃에서 제1 커맨드와 연관된 데이터를 기록하는 것은 호스트 디바이스로부터 제1 커맨드와 연관된 데이터의 제2 판독을 수행하는 것을 포함한다.
제2 전압 타깃에서 데이터를 기록한 후에, 데이터는 저장 디바이스로부터 판독가능하다. 제2 커맨드를 검색하는 것은 제1 커맨드와 연관된 데이터의 완전한 기록을 트리거한다(즉, 제1 커맨드와 연관된 데이터의 기록은 저장 디바이스가 제2 커맨드를 수신할 때까지 완료되지 않음). 따라서, 제1 커맨드는 제2 커맨드가 수신될 때까지 '담보물'로 유지되고 있다(즉, 완료되지 않고, 부분적으로만 완료되고/되거나 일시정지됨).
동작(612)에서, 제어기는 선택적으로 제1 커맨드의 완료를 시그널링한다. 제어기는 호스트 디바이스로부터 수신된 커맨드들에 대한 제1 커맨드의 완료를 시그널링한다. 제어기는 제1 커맨드에 대응하는 제1 완료 엔트리를 완료 큐에 기록하고, 완료 큐 테일을 업데이트하여 제1 완료 엔트리를 가리키게 하고, 도어벨을 호스트 디바이스에 울리게 함으로써 제1 커맨드의 완료를 시그널링할 수 있다. 종래의 방법들과는 달리, 제1 완료 엔트리는, 제1 커맨드와 연관된 데이터의 기록이 완전히 프로세싱된 후에 완료 큐에 기록된다(즉, 커맨드의 프로세싱은 백그라운드에서 발생하지 않음).
제1 커맨드와 연관된 데이터가 가비지 수집 목적들로 검색되었다면, 제어기는 제1 커맨드의 완료를 시그널링하지 않는다. 그와 같이, 제1 커맨드와 연관된 데이터가 가비지 수집 목적들로 검색될 때, 제1 커맨드는 호스트 디바이스의 관점으로부터 일시정지되지 않거나 '담보물'로 유지되지 않는다.
방법(600)은 더 많은 커맨드들이 수신되는 것과 동일한 방식으로 계속된다. 예를 들어, 제1 소거 블록 내의 제3 페이지 또는 제3 NAND 위치에(또는 상이한 소거 블록에) 데이터를 기록하라는 제3 커맨드가 검색될 수 있고, 제3 커맨드와 연관된 데이터는 제1 기록 커맨드에 대응하는 제1 완료 엔트리를 기록한 후에 제1 시간에 인입되거나, DMA 판독되거나, 또는 전송된다. 이어서, 제3 커맨드와 연관된 데이터가 제1 소거 블록 내의 제3 페이지 또는 제3 NAND 위치에 부분적으로 기록되거나 폐기된다. 제3 커맨드를 검색 시에, 제2 커맨드와 연관된 데이터는 제2 시간에 인입되거나, DMA 판독되거나, 또는 전송되고, 제2 전압 타깃에서 제1 소거 블록 내의 제2 페이지 또는 제2 NAND 위치에 기록된다. 제어기는 제2 커맨드에 대응하는 제2 완료 엔트리를 완료 큐에 기록하고, 완료 큐 테일을 업데이트하여 제2 완료 엔트리를 가리키게 하고, 도어벨을 호스트 디바이스에 울리게 함으로써 제2 커맨드의 완료를 시그널링할 수 있다.
따라서, 일단 새로운 커맨드들이 검색되면, 새로운 커맨드들은 제1 전압 타깃에서 새로운 페이지 또는 새로운 NAND 위치에 부분적으로 기록되고, 이전에 검색된 커맨드는 제2 전압 타깃에서 상이한 페이지 또는 상이한 NAND 위치에 기록된다. 다시 말하면, 새로운 커맨드의 제1 패스 프로그래밍이 수행되고, 이전에 수신된 커맨드의 제2 패스 프로그래밍이 수행된다.
상기 방법은 호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 충분히 큰(즉, 호스트 커맨드와 연관된 데이터가 하나의 페이지 크기 또는 하나의 NAND 위치 크기와 같음) 실시예를 설명한다. 그러나, 호스트 기록 커맨드가 너무 작아서 페이지 또는 NAND 위치를 채우기에 너무 작은(즉, 호스트 커맨드와 연관된 데이터는 하나의 페이지 크기 또는 하나의 NAND 위치 크기보다 작음) 또는 하나의 페이지 또는 하나의 NAND 위치에 대해 너무 큰(즉, 호스트 커맨드와 연관된 데이터는 하나의 페이지 크기 또는 하나의 NAND 위치 크기보다 큼) 실시예들에서, 상기 방법은 여전히 적용가능하다.
호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 너무 큰 실시예들에서, 호스트 기록 커맨드와 연관된 데이터는 먼저 페이지 크기들 또는 NAND 위치 크기들로 나누어진다. 호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 너무 작은 실시예들에서, 페이지 또는 NAND 위치를 채우기 위해 하나 초과의 호스트 커맨드가 필요할 수 있고, 페이지 또는 NAND 위치를 채우기 위해 다수의 호스트 기록 커맨드들이 병합될 수 있다. 또한, 페이지 또는 NAND 위치를 채우기에 너무 작은 호스트 기록 커맨드들이 선택적으로 통합될 수 있다. 기록 커맨드들을 통합하는 것은 이용될 수 있는 저장 디바이스에 의한 독립적인 결정이고, 저장 디바이스는 기록 커맨드들을 통합할지 여부를 선택할 때 큐 깊이를 고려할 수 있다.
도 7은 일 실시예에 따른, 전력 실패 동안 저장 디바이스를 동작시키는 방법(700)을 예시한다. 방법(700)은 커맨드 프로세서(220)를 포함하는 도 2의 저장 시스템(200) 또는 제어기(108)를 포함하는 도 1의 저장 시스템(100)으로 이용될 수 있다. 방법(700)은 도 4의 ZNS(402)와 같은 ZNS를 이용하는 저장 디바이스로 구현될 수 있다. 추가적으로, 방법(700)은 ZNS를 이용하지 않는 저장 디바이스로 구현될 수 있다.
동작(702)에서, 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 데이터를 기록하라는 제1 커맨드가 검색되고, 제1 커맨드와 연관된 데이터는 제1 시간에 인입되거나 DMA 판독되고, 제1 커맨드는 부분적으로 프로세싱된다. 제1 소거 블록은 제1 구역에 있을 수 있다. 제1 소거 블록은 NAND 매체 유닛과 같은 매체 유닛 또는 매체 내에 배치된다. 일 실시예에서, 매체 유닛은 QLC NAND 매체 유닛이다. 제1 커맨드를 부분적으로 프로세싱하는 것은, 도 5b에 기술된 바와 같이, 제1 커맨드와 연관된 데이터를 판독하는 것, 및 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터의 제1 패스 프로그래밍(즉, 데이터의 '포기' 프로그래밍)을 부분적으로 기록하거나 수행하는 것을 포함할 수 있다. 데이터의 부분 기록은 제1 시간 동안 제1 페이지 또는 제1 NAND 위치의 각각의 셀에 인가되는 제1 전압 타깃에서 수행된다. 제어기는 선택적으로 제1 커맨드와 연관된 데이터를 폐기할 수 있다.
동작(704)에서, 저장 디바이스는 제1 커맨드를 '담보물'로 유지하고(즉, 완료되지 않고, 부분적으로만 완료되고/되거나 일시정지됨), 제2 커맨드가 수신될 때까지 제1 커맨드의 프로세싱을 완료하기 위해 제2 시간에 제1 커맨드와 연관된 데이터를 인입하거나 DMA 판독하도록 대기한다. 동작(706)에서, 전력 손실 또는 전력 실패 통지가 수신된다. 전력 손실 통지는, 제2 커맨드가 수신되거나, 인입되거나, 또는 DMA 판독되기 전에 수신된다.
동작(708)에서, 저장 디바이스는, 선택적으로 프로그램 더미 데이터를 제1 소거 블록의 제2 페이지 또는 제2 NAND 위치에 포깅할 수 있고, 제2 시간에 제1 커맨드와 연관된 데이터를 인입하거나 DMA 판독하여 제1 커맨드의 프로세싱을 완료할 수 있다. 제2 시간에 제1 커맨드와 연관된 데이터를 인입하거나 DMA 판독하는 것은, 방법들(500, 600)에서 전술된 바와 같이, 데이터가 매체 유닛으로부터 판독 가능하도록 저장 디바이스가 제1 커맨드와 연관된 데이터의 기록을 완료할 수 있게 한다. 일단 제1 커맨드의 프로세싱이 완료되면, 데이터는 매체 유닛으로부터 판독가능하다. 이어서, 기록 완료는 호스트로 반환될 수 있고, 이는 다음 파워업 시에 데이터가 저장 디바이스에 판독 가능해질 것임을 시그널링한다.
대안적으로, 전력 손실 통지를 수신 시에, 저장 디바이스는 제1 커맨드를 완료하지 않을 수 있다. 그러한 실시예에서, 제1 커맨드와 연관된 데이터의 인입 또는 DMA 판독은 제2 시간에 완료되지 않고, 데이터의 프로그래밍은 미완료된 상태에 있다. 저장 디바이스가 제1 커맨드를 완료하지 못하는 경우, 제1 커맨드와 연관된 데이터는 다음 부트 시에 판독가능하지 않거나 유효하지 않을 수 있다. 미완료된 기록은 인터페이스 사양이 각각의 SSD에 적용됨에 따라 처리될 것이다. NVMe의 경우, 기록은 완료되지 않을 것이고 데이터는 판독할 필요가 없다.
방법들(500, 600, 700)은 각각 ZNS를 이용하지 않는 저장 디바이스로 개별적으로 구현될 수 있다. 그러나, ZNS를 이용하지 않는 저장 디바이스들은 가비지 수집 목적들로 제1 소거 블록으로부터 제2 소거 블록으로 유효 데이터를 이동시킬 수 있다. 도 8은 다른 실시예에 따른, 가비지 수집 프로세스 동안 ZNS를 이용하지 않는 저장 디바이스를 동작시키기 위한 방법(900)을 예시한다. 방법(800)은 도 1의 저장 디바이스(106) 또는 도 2의 저장 디바이스(206)로 이용될 수 있다.
동작(802)에서, 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 유효 데이터를 재기록하라는 제1 가비지 수집(GC) 커맨드가 수신되고, 제1 GC 커맨드와 연관된 유효 데이터가 제1 시간에 인입되거나 DMA 판독되고, 제1 GC 커맨드는 부분적으로 프로세싱된다. 제1 소거 블록은 NAND 매체 유닛과 같은 매체 유닛 또는 매체 내에 배치된다. 일 실시예에서, 매체 유닛은 QLC NAND 매체 유닛이다. 제1 GC 커맨드를 부분적으로 프로세싱하는 것은, 도 5b에 기술된 바와 같이, 제1 GC 커맨드와 연관된 유효 데이터를 판독하는 것, 및 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 제1 GC 커맨드와 연관된 유효 데이터를 부분적으로 기록하거나 이의 제1 패스 프로그래밍(즉, 데이터의 '포기' 프로그래밍)을 수행하는 것을 포함할 수 있다. 유효 데이터의 부분 기록은 제1 시간 동안 제1 페이지 또는 제1 NAND 위치의 각각의 셀에 인가되는 제1 전압 타깃에서 수행된다. 제어기는 선택적으로 제1 GC 커맨드와 연관된 유효 데이터를 폐기할 수 있다.
작업(804)에서, 제1 GC 커맨드와 연관된 유효 데이터는 제1 GC 수집 커맨드의 프로세싱을 완료하기 위해 제2 시간에 인입되거나 DMA 판독되고, 제1 GC 커맨드와 연관된 유효 데이터는 제2 GC 커맨드를 수신하는 것을 대기하지 않고서 제1 소거 블록 내의 제1 페이지 또는 제1 NAND 위치에 재기록된다. 도 5b에 기술된 바와 같이, 제1 GC 커맨드와 연관된 유효 데이터를 재기록하는 것은 제1 전압 레벨보다 더 큰 제2 전압 레벨에서 수행되고, 데이터의 제2 패스 프로그래밍(즉, 데이터의 '파인' 프로그래밍)이다. 제2 전압 레벨은 커맨드의 프로세싱을 위한 목표 전압 레벨이다. 제1 GC 커맨드와 연관된 유효 데이터의 제2 패스 프로그래밍은 저장 디바이스가 다른 커맨드들을 프로세싱하기 때문에 백그라운드에서 발생할 수 있다. 그와 같이, 저장 디바이스는 제1 GC 커맨드를 '담보물'로 유지하지 않는다. 일단 제1 GC 커맨드의 프로세싱이 완료되면, 유효 데이터는 매체 유닛으로부터 한 번 더 판독가능하다.
상기 방법은 호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 충분히 큰(즉, 호스트 커맨드와 연관된 데이터가 하나의 페이지 크기 또는 하나의 NAND 위치 크기와 같음) 실시예를 설명한다. 그러나, 호스트 기록 커맨드가 너무 작아서 페이지 또는 NAND 위치를 채우기에 너무 작은(즉, 호스트 커맨드와 연관된 데이터는 하나의 페이지 크기 또는 하나의 NAND 위치 크기보다 작음) 또는 하나의 페이지 또는 하나의 NAND 위치에 대해 너무 큰(즉, 호스트 커맨드와 연관된 데이터는 하나의 페이지 크기 또는 하나의 NAND 위치 크기보다 큼) 실시예들에서, 상기 방법은 여전히 적용가능하다.
호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 너무 큰 실시예들에서, 호스트 기록 커맨드와 연관된 데이터는 먼저 페이지 크기들 또는 NAND 위치 크기들로 나누어진다. 호스트 기록 커맨드와 연관된 데이터가 페이지 또는 NAND 위치를 채우기에 너무 작은 실시예들에서, 페이지 또는 NAND 위치를 채우기 위해 하나 초과의 호스트 커맨드가 필요할 수 있고, 페이지 또는 NAND 위치를 채우기 위해 다수의 호스트 기록 커맨드들이 병합될 수 있다. 또한, 페이지 또는 NAND 위치를 채우기에 너무 작은 호스트 기록 커맨드들이 선택적으로 통합될 수 있다. 기록 커맨드들을 통합하는 것은 이용될 수 있는 저장 디바이스에 의한 독립적인 결정이고, 저장 디바이스는 기록 커맨드들을 통합할지 여부를 선택할 때 큐 깊이를 고려할 수 있다.
제1 커맨드와 연관된 데이터를 소거 블록에 부분적으로 기록하라는 제1 커맨드와 연관된 데이터의 제1 패스 프로그래밍을 수행하고 이어서 제2 커맨드를 수신 시에 제1 커맨드와 연관된 데이터의 제2 패스 프로그래밍을 수행함으로써, 제1 커맨드와 연관된 데이터는 데이터의 기록이 완료될 때까지 호스트 디바이스 내에 저장될 수 있다. 그렇게 함에 있어서, DRAM 및/또는 SRAM과 같은, 제어기의 휘발성 메모리 공간은 공간을 절약한다. 제어기의 내부 메모리보다는, 커맨드들을 프로세싱하는 동안 호스트 디바이스에 데이터를 저장함으로써, 전체 SSD 성능, 처리량, 및 효율성이 개선된다. 더욱이, 커맨드들을 프로세싱하는 동안 소비되는 전력의 양은 감소되고, 이는 이어서 제어기와 연관된 비용들을 감소시킨다.
일 실시예에서, 저장 디바이스는 매체 유닛 및 매체 유닛에 커플링된 제어기를 포함하고, 여기서 매체 유닛의 용량은 복수의 구역들로 분할된다. 제어기는 매체 유닛의 제1 소거 블록 내의 제1 페이지에 데이터를 기록하라는 제1 커맨드를 검색하도록 - 제1 소거 블록은 복수의 구역들 중 제1 구역에 배치됨 -, 제1 소거 블록 내의 제2 페이지에 데이터를 기록하라는 제2 커맨드를 검색하도록, 그리고 제2 커맨드의 검색 시에, 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 기록하도록 구성된다.
제1 커맨드와 연관된 데이터는, 제1 커맨드와 연관된 데이터가 제2 커맨드를 수신 시에 제1 페이지에 기록될 때까지 호스트 디바이스 내에 저장될 수 있다. 제어기는, 제2 커맨드를 검색하기 전에 제1 시간 동안 인가되는 제1 전압 타깃에서 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 부분적으로 기록하도록 - 제1 커맨드와 연관된 데이터는 제1 시간보다 더 큰 제2 시간 동안 인가되는 제2 전압 타깃에서 제1 페이지에 기록됨 -, 그리고 제1 커맨드와 연관된 데이터를 제1 페이지에 기록한 후에 제1 커맨드의 완료를 시그널링하도록 추가로 구성될 수 있다. 제어기는, 제1 커맨드의 완료를 시그널링한 후에 제1 소거 블록 내의 제3 페이지에 데이터를 기록하라는 제3 커맨드를 검색하도록, 제3 커맨드를 검색 시에, 제2 커맨드와 연관된 데이터를 제1 소거 블록 내의 제2 페이지에 기록하도록, 그리고 제2 커맨드의 완료를 시그널링하도록 추가로 구성될 수 있다.
제어기는, 제3 커맨드를 검색하기 전에 제1 시간 동안 인가되는 제1 전압 타깃에서 제1 소거 블록 내의 제2 페이지에 제2 커맨드와 연관된 데이터를 부분적으로 기록하도록 - 제2 커맨드와 연관된 데이터는 제1 시간보다 더 큰 제2 시간 동안 인가되는 제2 전압 타깃에서 제2 페이지에 기록됨 -, 그리고 제2 커맨드와 연관된 데이터를 제2 페이지에 기록한 후에 제2 커맨드의 완료를 시그널링하도록 추가로 구성될 수 있다. 제어기는, 제2 커맨드의 완료를 시그널링한 후에 제1 소거 블록 내의 제4 페이지에 데이터를 기록하라는 제4 커맨드를 검색하도록, 제4 커맨드를 검색 시에, 제3 커맨드와 연관된 데이터를 제1 소거 블록 내의 제3 페이지에 기록하도록, 그리고 제3 커맨드의 완료를 시그널링하도록 추가로 구성될 수 있다.
다른 실시예에서, 저장 디바이스는 매체 유닛을 포함한다. 매체 유닛의 용량은 복수의 구역들로 분할된다. 저장 디바이스는 매체 유닛에 커플링된 제어기를 추가로 포함한다. 제어기는 복수의 구역들 중 제1 구역의 제1 소거 블록 내의 제1 페이지에 데이터를 부분적으로 기록하라는 제1 커맨드와 연관된 데이터의 제1 패스 프로그래밍을 수행하도록, 제1 소거 블록 내의 제2 페이지에 데이터를 부분적으로 기록하라는 제2 커맨드와 연관된 데이터의 제1 패스 프로그래밍을 수행하도록, 제2 커맨드와 연관된 데이터의 제1 패스 프로그래밍의 수행 시에, 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 기록하라는 제2 패스 프로그래밍을 수행하도록 구성된다.
제1 커맨드와 연관된 데이터는, 제2 패스 프로그래밍을 수행 시에 제1 커맨드와 연관된 데이터가 제1 페이지에 기록될 때까지 호스트 디바이스 내에 저장될 수 있다. 제1 패스 프로그래밍은 제1 시간 동안 인가되는 제1 전압 타깃에서 수행될 수 있고, 제2 패스 프로그래밍은 제1 시간보다 더 큰 제2 시간 동안 인가되는 제2 전압 타깃에서 수행될 수 있다. 제어기는 제1 커맨드와 연관된 데이터의 제2 패스 프로그래밍이 완료된 후에 제1 커맨드의 완료를 시그널링하도록 추가로 구성될 수 있다.
제어기는, 제1 완료 엔트리를 기록한 후에 제1 소거 블록 내의 제3 페이지에 데이터를 기록하라는 제3 커맨드를 검색하도록, 제1 소거 블록 내의 제3 페이지에 데이터를 부분적으로 기록하기 위해 제3 커맨드와 연관된 데이터의 제1 패스 프로그래밍을 수행하도록, 제3 커맨드를 검색 시에, 제2 커맨드와 연관된 데이터를 제1 소거 블록 내의 제2 페이지에 기록하기 위해 제2 패스 프로그래밍을 수행하도록 추가로 구성될 수 있다. 제어기는 제2 커맨드와 연관된 데이터가 제2 페이지에 기록된 후에 제2 커맨드의 완료를 시그널링하도록 추가로 구성될 수 있다. 제2 커맨드와 연관된 데이터는, 제2 패스 프로그래밍을 수행 시에 제2 커맨드와 연관된 데이터가 제2 페이지에 기록될 때까지 호스트 디바이스 내에 저장될 수 있다.
또 다른 실시예에서, 저장 디바이스는 매체 유닛 - 매체 유닛의 용량은 복수의 구역들로 분할됨 -, 및 매체 유닛에 커플링된 제어기를 포함한다. 제어기는 저장 디바이스의 제1 소거 블록 내의 제1 페이지에 데이터를 기록하라는 제1 커맨드를 검색하도록 - 제1 소거 블록은 복수의 구역들 중 제1 구역에 배치됨 -, 제1 시간 동안 인가되는 제1 전압 타깃에서 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 부분적으로 기록하도록, 제1 소거 블록 내의 제2 페이지에 데이터를 기록하라는 제2 커맨드를 검색하도록, 제1 전압 타깃에서 제1 소거 블록 내의 제2 페이지에 제2 커맨드와 연관된 데이터를 부분적으로 기록하도록, 그리고 제2 커맨드의 검색 시에, 제2 시간 동안 인가되는 제2 전압 타깃에서 제1 소거 블록 내의 제1 페이지에 제1 커맨드와 연관된 데이터를 기록하도록 - 제2 시간은 제1 시간보다 더 큼 - 구성된다.
제1 커맨드와 연관된 데이터는, 제1 커맨드와 연관된 데이터가 제2 전압 타깃에서 기록될 때까지 호스트 디바이스에 저장될 수 있다. 제어기는 제1 커맨드와 연관된 데이터를 제1 페이지에 기록한 후에 제1 커맨드의 완료를 시그널링하도록, 제1 소거 블록 내의 제3 페이지에 데이터를 기록하라는 제3 커맨드를 검색하도록, 제1 전압 타깃에서 제1 소거 블록 내의 제3 페이지에 제3 커맨드와 연관된 데이터를 부분적으로 기록하도록, 제3 커맨드를 검색 시에, 제2 전압 타깃에서 제1 소거 블록 내의 제2 페이지에 제2 커맨드와 연관된 데이터를 기록하도록, 그리고 제2 커맨드의 완료를 시그널링하도록 추가로 구성될 수 있다.
제2 커맨드와 연관된 데이터는, 제2 커맨드와 연관된 데이터가 제2 전압 타깃에서 기록될 때까지 호스트 디바이스에 저장될 수 있다. 제어기는 제2 기록 커맨드에 대응하는 제2 완료 엔트리를 기록한 후에 제1 소거 블록 내의 제4 페이지에 데이터를 기록하라는 제4 커맨드를 검색하도록, 제1 전압 타깃에서 제1 소거 블록 내의 제4 페이지에 제4 커맨드와 연관된 데이터를 부분적으로 기록하도록, 제4 커맨드를 검색 시에, 제2 전압 타깃에서 제1 소거 블록 내의 제3 페이지에 제3 커맨드와 연관된 데이터를 기록하도록, 그리고 제2 커맨드의 완료를 시그널링하도록 추가로 구성될 수 있다.
전술한 것은 본 발명의 실시예들에 관한 것이지만, 본 발명의 다른 및 추가 실시예들이 본 발명의 기본 범주로부터 벗어남이 없이 고안될 수 있으며, 본 발명의 그 범주는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 저장 디바이스로서,
    매체 유닛 - 상기 매체 유닛의 용량은 복수의 구역들로 분할됨 -; 및
    상기 매체 유닛에 커플링된 제어기를 포함하며, 상기 제어기는,
    상기 매체 유닛의 제1 소거 블록 내의 제1 페이지에 데이터를 기록하라는 제1 커맨드를 검색하도록 - 상기 제1 소거 블록은 상기 복수의 구역들 중 제1 구역 내에 배치됨 -;
    상기 제1 소거 블록 내의 제2 페이지에 데이터를 기록하라는 제2 커맨드를 검색하도록; 그리고
    상기 제2 커맨드를 검색 시에, 상기 제1 소거 블록 내의 상기 제1 페이지에 상기 제1 커맨드와 연관된 데이터를 기록하도록 구성되는, 저장 디바이스.
  2. 제1항에 있어서, 상기 제1 커맨드와 연관된 데이터는, 상기 제1 커맨드와 연관된 데이터가 상기 제2 커맨드를 수신할 시에 상기 제1 페이지에 기록될 때까지 호스트 디바이스에 저장되는, 저장 디바이스.
  3. 제1항에 있어서, 상기 제어기는,
    상기 제2 커맨드를 수신하기 전에 제1 시간 동안 인가되는 제1 전압 타깃에서 상기 제1 소거 블록 내의 상기 제1 페이지에 상기 제1 커맨드와 연관된 데이터를 부분적으로 기록하도록 - 상기 제1 커맨드와 연관된 데이터는 상기 제1 시간보다 더 큰 제2 시간 동안 인가되는 제2 전압 타깃에서 상기 제1 페이지에 기록됨 -; 그리고
    상기 제1 커맨드와 연관된 데이터를 상기 제1 페이지에 기록한 후에 상기 제1 커맨드의 완료를 시그널링하도록 추가로 구성되는, 저장 디바이스.
  4. 제3항에 있어서, 상기 제어기는,
    상기 제1 커맨드의 완료를 시그널링한 후에 상기 제1 소거 블록 내의 제3 페이지에 데이터를 기록하라는 제3 커맨드를 검색하도록;
    상기 제3 커맨드를 검색 시에, 상기 제2 커맨드와 연관된 데이터를 상기 제1 소거 블록 내의 상기 제2 페이지에 기록하도록; 그리고
    상기 제2 커맨드의 완료를 시그널링하도록 추가로 구성되는, 저장 디바이스.
  5. 제4항에 있어서, 상기 제어기는,
    상기 제3 커맨드를 검색하기 전에 제1 시간 동안 인가되는 제1 전압 타깃에서 상기 제1 소거 블록 내의 상기 제2 페이지에 상기 제2 커맨드와 연관된 데이터를 부분적으로 기록하도록 - 상기 제2 커맨드와 연관된 데이터는 상기 제1 시간보다 더 큰 제2 시간 동안 인가되는 제2 전압 타깃에서 상기 제2 페이지에 기록됨 -; 그리고
    상기 제2 커맨드와 연관된 데이터를 상기 제2 페이지에 기록한 후에 상기 제2 커맨드의 완료를 시그널링하도록 추가로 구성되는, 저장 디바이스.
  6. 제5항에 있어서, 상기 제2 커맨드와 연관된 데이터는, 상기 제2 커맨드와 연관된 데이터가 상기 제2 전압 타깃에서 상기 제2 페이지에 기록될 때까지 호스트 디바이스에 저장되는, 저장 디바이스.
  7. 제5항에 있어서, 상기 제어기는,
    상기 제2 완료 엔트리를 기록한 후에 상기 제1 소거 블록 내의 제4 페이지에 데이터를 기록하라는 제4 커맨드를 검색하도록;
    상기 제4 커맨드를 검색 시에, 상기 제1 소거 블록 내의 상기 제3 페이지에 상기 제3 커맨드와 연관된 데이터를 기록하도록; 그리고
    상기 제3 커맨드의 완료를 시그널링하도록 추가로 구성되는, 저장 디바이스.
  8. 저장 디바이스로서,
    매체 유닛 - 상기 매체 유닛의 용량은 복수의 구역들로 분할됨 -; 및
    상기 매체 유닛에 커플링된 제어기를 포함하며, 상기 제어기는,
    상기 복수의 구역들 중 제1 구역의 제1 소거 블록 내의 제1 페이지에 데이터를 부분적으로 기록하라는 제1 커맨드와 연관된 데이터의 제1 패스 프로그래밍을 수행하도록;
    상기 제1 소거 블록 내의 제2 페이지에 데이터를 부분적으로 기록하라는 제2 커맨드와 연관된 데이터의 상기 제1 패스 프로그래밍을 수행하도록; 그리고
    상기 제2 커맨드와 연관된 데이터의 상기 제1 패스 프로그래밍을 수행 시에, 상기 제1 커맨드와 연관된 데이터를 상기 제1 소거 블록 내의 상기 제1 페이지에 기록하기 위해 제2 패스 프로그래밍을 수행하도록 구성되는, 저장 디바이스.
  9. 제8항에 있어서, 상기 제1 커맨드와 연관된 데이터는, 상기 제1 커맨드와 연관된 데이터가 상기 제2 패스 프로그래밍을 수행 시에 상기 제1 페이지에 기록될 때까지 호스트 디바이스에 저장되는, 저장 디바이스.
  10. 제8항에 있어서, 상기 제1 패스 프로그래밍은 제1 시간 동안 인가되는 제1 전압 타깃에서 수행되고, 상기 제2 패스 프로그래밍은 상기 제1 시간보다 더 큰 제2 시간 동안 인가되는 제2 전압 타깃에서 수행되는, 저장 디바이스.
  11. 제8항에 있어서, 상기 제어기는,
    상기 제1 커맨드와 연관된 데이터의 상기 제2 패스 프로그래밍이 완료된 후에 상기 제1 커맨드의 완료를 시그널링하도록 추가로 구성되는, 저장 디바이스.
  12. 제11항에 있어서, 상기 제어기는,
    상기 제1 소거 블록 내의 제3 페이지에 데이터를 기록하라는 제3 커맨드를 검색하도록;
    상기 제1 소거 블록 내의 상기 제3 페이지에 데이터를 부분적으로 기록하라는 상기 제3 커맨드와 연관된 데이터의 상기 제1 패스 프로그래밍을 수행하도록; 그리고
    상기 제3 커맨드를 검색 시에, 상기 제2 커맨드와 연관된 데이터를 상기 제1 소거 블록 내의 상기 제2 페이지에 기록하기 위해 상기 제2 패스 프로그래밍을 수행하도록 추가로 구성되는, 저장 디바이스.
  13. 제12항에 있어서, 상기 제어기는,
    상기 제2 커맨드와 연관된 데이터가 상기 제2 페이지에 기록된 후에 상기 제2 커맨드의 완료를 시그널링하도록 추가로 구성되는, 저장 디바이스.
  14. 제12항에 있어서, 상기 제2 커맨드와 연관된 데이터는, 상기 제2 커맨드와 연관된 데이터가 상기 제2 패스 프로그래밍을 수행 시에 상기 제2 페이지에 기록될 때까지 호스트 디바이스에 저장되는, 저장 디바이스.
  15. 저장 디바이스로서,
    매체 유닛 - 상기 매체 유닛의 용량은 복수의 구역들로 분할됨 -; 및
    상기 매체 유닛에 커플링된 제어기를 포함하며, 상기 제어기는,
    상기 매체 유닛의 제1 소거 블록 내의 제1 페이지에 데이터를 기록하라는 제1 커맨드를 검색하도록 - 상기 제1 소거 블록은 상기 복수의 구역들 중 제1 구역 내에 배치됨 -;
    제1 시간 동안 인가되는 제1 전압 타깃에서 상기 제1 소거 블록 내의 상기 제1 페이지에 상기 제1 커맨드와 연관된 데이터를 부분적으로 기록하도록;
    상기 제1 소거 블록 내의 제2 페이지에 데이터를 기록하라는 제2 커맨드를 검색하도록;
    상기 제1 전압 타깃에서 상기 제1 소거 블록 내의 상기 제2 페이지에 상기 제2 커맨드와 연관된 데이터를 부분적으로 기록하도록; 그리고
    상기 제2 커맨드를 검색 시에, 제2 시간 동안 인가되는 제2 전압 타깃에서 상기 제1 소거 블록 내의 상기 제1 페이지에 상기 제1 커맨드와 연관된 데이터를 기록하도록 - 상기 제2 시간은 상기 제1 시간보다 더 큼 - 구성되는, 저장 디바이스.
  16. 제15항에 있어서, 상기 제1 커맨드와 연관된 데이터는, 상기 제1 커맨드와 연관된 데이터가 상기 제2 전압 타깃에서 기록될 때까지 호스트 디바이스에 저장되는, 저장 디바이스.
  17. 제15항에 있어서, 상기 제어기는,
    상기 제1 커맨드와 연관된 데이터를 상기 제1 페이지에 기록한 후에 상기 제1 커맨드에 대응하는 제1 완료 엔트리를 기록하도록;
    제1 기록 커맨드에 대응하는 상기 제1 완료 엔트리를 기록한 후에 상기 제1 소거 블록 내의 제3 페이지에 데이터를 기록하라는 제3 커맨드를 검색하도록; 그리고
    상기 제1 전압 타깃에서 상기 제1 소거 블록 내의 상기 제3 페이지에 상기 제3 커맨드와 연관된 데이터를 부분적으로 기록하도록 추가로 구성되는, 저장 디바이스.
  18. 제17항에 있어서, 상기 제어기는,
    상기 제3 커맨드를 검색 시에, 상기 제2 전압 타깃에서 상기 제1 소거 블록 내의 상기 제2 페이지에 상기 제2 커맨드와 연관된 데이터를 기록하도록; 그리고
    상기 제2 커맨드의 완료를 시그널링하도록 추가로 구성되는, 저장 디바이스.
  19. 제18항에 있어서, 상기 제2 커맨드와 연관된 데이터는, 상기 제2 커맨드와 연관된 데이터가 상기 제2 전압 타깃에서 기록될 때까지 호스트 디바이스에 저장되는, 저장 디바이스.
  20. 제18항에 있어서, 상기 제어기는,
    상기 제2 기록 커맨드에 대응하는 상기 제2 완료 엔트리를 기록한 후에 상기 제1 소거 블록 내의 제4 페이지에 데이터를 기록하라는 제4 커맨드를 검색하도록;
    상기 제1 전압 타깃에서 상기 제1 소거 블록 내의 상기 제4 페이지에 상기 제4 커맨드와 연관된 데이터를 부분적으로 기록하도록;
    상기 제4 커맨드를 검색 시에, 상기 제2 전압 타깃에서 상기 제1 소거 블록 내의 상기 제3 페이지에 상기 제3 커맨드와 연관된 데이터를 기록하도록; 그리고
    상기 제2 커맨드의 완료를 시그널링하도록 추가로 구성되는, 저장 디바이스.
KR1020217017955A 2019-06-28 2019-12-17 구역화된 네임스페이스들에서의 기록 커맨드들의 유지 KR20210096133A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962868792P 2019-06-28 2019-06-28
US62/868,792 2019-06-28
US16/696,830 2019-11-26
US16/696,830 US20200409601A1 (en) 2019-06-28 2019-11-26 Hold of Write Commands in Zoned Namespaces
PCT/US2019/066895 WO2020263322A1 (en) 2019-06-28 2019-12-17 Hold of write commands in zoned namespaces

Publications (1)

Publication Number Publication Date
KR20210096133A true KR20210096133A (ko) 2021-08-04

Family

ID=74042852

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217017955A KR20210096133A (ko) 2019-06-28 2019-12-17 구역화된 네임스페이스들에서의 기록 커맨드들의 유지

Country Status (5)

Country Link
US (1) US20200409601A1 (ko)
KR (1) KR20210096133A (ko)
CN (1) CN113168374A (ko)
DE (1) DE112019005511T5 (ko)
WO (1) WO2020263322A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200082B2 (en) 2019-10-31 2021-12-14 EMC IP Holding Company LLC Data storage system employing dummy namespaces for discovery of NVMe namespace groups as protocol endpoints
US11435914B2 (en) * 2020-03-30 2022-09-06 Western Digital Technologies, Inc. Dynamic ZNS open zone active limit
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11340987B1 (en) * 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
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
US11861231B2 (en) 2021-12-16 2024-01-02 Netapp, Inc. Scalable solid-state storage system and methods thereof
US11940911B2 (en) 2021-12-17 2024-03-26 Netapp, Inc. Persistent key-value store and journaling system
CN117369729B (zh) * 2023-12-04 2024-02-06 武汉麓谷科技有限公司 一种zns ssd的附加写入实现方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7298648B2 (en) * 2004-11-19 2007-11-20 Samsung Electronics Co., Ltd. Page buffer and multi-state nonvolatile memory device including the same
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
JP2011022760A (ja) * 2009-07-15 2011-02-03 Hagiwara Sys-Com:Kk データ消去方法及び情報機器
JP5538970B2 (ja) * 2010-03-25 2014-07-02 キヤノン株式会社 情報処理装置、データ処理方法、プログラム
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
CN104298465B (zh) * 2013-07-17 2017-06-20 光宝电子(广州)有限公司 固态储存装置中的区块分组方法
CN106909318B (zh) * 2013-12-23 2020-05-08 华为技术有限公司 固态硬盘使用方法及装置
US9588701B2 (en) * 2014-09-09 2017-03-07 Sandisk Technologies Llc Multi-stage programming at a storage device using multiple instructions from a host
CN104461391B (zh) * 2014-12-05 2019-08-02 上海宝存信息科技有限公司 一种存储设备元数据管理处理方法及系统
US9575669B2 (en) * 2014-12-09 2017-02-21 Western Digital Technologies, Inc. Programmable solid state drive controller and method for scheduling commands utilizing a data structure
KR102372828B1 (ko) * 2015-12-30 2022-03-14 에스케이하이닉스 주식회사 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
US10025522B2 (en) * 2016-04-15 2018-07-17 Sandisk Technologies Llc Memory interface command queue throttling
US9927981B2 (en) * 2016-08-29 2018-03-27 Seagate Technology Llc Hybrid data storage device with partitioned local memory
US10534709B2 (en) * 2016-08-31 2020-01-14 Sandisk Technologies Llc Flush command consolidation
US10354737B2 (en) * 2017-06-22 2019-07-16 Western Digital Technologies, Inc. Non-volatile memory sub-block erasure disturb management scheme
US10114586B1 (en) * 2017-06-22 2018-10-30 Western Digital Technologies, Inc. System and method for using host command data buffers as extended memory device volatile memory
US10109361B1 (en) * 2017-06-29 2018-10-23 Intel Corporation Coarse pass and fine pass multi-level NVM programming
US10789011B2 (en) * 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer

Also Published As

Publication number Publication date
CN113168374A (zh) 2021-07-23
DE112019005511T5 (de) 2021-09-16
US20200409601A1 (en) 2020-12-31
WO2020263322A1 (en) 2020-12-30

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
KR20210096133A (ko) 구역화된 네임스페이스들에서의 기록 커맨드들의 유지
KR20210079394A (ko) 솔리드 스테이트 드라이브들 내의 zns들
US11500727B2 (en) ZNS parity swapping to DRAM
US11436153B2 (en) Moving change log tables to align to zones
US11210027B2 (en) Weighting of read commands to zones in storage devices
US20210373809A1 (en) Write Data-Transfer Scheduling in ZNS Drive
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
US20210334032A1 (en) Weighted Read Commands And Open Block Timer For Storage Devices

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal