KR20240017956A - Zns ssd 내의 수퍼 디바이스에 걸친 수퍼 블록 할당 - Google Patents

Zns ssd 내의 수퍼 디바이스에 걸친 수퍼 블록 할당 Download PDF

Info

Publication number
KR20240017956A
KR20240017956A KR1020247000921A KR20247000921A KR20240017956A KR 20240017956 A KR20240017956 A KR 20240017956A KR 1020247000921 A KR1020247000921 A KR 1020247000921A KR 20247000921 A KR20247000921 A KR 20247000921A KR 20240017956 A KR20240017956 A KR 20240017956A
Authority
KR
South Korea
Prior art keywords
super
zone
data storage
storage device
devices
Prior art date
Application number
KR1020247000921A
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 KR20240017956A publication Critical patent/KR20240017956A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 저장 디바이스는 메모리 디바이스, 및 메모리 디바이스에 결합된 제어기를 포함한다. 메모리 디바이스는 복수의 수퍼 디바이스들을 포함한다. 제어기는 복수의 수퍼 디바이스들의 각각의 수퍼 디바이스에 대한 자유 공간의 양에 대한 자유 공간 임계치를 설정하고, 제1 수퍼 디바이스가 자유 공간 임계값에 도달했다고 결정하고, 어떠한 새로운 수퍼 블록들을 할당하지 않고 복수의 수퍼 디바이스들 중에서 모두 새로운 수퍼 블록들을 제1 수퍼 디바이스에 할당하도록 구성된다. 수퍼 블록들은 자유 공간 임계값 라운드 로빈 미만인 수퍼 디바이스들 각각에 분산 또는 할당된다.

Description

ZNS SSD 내의 수퍼 디바이스에 걸친 수퍼 블록 할당
관련 출원(들)의 상호 참조
본 출원은 모든 목적을 위해 2021년 8월 25일에 출원되고 명칭이 "SUPER BLOCK ALLOCATION ACROSS SUPER DEVICE IN ZNS SSD"인 미국 정규 출원 제17/412,151호의 내용 전문의 이익을 주장하고, 이를 본 명세서에 참고로 통합한다.
본 개시내용의 배경
개시내용의 분야
본 개시내용의 실시예는 일반적으로, 솔리드 스테이트 드라이브들(SSD들)과 같은, 구역화된 네임스페이스(ZNS) 아키텍처를 갖는 데이터 저장 디바이스에 관한 것이다.
ZNS SSD들은 순차 전용 구역들 및 구역 랜덤 기록 영역(ZRWA)을 지원하는 SSD들의 한 종류이다. 순차 전용 구역들 ZNS SSD에서, 구역 데이터는 덮어쓰기 없이 순차적으로 기록된다. 그러나, ZRWA ZNS SSD에서, 구역들은 무작위로 및 덮어쓰기로 기록된다. 전형적으로, ZNS SSD들은 순차 전용 구역들을 지원한다. 순차 구역을 덮어쓰기하기 위해, 구역에 다시 기록하기 전에 구역은 재설정되야 한다. 구역 재설정은 구역 내의 모든 데이터의 비-매핑이다.
데이터 저장 디바이스가 다수의 활성 구역들을 지원할 때, 각각의 구역은 기록 성능을 최대화하기 위해 상이한 수퍼 디바이스에 속하는 수퍼블록(즉, 메모리 디바이스의 하나 이상의 다이들에 걸친 블록들의 논리적 그룹화)에 맵핑되어야 한다. 예를 들어, 4개의 수퍼 디바이스들 및 4개의 활성 구역들을 포함하는 데이터 저장 디바이스에서, 각각의 구역은 성능을 최대화하기 위해 각각의 수퍼 디바이스 내의 하나의 수퍼블록에 맵핑되어야 한다. 더욱이, 구역들은 관련 구역에 기록을 시작하기 전에 재설정되어야 한다. 하나의 수퍼 디바이스 내의 수퍼 블록에 이전에 존재하였던 구역은 구역을 재설정한 후에 다른 수퍼 디바이스의 다른 수퍼 블록에 할당될 수 있다. 따라서, 구역이 이전에 존재하고 있던 하나의 수퍼 디바이스에서 자유 공간이 감소되며 구역이 할당되었던 다른 수퍼 디바이스에서 자유 공간이 증가된다. 상이한 SD들에 대한 구역들의 할당 해제 및 재할당은 기록 성능 및 기록 성능의 열화를 야기하는 데이터 저장 디바이스 내의 SD 불균형을 야기할 수 있다.
따라서, 데이터 저장 디바이스의 수퍼 디바이스들에 걸쳐 개선된 수퍼 블록 할당에 대한 필요성이 당업계에 존재한다.
본 개시내용은 일반적으로, 솔리드 스테이트 드라이브들(SSD들)과 같은, 구역화된 네임스페이스(ZNS) 아키텍처를 갖는 데이터 저장 디바이스에 관한 것이다. 데이터 저장 디바이스는 메모리 디바이스, 및 메모리 디바이스에 결합된 제어기를 포함한다. 메모리 디바이스는 복수의 수퍼 디바이스들을 포함한다. 제어기는 복수의 수퍼 디바이스들의 각각의 수퍼 디바이스에 대한 자유 공간의 양에 대한 자유 공간 임계치를 설정하고, 제1 수퍼 디바이스가 자유 공간 임계값에 도달했다고 결정하고, 어떠한 새로운 수퍼 블록들을 할당하지 않고 복수의 수퍼 디바이스들 중에서 모두 새로운 수퍼 블록들을 제1 수퍼 디바이스에 할당하도록 구성된다. 수퍼 블록들은 자유 공간 임계값 라운드 로빈 미만인 수퍼 디바이스들 각각에 분산 또는 할당된다.
일 실시예에서, 데이터 저장 디바이스는 복수의 수퍼 블록들을 갖는 메모리 디바이스 및 메모리 디바이스에 결합된 제어기를 포함한다. 제어기는 복수의 수퍼 디바이스들의 각각의 수퍼 디바이스에 대한 자유 공간의 양에 대한 자유 공간 임계값을 설정하고, 복수의 수퍼 디바이스들의 제1 수퍼 디바이스가 자유 공간 임계치에 도달했다고 결정하고, 어떠한 새로운 수퍼 블록들을 할당하지 않고 복수의 수퍼 디바이스들 중에서 모두 새로운 수퍼 블록들을 제1 수퍼 디바이스에 할당하도록 구성된다.
다른 실시예에서, 데이터 저장 디바이스는 복수의 수퍼 블록들을 갖는 메모리 디바이스 및 메모리 디바이스에 결합된 제어기를 포함한다. 제어기는 이용가능한 자유 공간의 양에 기초하여 복수의 수퍼 디바이스들의 수퍼 디바이스들에 수퍼 블록들을 할당하도록 구성되며, 수퍼 블록들은 라운드 로빈으로 할당되고, 수퍼 블록들은 자유 공간 임계값 이상인 수퍼 디바이스들에 할당되지 않는다.
다른 실시예에서, 데이터 저장 디바이스는 복수의 수퍼 블록들을 갖는 메모리 수단 및 메모리 수단에 결합된 제어기를 포함한다. 제어기는 복수의 수퍼 디바이스들 중 적어도 하나의 수퍼 디바이스가 자유 공간 임계치에 있다고 결정하고, 복수의 수퍼 디바이스들의 적어도 2개의 다른 수퍼 디바이스들에 새로운 수퍼 블록들을 균일하게 할당하고, 복수의 수퍼 디바이스들의 적어도 하나의 수퍼 디바이스의 제1 수퍼 디바이스 내의 적어도 하나의 구역을 재설정하고, 복수의 수퍼 디바이스들의 적어도 2개의 다른 수퍼 디바이스 및 제1 수퍼 디바이스에 추가적인 수퍼 블록들을 균일하게 할당하도록 구성된다.
상기에 언급된 본 개시내용의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 개시내용의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이러한 실시예들 중 일부가 첨부 도면에 예시되어 있다. 그러나, 주지해야 할 점은 첨부 도면은 본 개시내용의 전형적인 실시예들만을 예시하는 것일 뿐이고, 따라서 본 개시내용은 다른 동등하게 효과적인 실시예들을 허용할 수 있기 때문에, 본 개시내용의 범위를 제한하는 것으로 간주되어서는 안 된다는 점이다.
도 1은, 특정 실시예들에 따른, 데이터 저장 디바이스가 호스트 디바이스를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템을 예시하는 개략적인 블록도이다.
도 2a는 특정 실시예들에 따른, 저장 디바이스에서 활용되는 구역화된 네임스페이스의 예시이다.
도 2b는 특정 실시예들에 따른, 도 2a의 저장 디바이스의 구역화된 네임스페이스들을 위한 상태도의 예시이다.
도 3a는 특정 실시예들에 따른, 복수의 활성 구역들 중 하나의 활성 구역을 도 3b의 복수의 수퍼 디바이스들 중 하나의 수퍼 디바이스의 복수의 수퍼 블록들 중 하나의 수퍼 블록에 프로비저닝하는 예시이다.
도 3b는 특정 실시예들에 따른, 플래시 어레이 관리자에 의한 복수의 수퍼 디바이스들의 복수의 수퍼 블록들의 맵핑의 예시이다.
도 4는 특정 실시예들에 따른, 복수의 수퍼 블록들을 각각 갖는 복수의 수퍼 디바이스들의 예시이다.
도 5는 특정 실시예들에 따른, 수퍼 디바이스의 예시이다.
도 6은 특정 실시예들에 따른, 수퍼 블록들을 수퍼 디바이스에 할당하는 방법을 예시하는 흐름도이다.
도 7은 특정 실시예들에 따른, 수퍼 디바이스를 할당 고려에 다시 추가하는 방법을 예시하는 흐름도이다.
이해를 용이하게 하기 위해, 도면들에 공통인 동일한 요소들을 나타내기 위해 가능한 한 동일한 참조 번호들이 사용되었다. 일 실시예에 개시된 요소들은 특별한 언급 없이 다른 실시예들에서 유익하게 활용할 수 있음이 고려된다.
다음에서, 개시내용의 실시예들을 참조한다. 그러나, 개시내용은 구체적으로 설명된 실시예들에 제한되지 않음이 이해되어야 한다. 대신에, 다음의 특징들 및 요소들의 임의의 조합이, 다른 실시예들과 관련되든지 또는 그렇지 않든지 간에, 개시내용을 구현하고 실시하는 데 고려된다. 더욱이, 개시내용의 실시예들이 다른 가능한 해결책 및/또는 종래 기술에 비해 이점들을 달성할 수 있지만, 특정 이점이 소정의 실시예에 의해 달성되는지 여부는 개시내용의 제한 사항이 아니다. 따라서, 다음의 양태들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것으로, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구범위의 요소들 또는 한정사항들로 간주되지 않는다. 마찬가지로, "개시내용"이라는 언급은 본원에 개시되는 임의의 발명 주제의 일반화로서 해석되어서는 안 되며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구범위의 요소 또는 한정사항인 것으로 간주되어서는 안 된다.
본 개시내용은 일반적으로, 솔리드 스테이트 드라이브들(SSD들)과 같은, 구역화된 네임스페이스(ZNS) 아키텍처를 갖는 데이터 저장 디바이스에 관한 것이다. 데이터 저장 디바이스는 메모리 디바이스, 및 메모리 디바이스에 결합된 제어기를 포함한다. 메모리 디바이스는 복수의 수퍼 디바이스들을 포함한다. 제어기는 복수의 수퍼 디바이스들의 각각의 수퍼 디바이스에 대한 자유 공간의 양에 대한 자유 공간 임계치를 설정하고, 제1 수퍼 디바이스가 자유 공간 임계값에 도달했다고 결정하고, 어떠한 새로운 수퍼 블록들을 할당하지 않고 복수의 수퍼 디바이스들 중에서 모두 새로운 수퍼 블록들을 제1 수퍼 디바이스에 할당하도록 구성된다. 수퍼 블록들은 자유 공간 임계값 라운드 로빈 미만인 수퍼 디바이스들 각각에 분산 또는 할당된다.
도 1은, 특정 실시예들에 따른, 호스트 디바이스(104)가 데이터 저장 디바이스(106)와 통신하는 저장 시스템(100)을 예시하는 개략적인 블록도이다. 예를 들어, 호스트 디바이스(104)는 데이터를 저장 및 검색하기 위해 데이터 저장 디바이스(106)에 포함된 비휘발성 메모리(NVM)(110)를 활용할 수 있다. 호스트 디바이스(104)는 호스트 DRAM(138)을 포함한다. 일부 예들에서, 저장 시스템(100)은 저장 어레이로서 동작할 수 있는 데이터 저장 디바이스(106)와 같은 복수의 저장 디바이스들을 포함할 수 있다. 예를 들어, 저장 시스템(100)은 호스트 디바이스(104)를 위한 대용량 저장 디바이스로서 집합적으로 기능하는 저렴한/독립 디스크 중복 어레이(RAID)들로 구성된 복수의 데이터 저장 디바이스들(106)을 포함할 수 있다.
호스트 디바이스(104)는 데이터 저장 디바이스(106)와 같은 하나 이상의 저장 디바이스들에 및/또는 이들로부터 데이터를 저장 및/또는 검색할 수 있다. 도 1에 예시된 바와 같이, 호스트 디바이스(104)는 인터페이스(114)를 통해 데이터 저장 디바이스(106)와 통신할 수 있다. 호스트 디바이스(104)는 컴퓨터 서버들, 네트워크 부착 저장 (NAS) 유닛들, 데스크톱 컴퓨터들, 노트북(즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 소위 "스마트" 폰들, 소위 "스마트" 패드들과 같은,전화 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게임 콘솔들, 비디오 스트리밍 디바이스, 또는 데이터 저장 디바이스로부터 데이터를 전송하거나 수신할 수 있는 다른 디바이스들을 포함한, 광범위한 디바이스들 중 임의의 디바이스를 포함할 수 있다.
데이터 저장 디바이스(106)는 제어기(108), NVM(110), 전력 공급부(111), 휘발성 메모리(112), 인터페이스(114), 및 기록 버퍼(116)를 포함한다. 일부 예들에서, 데이터 저장 디바이스(106)는 명확성을 위해 도 1에 도시되지 않은 추가적인 구성요소들을 포함할 수 있다. 예를 들어, 데이터 저장 디바이스(106)는 데이터 저장 디바이스(106)의 구성요소들이 기계적으로 부착되고 데이터 저장 디바이스(106)의 구성요소들을 전기적으로 상호연결하는 전기 전도성 트레이스들 등을 포함하는 인쇄 회로 기판(PCB)을 포함할 수 있다. 일부 예들에서, 데이터 저장 디바이스(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 미니 카드, MiniPCI 등)를 포함하지만, 이에 제한되지 않는다. 일부 예들에서, 데이터 저장 디바이스(106)는 호스트 디바이스(104)의 마더보드에 직접 결합될 수 있다(예를 들어, 커넥터 내로 직접 솔더링 또는 플러깅될 수 있음).
인터페이스(114)는 호스트 디바이스(104)와 데이터를 교환하기 위한 데이터 버스 및 호스트 디바이스(104)와 명령을 교환하기 위한 제어 버스 중 하나 또는 둘 모두를 포함할 수 있다. 인터페이스(114)는 임의의 적합한 프로토콜에 따라 동작할 수 있다. 예를 들어, 인터페이스(114)는 하나 이상의 다음의 프로토콜들에 따라 동작할 수 있다: ATA(advanced technology attachment)(예를 들어, 직렬-ATA(SATA) 및 병렬-ATA(PATA)), 파이버 채널 프로토콜(FCP), 소형 컴퓨터 시스템 인터페이스(SCSI), 직렬로 부착된 SCSI(SAS), PCI, 및 PCIe, 불휘발성 메모리 익스프레스(NVMe), OpenCAPI, GenZ, 캐시 코히런트 인터페이스 가속기(CCIX), 오픈 채널 SSD(OCSSD) 등. 인터페이스(114)(예를 들어, 데이터 버스, 제어 버스, 또는 둘 모두)는 제어기(108)에 전기적으로 연결되고, 호스트 디바이스(104)와 제어기(108) 사이의 전기적 연결을 제공하며, 데이터가 호스트 디바이스(104)와 제어기(108) 사이에서 교환될 수 있게 한다. 일부 예에서, 인터페이스(114)의 전기적 연결은 또한 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 전력을 제공받을 수 있게 한다. 예를 들어, 도 1에 도시된 바와 같이, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 전력을 제공받을 수 있다.
NVM(110)은 복수의 메모리 디바이스들 또는 메모리 유닛들을 포함할 수 있다. NVM(110)은 데이터를 저장 및/또는 검색하도록 구성될 수 있다. 예를 들어, NVM(110)의 메모리 유닛은, 메모리 유닛이 데이터를 저장하도록 지시하는 데이터 및 메세지를 제어기(108)로부터 수신할 수 있다. 유사하게, 메모리 유닛은, 메모리 유닛이 데이터를 검색하도록 지시하는 메시지를 제어기(108)로부터 수신할 수 있다. 일부 예들에서, 메모리 유닛들 각각은 다이로 지칭될 수 있다. 일부 예들에서, NVM(110)은 복수의 다이들(즉, 복수의 메모리 유닛들)을 포함할 수 있다. 일부 예들에서, 각각의 메모리 유닛은 비교적 많은 양의 데이터(예를 들어, 128MB, 256MB, 512MB, 1GB, 2GB, 4GB, 8GB, 16GB, 32GB, 64GB, 128GB, 256GB, 512GB, 1TB 등)를 저장하도록 구성될 수 있다.
일부 예들에서, 각각의 메모리 유닛은, 플래시 메모리 디바이스들, 상변화 메모리(PCM) 디바이스들, 저항성 랜덤 액세스 메모리(ReRAM) 디바이스들, 자기 저항성 랜덤 액세스 메모리(MRAM) 디바이스들, 강유전체 랜덤 액세스 메모리(F-RAM), 홀로그래픽 메모리 디바이스들 및 임의의 다른 유형의 비휘발성 메모리 디바이스들과 같은, 임의의 유형의 비휘발성 메모리 디바이스들을 포함할 수 있다.
NVM(110)은 복수의 플래시 메모리 디바이스들 또는 메모리 유닛들을 포함할 수 있다. NVM 플래시 메모리 디바이스들은 NAND 또는 NOR 기반 플래시 메모리 디바이스들을 포함할 수 있고, 각각의 플래시 메모리 셀을 위한 트랜지스터의 플로팅 게이트에 포함된 전하에 기초하여 데이터를 저장할 수 있다. NVM 플래시 메모리 디바이스에서, 플래시 메모리 디바이스는 복수의 다이로 분할될 수 있으며, 복수의 다이의 각각의 다이는 복수의 페이지로 추가 분할될 수 있는 복수의 물리적 또는 논리적 블록을 포함한다. 특정 메모리 디바이스 내의 복수의 블록들의 각각의 블록은 복수의 NVM 셀들을 포함할 수 있다. NVM 셀들의 행들은 복수의 페이지들 중 한 페이지를 정의하도록 워드 라인을 사용하여 전기적으로 연결될 수 있다. 복수의 페이지들 각각의 각각의 셀들은 각각의 비트 라인들에 전기적으로 연결될 수 있다. 더욱이, NVM 플래시 메모리 디바이스들은 2D 또는 3D 디바이스들일 수 있고, 단일 레벨 셀(SLC), 다중 레벨 셀(MLC), 삼중 레벨 셀(TLC), 또는 4중 레벨 셀(QLC)일 수 있다. 제어기(108)는 페이지 레벨에서 NVM 플래시 메모리 디바이스들에 데이터를 기록하고 이로부터 데이터를 판독할 수 있고, 블록 레벨에서 NVM 플래시 메모리 디바이스들로부터 데이터를 소거할 수 있다.
전력 공급부(111)는 데이터 저장 디바이스(106)의 하나 이상의 구성요소에 전력을 제공할 수 있다. 표준 모드에서 동작할 때, 전력 공급부(111)는 호스트 디바이스(104)와 같은 외부 디바이스에 의해 제공된 전력을 사용하여 하나 이상의 구성요소에 전력을 제공할 수 있다. 예를 들어, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 수신된 전력을 사용하여 하나 이상의 구성요소에 전력을 제공할 수 있다. 일부 예들에서, 전력 공급부(111)는 셧다운 모드에서 동작할 때, 예를 들어 외부 디바이스로부터의 전력 수신이 중단되는 경우 하나 이상의 구성요소에 전력을 제공하도록 구성된 하나 이상의 전력 저장 구성요소를 포함할 수 있다. 이러한 방식으로, 전력 공급부(111)는 온보드 백업 전원으로서 기능할 수 있다. 하나 이상의 전력 저장 구성요소의 일부 예들은 캐패시터, 슈퍼 캐패시터, 배터리 등을 포함하지만 이에 제한되지는 않는다. 일부 예들에서, 하나 이상의 전력 저장 구성요소에 의해 저장될 수 있는 전력의 양은 하나 이상의 전력 저장 구성요소의 비용 및/또는 크기(예를 들어, 면적/체적)의 함수일 수 있다. 다시 말해서, 하나 이상의 전력 저장 구성요소에 의해 저장되는 전력의 양이 증가함에 따라, 하나 이상의 전력 저장 구성요소의 비용 및/또는 크기가 또한 증가한다.
휘발성 메모리(112)는 정보를 저장하기 위해 제어기(108)에 의해 사용될 수 있다. 휘발성 메모리(112)는 하나 이상의 휘발성 메모리 디바이스를 포함할 수 있다. 일부 실시예들에서, 제어기(108)는 휘발성 메모리(112)를 캐시로 사용할 수 있다. 예를 들어, 제어기(108)는 캐시된 정보가 NVM(110)에 기록될 때까지는 휘발성 메모리(112)에 캐시된 정보를 저장할 수 있다. 도 1에 예시된 바와 같이, 휘발성 메모리(112)는 전력 공급부(111)로부터 수신된 전력을 소비할 수 있다. 휘발성 메모리(112)의 예들은 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM(예를 들어, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 등))을 포함하지만, 이로 제한되지 않는다.
제어기(108)는 데이터 저장 디바이스(106)의 하나 이상의 동작을 관리할 수 있다. 예를 들어, 제어기(108)는 NVM(110)으로부터의 데이터 판독 및/또는 NVM(110)로의 데이터 기록을 관리할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 기록 명령을 수신하면, 제어기(108)는 NVM(110)에 데이터를 저장하도록 데이터 저장 명령을 개시하고 데이터 저장 명령의 진행을 모니터링할 수 있다. 제어기(108)는 저장 시스템(100)의 적어도 하나의 동작 특성을 결정하고 적어도 하나의 동작 특성을 NVM(110)에 저장할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 기록 명령을 수신하면, 제어기(108)는 NVM(110)에 데이터를 전송하기 전에 기록 명령과 관련된 데이터를 내부 메모리 또는 기록 버퍼(116)에 임시로 저장한다.
제어기(108)는 플래시 어레이 관리자(FAM)(150)를 포함하며, FAM(150)은 플래시 변환 계층(FTL)의 일부이다. 일부 실시예들에서, FTL은 제어기(108)에 결합될 수 있고 FAM(150)은 제어기(108)에 대해 외부에 있고 FTL에 포함된다. FAM(150)은 NVM(110)의 하나 이상의 수퍼 디바이스들(SD들)에 대한 수퍼 블록들(SB들)의 북키핑 및 할당을 다루는 모듈(예를 들어, 구성요소)이다. SD는 NVM(110)의 서브디바이스이며, 각각의 SD는 NVM(110)의 다이들의 세트를 포함한다. 예를 들어, SD가 약 32개의 다이들의 용량을 갖는 경우, 약 64개의 다이들을 포함하는 NVM은 2개의 SD들을 포함할 수 있다. 따라서, 데이터 저장 디바이스(106)는 NVM(110)의 용량이 허용할 만큼까지의 SD들을 포함할 수 있다. 마찬가지로, SB는 SD의 각각의 다이의 블록들의 세트이다. FAM(150)은 모든 SD들에 걸친 자유 SB들의 목록을 추가로 유지한다. 도 2a 및 도 2b에 설명된 구역이 SB를 요청하는 경우, FAM(150)은 그 구역에 특정 SD로부터 SB를 할당한다.
도 2a는 특정 실시예들에 따른, 데이터 저장 디바이스(200)에서 활용된 구역화된 네임스페이스(ZNS)(202) 뷰의 예시이다. 데이터 저장 디바이스(200)는 도 1의 호스트 디바이스(104)와 같은 호스트 디바이스에 ZNS(202) 뷰를 제시할 수 있다. 데이터 저장 디바이스(200)는 도 1의 저장 시스템(100)의 저장 디바이스(106)일 수 있다. 데이터 저장 디바이스(200)는 하나 이상의 ZNS(202)를 가질 수 있고, 각각의 ZNS(202)는 상이한 크기들일 수 있다. 데이터 저장 디바이스(200)는 하나 이상의 구역화된 네임스페이스(202)에 추가하여 하나 이상의 종래 네임스페이스를 더 포함할 수 있다. 또한, ZNS(202)는 SAS를 위한 존 블록 명령(ZBC) 및/또는 SATA를 위한 존 디바이스 ATA 명령 세트(ZAC)일 수 있다. 호스트측 구역 활동은 가능한 논리적 활동과 물리적 활동의 관계로 인해 존 드라이브들에서 매체 활동과 더 직접적으로 관련될 수 있다.
데이터 저장 디바이스(200)에서, ZNS(202)는 용량이 복수의 구역(206a 내지 206n)(집합적으로 구역들(206)로 지칭됨)으로 분할되도록 논리 블록들로 포맷될 수 있는 NVM의 양이다. NVM은 도 1의 저장 유닛 또는 NVM(110)일 수 있다. 구역들(206)의 각각은 메모리 유닛 또는 NVM(204)의 복수의 물리 또는 소거 블록(미도시)을 포함하고, 소거 블록들의 각각은 복수의 논리 블록(미도시)과 관련된다. 구역들(206)의 각각은 NVM 또는 NAND 디바이스의 하나 이상의 소거 블록들의 용량에 맞춰진 크기를 가질 수 있다. 제어기(208)가 호스트 디바이스(미도시) 또는 호스트 디바이스의 제출 큐로부터 명령을 수신하면, 제어기(208)는 ZNS(202)의 복수의 소거 블록(EB들)과 관련된 복수의 논리 블록으로부터 데이터를 판독하고 그에 데이터를 기록할 수 있다. 논리 블록들의 각각은 고유 LBA 또는 섹터와 관련된다.
일 실시예에서, NVM(204)은 NAND 디바이스이다. NAND 디바이스는 하나 이상의 다이를 포함한다. 하나 이상의 다이의 각각은 하나 이상의 평면을 포함한다. 하나 이상의 평면의 각각은 하나 이상의 소거 블록을 포함한다. 하나 이상의 소거 블록의 각각은 하나 이상의 워드라인(예를 들어, 256개의 워드라인들)을 포함한다. 하나 이상의 워드라인의 각각은 하나 이상의 페이지에서 어드레싱될 수 있다. 예를 들어, MLC NAND 다이는 전체 워드 라인(예를 들어, 페이지당 16KiB)의 각각의 셀 내의 2개의 비트에 도달하기 위해 상위 페이지 및 하위 페이지를 이용할 수 있다. 더욱이, 각각의 페이지는 전체 페이지 이하의 입도로 액세스될 수 있다. 제어기는 512 바이트의 사용자 데이터 입도 논리 블록 어드레스(LBA) 크기들로 NAND를 자주 액세스할 수 있다. 따라서, 아래의 설명에서 언급되는 바와 같이, NAND 위치들은 512 바이트의 입도와 동일하다. 이와 같이, MLC NAND의 2개의 페이지에 대한 16KiB의 페이지 사이즈 및 512바이트의 LBA 크기는 워드 라인당 32개의 LBA를 야기한다. 그러나, 이 NAND 위치 크기는 제한적인 것으로 의도되지 않으며, 단지 예로서 사용된다.
데이터가 소거 블록에 기록되면, NVM(204) 내에서 데이터가 위치하는 곳을추적하기 위해 구역(206) 내에서 하나 이상의 논리 블록이 대응하여 업데이트된다. 데이터는 구역(206)이 가득 채워질 때까지 한 번에 하나의 구역(206)에 기록되거나 또는 다수의 구역(206)이 부분적으로 채워질 수 있도록 다수의 구역(206)에 기록될 수 있다. 유사하게, 특정 구역(206)에 데이터를 기록할 때, 데이터는 인접한 블록으로 이동할 때까지 NAND 위치들의 순차적 순서로, 페이지 별로 또는 워드라인 별로 복수의 소거 블록들에 한 번에 하나의 블록씩 기록되거나(즉, 제2 소거 블록으로 이동하기 전에 제1 소거 블록이 가득 찰 때까지 제1 소거 블록에 기록함), 또는 병렬 방식으로 각각의 블록을 부분적으로 채우기 위해 NAND 위치들의 순차적 순서로, 페이지 별로 또는 워드라인 별로 한 번에 다수의 블록들에 기록될 수 있다(즉, 각각의 소거 블록의 제2 NAND 위치 또는 페이지에 기록하기 전에 각각의 소거 블록의 제1 NAND 위치 또는 페이지를 기록함). 모든 NAND 위치의 이러한 순차적 프로그래밍은 많은 NAND EB들의 전형적인 비제한적인 요건이다.
제어기(208)가 각각의 구역에 대해 데이터를 저장할 소거 블록들을 선택하면, 제어기(208)는 구역 개방 시간에 소거 블록들을 선택할 수 있을 것이거나, 제어기(308)는 소거 블록들을, 그러한 특정 소거 블록의 제1 워드라인을 충전하는 것이 필요하게 될 때 선택할 수 있다. 이는, 다음 소거 블록을 시작하기 전에 하나의 소거 블록을 완전히 채우는 전술된 방법이 활용될 때 더 차별화될 수 있다. 제어기(208)는 져스트 인 타임 기반으로 더 최적의 소거 블록을 선택하도록 시간 차이를 사용할 수 있다. 어느 소거 블록이 각각의 구역 및 그의 연속적인 LBA들에 대해 할당되고 배정되는 지의 결정이 제어기(208) 내에서 항상 0개 이상의 공존 구역들에 대해 일어나는 중일 수 있다.
구역들(206)의 각각은 구역 시작 논리 블록 어드레스(ZSLBA) 또는 구역 시작 섹터와 관련되어 있다 ZSLBA는 구역(206) 내의 제1 이용 가능 LBA이다. 예를 들어, 제1 구역(206a)은 ZaSLBA와 관련되고, 제2 구역(206b)은 ZbSLBA와 관련되고, 제3 구역(206c)은 ZcSLBA와 관련되고, 제4 구역(206d)은 ZdSLBA와 관련되고, 제n 구역(206n)(즉, 마지막 구역)은 ZnSLBA와 관련된다. 각각의 구역(206)은 그의 ZSLBA에 의해 식별되고, 순차적 기록들(즉, 기록 명령들이 수신되는 순서로 NVM(110)에 데이터를 기록)을 수신하도록 구성된다.
데이터가 구역(206)에 기록됨에 따라, 기록 포인터(210)는 다음 기록 시작 지점(즉, 이전 기록의 완료 지점이 후속 기록의 시작 지점과 동일함)을 추적하기 위해 데이터를 기록할 구역(206) 내의 다음 이용 가능 블록을 가리키거나 지시하기 위해 전진되거나 업데이트된다. 따라서, 기록 포인터(210)는 구역(206)에 대한 후속 기록이 시작될 곳을 지시한다. 후속 기록 명령들은 '구역 부가' 명령들이며, 후속 기록 명령과 관련된 데이터는 기록 포인터(210)가 다음 시작 지점으로서 지시하고 있는 위치에서 구역(206)에 부가된다. 구역(206) 내의 LBA들의 순서화된 리스트가 기록 순서화를 위해 저장될 수 있다. 각각의 구역(206)은 그 자신의 기록 포인터(210)를 가질 수 있다. 따라서, 기록 명령이 수신되면, 구역이 그의 ZSLBA에 의해 식별되고, 기록 포인터(210)는 식별된 구역 내에서 데이터의 기록이 시작되는 곳을 결정한다.
도 2b는 특정 실시예들에 따른, 도 2a의 데이터 저장 디바이스(200)의 ZNS(202)에 대한 상태도(250)의 예시이다. 상태도(250)에서, 각각의 구역은 비어 있는, 활성, 가득 찬, 또는 오프라인과 같은 상이한 상태에 있을 수 있다. 구역이 비어 있으면, 구역에는 데이터가 없고(즉, 구역 내의 소거 블록들 중 어느 것도 현재 데이터를 저장하고 있지 않음) 기록 포인터는 ZSLBA에 있다(즉, WP=0). 일단 기록이 구역에 대해 스케줄링되거나 또는 구역 개방 명령이 호스트에 의해 발행되면, 비어 있는 구역은 개방되고 활성 구역으로 전환된다. 구역 관리(ZM) 명령들이, 둘 모두 활성 상태들인, 구역 개방 상태와 구역 폐쇄 상태 사이로 구역을 이동시키기 위해 사용될 수 있다. 구역이 활성이면, 구역은 기록될 수 있는 개방 블록들을 포함하고, 호스트는 활성 상태에서의 권장 시간에 대한 설명을 제공받을 수 있다. 제어기(208)는 ZM을 포함한다. 구역 메타데이터는 ZM 및/또는 제어기(208)에 저장될 수 있다.
용어 "~에 기록된"은, 사용자 데이터가 모든 이용가능 NAND 위치들을 채우지 않았을 때 소거 블록 내의 0개 이상의 NAND 위치들 및/또는 소거 블록 내의 부분적으로 채워진 NAND 위치들 상에 사용자 데이터를 프로그래밍하는 것을 포함한다. 용어 "~에 기록된"은 내부 드라이브 처리 요구들(오류 비트들이 개방 소거 블록들 상에 더 빨리 축적되기 때문으로 인한 개방 블록 데이터 보존성 우려들)로 인해 구역을 가득 채움으로 이동시키는 단계, 무엇보다도 너무 많은 추적해야 할 개방 구역들, 또는 발견된 결함 상태 등과 같은 리소스 제약들로 인한 데이터 저장 디바이스(200)가 구역을 폐쇄하거나 채우는 단계, 또는 호스트 디바이스가 무엇보다도 드라이브에 전송할 데이터가 더 이상 없거나, 컴퓨터 셧다운, 호스트 상의 오류 처리, 추적을 위한 제한된 호스트 리소스 등과 같은 우려들로 인해 구역을 폐쇄하는 단계를 더 포함할 수 있다.
활성 구역들은 개방 상태 또는 폐쇄 상태 중 하나일 수 있다. 개방 구역은 기록될 준비가 되어 있고 현재 할당된 리소스들을 갖는 비어 있거나 또는 부분적으로 채워진 구역이다. 기록 명령 또는 구역 부가 명령과 함께 호스트 디바이스로부터 수신된 데이터는 현재 이전 데이터로 채워지지 않은 개방 소거 블록에 프로그래밍될 수 있다. 폐쇄 구역은 현재 계속적으로 호스트로부터 기록들을 수신하고 있지 않은 비어 있거나 또는 부분적으로 채워진 구역이다. 개방 상태로부터 폐쇄 상태로의 구역의 이동은 제어기(208)가 다른 작업들에 리소스들을 재할당할 수 있게 한다. 이들 작업들은 개방된 다른 구역들, 다른 종래의 비-구역 영역들, 또는 다른 제어기 요구들을 포함할 수 있지만, 이로 제한되지 않는다.
개방 구역 및 폐쇄 구역 둘 모두에서, 기록 포인터는 ZSLBA와 구역의 마지막 LBA의 끝 사이의 어딘가의 구역 내의 위치를 가리키고 있다(즉, WP>0). 활성 구역들은 ZM에 의한 지정에 따라, 또는 구역에 대해 기록이 스케줄링되면 개방 상태와 폐쇄 상태 사이에서 전환할 수 있다. 또한, ZM은 구역이 다시 비어 있는 구역으로 전환되도록 구역에 저장된 데이터를 치우거나 소거하기 위해 활성 구역을 재설정할 수 있다. 일단 활성 구역이 가득 채워지면, 구역은 가득 채워진 상태로 전환된다. 가득 채워진 구역은 데이터로 완전히 채워지고, 더 이상 데이터를 기록할 이용 가능한 섹터들 또는 LBA들이 없는 구역이다(즉, WP=구역 용량(ZCAP)). 가득 채워진 구역에서, 기록 포인터는 구역의 기록 가능 용량의 끝을 가리킨다. 가득 채워진 구역들에 저장된 데이터의 판독 명령들은 여전히 실행될 수 있다.
구역들은 256 MiB 또는 512 MiB와 같은 임의의 총 용량을 가질 수 있다. 그러나, 패리티 데이터를 저장하는 각각의 구역 또는 하나 이상의 제외된 블록들의 일부와 같이, 각각의 구역의 작은 일부는 데이터를 기록하기 위해 액세스 가능하지 않을 수 있지만, 여전히 판독될 수 있다. 예를 들어, 구역(206)의 총 용량이 512 MiB인 경우, ZCAP는 470 MiB일 수 있으며, 이는 데이터를 기록하는 데 이용가능한 용량인 반면, 42 MiB는 데이터를 기록하는 데 이용 불가능하다. 구역의 기록가능 용량(ZCAP)은 총 구역 저장 용량 이하이다. 데이터 저장 디바이스(200)는 구역 재설정 시에 각각의 구역의 ZCAP을 결정할 수 있다. 예를 들어, 제어기(208) 또는 ZM은 각각의 구역의 ZCAP을 결정할 수 있다. 데이터 저장 디바이스(200)는 구역이 재설정되면 구역의 ZCAP을 결정할 수 있다.
ZM은 가득 채워진 구역을 재설정하고, 구역이 다시 비어 있는 구역으로 전환되도록 구역에 저장된 데이터의 소거를 스케줄링할 수 있다. 가득 채워진 구역이 재설정되면, 구역이 기록될 준비가 된 비어 있는 구역으로서 마킹될 수 있지만, 데이터가 즉시 치워지지 않을 수 있다. 그러나, 재설정 구역은 개방되고 활성 구역으로 전환되기 전에 소거되어야 한다. 구역은 ZM 재설정과 ZM 개방 사이에 언제든지 소거될 수 있다. 구역의 재설정 시에, 데이터 저장 디바이스(200)는 재설정 구역의 새로운 ZCAP을 결정할 수 있고, 구역 메타데이터에서 기록 가능 ZCAP 속성을 업데이트할 수 있다. 오프라인 구역은 데이터를 기록하는 데 이용할 수 없는 구역이다. 오프라인 구역은 활성임이 없이 가득 채워진 상태, 비어 있는 상태, 또는 부분적으로 채워진 상태에 있을 수 있다.
구역을 재설정하는 단계는 구역에 저장된 모든 데이터를 치우거나 또는 구역에 저장된 모든 데이터의 소거를 스케줄링하기 때문에, 개별 소거 블록들의 가비지 수집에 대한 필요성이 제거되어, 데이터 저장 디바이스(200)의 전체 가비지 수집 프로세스를 개선한다. 데이터 저장 디바이스(200)는 소거를 위해 하나 이상의 소거 블록을 마킹할 수 있다. 새로운 구역이 형성될 예정이고 데이터 저장 디바이스(200)가 ZM 개방을 예상하면, 소거를 위해 마킹된 하나 이상의 소거 블록이 이어서 소거될 수 있다. 데이터 저장 디바이스(200)는 추가로 소거 블록들의 소거 시에 구역의 물리적 지원을 결정 및 생성할 수 있다. 따라서, 일단 새로운 구역이 개방되고 구역을 형성하기 위해 소거 블록들이 선택되고 있다면, 소거 블록들은 소거되었을 것이다. 또한, 구역이 재설정될 때마다, LBA들에 대한 새로운 순서 및 구역(206)에 대한 기록 포인터(210)가 선택될 수 있으며, 구역(206)이 순차적 순서를 벗어나 명령들을 수신하는 것을 허용할 수 있게 할 수 있다. 기록 포인터(210)는 명령에 대해 어떤 시작 LBA가 지시될지라도 명령이 기록될 수 있도록 선택적으로 턴 오프될 수 있다.
도 2a를 다시 참조하면, 호스트 디바이스(104)가 데이터를 구역(206)에 기록하도록 기록 명령을 송신하면, 제어기(208)는 기록 명령을 인입하고 새로 개방된 구역(206)에 대한 기록으로서 기록 명령을 식별한다. 제어기(208)는 새로 개방된 구역(206)의 기록 명령들과 관련된 데이터를 저장하기 위해 EB들의 세트를 선택하고, 새로 개방된 구역(206)은 활성 구역(206)으로 전환된다. 기록 명령은 새로운 데이터를 기록하는 명령이거나, 또는 가비지 수집 목적을 위해 유효 데이터를 다른 구역으로 이동시키는 명령일 수 있다. 제어기(208)는 호스트 디바이스에 의해서 채워진 제출 큐로부터 새로운 명령들을 DMA 판독하도록 구성된다.
활성 구역(206)으로 방금 전환된 비어 있는 구역(206)에서, 기록 포인터(210)가 ZSLBA와 관련된 논리 블록을 제1 이용 가능한 논리 블록으로서 지시하고 있기 때문에 데이터는 ZSLBA에서 시작하는 구역(206) 및 구역(206)의 순차적 LBA들의 관련된 세트에 배정된다. 데이터는 구역(206)의 물리적 위치에 할당된 하나 이상의 소거 블록 또는 NAND 위치에 기록될 수 있다. 기록 명령과 관련된 데이터가 구역(206)에 기록된 후에, 기록 포인터(210)는 호스트 기록에 이용 가능한 다음 LBA(즉, 제1 기록의 완료 지점)를 가리키도록 업데이트된다. 이러한 호스트 기록 명령으로부터의 기록 데이터는 구역의 물리적 지원을 위해 선택된 소거 블록 내의 다음 이용 가능한 NAND 위치로 순차적으로 프로그래밍된다.
예를 들어, 제어기(208)는 제3 구역(206c)에 대한 제1 기록 명령 또는 제1 구역 부가 명령을 수신할 수 있다. 호스트 디바이스(104)는 구역(206)의 어느 논리 블록에 제1 명령과 관련된 데이터를 기록할지를 순차적으로 식별한다. 이어서 제1 명령과 관련된 데이터는 기록 포인터(210)에 의해 지시된 바와 같이 제3 구역(206c) 내의 제1 또는 다음 이용 가능한 LBA(들)에 기록되며, 기록 포인터(210)는 호스트 기록을 위해 이용 가능한 다음 이용 가능한 LBA를 가리키도록 진전 또는 업데이트된다(즉, WP>0). 제어기(208)가 제3 구역(206c)에 대한 제2 기록 명령 또는 제2 구역 부가 명령을 수신하면, 제2 기록 명령과 관련된 데이터는 기록 포인터(210)에 의해 식별된 제3 구역(206c) 내의 다음 이용 가능한 LBA(들)에 기록된다. 일단 제2 명령과 관련된 데이터가 제3 구역(206c)에 기록되면, 기록 포인터(210)는 호스트 기록을 위해 이용 가능한 다음 이용 가능한 LBA를 가리키도록 다시 한 번 전진되거나 업데이트된다. 제3 구역(206c)을 재설정하는 단계는 기록 포인터(210)를 다시 ZcSLBA로 이동시키며(즉, WP=0), 제3 구역(206c)은 비어 있는 존으로 전환된다.
본원에서의 설명에서, 용어 "논리 블록"은 단순화 목적을 위해 "블록"으로 지칭될 수 있다.
도 3a는 특정 실시예들에 따른, 도 3b의 복수의 수퍼 디바이스들(354a 내지 354d) 중 하나의 수퍼 디바이스의 복수의 수퍼 블록들(356a 내지 356d) 중의 하나의 수퍼 블록에 복수의 활성 구역 (302a 내지 302h) 중의 하나의 활성 구역을 프로비저닝하는 예시이다. 도 3b는 특정 실시예들에 따른, FAM(352)에 의한 복수의 수퍼 디바이스들(354a 내지 354d)의 복수의 수퍼 블록들(356a 내지 356d)의 맵핑의 예시이다. 예시적인 목적을 위해, 도 3a 및 도 3b는 본원에서 집합적으로 설명된다. FAM(352)은 도 1의 FAM(150)일 수 있다. 활성 영역들의 수, SD들의 수 및 SB들의 수는 제한적인 것이 아니라 가능한 실시예를 제공하기 위한 것임을 이해해야 한다.
FAM(352)은 복수의 SD들(354a 내지 354d)의 각각의 복수의 SB들(356a 내지 356d)의 맵핑을 유지한다. 구역이 SB를 요청하면, FAM(352)은 그 구역에 대한 SD의 SB를 할당한다. 복수의 SD들(354a 내지 354d)의 SD들의 각각은 라운드 로빈 방식으로 FAM(352)에 의해 활성 구역에 할당된다. 예를 들어, 제1 구역(302a)은 제1 SD0(354a)과 관련되고, 제2 구역(302b)은 제2 SD1(354b)과 관련되고, 제3 구역(302c)은 제3 SD2(354c)와 관련되고, 등등이다.
FAM(352)에 의한 라운드 로빈 할당은 next_super_device_index 파라미터를 사용하여 완료된다. 다음 SB는 next_super_device_index 파라미터에 의해 각각의 SD로부터 할당된다. 초기에, next_super_device_index 파라미터는 제1 SD0(354a)으로 설정되고 각각의 SB 할당 후에 증분된다. 예를 들어, 제1 SD0(354a)의 제1 SB(356a)가 제1 구역(302a)에 할당된 후에, next_super_device_index 파라미터는 포인터가 제2 SD(354b)의 제1 SB(356a)를 가리키도록 증분된다.
next_super_device_index 파라미터가 MAX_SUPER_DEVICES 파라미터에 도달하면, next_super_device_index 파라미터는 0으로 재설정된다. MAX_SUPER_DEVICES 파라미터는 FAM(352)에 의해 맵핑된 SD들의 최대 수 또는 NVM(110)의 SD들의 최대 수이다. 도 3b를 참조하면, MAX_SUPER_DEVICES 파라미터는 4와 동일하다. 다음의 논리 진술들의 세트는 활성 구역들의 각각에 대한 SD들의 할당을 설명한다.
도 4는 특정 실시예들에 따른, 각각 복수의 수퍼 블록들(406a 내지 406n)을 갖는 복수의 수퍼 디바이스들(402a 내지 402d)의 예시이다. 도시된 SB들의 수 및 SD들의 수는 제한하고자 하는 것이 아니라, 가능한 실시예의 예를 제공하기 위한 것임을 이해해야 한다. 오히려, SB들의 수 및 SD들의 수는 도 1의 NVM(110)과 같은 관련 메모리 디바이스의 용량에 좌우될 수 있다. 복수의 SB들(406a 내지 406n)의 SB들의 각각은 각각의 SB가 구역의 크기와 동일하도록 크기설정될 수 있다. 따라서, SB 및 구역은 예시적인 목적들을 위해 본원에서 상호교환가능하게 활용될 수 있다.
데이터를 포함하는 복수의 SD들(402a 내지 402d)의 SB들 또는 구역들은 할당된 슈퍼 블록으로서 표시된다. 그렇지 않으면, 데이터를 포함하지 않는 복수의 SD들(402a 내지 402d)의 SB들 또는 구역들은 자유 공간으로서 표시된다. 데이터를 포함하는 복수의 SB들(406a 내지 406n)(예를 들어, 개방 및 활성 구역)은 콜드 구역 또는 핫 구역 중 하나로서 분류될 수 있다. 콜드 구역 또는 핫 구역으로서의 분류 또는 지정은 덮어쓰기들(즉, 재설정을 요구함)의 수 또는 구역의 재설정들의 수(즉, 재설정 카운트)에 기초할 수 있다. 핫 구역들은 더 빈번하게 덮어쓰기된 구역들이고, 콜드 구역들은 덜 빈번하게 덮어쓰기된 구역들이다. SB가 1개 초과의 구역을 포함하는 경우, SB는 콜드 구역들만, 핫 구역들만, 또는 콜드 구역들 및 핫 구역들 둘 모두를 포함할 수 있다. 일례에서, 다음의 논리 진술은 도 1의 제어기(108)와 같은 제어기에 의한 데이터 저장 디바이스(106)의 구역들의 분류를 설명할 수 있다.
zone_reset_threshold는 데이터 저장 디바이스(106) 초기화 동안 미리 설정된 값과 같은 정적 값, 또는 구역당 재설정들의 이동 평균에 기초한 값과 같은 동적 값에 기초할 수 있는 임계 재설정 값이다. 구역에 대한 재설정들의 수가 zone_reset_threshold보다 큰 경우, 제어기(108)는 구역을 핫 구역으로서 분류한다. 그러나, 구역에 대한 재설정들의 수가 zone_reset_threshold 미만인 경우, 제어기(108)는 구역을 콜드 구역으로서 분류한다.
데이터 저장 디바이스(106)의 동작 동안, 제어기(108)는 복수의 SD들에 걸쳐 콜드 구역들을 실질적으로 균일하게 분배하기 위해 하나의 SD로부터 다른 SD로 콜드 구역의 데이터를 이동시킬 수 있다. 콜드 구역의 데이터가 하나의 위치로부터 다른 위치로 이동되면, 구역 카운트(즉, 구역에 대한 재설정들의 수)가 데이터와 함께 이동된다. 콜드 구역의 데이터를 상이한 SD의 다른 구역으로 이동시킴으로써, 콜드 구역은 효과적으로 이동된다. 콜드 구역의 데이터를 상이한 위치로 이동시킨 후에, 원래 위치의 콜드 구역은 구역이 자유 공간이 되도록 재설정되거나, 새로운 데이터(예를 들어, 새로운 호스트 데이터 또는 상이한 위치로부터 이동된 데이터)로 프로그래밍될 수 있다.
더욱이, 복수의 SD들(402a 내지 402d)의 각각은 자유 공간 임계값(404)을 갖는다. 자유 공간 임계값(404)이 복수의 SD들(402a 내지 402d)의 각각에 대해 동일한 것으로 도시되어 있지만, 자유 공간 임계값(404)은 각각의 SD가 상이한 자유 공간 임계값(404)을 갖도록 SD 특정적일 수 있다. 자유 공간 임계값(404)은 자유 공간의 최소량이 유지되도록 SD로 프로그래밍될 수 있는 데이터 또는 구역들의 최대량을 나타낸다. 예를 들어, SD의 용량이 약 256GB이고 자유 공간 임계값(404)이 약 202GB인 경우, 유지될 자유 공간의 최소량은 약 54GB이다.
기록될 수 있는 SB들은 기록 활성으로 간주될 수 있고, 도 1의 제어기(108)와 같은 제어기는 기록 명령들을 스케줄링할 수 있고 데이터를 그들 SB들에 프로그래밍한다. 자유 공간 임계값(404)이 SD에 대해 도달되거나 초과되면, 도 3b의 FAM(352)과 같은 FAM은 활성 구역 요청에 대해 SD를 할당하는 것을 중지한다. 오히려, SD는 할당 고려로부터 스킵되거나 제거된다. 따라서, SB들은 다음 적격 SD로부터 할당된다. 예를 들어, 제1 SD0(402a)은 자유 공간 임계값(404)에 있고, 제4 SD3(402d)은 마지막 할당된 SD이다. 따라서, 활성 구역이 활성 구역에 대해 할당될 SB를 요청하면, FAM(352)은 제1 SD0(402a)을 스킵하고, 제2 SD1(402b)로부터 또는, 다른 예에서, 할당 고려로부터 제거되지 않는 다음 SD로부터 SB를 할당한다. 다음의 논리 진술은 할당 요청을 수신할 때 SB들의 할당을 설명할 수 있다.
도 1의 데이터 저장 디바이스(106)와 같은 데이터 저장 디바이스의 수명 동안, 구역들 또는 SB들은 구역 재설정 명령에 의해 재설정될 수 있다. 구역 또는 SB가 재설정되면, 구역 또는 SB의 데이터는 언맵핑된다. 일례에서, 유효 데이터를 포함하는 구역 또는 SB가 재설정되면, 데이터는 휘발성 메모리 또는 캐시에 일시적으로 저장될 수 있고 구역 또는 SB를 재설정한 후에 상이한 구역 또는 SB 또는 동일한 구역 또는 SB로 프로그래밍될 수 있다. 따라서, 구역 재설정 또는 가비지 수집과 같은 다른 동작으로 인해 SD의 자유 공간이 개선되고(예를 들어, 증가하면) SD가 자유 공간 임계값(404)보다 적으면, 할당 고려로부터 제거된 SD는 할당 고려로 다시 도입된다. 더욱이, 하나의 SB 또는 구역의 데이터는 균일한 마모 분포를 보장하기 위해 다른 SB 또는 구역으로 이동될 수 있다. 일부 경우들에서, 하나의 SB 또는 구역의 데이터는 하나의 SD로부터 다른 SD의 다른 SB 또는 구역으로 이동될 수 있다.
도 5는 특정 실시예들에 따른, 수퍼 디바이스(500)의 예시이다. 수퍼 디바이스(500)는 다이들(502)로 집합적으로 지칭되는 복수의 다이들(502a 내지 502n)을 포함하며, 복수의 다이들(502a 내지 502n)의 각각의 다이는 집합적으로 평면들(504)로 지칭되는 제1 평면(504a) 및 제2 평면(504b)을 포함한다. 평면들(504)의 각각은 블록(506)으로 집합적으로 지칭되는 복수의 블록들(506a 내지 506n)을 포함한다. 32개의 다이들(502)이 SD(500)에 도시되어 있지만, 임의의 수의 다이가 포함될 수 있다.
도 3b의 제1 SB(356a)와 같은 수퍼 블록은 각각의 다이(502)의 각각의 평면(504)으로부터의 블록(506)을 포함한다. 일부 예들에서, 수퍼 블록은 각각의 다이(502)의 각각의 평면(504)으로부터 하나 이상의 블록들(506)을 포함할 수 있다. 더욱이, 일부 실시예들에서, 수퍼 디바이스(500)의 하나 이상의 다이들(502)은 XOR 또는 패리티 데이터를 저장하기 위해 프로비저닝될 수 있다. 본원의 설명에서, SB 및 구역은 동일한 용량을 갖고, 예시적인 목적들을 위해 상호교환가능하게 지칭될 수 있다.
더욱이, 데이터가 B1(506b)에 기록되기 전에 데이터가 B0(506a)에 기록되도록 제1 구역에서 블록으로부터 블록으로 순차적으로 기록된다. 데이터는 또한 데이터가 제2 구역에 기록되기 전에 데이터가 제1 구역으로부터 기록되도록 구역으로부터 구역으로 순차적으로 기록된다. 구역은 위에서 논의한 바와 같이 256 MiB 또는 512 MiB와 같은 임의의 기록 가능한 용량(ZCAP)을 가질 수 있다. 복수의 구역들의 각각의 구역은 동일한 구역 용량을 가질 수 있다. 도 1의 데이터 저장 디바이스(106)와 같은 데이터 저장 디바이스가 구역 재설정 요청을 수신하면(또는 일부 경우들에서, 가비지 수집과 같은 데이터 관리 동작의 일부로서 구역 재설정 요청을 생성하면) 데이터는 구역 용량 크기에서 소거된다. 다시 말하면, 도 2b에 설명된 바와 같이, 전체 구역이 소거되거나 비어 있는 상태 구역(즉, 비어 있는 구역)으로 이동되지 않는 한 개별 블록들은 소거될 수 없다. 그러나, 데이터 저장 디바이스(106)가 부분적인 ZNS 능력을 갖는 비휘발성 메모리를 포함하는 경우, 데이터는 ZNS 능력을 갖는 비휘발성 메모리의 부분에서 구역 용량 크기로 데이터 저장 디바이스(106)로부터 소거된다. 데이터는 블록 크기로 비-ZNS 가능 비휘발성 저장 유닛으로부터 소거될 수 있다.
더욱이, 도 1의 NVM(110)과 같은 NVM의 ZNS-활성화된 부분에 저장된 데이터의 위치는 휘발성 메모리 유닛(112)과 같은 휘발성 메모리 유닛의 LBA로서 제1 논리 대 물리(L2P) 테이블에 기록된다. 도 1의 NVM(110)과 같은 NVM의 비-ZNS-활성화된 부분에 저장된 데이터의 위치는 휘발성 메모리 유닛(112)과 같은 휘발성 메모리 유닛의 LBA로서 제2 L2P 테이블에 기록된다. 휘발성 메모리 유닛(112)은 DRAM 유닛일 수 있다. 더욱이, NVM(110)은 휘발성 메모리 유닛(112)의 제1 L2P 테이블과 매칭되는 제1 L2P 테이블 및 휘발성 메모리 유닛(112)의 제2 L2P 테이블과 매칭되는 제2 L2P 테이블을 포함할 수 있다. NVM(110) 내의 L2P 테이블들은 휘발성 메모리 유닛(112)의 L2P 테이블들과 매칭하도록 업데이트된다.
L2P 테이블들은 NVM(110) 내의 데이터의 각각의 물리적 위치를 지시하는 포인터들을 포함한다. 데이터의 물리적 위치는, 포인터 어드레스 어레이가 다이로부터 NAND 위치로 맵핑된 위치를 포함하도록, 논리 어레이에 맵핑된다. 블록에서, 포인터들의 총 수는 다음과 같이 계산된다: 256 WL *3 페이지들/WL *4 슬롯들/페이지 *1 포인터/슬롯 = 3,072 포인터들. 62 개의 블록들을 포함하는 용량의 제1 구역 내에서, 190,464개의 포인터들이 존재할 수 있다(즉, 3,072 포인터들/블록 *62 블록들 = 190,464 포인터들). 각각의 포인터는 휘발성 메모리(112) 및/또는 NVM(110)의 이용 가능한 저장소를 활용하는 일정 양의 데이터를 포함한다.
도 6은 특정 실시예들에 따른, 도 3b의 제1 SB(356a)와 같은 수퍼 블록들을 도 4의 제1 SD0(402a)과 같은 수퍼 디바이스에 할당하는 방법(600)을 예시하는 흐름도이다. 방법(600)은 도 1의 제어기(108)와 같은 제어기, 또는 도 1의 FAM(150)과 같은 FAM에 의해 실행될 수 있다. 도 1의 저장 시스템(100)의 양태는 예시적인 목적으로 참조될 수 있다. 예시적인 목적들을 위해, SB는 SB 용량 및 구역 용량이 동일하도록 단일 구역의 데이터를 저장한다. 그러나, SB는 다른 실시예들에서 하나 이상의 구역들의 데이터를 저장할 수 있다.
블록(602)에서, 제어기(108)는 도 4의 자유 공간 임계값(404)과 같은 자유 공간 임계값을 수신한다. 자유 공간 임계값(404)은 전력 제공 시퀀스 동안과 같은 데이터 저장 디바이스(106) 초기화 동안 미리 설정되거나, 또는 제어기(108)에 전송된 명령 또는 요청을 통해 호스트 디바이스(104)에 의해 설정될 수 있다. 블록(604)에서, 제어기(108)는 수퍼 블록을 수퍼 디바이스에 할당하라는 요청을 수신한다. 활성 구역은 SD들 중 하나로부터의 SB에 대해 제어기(108)에 요청을 전송할 수 있다. FAM(150)은 요청을 수신하고 활성 구역에 대해 SB를 할당할 SD를 결정할 수 있다. 새로운 SB들을 한 번에 하나씩 분배하는 것을 포함하는 할당.
블록(606)에서, FAM(150)은 자유 공간 임계값(404) 이상의 임의의 SD들이 존재하는지를 결정한다. 예를 들어, 도 4의 제1 SD0(402a)은 자유 공간 임계값(404)에 있다. 블록(608)에서, FAM(150)은 할당 고려로부터 자유 공간 임계값 이상인 하나 이상의 SD들을 제거한다. SD가 할당 고려로부터 제거되면, FAM(150)은 활성 구역으로부터의 SB 요청 동안 관련 SD를 스킵한다. 예를 들어, 제1 SD0(402a)이 할당 고려로부터 제거되고 다른 3개의 SD들(402b, 402c, 402d)이 여전히 할당 고려에 있을 때, FAM(150)은 라운드 로빈 방식으로 나머지 3개의 SD들(402b, 402c, 및 402d)로부터 SB들을 할당한다. 예를 들어, FAM(150)은 제2 SD(402b)로부터 SB를 할당하고, 이어서 제3 SD(402c)로부터 SB를 할당하고, 이어서 제4 SD(402d)로부터 SB를 할당할 수 있으며 등등 이다. SD당 할당된 SB들의 수를 균일하게하기 위해, NVM(110)의 각각의 SD가 실질적으로 동일하거나 균일한 수의 할당된 SB들을 갖도록 하기 위해, FAM(150)은 블록(610)에서 가장 많은 이용 가능한 자유 공간을 갖는 SD(예를 들어, 자유 공간 임계값(404)에 도달하지 않고 가장 많은 데이터를 저장할 수 있는 SD)로부터 SB를 할당한다.
일 실시예에서, SD로부터의 SB의 할당은 라운드 로빈 방식으로 각각의 SD로부터 새로운 SB들을 할당하는 단계를 포함한다. 다른 실시예에서, SD로부터의 SB의 할당은 자유 공간의 최대량을 갖는 SD로부터 새로운 SB들을 할당하는 단계를 포함한다. 일부 실시예들에서, 새로운 SB들은 복수의 SD들로부터 불균일하게 할당되거나 분산된다. 다른 실시예들에서, 새로운 SB들은 복수의 SD들로부터 무작위로 할당되거나 분산된다. 추가적인 실시예들에서, 새로운 SB들은 복수의 SD들로부터 균일하게 할당되거나 분산된다.
도 7은 특정 실시예들에 따른, 도 4의 제1 SD0(402a)과 같은 수퍼 디바이스를 다시 할당 고려에 추가하는 방법(700)을 예시하는 흐름도이다. 방법(700)은 도 1의 제어기(108)와 같은 제어기, 또는 도 1의 FAM(150)과 같은 FAM에 의해 실행될 수 있다. 도 1의 저장 시스템(100)의 양태는 예시적인 목적으로 참조될 수 있다. 예시적인 목적들을 위해, SB는 SB 용량 및 구역 용량이 동일하도록 단일 구역의 데이터를 저장한다. 그러나, SB는 다른 실시예들에서 하나 이상의 구역들의 데이터를 저장할 수 있다.
블록(702)에서, 제어기(108)는 도 4의 자유 공간 임계값(404)과 같은 자유 공간 임계값을 수신한다. 자유 공간 임계값(404)은 전력 제공 시퀀스 동안과 같은 데이터 저장 디바이스(106) 초기화 동안 미리 설정되거나, 또는 제어기(108)에 전송된 명령 또는 요청을 통해 호스트 디바이스(104)에 의해 설정될 수 있다. 블록(704)에서, FAM(150)은 SD가 자유 공간 임계값(404)을초과한 것으로 결정한다. SD가 자유 공간 임계값(404)을 초과하였기 때문에, FAM(150)은 블록(706)에서 할당 고려로부터 SD를 제거한다. 할당 고려로부터 SD의 제거는 제어기(108) 또는 FAM(150)이 SD 또는 오히려 각각의 SD에서 자유 공간의 최소량을 유지하게 한다.
블록(708)에서, 제어기(108)는 SD의 SB에 대한 SB 재설정 명령을 수신한다. SB 재설정 명령은 구역 재설정 요청일 수 있고, 구역의 데이터는 가비지 수집과 같은 데이터 관리 동작의 일부로서 언매핑되거나, 소거되거나, 또는 일시적으로 제거된다. 블록(710)에서, FAM(150)은 SD의 SB에 대한 SB 재설정 명령이 할당 고려로부터 제거된 SD에 대한 것인지를 결정한다. 예를 들어, SD는 도 6의 블록(608)에서 할당 고려로부터 제거된 SD일 수 있다. SB 재설정 명령이 할당 고려로부터 제거된 SD에 대한 것이 아닌 경우, 블록(712)에서 관련 SB가 재설정된다.
그러나, SB 재설정 명령이 할당 고려로부터 제거된 SD에 대한 것인 경우, FAM(150) 또는 제어기(108)는 SB를 재설정하는 것이 SD가 블록(714)에서 자유 공간 임계값을 더 이상 초과하게 하지 않도록 야기할 것인지를 결정한다. SB를 재설정하는 것이 블록(712)에서 SD가 자유 공간 임계값을 더 이상 초과하게 하지 않을 경우, SB가 블록(712)에서 재설정되고, SD는 여전히 할당 고려로부터 제거된다. 그러나, 관련 SB가 재설정되고 제어기(108) 또는 FAM(150)이 SD가 더 이상 자유 공간 임계값을 초과하지 않는다고 결정하는 경우, 블록(716)에서 관련 SD가 할당 고려에 다시 추가된다.
복수의 수퍼 디바이스들에 걸쳐 수퍼 블록 할당을 관리함으로써, 데이터 저장 디바이스의 기록 성능이 개선될 수 있고 복수의 수퍼 디바이스들에 걸쳐 균일한 자유 공간이 달성될 수 있다.
일 실시예에서, 데이터 저장 디바이스는 복수의 수퍼 블록들을 갖는 메모리 디바이스 및 메모리 디바이스에 결합된 제어기를 포함한다. 제어기는 복수의 수퍼 디바이스들의 각각의 수퍼 디바이스에 대한 자유 공간의 양에 대한 자유 공간 임계값을 설정하고, 복수의 수퍼 디바이스들의 제1 수퍼 디바이스가 자유 공간 임계치에 도달했다고 결정하고, 어떠한 새로운 수퍼 블록들을 할당하지 않고 복수의 수퍼 디바이스들 중에서 모두 새로운 수퍼 블록들을 제1 수퍼 디바이스에 할당하도록 구성된다.
각각의 새로운 수퍼 블록은 구역 네임스페이스(ZNS)의 적어도 하나의 구역을 포함한다. 할당하는 단계는 모든 새로운 수퍼 블록들을 균일하게 분배하는 단계를 포함한다. 할당하는 단계는 새로운 수퍼 블록 라운드 로빈을 분배하는 단계를 포함한다. 할당하는 단계는 새로운 수퍼 블록들의 제1 수퍼 블록을 최대 양의 자유 공간을 갖는 수퍼 디바이스에 분배하는 단계를 포함한다. 할당하는 단계는 한 번에 하나씩 새로운 수퍼 블록들을 분배하는 단계를 추가로 포함한다. 분배하는 단계는 최대 양의 자유 공간을 갖는 수퍼 블록에 발생한다. 할당하는 단계는 새로운 수퍼 블록들을 무작위로 분배하는 단계를 추가로 포함한다. 할당하는 단계는 새로운 수퍼 블록들을 불균일하게 분배하는 단계를 추가로 포함한다. 제어기는, 재설정 요청 후의 제1 수퍼 디바이스가 자유 공간 임계치 미만이도록 제1 수퍼 디바이스 내의 적어도 하나의 구역에 대한 재설정 요청을 수신하도록 추가로 구성된다. 제어기는 제1 수퍼 디바이스가 자유 공간 임계치 미만인 것에 응답하여 제1 수퍼 디바이스에 적어도 하나의 추가적인 새로운 수퍼 블록을 할당하도록 추가로 구성된다.
다른 실시예에서, 데이터 저장 디바이스는 복수의 수퍼 블록들을 갖는 메모리 디바이스 및 메모리 디바이스에 결합된 제어기를 포함한다. 제어기는 이용가능한 자유 공간의 양에 기초하여 복수의 수퍼 디바이스들의 수퍼 디바이스들에 수퍼 블록들을 할당하도록 구성되며, 수퍼 블록들은 라운드 로빈으로 할당되고, 수퍼 블록들은 자유 공간 임계값 이상인 수퍼 디바이스들에 할당되지 않는다.
적어도 하나의 수퍼 디바이스는 할당 단계 전에 수퍼 블록을 갖는다. 수퍼 블록은 복수의 구역들을 포함한다. 복수의 구역들은 하나 이상의 콜드 구역, 하나 이상의 핫 구역, 또는 이들의 조합을 포함한다. 구역은 구역 재설정 카운트에 따라 핫 또는 콜드로 분류된다. 구역은 구역 재설정 카운트가 구역 재설정 임계치보다 큰 경우, 핫 구역이다. 구역은 구역 재설정 카운트가 구역 재설정 임계치보다 작은 경우, 콜드 구역이다. 데이터는 균일한 마모 분포를 보장할 수 있도록 하나의 수퍼 블록 내의 구역으로부터 다른 수퍼 블록 내의 구역으로 이동될 수 있다. 이동된 데이터는 하나의 수퍼 디바이스로부터 다른 수퍼 디바이스로 이동될 수 있다.
다른 실시예에서, 데이터 저장 디바이스는 복수의 수퍼 블록들을 갖는 메모리 수단 및 메모리 수단에 결합된 제어기를 포함한다. 제어기는 복수의 수퍼 디바이스들 중 적어도 하나의 수퍼 디바이스가 자유 공간 임계치에 있다고 결정하고, 복수의 수퍼 디바이스들의 적어도 2개의 다른 수퍼 디바이스들에 새로운 수퍼 블록들을 균일하게 할당하고, 복수의 수퍼 디바이스들의 적어도 하나의 수퍼 디바이스의 제1 수퍼 디바이스 내의 적어도 하나의 구역을 재설정하고, 복수의 수퍼 디바이스들의 적어도 2개의 다른 수퍼 디바이스 및 제1 수퍼 디바이스에 추가적인 수퍼 블록들을 균일하게 할당하도록 구성된다.
각각의 수퍼 블록은 적어도 하나의 구역을 갖고, 각각의 수퍼 블록은 하나 이상의 콜드 구역, 하나 이상의 핫 구역, 자유 공간, 또는 이들의 조합을 포함할 수 있다. 제어기는 복수의 수퍼 디바이스들에 걸쳐 냉각 구역들의 실질적으로 균일한 분포를 보장하도록 구성된다.
전술한 내용은 본 개시내용의 실시 형태들에 관한 것이지만, 본 개시내용의 다른 실시예들 및 추가 실시예들이 본 개시내용의 기본 범위로부터 벗어나지 않고 고안될 수 있으며, 본 개시내용의 범위는 다음의 청구범위에 의해 결정된다.

Claims (20)

  1. 데이터 저장 디바이스로서,
    복수의 수퍼 디바이스들을 가지는 메모리 디바이스; 및
    상기 메모리 디바이스에 결합된 제어기를 포함하고, 상기 제어기는:
    상기 복수의 수퍼 디바이스들의 각각의 수퍼 디바이스에 대한 자유 공간의 양에 대해 자유 공간 임계값을 설정하고;
    상기 복수의 수퍼 디바이스의 제1 수퍼 디바이스가 상기 자유 공간 임계값에 도달했다고 결정하고;
    임의의 새로운 수퍼 블록들을 상기 제1 수퍼 디바이스에 할당하는 단계없이 상기 복수의 수퍼 디바이스들 중에 모든 새로운 수퍼 블록들을 할당하도록 구성되는, 데이터 저장 디바이스.
  2. 제1항에 있어서, 각각의 새로운 수퍼 블록은 구역화된 네임스페이스(ZNS)의 적어도 하나의 구역을 포함하는, 데이터 저장 디바이스.
  3. 제1항에 있어서, 상기 할당하는 단계는 모든 새로운 수퍼 블록들을 균일하게 분배하는 단계를 포함하는, 데이터 저장 디바이스.
  4. 제1항에 있어서, 할당하는 단계는 새로운 수퍼 블록들 라운드 로빈을 분배하는 단계를 포함하는, 데이터 저장 디바이스.
  5. 제1항에 있어서, 할당하는 단계는 상기 새로운 수퍼 블록들의 제1 수퍼 블록을 최대 양의 자유 공간을 갖는 수퍼 디바이스에 분배하는 단계를 포함하는, 데이터 저장 디바이스.
  6. 제1항에 있어서, 할당하는 단계는 새로운 수퍼 블록들을 한 번에 하나씩 분배하는 단계를 추가로 포함하고, 상기 분배하는 단계는 최대 양의 자유 공간을 갖는 수퍼 블록에 발생하는, 데이터 저장 디바이스.
  7. 제1항에 있어서, 할당하는 단계는 상기 새로운 수퍼 블록들을 무작위로 분배하는 단계를 추가로 포함하는, 데이터 저장 디바이스.
  8. 제1항에 있어서, 할당하는 단계는 상기 새로운 수퍼 블록들을 불균일하게 분배하는 단계를 추가로 포함하는, 데이터 저장 디바이스.
  9. 제1항에 있어서, 상기 제어기는 재설정 요청 후의 상기 제1 수퍼 디바이스가 상기 자유 공간 임계치 미만이도록 상기 제1 수퍼 디바이스 내의 적어도 하나의 구역에 대한 상기 재설정 요청을 수신하도록 추가로 구성되는, 데이터 저장 디바이스.
  10. 제9항에 있어서, 상기 제1 수퍼 디바이스가 상기 자유 공간 임계치 미만인 것에 응답하여 상기 제1 수퍼 디바이스에 적어도 하나의 추가적인 새로운 수퍼 블록을 할당하는 단계를 추가로 포함하는, 데이터 저장 디바이스.
  11. 데이터 저장 디바이스로서,
    복수의 수퍼 디바이스들을 가지는 메모리 디바이스; 및
    상기 메모리 디바이스에 결합된 제어기를 포함하고, 상기 제어기는:
    이용 가능한 자유 공간의 양에 기초하여 상기 복수의 수퍼 디바이스들의 수퍼 디바이스들에 수퍼 블록들을 할당하도록 구성되며, 상기 수퍼 블록들은 라운드 로빈으로 할당되고, 상기 수퍼 블록들은 자유 공간 임계값 이상인 수퍼 디바이스들에 할당되지 않는, 데이터 저장 디바이스.
  12. 제11항에 있어서, 적어도 하나의 수퍼 디바이스는 할당하는 단계 전에 수퍼 블록을 갖고, 상기 수퍼 블록은 복수의 구역들을 포함하는, 데이터 저장 디바이스.
  13. 제12항에 있어서, 상기 복수의 구역들은 하나 이상의 콜드 구역, 하나 이상의 핫 구역, 또는 이들의 조합을 포함하는, 데이터 저장 디바이스.
  14. 제13항에 있어서, 구역은 구역 재설정 카운트에 따라 핫 또는 콜드로 분류되는, 데이터 저장 디바이스.
  15. 제14항에 있어서, 구역이 상기 구역 재설정 카운트가 구역 재설정 임계치보다 큰 경우 핫 구역이고, 구역이 상기 구역 재설정 카운트가 상기 구역 재설정 임계치보다 작은 경우 콜드 구역인, 데이터 저장 디바이스.
  16. 제15항에 있어서, 데이터는 균일한 마모 분포를 보장할 수 있도록 하나의 수퍼 블록 내의 구역으로부터 다른 수퍼 블록 내의 구역으로 이동될 수 있는, 데이터 저장 디바이스.
  17. 제16항에 있어서, 상기 이동된 데이터는 하나의 수퍼 디바이스로부터 다른 수퍼 디바이스로 이동될 수 있는, 데이터 저장 디바이스.
  18. 데이터 저장 디바이스로서,
    복수의 수퍼 디바이스들을 포함하는 메모리 수단; 및
    상기 메모리 수단에 결합된 제어기를 포함하고, 상기 제어기는:
    상기 복수의 수퍼 디바이스들 중 적어도 하나의 수퍼 디바이스가 자유 공간 임계치에 있다고 결정하고;
    상기 복수의 수퍼 디바이스들 중 적어도 2개의 다른 수퍼 디바이스들에 새로운 수퍼 블록들을 균일하게 할당하고;
    상기 복수의 수퍼 디바이스들 중 상기 적어도 하나의 수퍼 디바이스의 제1 수퍼 디바이스 내의 적어도 하나의 구역을 재설정하고;
    추가적인 수퍼 블록들을 상기 복수의 수퍼 디바이스들 중 상기 적어도 2개의 다른 수퍼 디바이스들 및 상기 제1 수퍼 디바이스에 고르게 할당하도록 구성되는, 데이터 저장 디바이스.
  19. 제18항에 있어서, 각각의 수퍼 블록은 적어도 하나의 구역을 갖고, 각각의 수퍼 블록은 하나 이상의 콜드 구역, 하나 이상의 핫 구역, 자유 공간, 또는 이들의 조합들을 포함할 수 있는, 데이터 저장 디바이스.
  20. 제18항에 있어서, 상기 제어기는 상기 복수의 수퍼 디바이스들에 걸쳐 콜드 구역들의 실질적으로 균일한 분포를 보장하도록 구성되는, 데이터 저장 디바이스.
KR1020247000921A 2021-08-25 2022-05-06 Zns ssd 내의 수퍼 디바이스에 걸친 수퍼 블록 할당 KR20240017956A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/412,151 US20230075329A1 (en) 2021-08-25 2021-08-25 Super Block Allocation Across Super Device In ZNS SSD
US17/412,151 2021-08-25
PCT/US2022/027973 WO2023027783A1 (en) 2021-08-25 2022-05-06 Super block allocation across super device in zns ssd

Publications (1)

Publication Number Publication Date
KR20240017956A true KR20240017956A (ko) 2024-02-08

Family

ID=85322066

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247000921A KR20240017956A (ko) 2021-08-25 2022-05-06 Zns ssd 내의 수퍼 디바이스에 걸친 수퍼 블록 할당

Country Status (4)

Country Link
US (1) US20230075329A1 (ko)
KR (1) KR20240017956A (ko)
CN (1) CN117616377A (ko)
WO (1) WO2023027783A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11749335B2 (en) * 2020-11-03 2023-09-05 Jianzhong Bi Host and its memory module and memory controller

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117304B2 (en) * 2003-06-03 2006-10-03 Sun Microsystems, Inc. System and method for determining a file system layout
US7886118B2 (en) * 2007-01-04 2011-02-08 International Business Machines Corporation Detecting illegal reuse of memory with low resource impact
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8627065B2 (en) * 2010-11-09 2014-01-07 Cleversafe, Inc. Validating a certificate chain in a dispersed storage network
US8762625B2 (en) * 2011-04-14 2014-06-24 Apple Inc. Stochastic block allocation for improved wear leveling
CN105701019A (zh) * 2014-11-25 2016-06-22 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
US9823875B2 (en) * 2015-08-31 2017-11-21 LinkedIn Coporation Transparent hybrid data storage
US10452537B2 (en) * 2017-06-12 2019-10-22 Western Digital Technologies, Inc. System and method of direct write and mapping of data in a non-volatile memory having multiple sub-drives
US10613787B2 (en) * 2018-01-31 2020-04-07 EMC IP Holding Company LLC Techniques for rebalancing storage between subspaces
US20200089407A1 (en) * 2019-11-22 2020-03-19 Intel Corporation Inter zone write for zoned namespaces

Also Published As

Publication number Publication date
WO2023027783A1 (en) 2023-03-02
US20230075329A1 (en) 2023-03-09
CN117616377A (zh) 2024-02-27

Similar Documents

Publication Publication Date Title
KR102580577B1 (ko) 솔리드 스테이트 드라이브들 내의 zns들
US11126378B1 (en) Rate limit on the transitions of zones to open
US11599304B2 (en) Data aggregation in ZNS drive
US11436153B2 (en) Moving change log tables to align to zones
KR102656959B1 (ko) 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축
WO2023027782A1 (en) Purposeful super device imbalance for zns ssd efficiency
WO2023027781A1 (en) Solution for super device imbalance in zns ssd
US11537293B2 (en) Wear leveling methods for zoned namespace solid state drive
US11210027B2 (en) Weighting of read commands to zones in storage devices
KR20240017956A (ko) Zns ssd 내의 수퍼 디바이스에 걸친 수퍼 블록 할당
US11853565B2 (en) Support higher number of active zones in ZNS SSD
US11687263B2 (en) Full die recovery in ZNS SSD
US11656984B2 (en) Keeping zones open with intermediate padding
US11640254B2 (en) Controlled imbalance in super block allocation in ZNS SSD
US20240220155A1 (en) Solution for Super Device Imbalance in ZNS SSD
US11853612B2 (en) Controlled system management based on storage device thermal load