KR20220037333A - 구역 네임스페이스 디바이스들에서의 판독 처리 - Google Patents

구역 네임스페이스 디바이스들에서의 판독 처리 Download PDF

Info

Publication number
KR20220037333A
KR20220037333A KR1020210080061A KR20210080061A KR20220037333A KR 20220037333 A KR20220037333 A KR 20220037333A KR 1020210080061 A KR1020210080061 A KR 1020210080061A KR 20210080061 A KR20210080061 A KR 20210080061A KR 20220037333 A KR20220037333 A KR 20220037333A
Authority
KR
South Korea
Prior art keywords
data
controller
storage device
zone
read
Prior art date
Application number
KR1020210080061A
Other languages
English (en)
Other versions
KR102663304B1 (ko
Inventor
무시아 라마나탄
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20220037333A publication Critical patent/KR20220037333A/ko
Application granted granted Critical
Publication of KR102663304B1 publication Critical patent/KR102663304B1/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/24Bit-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)
  • Mram Or Spin Memory Techniques (AREA)
  • Container, Conveyance, Adherence, Positioning, Of Wafer (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)

Abstract

구역 구성들 또는 저장된 메타데이터에 기초하여 판독 미리 보기(RLA) 수행을 최적화하는, 메모리 및 제어기를 포함하는 저장 디바이스의 태양들이 제공된다. 제어기는 호스트로부터 이전에 수신된 정보를 메모리 내에 저장하는데, 이 정보는 RLA로 프리페칭될 후속 데이터와 연관된 메타데이터가 결정될 수 있는 구역 구성 또는 다른 정보를 포함한다. 저장된 정보가 구역 구성을 포함할 때, 제어기는 호스트 커맨드에 응답하여 메모리로부터 데이터를 판독하고, 구역 구성에 기초하여 메모리로부터의 후속 데이터의 프리페칭을 제한한다. 저장된 정보가 메타데이터를 포함할 때, 제어기는 메모리로부터 후속 데이터와 연관된 메타데이터를 판독하고, 메타데이터에 기초하여 후속 데이터의 프리페칭을 제한한다. 따라서, RLA를 위해 전형적으로 사용되는 저장 디바이스의 자원들이 다른 동작들을 위해 대신에 사용될 수 있어서, 저장 디바이스의 효율을 향상시킬 수 있다.

Description

구역 네임스페이스 디바이스들에서의 판독 처리{READ HANDLING IN ZONED NAMESPACE DEVICES}
관련 출원의 상호 참조
본 출원은 2020년 9월 17일자로 출원되고 발명의 명칭이 "Read Handling in Zoned Namespace Devices"인 미국 가특허 출원 제63/079,898호의 이익 및 우선권을 주장하며, 그 전체 내용은 마치 본 명세서에 완전히 기술된 것처럼 본 명세서에 참고로 포함된다.
기술분야
본 발명은 대체적으로 전자 디바이스들에 관한 것으로, 더 구체적으로는, 저장 디바이스들에 관한 것이다.
저장 디바이스들은 사용자들이 데이터를 저장 및 취출(retrieve)할 수 있게 한다. 저장 디바이스들의 예들은 비휘발성 메모리(non-volatile memory, NVM) 디바이스들을 포함한다. 비휘발성 메모리(NVM)는 대체적으로 전력 사이클 후에 데이터를 보유한다. 비휘발성 메모리의 일례는 플래시 메모리이며, 이는 하나 이상의 다이(die)들 상에 NAND 셀들의 어레이(들)를 포함할 수 있다. 플래시 메모리는 솔리드 스테이트 디바이스(solid-state device, SSD)들, 보안 디지털(Secure Digital, SD) 카드들 등에서 발견될 수 있다.
플래시 저장 디바이스들은 NVM 커맨드(command) 세트 및 관리상(관리) 커맨드 세트를 사용하여 동작할 수 있다. NVM 커맨드 세트는, 플래시 저장 디바이스가 판독, 기록, 검증 등과 같은, 비휘발성 메모리 내의 데이터에 관련하여 수행할 수 있는 다양한 커맨드들을 포함할 수 있다. 관리 커맨드 세트는, 플래시 저장 디바이스가 비휘발성 메모리의 내구성 그룹(endurance group)들, 네임스페이스(namespace)들, 또는 다른 파라미터들을 관리하는 것에 관련하여 수행할 수 있는 다양한 커맨드들을 포함할 수 있다.
구역 네임스페이스(Zoned namespace, ZNS)는, 비휘발성 메모리 내의 논리적 어드레스들의 범위(예컨대, 구역 네임스페이스)가 논리적 어드레스들의 고정된 크기의 그룹들 또는 구역들로 분할되는 SSD 네임스페이스 아키텍처이다. 구역 네임스페이스 내의 각각의 구역은 특정 애플리케이션에 사용된다. 예를 들어, 호스트는 상이한 애플리케이션들과 연관된 데이터를 구역 네임스페이스의 상이한 구역들 내에 기록할 수 있다. 플래시 저장 디바이스는 호스트와 인터페이싱(interfacing)하여 한정된 구역들을 획득하고, 구역들을 플래시 메모리 내의 블록들에 맵핑(mapping)시킨다. 따라서, 호스트는 별개의 애플리케이션-관련 데이터를 플래시 메모리의 별개의 블록들 내에 기록할 수 있다.
ZNS에서, NVM 커맨드 세트 및 관리 커맨드 세트는, 플래시 저장 디바이스가 구역 네임스페이스와 관련하여 수행할 수 있는 추가 커맨드들을 포함할 수 있으며, 이들은 함께 구역 네임스페이스 커맨드 세트로 지칭될 수 있다. 일례로서, 구역 네임스페이스 커맨드 세트는 구역 네임스페이스의 특정 거동들을 정의하는 구역 동작 특성들을 나타내는 식별 네임스페이스 데이터 구조를 지원한다. 하나의 그러한 특성은, 플래시 저장 디바이스가 다수의 구역들에 걸쳐 있는 논리적 어드레스들의 범위를 특정하는 판독 동작들을 수행할 수 있는지 여부(즉, 디바이스가 구역 경계들에 걸쳐 판독할 수 있는지 여부)를 나타내는 비트 또는 플래그를 포함한다. 플래그가 설정된 경우(예컨대, '1'의 값), 플래시 저장 디바이스는 구역 경계들에 걸쳐 판독하도록 허용될 수 있는 반면, 플래그가 리셋(reset) 또는 클리어(clear)된 경우(예컨대, '0'의 값), 제어기는 구역 경계들에 걸쳐 판독하는 것이 금지될 수 있다. 호스트는 이러한 플래그를, 플래시 저장 디바이스의 구성 레지스터 내에 저장될 수 있는, 식별 네임스페이스 데이터 구조로 (또는 일부 다른 구역 구성으로) 플래시 저장 디바이스에 제공할 수 있다.
저장 디바이스의 일 태양이 본 명세서에 개시된다. 저장 디바이스는 메모리 및 제어기를 포함한다. 제어기는 호스트 커맨드에 응답하여 메모리로부터 데이터를 판독하도록, 그리고 호스트로부터 이전에 수신된 저장된 정보에 기초하여 메모리로부터의 후속 데이터의 프리페칭(pre-fetching)을 제한하도록 구성된다.
저장 디바이스의 다른 태양이 본 명세서에 개시된다. 저장 디바이스는 메모리 및 제어기를 포함한다. 제어기는 호스트로부터 수신된 구역 구성을 메모리 내에 저장하도록, 호스트 커맨드에 응답하여 메모리로부터 데이터를 판독하도록, 그리고 구역 구성에 기초하여 메모리로부터의 후속 데이터의 프리페칭을 제한하도록 구성된다.
저장 디바이스의 추가 태양이 본 명세서에 개시된다. 저장 디바이스는 메모리 및 제어기를 포함한다. 제어기는 호스트 커맨드에 응답하여 메모리로부터 데이터를 판독하도록, 호스트에 의해 이전에 나타내진 정보를 포함하는 후속 데이터와 연관된 메타데이터를 메모리로부터 판독하도록, 그리고 정보에 기초하여 메모리로부터 후속 데이터를 프리페칭하는 것을 제한하도록 구성된다.
저장 디바이스의 다른 태양들은 하기의 상세한 설명으로부터 당업자에게 용이하게 명백해질 것임이 이해될 것이며, 여기서 장치들 및 방법들의 다양한 태양들이 예시로서 도시되고 기술된다. 실현되는 바와 같이, 이러한 태양들은 다른 그리고 상이한 형태들로 구현될 수 있고, 그의 여러 세부사항들은 다양한 다른 태양들에서 수정될 수 있다. 따라서, 도면 및 상세한 설명은 사실상 예시적인 것으로 간주되어야 하며 제한적인 것은 아니다.
이제, 본 발명의 다양한 태양들이, 첨부 도면을 참조하여, 제한으로서가 아니라 예로서 상세한 설명에서 제시될 것이다.
도 1은 호스트 디바이스와 통신하는 저장 디바이스의 예시적인 실시예를 예시하는 블록도이다.
도 2는 도 1의 저장 디바이스의 비휘발성 메모리 내의 논리적-물리적(logical-to-physical, L2P) 맵핑 테이블의 일례를 예시하는 개념도이다.
도 3은 도 1의 저장 디바이스 내의 메모리 셀들의 어레이의 일례를 예시하는 개념도이다.
도 4는 도 1의 저장 디바이스 내의 블록들의 어레이의 일례를 예시하는 개념도이다.
도 5는 도 1의 저장 디바이스에 의해 수신되는 논리적 어드레스들의 그룹들에 대한 구역들의 연관성의 일례를 예시하는 개념도이다.
도 6은 전통적인 판독 미리 보기(read look ahead, RLA) 수행의 일례를 예시하는 개념도이다.
도 7a는 구역들에 기초한 최적화된 판독 미리 보기 수행의 일례를 예시하는 개념도이다.
도 7b는 구역들에 기초한 최적화된 판독 미리 보기 수행의 일례를 예시하는 개념도이다.
도 8은 최적화된 판독 미리 보기를 사용하여 판독 처리를 수행하는 도 1의 저장 디바이스의 제어기의 일례를 예시하는 개념도이다.
도 9는 도 1의 저장 디바이스에 의해 수행되는 것과 같은, 판독 처리를 위한 방법을 예시하는 흐름도이다.
첨부된 도면들과 관련하여 하기에서 설명되는 상세한 설명은 본 발명의 다양한 예시적인 실시예들의 설명으로서 의도되며, 본 발명이 실시될 수 있는 유일한 실시예들을 표현하도록 의도되지 않는다. 상세한 설명은 본 발명의 완전한 이해를 제공하려는 목적으로 구체적인 상세사항들을 포함한다. 그러나, 본 발명이 이러한 구체적인 상세사항들 없이 실시될 수 있다는 것은 당업자들에게 명백할 것이다. 일부 경우에, 주지된 구조물들 및 컴포넌트들은 본 발명의 개념들을 모호하게 하는 것을 피하기 위해 블록도 형태로 도시된다. 두문자어들 및 다른 서술적 용어는 단지 편의상 그리고 명확함을 위해 사용될 수 있으며, 본 발명의 범주를 제한하도록 의도되지 않는다.
단어들 "예시적인" 및 "예"는 본 명세서에서 일례, 사례, 또는 예시의 역할을 의미하는 데 사용된다. 본 명세서에서 "예시적인"으로 기술되는 임의의 예시적인 실시예는 반드시 다른 예시적인 실시예들에 비해 바람직하거나 유리한 것으로 해석되어야 하는 것은 아니다. 마찬가지로, 장치, 방법 또는 제조 물품의 "예시적인 실시예"라는 용어는 본 발명의 모든 예시적인 실시예들이 기술된 컴포넌트들, 구조, 특징부들, 기능성, 프로세스들, 이점들, 이익들, 또는 작동 모드들을 포함하는 것을 요구하지는 않는다.
본 명세서에 사용되는 바와 같이, 용어 "결합된"은 2개의 컴포넌트들 사이의 직접적인 접속 또는, 적절한 경우, 개재된 또는 중간 컴포넌트들을 통한 서로에 대한 간접적인 접속을 나타내는 데 사용된다. 대조적으로, 컴포넌트가 다른 컴포넌트에 "직접 결합된" 것으로 지칭될 때, 개재된 요소가 존재하지 않는다.
하기의 상세한 설명에서, 호스트 디바이스와 통신하는 저장 디바이스의 다양한 태양들이 제시될 것이다. 이들 태양들은 SSD들 및 SD 카드들과 같은 플래시 저장 디바이스들에 매우 적합하다. 그러나, 당업자는 이러한 태양들이 데이터를 저장할 수 있는 모든 타입들의 저장 디바이스들로 확장될 수 있다는 것을 인식할 것이다. 따라서, 특정 장치 또는 방법에 대한 임의의 언급은, 본 발명의 다양한 태양들이 본 발명의 사상 및 범주로부터 벗어남이 없이 광범위한 응용들을 가질 수 있다는 이해 하에, 단지 그러한 태양들을 예시하도록 의도된다.
전형적으로, ZNS에서, 호스트는 구역들 또는 논리적 어드레스들의 그룹들의 정의를 플래시 저장 디바이스에 제공한다. 예를 들어, 호스트는, 하나의 그룹의 LBA들 또는 하나의 논리적 블록이 제1 구역과 연관되고, 다른 그룹의 LBA들 또는 다른 논리적 블록이 제2 구역과 연관된다는 것 등을 나타낼 수 있다. 이어서, 플래시 저장 디바이스는 각각의 논리적 블록을 플래시 메모리 내의 하나 이상의 물리적 블록들에 맵핑시킬 수 있다. 예를 들어, 플래시 저장 디바이스는 제1 구역과 연관된 LBA들을 제1 물리적 블록에 맵핑시키고, 제2 구역과 연관된 LBA들을 제2 물리적 블록에 맵핑시키는 등을 할 수 있다. 이어서, 플래시 저장 디바이스는 구역들과 연관된 블록들 내에 데이터를 기록 및 판독할 수 있다.
데이터를 구역들에 기록할 때, 플래시 저장 디바이스는 먼저 구역 기록 커맨드를 발행하여 구역에 대한 기록을 개시하고, 이어서 하나 이상의 구역 부가 커맨드(zone append command)들이 뒤따라져서, 그 구역에 후속하여 기록할 수 있다. 예를 들어, 제1 구역이 LBA들 0 내지 1023을 포함하고 각각의 LBA가 512 바이트를 표현하는 경우, 호스트는 초기에 LBA들 0 내지 511 내에 256 KB의 데이터를 기록(이는 플래시 저장 디바이스가 구역 기록 커맨드를 사용하여 실행함)하기 위한 커맨드를 플래시 저장 디바이스에 송신할 수 있고, 호스트는 후속하여 LBA들 512 내지 1023 내에 다른 256 KB의 데이터를 기록(이는 플래시 저장 디바이스가 하나 이상의 구역 부가 커맨드들을 사용하여 실행함)하기 위한 하나 이상의 커맨드들을 플래시 저장 디바이스에 송신할 수 있다. 유사하게, 제2 구역이 LBA들 1024 내지 2047을 포함하는 경우, 호스트는 초기에 LBA들 1024 내지 1535 내에 256 KB의 데이터를 기록하도록 그리고 후속하여 LBA들 1536 내지 2047 내에 256 KB의 데이터를 기록하도록 플래시 저장 디바이스에 요청할 수 있다. 호스트가 부분적으로 기록된 구역 내의 이전에 기록된 LBA를 덮어쓰려고 시도하는 경우(예를 들어, 호스트가 LBA들 512 내지 1023을 완료하지 않고 LBA들 0 내지 511에 데이터를 다시 기록하려고 시도하는 경우), 플래시 저장 디바이스는 커맨드를 무효 기록으로서 중단할 수 있다. 따라서, 호스트는 데이터를 정의된 구역들 내에 순차적으로 기록하도록 ZNS에 의해 제약될 수 있다.
유사하게, 구역들 내의 데이터를 판독할 때, 플래시 저장 디바이스는 각각의 구역 내의 데이터를 순차적으로 판독할 수 있다. 예를 들어, 제1 구역이 LBA들 0 내지 1023을 포함하고 각각의 LBA가 512 바이트를 표현하는 경우, 호스트는 유사하게 LBA들 0 내지 511로부터 256 KB의 데이터를 판독하기 위한 커맨드를 플래시 저장 디바이스에 송신할 수 있고, 호스트는 후속하여 LBA들 512 내지 1023으로부터 256 KB의 데이터를 판독하기 위한 하나 이상의 커맨드들을 플래시 저장 디바이스에 송신할 수 있다. 마찬가지로, 제2 구역이 LBA들 1024 내지 2047을 포함하는 경우, 호스트는 초기에 LBA들 1024 내지 1535로부터 데이터를 판독하기 위한 커맨드를 플래시 저장 디바이스에 송신할 수 있고, 호스트는 후속하여 LBA들 1536 내지 2047로부터 데이터를 판독하기 위한 하나 이상의 커맨드들을 플래시 저장 디바이스에 송신할 수 있다.
일부 경우들에서, 호스트는 구역 경계들에 걸쳐 데이터를 판독하도록 플래시 저장 디바이스에 요청할 수 있다. 그러한 경우들에 있어서, 플래시 저장 디바이스는 구성 레지스터를 검사하여 구역 경계들에 걸친 판독이 허용되는지 또는 아닌지 여부를 결정할 수 있다. 예를 들어, 플래시 저장 디바이스는 호스트로부터 수신된 구역 네임스페이스 커맨드 세트 특정 식별 네임스페이스 데이터 구조 내의 구역 경계들에 걸친 판독 비트를 검사할 수 있다. 비트의 값에 따라, 플래시 저장 디바이스는 하나 초과의 구역 내의 논리적 블록들을 포함하는 LBA 범위를 특정하는 판독 동작들을 허용할 수 있다. 예를 들어, 제1 구역이 LBA들 0 내지 1023을 포함하고 제2 구역이 LBA들 1024 내지 2047을 포함하고, 호스트가 (제1 구역 및 제2 구역의 경계들에 걸친) LBA들 0 내지 1535 내의 데이터를 판독하기 위한 판독 커맨드를 송신할 때, 제어기는, 구역 경계들에 걸친 판독 비트가 설정된 경우(예컨대, 1의 값), 데이터를 성공적으로 판독할 수 있다. 이와 달리, 구역 경계들에 걸친 판독 비트가 리셋된 경우(예컨대, 0의 값), 제어기는 커맨드를 구역 경계 에러를 갖는 무효 판독으로서 중단할 수 있다. 따라서, 호스트는 정의된 구역 내의 데이터를 순차적으로 판독하도록 ZNS에 의해 제약될 수 있다.
데이터를 판독할 때, 플래시 저장 디바이스는 또한 판독 미리 보기(RLA)를 수행할 수 있다. RLA로, 플래시 저장 디바이스는 호스트로부터 데이터에 대한 판독 커맨드를 수신하기 전에 비휘발성 메모리로부터 그 데이터를 판독하고, 플래시 저장 디바이스는, 판독 커맨드가 나중에 도착하는 경우에 액세스되도록 그 데이터를 캐시 또는 다른 휘발성 메모리 내에 저장한다. 따라서, 플래시 저장 디바이스는 RLA를 수행할 때 메모리로부터 데이터를 프리페칭할 수 있다. RLA로 프리페칭되는 데이터의 크기는 전통적으로 플래시 저장 디바이스 내의 이용가능한 자원들(예컨대, NAND 버스 크기, 래치들의 수 등)에 기초하여 최대화되고 고정된다. 예를 들어, 플래시 저장 디바이스가 한 번에 프리페칭할 수 있는 데이터의 최대량이 이용가능한 자원들에 기초하여 512 KB인 경우, 플래시 저장 디바이스는 대체적으로 RLA가 수행될 때마다 그 양을 프리페칭할 수 있다.
RLA로 프리페칭되는 데이터는 이전 판독 커맨드에 기초하여 예측되거나 추측될 수 있다. 예를 들어, 플래시 저장 디바이스가 512 KB의 순차적인 데이터(예컨대, 각각의 LBA가 512 바이트를 표현한다고 가정하여 LBA들 0 내지 1023)에 대한 판독 커맨드를 호스트로부터 수신하는 경우, 플래시 저장 디바이스는 호스트가 다른 512 KB의 후속의 순차적인 데이터(예컨대, LBA들 1024 내지 2047)에 대한 판독 커맨드를 발행할 가능성이 있을 것으로 예측할 수 있다. 따라서, 판독 커맨드에 응답하여 첫 번째 512 KB의 데이터를 페칭하고 데이터를 호스트에 제공하는 것에 더하여, 플래시 저장 디바이스는 다음 512 KB의 데이터를 프리페칭하고, 디바이스가 프리페칭된 데이터에 대한 후속 판독 커맨드를 수신할 때까지 휘발성 메모리 내에 그 데이터를 저장할 수 있다. 예측이 성공적인 경우, 플래시 저장 디바이스는 비휘발성 메모리 내의 자원들을 결속하지(tie up) 않으면서 휘발성 메모리로부터 호스트로 데이터를 신속하게 제공하고, 이에 따라, 가비지 컬렉션(garbage collection, GC)과 같은 다른 백그라운드 동작들이 그 동안에 비휘발성 메모리 내에서 수행되도록 허용할 수 있다. 따라서, 성공적으로 예측된 RLA는 플래시 저장 디바이스 내의 자원들 및 시간을 절약할 수 있다. 그러나, RLA 예측이 성공적이지 않은 경우(즉, 호스트가 프리페칭된 데이터에 대한 판독 커맨드를 발행하지 않음), 프리페칭된 데이터는 스래싱(thrashing)될 수 있고, 프리페칭 동안 비휘발성 메모리 내에서 결속된 자원들 및 소비된 시간은 비효율적으로 사용되거나 낭비될 수 있다.
따라서, 적절히 데이터를 예측하고 그러한 데이터에 대해 RLA를 트리거(trigger)하는 것은 플래시 저장 디바이스에 상당히 이로울 수 있다. 그러나, 플래시 저장 디바이스가 ZNS를 구현할 때, 전술된 RLA에 대한 전통적인 접근법은 덜 성공적인 예측들을 야기할 수 있는데, 이는 전통적인 RLA가 전형적으로 구역 네임스페이스 구성들에 관계없이 수행되기 때문이다. 예를 들어, 플래시 저장 디바이스가, 호스트 및 플래시 저장 디바이스가 구역들에 걸쳐 데이터를 판독하는 것을 금지하는 구역 구성을 이전에 수신했더라도, 플래시 저장 디바이스가 하나의 구역 내의 데이터에 대한 판독 커맨드를 호스트로부터 수신할 때, RLA로 전형적으로 수신되는 데이터의 고정 및 최대화된 양은 상이한 구역으로부터의 데이터를 포함할 수 있다. 예를 들어, 제1 구역이 LBA들 0 내지 1023을 포함하고 제2 구역이 LBA들 1024 내지 2047을 포함한다고 가정하자. 그러한 경우에, 플래시 저장 디바이스가 제1 구역 내의 LBA들 384 내지 895(예컨대, 256 KB의 데이터)를 포함하는 판독 커맨드를 수신하고 RLA로 최대 512 KB의 후속의 순차적인 데이터(예컨대, LBA들 896 내지 1919를 포함함)를 프리페칭하는 경우, 프리페칭된 데이터는 제1 구역 및 제2 구역 둘 모두로부터 일 수 있다. 그러나, 구역 경계들에 걸친 판독 플래그가 리셋되는 경우(구역들에 걸친 판독을 금지함), 호스트는 이러한 LBA 범위를 특정하는 판독 커맨드를 송신할 수 없는데, 이는 그 LBA 범위가 하나 초과의 구역 내의 논리적 블록들을 포함하고, 이에 따라 RLA 데이터가 실패한 예측에 응답하여 스래싱될 수 있을 가능성이 있기 때문이다.
따라서, ZNS를 구현하는 플래시 저장 디바이스들 내에서 RLA를 최적화하고 더 높은 성공적인 예측 가능성을 제공하기 위해, 플래시 저장 디바이스의 제어기는 호스트에 의해 나타내진 구역 구성에 기초하여 그의 데이터 프리페칭을 제한(예컨대, 그의 RLA를 캡핑(capping))할 수 있다. 예를 들어, 구역 구성은 구역 경계들에 걸친 판독 플래그와 같은 구역 동작 특성들을 포함하는, 구역 네임스페이스 커맨드 세트 특정 식별 네임스페이스 데이터 구조를 포함할 수 있으며, 제어기는 구역 경계들에 걸친 판독 플래그가 리셋되는지(즉, 구역 경계들에 걸친 판독이 금지되는지) 여부를 결정할 수 있다. 제어기가 구역 경계들에 걸친 판독이 금지되어 있다고 결정하는 경우, 제어기는 다음으로, 호스트로부터의 현재 판독 커맨드가 특정 구역 내의 논리적 어드레스들을 포함하지만 특정 구역의 끝을 포함하지는 않는지 여부를 결정할 수 있다. 현재 판독 커맨드 내의 논리적 어드레스들이 구역의 끝을 포함하지 않는 경우(논리적 어드레스들이 구역의 중간 내에 있음), 제어기는, 캐시 및 시스템 자원들이 데이터의 추가 프리페칭에 이용가능한지 여부에 관계없이, 구역의 끝까지 예측된 데이터를 프리페칭할 수 있다. 제어기가 나중에 (구역의 끝까지의 논리적 어드레스들을 포함하는) 프리페칭된 데이터에 대한 판독 커맨드를 수신하는 경우, 제어기는 후속하여 (RLA 제한 없이) 이용가능한 시스템 자원들에 기초하여 RLA로 최대 크기의 프리페칭을 수행할 수 있다.
예를 들어, 제1 구역이 LBA들 0 내지 1023을 포함하고 제2 구역이 LBA들 1024 내지 2047을 포함하는 상기 예에서, 제어기는 구역 경계들에 걸친 판독 플래그가 리셋되고 현재 판독 커맨드가 제1 구역 내의 LBA들 384 내지 895(예컨대, 256 KB의 데이터)를 포함한다고 결정할 수 있다. 그러한 경우에, 이때에 제2 구역 내에서 불필요한 RLA를 수행하는 것을 피하기 위해, 전술된 바와 같이 한번에 RLA될 수 있는 데이터의 최대량이 512 KB이더라도, 제어기는 제1 구역에서 끝나는 LBA들 896 내지 1023(예컨대, 64 KB)으로 데이터의 프리페칭을 제한할 수 있다. RLA 예측이 성공적이고 제어기가 나중에 제1 구역의 끝까지의 LBA들 896 내지 1023에 대한 후속 판독 커맨드를 수신하는 경우, 제어기는 (제1 구역 내에는 판독할 데이터가 더 이상 남아 있지 않기 때문에) 제2 구역 내의 추가 데이터에 대한 추가 판독 커맨드가 수신될 수 있을 더 높은 가능성이 있다고 결정할 수 있다. 그 결과, 제어기는, 구역 구성에 기초하여 프리페칭을 제한하지 않으면서, 제2 구역(예컨대, LBA들 1024 내지 2047) 내의 추가 데이터에 대한 RLA를 수행할 수 있다. 따라서, ZNS 내에서의 성공적인 RLA 예측들의 가능성이 증가할 수 있고, 플래시 저장 디바이스의 자원 사용이 개선될 수 있다.
상이한 예에서, 제어기는 구역 경계들에 걸친 판독 플래그가 설정되어 있다고, 또는 구역 경계들에 걸친 판독이 이와 달리 허용된다고 결정할 수 있다. 대안적으로, 플래시 저장 디바이스는 ZNS를 구현하지 않는 디바이스일 수 있고, 따라서 어떠한 구역들도 갖지 않을 수 있다. 어느 예에서든, 제어기는 순차적인 호스트 기록 패턴을 나타내는 저장된 메타데이터에 기초하여 데이터의 프리페칭을 제한함(예컨대, 그의 RLA를 캡핑함)으로써 이러한 상황들에서 RLA를 최적화하려고 시도할 수 있다. 저장된 메타데이터는 제어기에 의해 결정되거나, 또는 일부 경우들에서, 호스트에 의해 제공될 수 있다.
일례에서, 제어기는 호스트로부터의 기록 커맨드들의 제출 큐로부터 메타데이터를 결정할 수 있고, 이는 제1 기록 커맨드 내의 순차적인 기록 패턴이 계속되고 있는지 또는 제2 기록 커맨드 내에서 끝나는지를 나타내는 정보를 포함할 수 있다. 예를 들어, 제어기는 제출 규로부터, 256 KB의 순차적인 데이터와 연관된 LBA들 384 내지 895를 포함하는 제1 기록 커맨드 및 LBA들 896 내지 1023을 포함하는 제2 기록 커맨드가 계류 중이라고 결정할 수 있다. 제어기는, 제1 기록 커맨드 내의 호스트 데이터를 프로세싱하고 플래시 메모리로 플러싱(flushing)하기 전에, 제출 큐 내의 제2 기록 커맨드를 수신할 수 있다. 이들 기록 커맨드들에 대한 LBA들의 데이터 길이들 및 순서에 기초하여, 제어기는 제1 기록 커맨드 및 제2 기록 커맨드가 사실상 순차적임(즉, LBA들 896 내지 1023에 대한 제2 기록 커맨드는 LBA들 384 내지 895에 대한 제1 기록 커맨드로부터의 순차적인 패턴을 계속함)을 식별할 수 있다. RLA에 대한 순차적인 패턴에 관한 이러한 정보를 기억하기 위해, 제어기는 정보를 제1 기록 커맨드와 연관된 메타데이터로서 저장할 수 있다. 예를 들어, 제어기는 데이터를 비휘발성 메모리에 플러싱하기 전에 제1 기록 커맨드 내의 기록된 순차적인 데이터의 플래시 관리 유닛(flash management unit, FMU) 헤더 내에 메타데이터를 태깅(tagging)하거나, 비휘발성 메모리 내의 테이블 또는 다른 데이터 구조 내에 메타데이터를 저장하거나, 또는 다른 방식들로 메타데이터를 저장할 수 있다. 나중에, 제어기가 순차적인 데이터에 대한 판독 커맨드를 수신할 때, 제어기는 순차적인 데이터와 함께 이러한 메타데이터를 판독하여, 후속 데이터의 RLA 또는 프리페칭이 요구될지 여부를 그리고 얼마나 요구될지를 결정할 수 있다. 예를 들어, 전술된 바와 같이, 판독 커맨드가 256 KB의 순차적인 데이터와 연관된 LBA들 384 내지 895를 포함하고 메타데이터가 순차적인 패턴이 LBA들 896 내지 1023에 대해 계속된다고 나타내는 경우, 전술된 바와 같이 한번에 RLA될 수 있는 데이터의 최대량이 512 KB이더라도, 제어기는 메타데이터에 기초하여 데이터의 프리페칭을 LBA들 896 내지 1023(예컨대, 64 KB)으로 제한할 수 있다. 대안적으로, 메타데이터가 순차적인 패턴이 끝난다고(예컨대, 다음 LBA들이 현재 판독 커맨드에 대해 순차적이지 않음) 나타내는 경우, 제어기는 RLA를 수행하지 않아, GC와 같은 다른 백그라운드 동작들을 위한 시간 및 자원들을 절약할 수 있다. 따라서, RLA로 인한 플래시 저장 디바이스의 자원 사용은 또한, ZNS를 구현하지 않는 디바이스들 또는 구역 경계 제한들 없이 ZNS를 구현하는 디바이스들에 대해 개선될 수 있다.
도 1은 예시적인 실시예에 따른, 호스트 디바이스(104)(또한, "호스트")와 통신하는 저장 디바이스(102)의 예시적인 블록도(100)를 도시한다. 호스트(104) 및 저장 디바이스(102)는 컴퓨터 시스템(예컨대, 서버, 데스크톱, 모바일/랩톱, 태블릿, 스마트폰 등)과 같은 시스템을 형성할 수 있다. 도 1의 컴포넌트들은 물리적으로 공동 위치될 수 있거나 또는 공동 위치되지 않을 수 있다. 이와 관련하여, 호스트(104)는 저장 디바이스(102)로부터 원격으로 위치될 수 있다. 도 1은 호스트(104)가 저장 디바이스(102)와는 별개인 것으로 도시되어 있지만, 다른 실시예들에서, 호스트(104)는 전체적으로 또는 부분적으로 저장 디바이스(102) 내에 통합될 수 있다. 대안적으로, 호스트(104)는 그 전체가 다수의 원격 엔티티들에 걸쳐서, 또는 대안적으로, 저장 디바이스(102)에서의 일부 기능성을 갖고서 분산될 수 있다.
당업자는, 다른 예시적인 실시예들이 도 1에 도시된 그들 요소들보다 더 많게 또는 더 적게 포함할 수 있고, 개시된 프로세스들이 다른 환경들에서 구현될 수 있다는 것을 이해할 것이다. 예를 들어, 다른 예시적인 실시예들은 저장 디바이스(102)와 통신하는 상이한 수의 호스트들, 또는 호스트(들)와 통신하는 다수의 저장 디바이스들(102)을 포함할 수 있다.
호스트 디바이스(104)는 저장 디바이스(102)에 데이터를 저장하고/하거나 그로부터 데이터를 취출할 수 있다. 호스트 디바이스(104)는, 예를 들어 컴퓨터 서버, 네트워크 부착 저장 장치(network attached storage, NAS) 유닛, 데스크톱 컴퓨터, 노트북(예컨대, 랩톱) 컴퓨터, 태블릿 컴퓨터, 스마트폰과 같은 모바일 컴퓨팅 디바이스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스 등을 포함하는 임의의 컴퓨팅 디바이스를 포함할 수 있다. 호스트 디바이스(104)는 적어도 하나의 프로세서(101) 및 호스트 메모리(103)를 포함할 수 있다. 적어도 하나의 프로세서(101)는 데이터를 프로세싱할 수 있는 임의의 형태의 하드웨어를 포함할 수 있고, 범용 프로세싱 유닛(예컨대, 중앙 프로세싱 유닛(central processing unit, CPU)), 전용 하드웨어(예컨대, 주문형 집적 회로(application specific integrated circuit, ASIC)), 디지털 신호 프로세서(digital signal processor, DSP), 구성가능형 하드웨어(예컨대, 필드 프로그래밍가능 게이트 어레이(field programmable gate array, FPGA)), 또는 소프트웨어 명령어들, 펌웨어 등에 의해 구성되는 임의의 다른 형태의 프로세싱 유닛을 포함할 수 있다. 호스트 메모리(103)는, 호스트에 의해 프로세싱되는 데이터 또는 명령어들 또는 저장 디바이스(102)로부터 수신된 데이터를 저장하기 위해 호스트 디바이스(104)에 의해 사용될 수 있다. 일부 예들에서, 호스트 메모리(103)는 비휘발성 메모리, 예컨대 자기 메모리 디바이스들, 광학 메모리 디바이스들, 홀로그래픽 메모리 디바이스들, 플래시 메모리 디바이스들(예컨대, NAND 또는 NOR), 상변화 메모리(phase-change memory, PCM) 디바이스들, 저항성 랜덤 액세스 메모리(resistive random-access memory, ReRAM) 디바이스들, 자기 저항성 랜덤 액세스 메모리(magnetoresistive random-access memory, MRAM) 디바이스들, 강유전성 랜덤 액세스 메모리(ferroelectric random-access memory, F-RAM), 및 임의의 다른 타입의 비휘발성 메모리 디바이스들을 포함할 수 있다. 다른 예들에서, 호스트 메모리(103)는 휘발성 메모리, 예컨대 랜덤 액세스 메모리(random-access memory, RAM), 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM), 정적 RAM(static RAM, SRAM), 및 동기식 동적 RAM(synchronous dynamic RAM, SDRAM)(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 등)을 포함할 수 있다. 호스트 메모리(103)는, 또한, 함께 통합되든 아니면 별개의 유닛들로서든, 비휘발성 메모리 및 휘발성 메모리 둘 모두를 포함할 수 있다.
호스트 인터페이스(106)는 버스/네트워크(108)를 통해 저장 디바이스(102)를 호스트(104)와 인터페이싱하도록 구성되고, 예를 들어, 이더넷(Ethernet) 또는 와이파이(WiFi), 또는 다른 가능한 후보들 중에서, SATA(Serial Advanced Technology Attachment), PCIe(PCI express), SCSI(Small Computer System Interface), 또는 SAS(Serial Attached SCSI)와 같은 버스 표준을 사용하여 인터페이싱할 수 있다. 대안적으로, 호스트 인터페이스(106)는 무선일 수 있고, 예를 들어 셀룰러 통신(예컨대, 5G NR, 4G LTE, 3G, 2G, GSM/UMTS, CDMA One/CDMA2000 등), 액세스 포인트들을 통한 무선 분배 방법들(예컨대, IEEE 802.11, WiFi, HiperLAN 등), 적외선(Infra Red, IR), 블루투스(Bluetooth), 지그비(Zigbee), 또는 다른 무선 광역망(Wireless Wide Area Network, WWAN), 무선 근거리망(Wireless Local Area Network, WLAN), 무선 사설망(Wireless Personal Area Network, WPAN) 기술, 또는 유사한 광역, 근거리, 및 개인 영역 기술들을 사용하여, 저장 디바이스(102)를 호스트(104)와 인터페이싱할 수 있다.
저장 디바이스(102)는 메모리를 포함한다. 예를 들어, 도 1의 예시적인 실시예에서, 저장 디바이스(102)는 호스트(104)로부터 수신된 데이터의 영구 저장을 위해 비휘발성 메모리(NVM)(110)를 포함할 수 있다. NVM(110)은, 예를 들어 플래시 집적 회로들, NAND 메모리(예컨대, 단일 레벨 셀(single-level cell, SLC) 메모리, 다중 레벨 셀(multi-level cell, MLC) 메모리, 3중 레벨 셀(triple-level cell, TLC) 메모리, 4중 레벨 셀(quad-level cell, QLC) 메모리, 5중 레벨 셀(penta-level cell, PLC) 메모리, 또는 이들의 임의의 조합), 또는 NOR 메모리를 포함할 수 있다. NVM(110)은 저장 디바이스(102)를 동작시키기 위한 시스템 데이터 또는 저장 디바이스(102)에 저장하기 위해 호스트로부터 수신된 사용자 데이터를 저장할 수 있는 복수의 메모리 위치들(112)을 포함할 수 있다. 예를 들어, NVM은 n개의 행들 및 m개의 열들을 갖는 메모리 위치들(112)의 2-D NAND 어레이를 포함하는 크로스포인트 아키텍처를 가질 수 있으며, 여기서 mn은 NVM의 크기에 따라 사전정의된다. 도 1의 예시적인 실시예에서, 각각의 메모리 위치(112)는 다수의 셀들(116)의 다수의 블록들을 각각 포함하는 다수의 평면들을 포함하는 다이(114)일 수 있다. 대안적으로, 각각의 메모리 위치(112)는 셀들(116)의 다수의 블록들을 포함하는 평면일 수 있다. 셀들(116)은, 예를 들어 단일 레벨 셀들, 다중 레벨 셀들, 3중 레벨 셀들, 4중 레벨 셀들, 및/또는 5중 레벨 셀들일 수 있다. 메모리 위치들(112)의 다른 예들이 가능하고; 예를 들어, 각각의 메모리 위치는 한 블록 또는 블록들의 그룹일 수 있다. 각각의 메모리 위치는 3-D NAND 어레이 내의 하나 이상의 블록들을 포함할 수 있다. 각각의 메모리 위치(112)는 하나 이상의 물리적 블록들에 맵핑되는 하나 이상의 논리적 블록들을 포함할 수 있다. 대안적으로, 메모리 및 각각의 메모리 위치는 당업자들에게 알려진 다른 방식들로 구현될 수 있다.
저장 디바이스(102)는, 또한, 예를 들어 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있는 휘발성 메모리(118)를 포함한다. 휘발성 메모리(118)에 저장된 데이터는 NVM(110)으로부터 판독되는 데이터 또는 NVM(110)에 기록될 데이터를 포함할 수 있다. 이와 관련하여, 휘발성 메모리(118)는 데이터를 일시적으로 저장하기 위한 기록 버퍼 또는 판독 버퍼를 포함할 수 있다. 도 1은 휘발성 메모리(118)가 저장 디바이스(102)의 제어기(123)로부터 멀리 있는 것으로 도시하고 있지만, 휘발성 메모리(118)는 제어기(123) 내에 통합될 수 있다.
메모리(예컨대, NVM(110))는 호스트 디바이스(104)로부터 수신된 데이터(119)를 저장하도록 구성된다. 데이터(119)는 메모리 위치들(112) 중 임의의 것의 셀들(116)에 저장될 수 있다. 일례로서, 도 1은 데이터(119)가 상이한 메모리 위치들(112)에 저장된 것을 도시하지만, 데이터는 동일한 메모리 위치에 저장될 수도 있다. 다른 예에서, 메모리 위치들(112)은 상이한 다이들일 수 있고, 데이터는 상이한 다이들 중 하나 이상에 저장될 수 있다.
데이터(119) 각각은 논리적 어드레스와 연관될 수 있다. 예를 들어, NVM(110)은 각각의 데이터(119)를 논리적 어드레스와 연관시키는, 저장 디바이스(102)에 대한 L2P 맵핑 테이블(120)을 저장할 수 있다. L2P 맵핑 테이블(120)은 호스트(104)로부터 기록된 데이터에 대해 명시된 논리적 어드레스들을, 데이터 각각이 저장되는 위치(들)를 나타내는 NVM(110) 내의 물리적 어드레스들에 맵핑시킨 것을 저장한다. 이러한 맵핑은 저장 디바이스의 제어기(123)에 의해 수행될 수 있다. L2P 맵핑 테이블은 데이터가 저장되는 NVM 내의 각각의 메모리 위치(112)와 연관된 논리적 블록 어드레스(LBA)와 같은 식별자를 포함하는 테이블 또는 다른 데이터 구조일 수 있다. 도 1이 도 1의 개념들을 과도하게 모호하게 하는 것을 회피하기 위해 NVM의 메모리 위치들(112) 중 하나에 저장된 단일 L2P 맵핑 테이블(120)을 도시하고 있지만, L2P 맵핑 테이블(120)은 사실상, NVM의 하나 이상의 메모리 위치들에 저장된 다수의 테이블들을 포함할 수 있다.
도 2는 호스트 디바이스로부터 수신된 데이터(202)를 도 1의 NVM(110) 내의 논리적 어드레스들 및 물리적 어드레스들에 맵핑시키는 것을 예시한 L2P 맵핑 테이블(205)의 일례의 개념도(200)이다. 데이터(202)는 도 1의 데이터(119)에 대응할 수 있는 반면, L2P 맵핑 테이블(205)은 도 1의 L2P 맵핑 테이블(120)에 대응할 수 있다. 하나의 예시적인 실시예에서, 데이터(202)는 하나 이상의 페이지들(204), 예컨대, 페이지 1 내지 페이지 x에 저장될 수 있으며, 여기서 x는 NVM(110)에 기록되고 있는 데이터의 페이지들의 총 수이다. 각각의 페이지(204)는 논리적 블록 어드레스(LBA)(208), NVM에 기록된 데이터와 연관된 물리적 어드레스(210), 및 데이터의 길이(212)를 식별하는 L2P 맵핑 테이블(205)의 하나 이상의 엔트리들(206)과 연관될 수 있다. LBA(208)는 호스트 디바이스로부터 수신된 데이터에 대한 기록 커맨드에서 명시된 논리적 어드레스일 수 있다. 물리적 어드레스(210)는 LBA(208)와 연관된 데이터가 물리적으로 기록되는 오프셋 및 블록을 나타낼 수 있다. 길이(212)는 기록된 데이터의 크기(예컨대, 4 KB 또는 일부 다른 크기)를 나타낼 수 있다.
도 1을 다시 참조하면, 휘발성 메모리(118)는 또한 저장 디바이스(102)를 위한 캐시(122)를 저장한다. 캐시(122)는 호스트(104)에 의해 요청된 데이터에 대해 명시된 논리적 어드레스들을, 데이터가 저장되는 위치(들)를 나타내는 NVM(110) 내의 물리적 어드레스들에 맵핑시킨 것을 보여주는 엔트리들을 포함한다. 이러한 맵핑은 제어기(123)에 의해 수행될 수 있다. 제어기(123)가 데이터(119)에 대한 판독 커맨드 또는 기록 커맨드를 수신할 때, 제어기는 각각의 데이터의 논리적-물리적 맵핑을 위해 캐시(122)를 검사한다. 맵핑이 존재하지 않는 경우(예컨대, 그것이 데이터에 대한 제1 요청인 경우), 제어기는 L2P 맵핑 테이블(120)에 액세스하고 캐시(122) 내에 맵핑을 저장한다. 제어기(123)가 판독 커맨드 또는 기록 커맨드를 실행할 때, 제어기는 캐시로부터의 맵핑에 액세스하고, 명시된 물리적 어드레스에서의 NVM(110)으로부터 데이터를 판독하거나 그에 데이터를 기록한다. 캐시는 데이터가 판독되고 있는 NVM 내의 각각의 메모리 위치(112)와 연관된 논리적 어드레스를 포함하는 테이블 또는 다른 데이터 구조의 형태로 저장될 수 있다.
NVM(110)은 각각의 메모리 위치(112)에 접속된 감지 증폭기들(124) 및 데이터 래치들(126)을 포함한다. 예를 들어, 메모리 위치(112)는 다수의 비트 라인들 상에 셀들(116)을 포함하는 블록일 수 있고, NVM(110)은 각각의 비트 라인 상에 감지 증폭기(124)를 포함할 수 있다. 게다가, 하나 이상의 데이터 래치들(126)은 비트 라인들 및/또는 감지 증폭기들에 접속될 수 있다. 데이터 래치들은, 예를 들어 시프트 레지스터들일 수 있다. 데이터가 메모리 위치(112)의 셀들(116)로부터 판독될 때, 감지 증폭기들(124)은 비트 라인들 상의 전압들을 로직 레벨(예컨대, '0' 또는 '1'로서 판독가능함)로 증폭시킴으로써 데이터를 감지하고, 감지된 데이터는 데이터 래치들(126)에 저장된다. 이어서, 데이터는 데이터 래치들(126)로부터 제어기(123)로 전송되고, 그 후에 데이터는 그가 호스트 디바이스(104)로 전송될 때까지 휘발성 메모리(118)에 저장된다. 데이터가 메모리 위치(112)의 셀들(116)에 기록될 때, 제어기(123)는 데이터 래치(126)들에 프로그래밍된 데이터를 저장하고, 데이터는 후속으로 데이터 래치(126)들로부터 셀들(116)로 전송된다.
저장 디바이스(102)는, 명령어들을 실행하기 위한 하나 이상의 프로세서들과 같은 회로부를 포함하고 마이크로제어기, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이(FPGA), 하드웨어 내장형 로직(hard-wired logic), 아날로그 회로부 및/또는 이들의 조합을 포함할 수 있는 제어기(123)를 포함한다.
제어기(123)는 판독 커맨드에 응답하여 다양한 메모리 위치들(112)의 셀들(116) 중 하나 이상으로부터 전송된 데이터를 수신하도록 구성된다. 예를 들어, 제어기(123)는 셀들(116)로부터 데이터 래치들(126)로의 데이터를 감지하기 위해 감지 증폭기들(124)을 활성화시킴으로써 데이터(119)를 판독할 수 있고, 제어기(123)는 데이터 래치들(126)로부터 데이터를 수신할 수 있다. 제어기(123)는, 또한, 기록 커맨드에 응답하여 셀들(116) 중 하나 이상 내로 데이터를 프로그래밍하도록 구성된다. 예를 들어, 제어기(123)는 데이터를 데이터 래치들(126)로 전송하여 셀들(116) 내로 프로그래밍되게 함으로써 데이터(119)를 기록할 수 있다. 제어기(123)는, 데이터를 판독하거나 셀들(116)에 기록할 때, NVM(110) 내의 L2P 맵핑 테이블(120)에 액세스하도록 추가로 구성된다. 예를 들어, 제어기(123)는 호스트 디바이스(104)로부터의 판독 또는 기록 커맨드들에 응답하여 NVM(110)으로부터 논리적-물리적 어드레스 맵핑들을 수신할 수 있고, 커맨드들에서 식별된 논리적 어드레스들에 맵핑된 물리적 어드레스들을 식별할 수 있고(예컨대, 논리적 어드레스들을 물리적 어드레스들로 변환함), 맵핑된 물리적 어드레스들에 위치된 데이터에 액세스하거나 또는 그에 위치된 셀들(116)에 데이터를 저장할 수 있다.
제어기(123) 및 그의 컴포넌트들은 본 발명 전반에 걸쳐서 기술된 제어기의 다양한 기능들을 수행하는 임베디드 소프트웨어로 구현될 수 있다. 대안적으로, 전술된 기능들 및 컴포넌트들 각각을 구현하기 위한 소프트웨어는 NVM(110)에, 또는 저장 디바이스(102) 또는 호스트 디바이스(104) 외부의 메모리에 저장될 수 있고, 제어기(123)의 하나 이상의 프로세서들에 의한 실행을 위해 제어기(123)에 의해 액세스될 수 있다. 대안적으로, 제어기의 기능들 및 컴포넌트들은 제어기(123) 내의 하드웨어로 구현될 수 있거나, 또는 전술된 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다.
동작 시, 호스트 디바이스(104)는 기록될 데이터의 길이뿐만 아니라 하나 이상의 논리적 어드레스들(예컨대, LBA들)을 명시하는 기록 커맨드를 저장 디바이스(102)로 전송함으로써 저장 디바이스(102)에 데이터를 저장한다. 인터페이스 요소(106)는 기록 커맨드를 수신하고, 제어기는 데이터를 저장하기 위해 저장 디바이스(102)의 NVM(110) 내의 메모리 위치(112)를 할당한다. 제어기(123)는, 데이터와 연관된 논리적 어드레스를, 데이터를 위해 할당된 메모리 위치(112)의 물리적 어드레스에 맵핑시킨 L2P 맵핑을 NVM(및 캐시(122))에 저장한다. 제어기는, 또한, L2P 맵핑된 데이터의 길이를 저장한다. 이어서, 제어기(123)는 할당된 메모리 위치에 접속된 하나 이상의 데이터 래치들(126)로 데이터를 전송함으로써 메모리 위치(112)에 데이터를 저장하며, 이로부터 데이터는 셀들(116)에 프로그래밍된다.
호스트(104)는, 판독될 데이터의 길이뿐 아니라 저장 디바이스(102)로부터 취출될 데이터와 연관된 하나 이상의 논리적 어드레스들을 명시하는 판독 커맨드를 전송함으로써 저장 디바이스(102)로부터 데이터를 취출할 수 있다. 인터페이스(106)는 판독 커맨드를 수신하고, 제어기(123)는 캐시(122) 또는 달리 NVM 내의 L2P 맵핑에 액세스하여, 판독 커맨드에 명시된 논리적 어드레스들을, 데이터의 위치를 나타내는 물리적 어드레스들로 변환한다. 이어서, 제어기(123)는, 판독 데이터가 호스트 인터페이스(106)를 통해 호스트(104)로 반환될 때까지 감지 증폭기들(124)을 사용하여 데이터를 감지하고 이들을 데이터 래치들(126)에 저장함으로써 물리적 어드레스들에 의해 명시된 요청된 데이터를 메모리 위치(112)로부터 판독한다.
도 3은 셀들(302)의 NAND 메모리 어레이(300)의 일례를 예시한다. 셀들(302)은 도 1의 NVM(110) 내의 셀들(116)에 대응할 수 있다. 다수의 셀들(302)은 워드 라인들(304) 및 비트 라인들(306)에 결합된다. 예를 들어, 메모리 어레이(300)는 NVM(110)의 다이(114)의 블록 내에 n 개의 워드 라인들 및 m 개의 비트 라인들을 포함할 수 있으며, 여기서 n 및 m은 블록의 크기에 따라 사전정의된다. 각각의 워드 라인 및 비트 라인은, 제어기(123)가 (예컨대, 행 및 열 디코더를 사용하여) 특정 워드 라인들 및 비트 라인들을 선택하는 데 사용할 수 있는, 행 및 열 어드레스와 각각 연관될 수 있다. 예를 들어, 워드 라인들 0 내지 n은 각각 그들 자신의 행 어드레스와 연관될 수 있고(예컨대, 워드 라인 0은 워드 라인 어드레스 0에 대응할 수 있고, 워드 라인 1은 워드 라인 어드레스 1에 대응할 수 있는 등), 비트 라인들 0 내지 m은 각각 그들 자신의 열 어드레스와 연관될 수 있다(예컨대, 비트 라인 0은 비트 라인 어드레스 0에 대응할 수 있고, 비트 라인 1은 비트 라인 어드레스 1에 대응할 수 있는 등). 선택 게이트 소스(select gate source, SGS) 셀들(308) 및 선택 게이트 드레인(select gate drain, SGD) 셀들(310)이 각각의 비트 라인(306) 상의 메모리 셀들(302)에 결합된다. SGS 셀들(308) 및 SGD 셀들(310)은 메모리 셀들(302)을 소스 라인(312)(예컨대, 접지) 및 비트 라인들(306)에 각각 접속시킨다. 스트링(314)은 블록 내의 하나의 비트 라인에 결합된 셀들(302)의 그룹(SGS 및 SGD 셀들(308, 310)을 포함함)을 포함할 수 있는 반면, 페이지(316)는 블록 내의 하나의 워드 라인에 결합된 셀들(302)의 그룹을 포함할 수 있다.
도 4는 다수의 스트링들(404)을 포함하는 블록들(402)의 NAND 메모리 어레이(400)의 일례를 예시한다. 블록들(402)은 도 1의 NVM(110) 내의 다이(114)의 블록들에 대응할 수 있고, 스트링들(404) 각각은 도 3의 스트링(314)에 대응할 수 있다. 도 3의 메모리 어레이(300)에서와 같이, 각각의 스트링(404)은, 비트 라인(406)에 각각 결합되고 각자의 워드 라인들(408)에 개별적으로 결합된 메모리 셀들의 그룹을 포함할 수 있다. 유사하게, 각각의 스트링은 각각의 스트링(404) 내의 메모리 셀들을 소스 라인(414) 및 비트 라인(406)에 각각 접속시키는 SGS 셀(410) 및 SGD 셀(412)을 포함할 수 있다.
제어기(123)가 (즉, 워드 라인(304, 408) 상의) 셀들(302)의 페이지(316)로부터 데이터를 판독하거나 그것에 데이터를 기록할 때, 제어기는 판독 전압 또는 프로그램 전압을 선택된 워드 라인에 그리고 패스 쓰루 전압(pass through voltage)을 다른 워드 라인들에 인가하기 위한 커맨드를 송신할 수 있다. 이어서, 셀의 판독되는 또는 프로그래밍되는 상태(예컨대, SLC들에 대한 논리 '0' 또는 논리 '1')는 셀들(302)의 임계 전압에 기초하여 결정될 수 있다. 예를 들어, SLC 판독 동작 동안, 셀(302)의 임계 전압이 판독 전압보다 작은 경우(즉, 전류가 판독 전압에 응답하여 셀을 통해 흐름), 제어기(123)는 셀이 논리 '1'을 저장한다고 결정할 수 있고, 한편 셀(302)의 임계 전압이 판독 전압보다 더 큰 경우(즉, 전류가 판독 전압에 응답하여 셀을 통해 흐르지 않음), 제어기(123)는 셀이 논리 '0'을 저장한다고 결정할 수 있다. 유사하게, SLC 프로그래밍 동작 동안, 제어기는, 셀이 임계 전압에 도달할 때까지, 워드 라인(304, 408) 상의 셀(302)에 프로그래밍 전압을 인가하기 위한 커맨드를 송신함으로써 논리 '0'을 저장할 수 있고, 소거 동작 동안, 제어기는, 셀들이 임계 전압 아래로 다시(다시 논리 '1'로) 감소할 때까지, 셀들(302)을 포함하는 블록(402)에 (예컨대, p-웰(p-well)과 같은 셀들의 기판에) 소거 전압을 인가하기 위한 커맨드를 송신할 수 있다.
제어기(123)는 또한, 호스트(104)에 의해 구성된 구역들 내에 데이터를 기록하고 그들 내의 데이터를 판독할 수 있다. 예를 들어, ZNS 내에서, 인접하고 중첩되지 않는 논리적 어드레스들(예컨대, LBA들(208))의 그룹들은 상이한 구역들로 분할될 수 있다. 제어기는 상이한 구역들과 연관된 논리적 어드레스들(208)에 대응하는 블록들(402) 내의 셀들(302)의 페이지들(316)로부터 데이터를 판독하거나 그들에 데이터를 기록할 수 있다.
도 5는 구역들(502)의 일례의 개념도(500)를 예시한다. 각각의 구역(502)은 크기가 고정되고, NVM(110) 내의 인접한 범위의 순차적인 논리적 어드레스들(504)을 포함한다. 예시된 예의 경우, NVM(110)은 x개의 구역들로 분할되는 총 z개의 LBA들을 포함할 수 있으며, 이때 각각의 구역은 n-m개의 순차적인 LBA들의 범위를 포함하고, 여기서, z는 플래시 메모리 내의 섹터들의 총 수를 표현하고, x는 구역들의 수를 표현하고, m은 구역 내의 제1 LBA를 표현하고, n은 동일한 구역 내의 마지막 LBA를 표현한다. 각각의 구역은 호스트에 의해 실행되는 하나 이상의 애플리케이션들과 연관된 데이터를 저장하기 위해 호스트에 의해 개별적으로 사용될 수 있다. 따라서, 호스트(104)는 호스트에 의해 실행되는 애플리케이션들의 수에 따라 다수의 구역들로 LBA들을 분할할 수 있다.
데이터를 구역들(502)에 기록할 때, 제어기(123)는 먼저 구역 기록 커맨드를 발행하여 구역에 대한 기록을 개시하고, 이어서 하나 이상의 구역 부가 커맨드들이 뒤따라져서, 그 구역에 후속하여 기록할 수 있다. 예를 들어, 구역들(502) 중 하나가 LBA들 0 내지 1023을 포함하고 각각의 LBA가 512 바이트를 표현하는 경우, 호스트(104)는 초기에 LBA들 0 내지 511 내에 256 KB의 데이터를 기록(이는 제어기가 구역 기록 커맨드를 사용하여 실행할 수 있음)하기 위한 커맨드를 제어기에 송신할 수 있고, 호스트는 후속하여 LBA들 512 내지 1023 내에 다른 256 KB의 데이터를 기록(이는 제어기가 하나 이상의 구역 부가 커맨드들을 사용하여 실행할 수 있음)하기 위한 하나 이상의 커맨드들을 제어기에 송신할 수 있다. 유사하게, 구역들(502) 중 다른 것이 LBA들 1024 내지 2047을 포함하는 경우, 호스트는 초기에 LBA들 1024 내지 1535 내에 256 KB의 데이터를 기록하도록 그리고 후속하여 LBA들 1536 내지 2047 내에 256 KB의 데이터를 기록하도록 제어기에 요청할 수 있다. 호스트가 부분적으로 기록된 구역 내에 이전에 기록된 LBA를 덮어쓰려고 시도하는 경우(예를 들어, 호스트가 LBA들 512 내지 1023을 완료하지 않고서 LBA들 0 내지 511에 데이터를 다시 기록하려고 시도하는 경우), 제어기(123)는 커맨드를 무효 기록으로서 중단할 수 있다. 따라서, 호스트(104)는 데이터를 구역들(502) 각각 내에 순차적으로 기록하도록 ZNS에 의해 제약될 수 있다.
유사하게, 구역들(502) 내의 데이터를 판독할 때, 제어기(123)는 각각의 구역 내에서 데이터를 순차적으로 판독할 수 있다. 예를 들어, 구역들(502) 중 하나가 LBA들 0 내지 1023을 포함하고 각각의 LBA가 512 바이트를 표현하는 경우, 호스트(104)는 유사하게 LBA들 0 내지 511로부터 256 KB의 데이터를 판독하기 위한 커맨드를 제어기에 송신할 수 있고, 호스트는 후속하여 LBA들 512 내지 1023으로부터 256 KB의 데이터를 판독하기 위한 하나 이상의 커맨드들을 제어기에 송신할 수 있다. 마찬가지로, 구역들(502) 중 다른 것이 LBA들 1024 내지 2047을 포함하는 경우, 호스트(104)는 초기에 LBA들 1024 내지 1535로부터 데이터를 판독하기 위한 커맨드를 제어기에 송신할 수 있고, 호스트는 후속하여 LBA들 1536 내지 2047로부터 데이터를 판독하기 위한 하나 이상의 커맨드들을 제어기에 송신할 수 있다.
제어기(123)는 또한, 구역 경계들(506)에 걸쳐 데이터를 판독하도록 호스트(104)에 의해 구성될 수 있다. 예를 들어, 제어기는 NVM(110) 내에 저장된 구성 레지스터를 검사하여 구역 경계들(506)에 걸친 판독이 허용되는지 또는 아닌지 여부를 결정할 수 있다. 예를 들어, 제어기는 호스트(104)로부터 수신된 구역 네임스페이스 커맨드 세트 특정 식별 네임스페이스 데이터 구조 내의 구역 경계들에 걸친 판독 비트를 검사할 수 있다. 비트의 값에 따라, 제어기(123)는 하나 초과의 구역들(502) 내의 논리적 블록들을 포함하는 LBA 범위를 특정하는 판독 동작들을 허용할 수 있다. 예를 들어, 구역들(502) 중 하나가 LBA들 0 내지 1023을 포함하고 구역들(502) 중 다른 것이 LBA들 1024 내지 2047을 포함하고, 호스트(104)가 (각자의 구역들의 경계(506)에 걸친) LBA들 0 내지 1535 내의 데이터를 판독하기 위한 판독 커맨드를 송신할 때, 제어기는 구역 경계들에 걸친 판독 비트가 설정된 경우(예컨대, 1의 값), 데이터를 성공적으로 판독할 수 있다. 이와 달리, 구역 경계들에 걸친 판독 비트가 리셋된 경우(예컨대, 0의 값), 제어기는 커맨드를 구역 경계 에러를 갖는 무효 판독으로서 중단할 수 있다. 따라서, 호스트는 정의된 구역 내의 데이터를 순차적으로 판독하도록 ZNS에 의해 제약될 수 있다.
NVM(110)의 블록들(402) 내의 셀들(302)의 페이지들(316)로부터 데이터를 판독할 때, 제어기(123)는 또한 RLA를 수행할 수 있다. RLA로, 제어기는 호스트(104)로부터 데이터에 대한 판독 커맨드를 수신하기 전에 NVM(110)으로부터 그 데이터를 프리페칭할 수 있고, 제어기(123)는, 판독 커맨드가 나중에 도착하는 경우에 액세스되도록 그 프리페칭된 데이터를 캐시(122) 또는 다른 휘발성 메모리(예컨대, 휘발성 메모리(118)) 내에 저장할 수 있다. RLA로 프리페칭되는 데이터의 크기는 전통적으로 저장 디바이스(102) 내의 이용가능한 자원들(예컨대, NAND 버스 크기, 래치들의 수 등)에 기초하여 최대화되고 고정된다. 예를 들어, 제어기가 한 번에 프리페칭할 수 있는 데이터의 최대량이 이용가능한 자원들에 기초하여 512 KB인 경우, 제어기는 전통적으로 RLA가 수행될 때마다 그 양을 프리페칭할 수 있다.
도 6은 NVM(110)이 구역 경계(606)에 의해 분리되는 제1 구역(602) 및 제2 구역(604)을 포함하는 구역들로 분할될 때의 전통적인 RLA 수행을 예시하는 예시적인 다이어그램(600)을 묘사한다. 제1 구역(602) 및 제2 구역(604)은 각각 도 5의 구역들(502) 중 하나에 대응할 수 있고, 구역 경계(606)는 도 5의 구역 경계들(506) 중 하나에 대응할 수 있다. 도 6의 예에서, 제어기(123)는 제1 구역(602) 내의 논리적 어드레스들을 포함하는 판독 커맨드를 호스트(104)로부터 수신하고, 제어기는 그들 논리적 어드레스들로부터 데이터(608)를 판독한다. 예를 들어, 제1 구역(602)은 LBA들 0 내지 1023을 포함하도록 구성될 수 있고, 제어기는 제1 구역(602)으로부터 LBA들 384 내지 895 내의 256 KB의 데이터(608)를 판독할 수 있다. 더욱이, 제어기(123)는 LBA들 384 내지 895에서 판독된 데이터(608)가 순차적인 패턴을 반영함을 식별할 수 있고, 따라서, 제어기는 호스트(104)가, 예를 들어, LBA들 896 내지 1919에서 순차적인 패턴의 후속 데이터(610)에 대한 판독 커맨드를 발행할 가능성이 있을 것이라고 결정할 수 있다. 따라서, 도 6에 예시된 바와 같이, 제어기는 저장 디바이스(102) 내의 이용가능한 자원들에 기초하여 최대 크기(예컨대, 512 KB의 후속 데이터(610)) RLA를 수행하도록 결정할 수 있다. 따라서, 판독 커맨드에 응답하여 데이터(608)를 페칭하는 것에 더하여, 제어기는 후속 데이터(610)를 프리페칭하고 그 데이터를 휘발성 메모리(118) 내에 일시적으로 저장할 수 있다.
그러나, 전술된 바와 같이 제어기(123)가 전통적인 RLA로 후속 데이터(610)를 프리페칭할 때, 후속 데이터는 제1 구역(602) 및 제2 구역(604)에 관계없이 프리페칭될 수 있다. 예를 들어, 제어기는, RLA를 수행할 때, 후속 데이터(610)가 상이한 구역들이 되게 한다는 것을, 또는 호스트(104)가 구역 경계들에 걸친 판독이 금지된다는 것(예를 들어, 구역 경계들에 걸친 판독 플래그가 리셋됨)을 고려하지 않을 수 있다. 결과적으로, RLA로 프리페칭되는 후속 데이터(610) 중 일부가 스래싱될 수 있다. 예를 들어, 호스트는 제1 구역(602) 및 제2 구역(604)이 구역 구성에 기초하여 구역 경계(606)에 의해 논리적으로 경계지어진다고 고려할 수 있으며, 따라서, 호스트(104)는 스스로 구역 경계(606)에서 그의 후속 판독 커맨드를 캡핑할 수 있다. 다시 말하면, 호스트(104)는 후속 데이터(610) 전체에 대한 후속 판독 커맨드를 발행하지 않을 수 있고, 오히려 상이한 시간에 상이한 구역들 내의 데이터에 대한 별개의 판독 커맨드들을 발행할 수 있다. 그 결과, 프리페칭되었던 후속 데이터(610) 중 일부가 호스트에 의해 즉시 요청되지 않을 수 있기 때문에, 그 데이터는 (예컨대, 다른 프리페칭된 데이터를 위한 공간을 만들기 위해) 캐시로부터 최종적으로 폐기될 수 있다. 그 결과, 후속 데이터(610)의 프리페칭 동안 NVM(110) 내에서 결속된 자원들 및 소비된 시간은 비효율적으로 사용되거나 낭비될 수 있다.
따라서, RLA를 최적화하고 스래싱할 가능성을 감소시키기 위해, 제어기(123)는 호스트(104)에 의해 나타내지는 구역 구성에 기초하여 후속 데이터(예컨대, 후속 데이터(610))의 프리페칭을 제한할 수 있다. 예를 들어, 제어기(123)는 구역들(예컨대, 구역들(502))의 순차적이고 인접하지 않은 논리적 어드레스들(예컨대, 논리적 어드레스들(504))의 그룹들에 대한 연관성, 구역 동작 특성들 및 선택적인 구역 커맨드 지원을 나타내는 식별 네임스페이스 데이터 구조, 및 ZNS와 관련된 다른 정보를 나타내는 구역 구성을 호스트(104)로부터 수신할 수 있다. 호스트로부터 수신된 구역 동작 특성들 중 하나는 구역 경계들에 걸친 판독 플래그를 포함할 수 있으며, 이는 호스트가 구역 경계들(506, 606)에 걸친 (예컨대, 제1 구역(602) 및 제2 구역(604) 내의) 데이터를 판독할 수 있는지 여부를 나타내고, NVM(110) 내의 구성 레지스터 내에 저장될 수 있다. 제어기가 구역 경계들에 걸친 판독 플래그가 리셋되어 있다고 결정하거나 또는 이와 달리 호스트가 구역 경계들에 걸쳐 판독할 수 없음을 나타내면, 제어기는, 호스트로부터의 현재 판독 커맨드가 특정 구역 내의 논리적 어드레스들을 포함하지만 특정 구역의 끝을 포함하지 않는 경우, RLA를 제한할 수 있다. 예를 들어, 도 6을 참조하면, 제어기(123)가, 제1 구역(602) 내의 (예컨대, LBA들 384 내지 895로부터의) 판독 커맨드에 응답하여 판독되고 있는 데이터(608)가 (이러한 예에서 LBA 1023에 의해 표현되는 바와 같은) 구역 경계(606) 이전에 끝난다고 결정하는 경우, 제어기는 제1 구역(602) 내의 (예컨대, LBA들 896 내지 1023 내의) 후속 데이터(610)에 대한 후속 판독 커맨드를 수신할 가능성이 있을 것이지만, 동일한 커맨드에서, 제2 구역(604) 내의 (예컨대, LBA들 1024 내지 2047 내의) 후속 데이터(610)에 대해서는 수신할 가능성이 없을 것으로 결정할 수 있다. 그 결과, 제어기는, 저장 디바이스(102) 내의 자원들이 제2 구역 내의 데이터의 추가 프리페칭에 이용가능한지 여부에 관계없이, 제어기가 제2 구역(604)에 들어가지 않으면서 제1 구역(602)의 끝까지의 후속 데이터(610)만을 프리페칭하도록 RLA를 제한할 수 있다. 일단 후속 판독 커맨드가 제1 구역(602)으로부터 프리페칭된 데이터를 요청하면서 수신되고 제어기가 제2 구역(604)에서 시작하는 후속 데이터(610)에 대한 추가 판독 커맨드를 수신할 가능성이 있을 것이라고 결정하면, 제어기는 그 때에 제2 구역(604) 내의 후속 데이터(610)에 대한 제한 없이 RLA를 수행할 수 있다.
따라서, 제어기(123)는, 구역 경계들에 걸친 판독이 금지되고 현재 판독 커맨드가 현재 구역의 끝 이전의 데이터를 요청하는 상황들에서 2-스테이지(two-stage) RLA를 효과적으로 수행함으로써 저장 디바이스(102)의 자원들을 최적으로 사용할 수 있다. RLA의 제1 스테이지에서, 제어기(123)는 현재 판독 요청과 동일한 구역 내에 있는 후속 데이터의 일부분에 대해서는 RLA를 즉시 트리거하면서, 현재 판독 요청과 상이한 구역 내의 나머지 후속 데이터에 대해서는 RLA를 수행하는 것이 억제될 수 있다. 그 후에, 제어기(123)가 RLA의 제1 스테이지가 성공적이라고 결정하는 경우(후속 데이터의 프리페칭된 부분을 요청하는 후속 판독 커맨드가 수신됨), 제어기는 상이한 구역 내의 나머지 후속 데이터가 프리페칭되는 RLA의 제2 스테이지를 실행할 수 있다. 그 결과, 저장 디바이스(102)의 자원들은, RLA가 이와 달리 수행되었을 수 있는 시간들 동안 제어기가 GC 또는 다른 백엔드(backend) 기능성들을 수행할 수 있게 하도록 최적으로 사용될 수 있다.
도 7a 및 도 7b는, NVM(110)이 구역 경계(706, 756)에 의해 분리된 제1 구역(702, 752) 및 제2 구역(704, 754)을 포함하는 구역들로 분할될 때의 최적화된 RLA 수행의 예시적인 다이어그램들(700, 750)을 예시한다. 최적화된 RLA는 전술한 바와 같은 2-스테이지 RLA일 수 있으며, 여기서 도 7a는 (시간 t1에서 수행되는) 최적화된 RLA의 제1 스테이지의 일례를 예시하고, 도 7b는 (시간 t2에서 수행되는) 최적화된 RLA의 제2 스테이지의 일례를 예시한다. 제1 구역(702, 752) 및 제2 구역(704, 754)은 각각 도 6의 제1 구역(602) 및 제2 구역(604)에 대응할 수 있고, 유사하게 구역 경계(706, 756)는 도 6의 구역 경계(606)에 대응할 수 있다.
도 7a를 참조하면, 저장 디바이스(102)의 제어기(123)는 초기에 제1 구역(702) 내의 논리적 어드레스들을 포함하는 판독 커맨드를 호스트(104)로부터 수신하고, 제어기는 (시간 t1에서) 그들 논리적 어드레스들로부터 데이터(708)를 판독한다. 예를 들어, 제1 구역(702)은 LBA들 0 내지 1023을 포함하도록 구성될 수 있고, 제어기는 제1 구역(702)으로부터 LBA들 384 내지 895 내의 256 KB의 데이터(708)를 판독할 수 있다. 더욱이, 제어기(123)는 이들 논리적 어드레스들(예컨대, LBA들 384 내지 895)로부터의 데이터가 순차적인 패턴을 반영함을 식별할 수 있고, 따라서, 제어기는 호스트(104)가 순차적인 패턴의 후속 데이터(710)(예를 들어, LBA들 896 내지 1919 내의 후속 데이터)에 대한 판독 커맨드를 발행할 가능성이 있을 것임을 예측할 수 있다. 추가적으로, 제어기는, 호스트(104)로부터 수신되는 구역 구성에 기초하여, 구역 경계들에 걸친 판독이 금지됨(예컨대, 구역 경계들에 걸친 판독 플래그가 리셋됨)을 그리고 현재 판독 커맨드가 구역 경계(706) 이전에 끝나는 제1 구역(702) 내의 LBA들(예컨대, 제1 구역(702)의 경계일 수 있는 LBA 1023 이전에 끝나는 LBA들 384 내지895)을 포함함을 결정할 수 있다.
따라서, 제어기(123)는 구역 구성에 기초하여, 호스트(104)가 현재 구역의 판독을 완료하지 않는 한, 호스트로부터의 후속 판독 커맨드들이 동일한 구역 내에 남아 있을 것임을 예측할 수 있다. 예를 들어, 제1 구역(702) 내의 LBA들 384 내지 895에 대한 커맨드를 수신하는 것에 응답하여, 제어기는 호스트가 제1 구역(702) 내의 LBA들 896 내지 1023에 대한 후속 판독 커맨드를 송신할 가능성이 있을 것이지만, 동시에 제2 구역(704) 내의 LBA들 1024 내지 1919에 대해서는 그렇지 않을 것임을 예측할 수 있다. 따라서, 제어기는, 제2 구역(704) 내의 추가 데이터(712)(예컨대, LBA들 1024 내지 1919)의 RLA를 수행하지 않으면서, 후속 데이터(710)의 프리페칭을 제1 구역(702)의 구역 경계(706)에서 끝나는 그러한 LBA들(예컨대, 이러한 예에서는 LBA들 896 내지 1023 또는 64 KB의 데이터)로 제한하도록 결정할 수 있다.
도 7b를 참조하면, 제어기(123)는 나중에 제1 구역(752) 내의 프리페칭된 데이터와 연관된 논리적 어드레스들을 포함하는 후속 판독 커맨드를 호스트(104)로부터 수신할 수 있고, 제어기는 (예컨대, 시간 t2에서) 그러한 논리적 어드레스들로부터 후속 데이터(758)를 판독할 수 있다. 예를 들어, 후속 판독 커맨드는 이제, 이전에 프리페칭되어 휘발성 메모리(118) 내에 저장되었던 LBA들 896 내지 1023 내의 데이터를 요청할 수 있고, 제어기는 호스트에 제공될 그 후속 데이터를 휘발성 메모리로부터 획득할 수 있다. 제어기(123)가, 후속 판독 커맨드가 제1 구역(752) 내의 잔여 LBA들을 포함한다고 결정하는 경우(즉, 제1 구역에 대해 추가의 판독 커맨드들이 도달하지 않을 것임), 제어기(123)는 제2 구역(754) 내의 데이터(예컨대, 추가 데이터(760))에 대한 추가 판독 커맨드가 호스트로부터 수신될 가능성이 있을 것이라고 결정할 수 있다. 예를 들어, 제어기는, 이제 LBA들 1024 내지 1919로부터의 데이터를 요청하는 추가 판독 커맨드가 도달할 수 있다고, 그리고 이러한 요청된 데이터가 이전에 요청된 데이터와 동일한 순차적인 패턴의 일부라고 결정할 수 있다. 따라서, 제어기는 전술된 바와 같이 RLA를 수행하고 제2 구역(704) 내의 추가 데이터(760)를 프리페칭할 수 있다.
일례에서, 제어기(123)는, 구역 구성에 기초하여 프리페칭을 제한하지 않으면서, 제2 구역(754) 내의 추가 데이터(760)에 대한 RLA를 수행할 수 있다. 예를 들어, 도 6과 관련하여 전술된 것과 같이, 제어기는 이용가능한 시스템 자원들에 기초하여 프리페칭될 수 있는 이용가능한 최대 크기까지 제한 없는 RLA를 수행할 수 있다. 그러나, 추가 데이터(760)가 이전에 판독된 데이터와는 상이한 구역 내에서 시작하기 때문에, 호스트는 제2 구역으로부터 프리페칭된 데이터의 전체를 요청하는 판독 커맨드를 송신하지 않을 수 있음이 가능하다. 예를 들어, 호스트는 제2 구역 내의 추가 데이터의 일부분에 대한 판독 커맨드를 송신하도록 결정할 수 있거나, 또는 심지어 제3 구역(도시되지 않음) 내의 추가 데이터에 대한 판독 커맨드를 송신할 수 있다. 이러한 경우에, 시스템 자원들은 여전히 RLA에 비효율적으로 사용될 수 있다.
추가 데이터(760)의 비효율적인 RLA의 이러한 가능성을 해결하기 위해, 제어기(123)는 추가 데이터(760)의 프리페칭을 제한할 수 있다. 일례에서, RLA 제한은 사실상 정적일 수 있다. 예를 들어, RLA에 이용가능한 데이터의 최대량(예컨대, 512 KB 또는 일부 다른 데이터 크기)을 프리페칭하기보다는, 제어기(123)는 더 적은 양의 추가 데이터(예컨대, 128 KB 또는 RLA에 이용가능한 데이터의 최대량보다 작은 일부 다른 데이터 크기)를 보수적으로 프리페칭할 수 있다. 다른 예에서, RLA는 사실상 동적일 수 있다. 예를 들어, RLA에 이용가능한 데이터의 최대량을 프리페칭하기보다는, 제어기(123)는 호스트(104)로부터의 이전의 순차적인 패턴들 또는 다른 이력 정보에 기초하여 프리페칭될 추가 데이터(760)의 양을 결정할 수 있다. 예를 들어, 이전의 판독 커맨드들에 대해 전술된 2-스테이지 RLA를 수행할 때, 제어기(123)는 RLA의 제2 스테이지의 성공 또는 실패의 수, 및 RLA의 제2 스테이지에 이어서 제2 구역에서 호스트에 의해 나중에 요청되었던 추가 데이터의 양(만약 있다면)을 추적할 수 있다. 제어기가, 이전의 순차적인 패턴들 또는 다른 이력 정보에 기초하여, 호스트가 제2 구역 내의 추가 데이터의 일부분만을 요청할 경향이 있다고, 또는 호스트가 대체적으로 제2 구역 내의 추가 데이터를 전혀 요청하지 않는다고 결정하는 경우, 제어기는 추가 데이터의 RLA를, 예컨대 더 작은 RLA 크기를 사용하거나 RLA를 방지함으로써, 더 큰 정도로 제한하도록 결정할 수 있다. 대조적으로, 제어기가, 이전의 순차적인 패턴들 또는 다른 이력 정보에 기초하여, 호스트가 제2 구역 내의 추가 데이터의 더 큰 부분 또는 심지어 그 전체를 요청할 경향이 있다고 결정하는 경우, 제어기는 추가 데이터의 RLA 제한을 완화하도록 또는 RLA를, 예컨대 더 큰 (또는 심지어 최대) RLA 크기를 사용함으로써, 더 작은 정도로 제한하도록 결정할 수 있다. 이들 접근법들은, 추가 데이터 전체에 대한 판독 커맨드들이 수신되지 않는 경우에, 저장 디바이스(102) 내의 추가 자원들이 정적으로 또는 동적으로 RLA로부터 보류되고, 대신에 백그라운드 동작들을 위해 사용되도록 허용하여, 이에 따라, 저장 디바이스(102)의 효율을 향상시킨다.
따라서, ZNS를 구현하는 저장 디바이스들에 대해, RLA는 구역 경계들에 걸친 판독이 금지되는 경우 상기 예들에 설명된 것과 같이 최적화될 수 있다. 다른 한편으로, 구역 경계들에 걸친 판독이 허용되는 경우(예컨대, 구역 경계들에 걸친 판독 플래그가 설정됨), 호스트(104)는 구역 네임스페이스와 연관된 NVM(110)의 전체 논리적 영역을 별개의 구역들로서보다는 판독들을 위한 단일 공간으로서 고려할 수 있다. 또한, ZNS를 구현하지 않는 저장 디바이스들(예컨대, 비-ZNS 디바이스들)은 구역 경계들에 걸친 판독이 허용될 때의 판독들의 관점에서 ZNS 디바이스들과 유사하게 동작할 수 있다. 그러한 디바이스들에서, 제어기는, 일례에서, 저장 디바이스의 내부 자원 이용가능성에 기초하여 RLA를 수행할 수 있다. 예를 들어, 제어기는, 저장 디바이스가 낮은 커맨드 큐 깊이를 가질 때 그리고 기존의 백엔드 작업이 시스템이 실제로 지원할 수 있는 것보다 더 적을 때 RLA를 트리거할 수 있다.
대안적으로, 다른 예에서, 그러한 디바이스들(예컨대, 구역 경계들에 걸친 판독을 허용하도록 구성된 비-ZNS 디바이스들 및 ZNS 디바이스들)의 제어기(123)는 도 6에 관련하여 설명된 바와 같은 전통적인 RLA를 수행하지 않을 수 있고, 그 대신, 도 7a 및 도 7b에 관련하여 전술된 최적화된 RLA의 시뮬레이션된 버전을 수행할 수 있다. 보다 구체적으로, 그러한 디바이스들에서, 제어기는 순차적인 호스트 기록 패턴을 나타내는 저장된 메타데이터에 기초하여 RLA로의 데이터의 프리페칭을 제한할 수 있다. 예를 들어, 제어기(123)는, 호스트(104)로부터 수신된 기록 커맨드들의 제출 큐로부터, 순차적인 패턴이 초기 기록 커맨드 및 후속 기록 커맨드 내에 존재한다고 결정할 수 있고, 제어기는 (예를 들어, 초기 기록 커맨드에 대한 기록된 순차적인 데이터의 일부분의 FMU 헤더 내에 메타데이터를 태깅함으로써) 후속 기록 커맨드와 연관된 LBA들, 데이터 길이, 및 다른 정보를 나타내는 메타데이터를 초기 기록 커맨드 내의 데이터와 함께 NVM(110) 내에 저장할 수 있다. 제어기가 나중에 판독 커맨드에 응답하여 이러한 데이터의 순차적인 판독을 수행할 때, 제어기는 메타데이터를 판독하고 분석하여 RLA가 수행되어야 하는지 여부를 결정할 수 있고, 수행되어야 한다면, RLA 동안 프리페칭될 데이터의 양을 결정할 수 있다. 제어기는 저장된 메타데이터에 기초하여 RLA 동안 프리페칭될 데이터의 양을 제한할 수 있다. 따라서, 도 7a 및 도 7b에 관련하여 설명된 접근법과 유사하게, 호스트는 심지어 구역 경계들이 없는 비-ZNS 디바이스들 또는 구역 경계들에 걸쳐 판독할 수 있는 ZNS 디바이스들 내에서도, (제어기에 의해 결정된 메타데이터를 통해) RLA를 캡핑 또는 제한하기 위한 경계들을 제어기에 나타낼 수 있으며, 따라서, 그 결과 RLA는 추가로 최적화될 수 있다. 더욱이, 전술된 바와 같이 구성들 또는 메타데이터에 기초하여 RLA를 수행함으로써, 제어기는 순차적인 호스트 패턴들에 맞춰 RLA를 더 확실하게 제한하기 위한 경계들을 식별하고, 이에 따라, 덜 확실한 제어기-생성 경계들(예컨대, 새로운 L2P 어드레스 변환 테이블들이 생성되는 경우에 식별되는 경계 또는 다른 디바이스-특정 상황들이 호스트-제공 구성들에 의존하지 않는 경우에 식별되는 경계)에 의존할 수 있는 다른 접근법들에서 보다는, RLA에 대한 더 높은 성공적인 예측 비율을 달성할 수 있다.
일례에서, 제어기가 제출 큐 내에서 순차적인 기록 커맨드들을 수신할 때, 제어기는 제출 큐로부터, 호스트로부터 기록되고 있는 데이터의 순차적인 패턴이 (상이한 기록 커맨드 내에서) 계속되고 있는지 또는 (현재 기록 커맨드 내에서) 끝나는지 여부를 나타내는 정보를 식별할 수 있다. 예를 들어, 제출 큐 내의 초기 기록 커맨드가 256 KB의 순차적인 데이터와 연관된 LBA들 384 내지 895를 포함하고 제출 큐 내의 후속 기록 커맨드가 LBA들 896 내지 1023을 포함하는 경우, 제어기는 순차적인 패턴이 초기 기록 커맨드로부터 후속 기록 커맨드로 계속된다고 결정할 수 있고, 이에 따라서, 제어기는 순차적인 패턴에 관한 이러한 정보를 초기 기록 커맨드와 연관된 메타데이터로서 식별 및 저장할 수 있다. 예를 들어, 제어기가 초기 기록 커맨드 내의 호스트 데이터를 NVM(110) 내에 기록할 때, 제어기는 또한, 후속 기록 커맨드에 관한 LBA들, 데이터 길이, 또는 다른 정보를 초기 기록 커맨드와 연관된 메타데이터로서 저장할 수 있다. 예를 들어, 제어기는 (데이터를 비휘발성 메모리로 플러싱하기 전에) 초기 기록 커맨드 내의 데이터의 마지막 부분과 연관된 FMU 헤더 내에 메타데이터를 태깅할 수 있거나, 제어기는 NVM(110) 내의 테이블 또는 다른 데이터 구조 내에 메타데이터를 저장할 수 있거나, 또는 제어기는 다른 방식들로 메타데이터를 저장할 수 있다. 그 결과, 제어기가 나중에 데이터에 대한 순차적인 판독 커맨드를 수신할 때, 제어기는 순차적인 데이터와 함께 이러한 메타데이터를 판독하여, 후속 데이터의 RLA 또는 프리페칭이 요구될지 여부를 그리고 얼마나 요구될지를 결정할 수 있다. 예를 들어, 판독 커맨드가 256 KB의 순차적인 데이터와 연관된 LBA들 384 내지 895를 포함하고, 메타데이터가 순차적인 패턴이 LBA들 896 내지 1023에 대해 계속된다고 나타내는 경우, RLA로 프리페칭될 수 있는 데이터의 최대량이 저장 디바이스 내의 이용가능한 자원들에 기초하여 더 크더라도(예컨대, 512 KB), 제어기는 메타데이터에 기초하여 데이터의 프리페칭을 LBA들 896 내지 1023(예컨대, 64 KB)으로 제한할 수 있다. 대안적으로, 메타데이터가 순차적인 패턴이 끝난다고(예컨대, 다음 LBA들이 현재 판독 커맨드에 대해 순차적이지 않음) 나타내는 경우, 제어기는 RLA를 수행하지 않아, GC와 같은 다른 백그라운드 동작들을 위한 시간 및 자원들을 절약할 수 있다.
이러한 접근법은 또한, 제어기(123)가 다수의 판독 스트림들을 프로세싱할 때 적용될 수 있다. 예를 들어, 제어기는 제어기로부터 다수의 판독 커맨드들을 수신하여, 동시에 (또는 거의 동시에) 상이한 범위들의 LBA들 내의 순차적인 데이터를 판독할 수 있다. 그러한 경우에, 제어기는 각각의 스트림의 메타데이터를 판독하고 각각의 스트림에 대한 메타데이터에 기초하여 RLA를 제한함으로써 단일 판독 스트림과 유사하게 동작할 수 있다. 예를 들어, 제어기는 제1 판독 스트림 내의 프로세싱될 256 KB의 순차적인 데이터와 연관된 LBA들 384 내지 895를 포함하는 판독 커맨드, 및 제2 판독 스트림 내의 프로세싱될 256 KB의 다른 순차적인 데이터와 연관된 LBA들 10384 내지 10895를 포함하는 다른 판독 커맨드를 수신할 수 있다. 일례에서, 제1 판독 스트림에 대한 메타데이터가 순차적인 패턴이 LBA들 896 내지 1023에 대해서 계속됨을 나타내고, 제2 판독 스트림에 대한 메타데이터가 순차적인 패턴이 LBA들 10896 내지 11023에 대해서 계속됨을 나타내는 경우, 제어기는 제1 판독 스트림 내의 메타데이터에 기초하여 데이터의 프리페칭을 LBA들 896 내지 1023(예컨대, 64 KB)으로 제한하고, 유사하게 제2 판독 스트림 내의 메타데이터에 기초하여 데이터의 프리페칭을 LBA들 10896 내지 11023(예컨대 64 KB)으로 제한할 수 있다. 따라서, RLA는 다수의 판독 스트림들에 대해 추가로 최적화될 수 있다.
(단일 판독 스트림이든 또는 다수의 판독 스트림이든) 저장된 메타데이터에 기초하여 RLA를 최적화하기 위한 전술된 접근법은, 데이터가 NVM(110)에 기록되었던 것과 대략 동일한 방식으로 호스트가 데이터를 판독한다고 가정한다. 예를 들어, 호스트가 256 KB의 데이터 그리고 이어서 64 KB의 데이터를 포함하는 순차적인 패턴으로 데이터를 기록하는 경우, 이러한 접근법은 호스트가 256 KB 그리고 이어서 64 KB의 유사한 순차적인 패턴으로 데이터를 판독한다고 가정한다. 호스트가 유사한 순차적인 패턴들로 기록 및 판독할 수 있을 가능성이 있지만, 그럼에도 불구하고, 이러한 접근법은, 호스트가 그러한 유사한 방식으로 기록 및 판독하지 않는 예상 밖의 경우에는, 너무 많거나 너무 적은 RLA를 야기할 수 있다. 따라서, 전술된 바와 같이 이전의 순차적인 패턴들 또는 다른 이력 정보에 기초하여 RLA를 동적으로 제한하는 것과 같은 RLA에 대한 다른 최적화들이, 마찬가지로, 불충분한 (또는 과한) RLA의 위험을 감소시키는 것으로 고려될 수 있다. 더욱이, 불충분한 또는 과한 RLA가 여전히 발생하더라도, 그러한 발생은 어떠한 경우에도 저장 디바이스에 대한 기능성 실패들을 야기하지 않을 것이다.
도 8은 호스트 디바이스(806)로부터의 판독 커맨드들에 응답하여 데이터(804)의 최적화된 RLA를 수행하는 저장 디바이스의 제어기(802)의 예시적인 다이어그램(800)을 예시한다. 예를 들어, 제어기(802)는 도 1의 저장 디바이스(102)의 제어기(123)에 대응할 수 있고, 호스트 디바이스(806)는 도 1의 호스트(104)에 대응할 수 있고, 데이터(804)는 도 1의 데이터(119)에 대응할 수 있다. 제어기는 도 1의 NVM(110)에 대응할 수 있는 메모리(808)에 데이터(804)를 기록 및 판독한다. 제어기(802) 및 메모리(808)는 ZNS 디바이스 또는 비-ZNS 디바이스 내에 있을 수 있다.
호스트 디바이스(806)는 정보(810)를 제어기(802)에 제공할 수 있고, 이 정보는 제어기가 (예컨대, 저장된 정보(812)로서) 메모리(808) 내에 저장할 수 있는 것이다. 일례에서, 정보(810)는 구역들(예컨대, 도 5의 구역들(502))의 순차적이고 인접하지 않은 논리적 어드레스들(예컨대, 도 5의 논리적 어드레스들(504))의 그룹들에 대한 연관성, 구역 동작 특성들(816) 및 선택적인 구역 커맨드 지원을 나타내는 식별 네임스페이스 데이터 구조, 및 ZNS와 관련된 다른 정보를 나타내는 구역 구성(814)을 포함할 수 있다. 구역 동작 특성들(816) 중 하나는, 호스트 디바이스(806)가 구역 경계들(예컨대, 도 5, 도 6, 도 7a 및 도 7b 내의 구역 경계들(506, 606, 706, 756))에 걸쳐 데이터를 판독할 수 있는지 여부를 나타내는 구역 경계들에 걸친 판독 플래그(818)를 포함할 수 있다. 다른 예에서, 정보(810)는 기록 커맨드들과 연관된 LBA들, 데이터 길이, 및 다른 정보를 나타내는 제출 큐 엔트리들을 포함할 수 있고, 제어기는 정보(810)로부터, 기록 커맨드 내의 순차적인 패턴이 후속 기록 커맨드 내에서 계속되는지 (또는 끝나는지) 여부를 결정할 수 있다. 정보가, 후속 기록 커맨드가 순차적인 패턴으로 초기 기록 커맨드를 따른다고 나타내는 경우, 제어기는 후속 기록 커맨드와 연관된 LBA들, 데이터 길이, 또는 다른 정보를 초기 기록 커맨드와 연관된 메타데이터(820)로서 저장할 수 있다. 제어기는 또한, 시간 경과에 따라 메타데이터(820)를 (예컨대, 저장된 메타데이터(822)로서) 저장할 수 있는데, 이는 그러한 정보가 상이한 기록 커맨드들에 대해 결정되기 때문이다. 따라서, 저장된 메타데이터(822)는 다양한 기록 커맨드들과 연관된 순차적인 패턴들(824) 및 데이터 길이들(826)에 관한 정보를 포함할 수 있다.
초기에, 제어기(802)는 데이터(804)를 포함하는 기록 커맨드를 호스트 디바이스(806)로부터 수신할 수 있고, 제어기(802)는 다수의 FMU들(828)에서 데이터(804)를 메모리(808) 내에 기록할 수 있다. 각각의 FMU(828)는 데이터(804)의 일부분, 예를 들어, 8개의 섹터들 또는 LBA들(n-7 내지 n)을 포함할 수 있으며, 여기서 n은 현재 데이터 부분 내의 최신 LBA를 표현한다. 예를 들어, 각각의 LBA가 512 바이트를 표현하고 각각의 FMU가 8개의 LBA들을 포함한다고 가정하면, 각각의 FMU는 4 KB-크기 부분의 데이터(804)를 표현할 수 있다. 제어기가 (예컨대, 정보(810)로부터) 메타데이터(820)를 결정할 때, 도 8에 예시된 바와 같이, 제어기는, FMU들(828) 중 하나(예컨대, 마지막 FMU 또는 다수의 FMU들 내의 부분 또는 데이터(804)의 부분들) 내에 메타데이터(820)를 태깅함으로써 메모리(808) 내에 메타데이터(820)를 저장할 수 있다. 대안적으로, 제어기는 다른 방식들로 메타데이터(820)를 메모리(808) 내에 저장할 수 있다. 메타데이터(820)는, 순차적인 패턴이 후속 기록 커맨드 내의 후속 데이터(830)로 계속되는지 여부에 관한 정보를 나타낼 수 있다. 이러한 경우에, 제어기(802)는 후속 데이터(830)를 포함하는 후속 기록 커맨드를 호스트(104)로부터 수신할 수 있고, 제어기는 유사하게 다수의 FMU들에서 후속 데이터(830)를 메모리(808)에 기록할 수 있다. 제어기가, 유사하게, 순차적인 패턴이 추가 기록 커맨드 내의 추가 데이터로 계속된다고 결정하는 경우, 제어기는 이러한 패턴을 나타내는 메타데이터(820)를 또한 저장할 수 있고, 그 프로세스는 다양한 기록 커맨드들에 대해 반복될 수 있다.
데이터(804) 및 후속 데이터(830)를 메모리(808)에 기록한 후, 제어기(802)는 데이터(804)(예컨대, 도 7a의 데이터(708))를 판독하도록 요청하는 호스트 커맨드(832)를 수신할 수 있다. 일례에서, 정보(810)는 구역 구성(814)(예컨대, 저장 디바이스가 ZNS 디바이스임)을 포함할 수 있고, 호스트 커맨드(832)는 제1 구역(예컨대, 도 6 및 도 7a 내의 제1 구역(602, 702)) 내의 데이터를 판독하도록 요청할 수 있다. 그러한 경우에, 제어기(802)는, 메모리(808) 내에 저장된 구역 경계들에 걸친 판독 플래그(818)가 리셋되어 있는지 또는 이와 달리 호스트가 구역 경계들에 걸쳐 판독할 수 없음을 나타내는지를 검사할 수 있다. 호스트 디바이스(806)가 구역 경계들에 걸쳐 판독할 수 없는 경우, 제어기는 요청되고 있는 데이터(804)가 제1 구역 내에 있지만, 제1 구역의 끝을 포함하지 않는 논리적 어드레스들 내에 있는지 여부를 결정할 수 있다. 그렇다면, 제어기(802)는, 데이터(804)에 순차적인 후속 데이터(830)(예컨대, 도 도 7a 및 도 7b 내의 후속 데이터(710, 758))가 제1 구역(예컨대, 도 6, 도 7a, 및 도 7b 내의 제1 구역(602, 702, 752)) 및 제2 구역(예컨대, 도 6, 도 7a, 및 도 7b 내의 제2 구역(604, 704, 754)) 둘 모두 내에 있을 수 있다고 결정할 수 있고, 제어기는 제1 구역으로부터 데이터(804)를 페칭하고, 제1 구역의 끝까지로 후속 데이터(830)의 RLA 또는 프리페칭을 제한할 수 있다. 제어기(802)가 나중에 이전에 프리페칭되었던 후속 데이터(830)에 대한 후속 호스트 커맨드(834)를 수신하는 경우, 제어기는 추가 데이터에 대한 추가 호스트 커맨드를 수신하기 전에, RLA를 사용하여 추가 데이터(836)(예컨대, 도 7a 및 도 7b 내의 추가 데이터(712, 760), 이는 제2 구역(704, 754) 내의 나머지 후속 데이터에 대응할 수 있음)를 프리페칭할 수 있다. 제어기는 프리페칭을 제한하지 않으면서 추가 데이터(836)에 대해 RLA를 수행할 수 있거나, 또는 제어기는 제한된 프리페칭(예컨대, 사실상 정적 또는 동적)을 가지면서 추가 데이터(836)에 대해 RLA를 수행할 수 있다. 예를 들어, 제어기는 순차적인 패턴들(824), 데이터 길이들(826), 또는 이전 호스트 커맨드들로부터의 다른 이력 정보에 기초하여 RLA를 동적으로 제한할 수 있다.
다른 예에서, 제어기는 정보(810)(예컨대, 저장 디바이스는 비-ZNS 디바이스 또는 구역 경계들에 걸친 판독을 허용하는 ZNS 디바이스임)로부터 메타데이터(820)를 결정할 수 있다. 그러한 경우에, 제어기(802)가 데이터(804)를 판독하도록 요청하는 호스트 커맨드(832)를 수신한 후, 제어기는 메타데이터(820)에 기초하여 RLA를 수행할지 여부를 그리고 어떤 크기로 수행할지를 결정할 수 있다. 예를 들어, 제어기는 저장된 메타데이터(822)를 데이터(804)와 함께 판독할 수 있고, 제어기는 메타데이터로부터, 후속 데이터(830)가 데이터(804)로부터의 순차적인 패턴을 계속한다고 결정할 수 있다. 그러한 경우에, 제어기는, 추가 자원들이 동시에 추가 데이터(836)를 RLA로 프리페칭하는 데 이용가능한지 여부에 관계없이, 메타데이터 내에 나타내었던 후속 데이터(830)의 양으로 RLA로의 프리페칭을 제한할 수 있다. 제어기(802)는 다수의 판독 스트림들을 프로세싱할 때와 유사하게 RLA를 수행할 수 있다.
도 9는 최적화된 RLA를 사용하여 판독 처리하기 위한 방법의 예시적인 흐름도(900)를 예시한다. 예를 들어, 이 방법은 도 1에 예시된 것과 같은 저장 디바이스(102)에서 수행될 수 있다. 흐름도 내의 단계들 각각은 후술되는 바와 같은 제어기(예컨대, 제어기(123, 802))를 사용하여, 또는 일부 다른 적합한 수단에 의해 제어될 수 있다.
일례에서, 블록(902)에 의해 표현되는 바와 같이, 제어기는 호스트로부터 수신된 구역 구성을 메모리 내에 저장할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는 호스트 디바이스(806)로부터 수신된 구역 구성(814)을 메모리(808) 내에 저장할 수 있다. 구역 구성(814)은 구역 경계들에 걸친 판독 플래그(818)를 포함하는 구역 동작 특성(816)을 포함할 수 있다. 구역 구성(814)은 또한, 구역 경계들에 걸친 판독 플래그(818)가 리셋될 때 구역 경계들(예컨대, 도 5 내지 도 7b 내의 구역 경계들(506, 606, 706, 756))에 걸친 판독이 금지됨을, 그리고 구역 경계들에 걸친 판독 플래그(818)가 설정될 때 구역 경계들에 걸친 판독이 허용됨을 나타낼 수 있다.
다른 예에서, 블록(904)에 의해 표현되는 바와 같이, 제어기는 후속 데이터와 연관된 데이터 및 메타데이터를 기록할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는 메모리(808) 내에 후속 데이터(830)와 연관된 데이터(804) 및 메타데이터(820)를 기록할 수 있다. 메타데이터(820)는, 후속 데이터(830) 및 데이터(804)가 순차적인 패턴(824)의 일부임을 나타낼 수 있다. 제어기(802)는 또한, 데이터(804)의 일부분(예컨대, LBA들 n-7 내지 n에 의해 나타내진 데이터의 마지막 부분)과 연관된 FMU 헤더 내에 (예컨대, FMU(828) 내에) 후속 데이터(830)와 연관된 메타데이터(820)를 기록할 수 있다.
블록(906)에 의해 표현되는 바와 같이, 제어기는 호스트 커맨드에 응답하여 메모리로부터 데이터를 판독할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는 호스트 커맨드(832)에 응답하여 메모리(808)로부터 데이터(804)를 판독할 수 있다. 또한, 블록(908)에 의해 표현되는 바와 같이, 제어기는 호스트에 의해 이전에 나타내진 정보를 포함하는 후속 데이터와 연관된 메타데이터를 메모리로부터 판독할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는 호스트 디바이스(806)에 의해 이전에 나타내진 정보(예컨대, 메타데이터(820) 내에 나타내진 후속 데이터와 연관된 LBA들 또는 다른 정보와 같은 정보(810))를 포함하는 후속 데이터(830)와 연관된 저장된 메타데이터(822)를 메모리(808)로부터 판독할 수 있다. 메타데이터(820)는 또한, 후속 데이터(830)의 데이터 길이(826)를 포함할 수 있다.
블록(910)에 의해 표현되는 바와 같이, 제어기는 호스트로부터 이전에 수신된 저장된 정보에 기초하여 메모리로부터의 후속 데이터의 프리페칭을 제한할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는 호스트 디바이스(806)로부터 이전에 수신된 저장된 정보(812)(예컨대, 구역 구성(814)을 포함하는 정보(810), 또는 메타데이터(820)로서 결정된 LBA들, 데이터 길이, 또는 다른 정보와 같은 정보(810))에 기초하여 메모리(808)로부터의 후속 데이터(830)의 프리페칭을 제한할 수 있다. 저장된 정보는 호스트 디바이스(806)로부터 수신된 구역 구성(814), 후속 데이터(830) 및 데이터(804)가 순차적인 패턴(824)의 일부임을 나타내는 메타데이터(820), 또는 둘 모두를 포함할 수 있다.
제한하는 것은 도 7a와 관련하여 전술된 것과 같은 최적화된 RLA의 제1 스테이지에 대응할 수 있다. 예를 들어, 저장된 정보가 구역 구성을 포함할 때, 블록(912)으로 표현되는 바와 같이, 제어기는 구역 경계들에 걸친 판독이 금지되어 있는지 여부를 결정할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는 구역 경계들에 걸친 판독 플래그(818)가 구역 구성(814)의 구역 동작 특성들(816) 내에서 리셋되어 있는지 여부를 결정할 수 있다. 그렇다면, 블록(914)에 의해 표현되는 바와 같이, 제어기는 그 데이터와 동일한 구역 내에서 후속 데이터의 프리페칭을 제한할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는 데이터(804)와 동일한 구역 내에서 후속 데이터(830)의 프리페칭을 제한할 수 있다. 예를 들어, 도 7a를 참조하면, 제어기가 제1 구역(702)으로부터 데이터(708)를 판독할 때, 제어기는 제1 구역(702)의 끝까지의 후속 데이터(710)만을 프리페칭할 수 있다.
이어서, 제어기는 도 7b와 관련하여 전술된 것과 같은 최적화된 RLA의 제2 스테이지를 수행할 수 있다. 예를 들어, 블록(916)에 의해 표현되는 바와 같이, 제어기는 후속 호스트 커맨드에 응답하여 후속 데이터와는 상이한 구역 내의 추가 데이터를 프리페칭할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는 후속 호스트 커맨드(834)에 응답하여 후속 데이터(830)와는 상이한 구역 내의 추가 데이터(836)를 프리페칭할 수 있다. 예를 들어, 도 7b를 참조하면, 제어기가 제1 구역(702)으로부터 후속 데이터(758)를 판독할 때, 제어기는 제2 구역(754)으로부터의 추가 데이터(760)를 프리페칭할 수 있다.
또한, 블록(918)에 의해 표현되는 바와 같이, 제어기는 추가 데이터의 프리페칭을 제한할 수 있다. 예를 들어, 도 7b 및 도 8을 참조하면, 제어기(802)는 제2 구역(754)으로부터의 추가 데이터(760, 836)의 프리페칭을 제한할 수 있다. 예를 들어, 전술된 바와 같이, 제어기는 제한된 프리페칭(예컨대, 사실상 정적 또는 동적)을 가지면서 추가 데이터(760, 836)에 대해 RLA를 수행할 수 있다. 일례에서, RLA 제한은 사실상 정적일 수 있다. 예를 들어, RLA에 이용가능한 데이터의 최대량(예컨대, 512 KB 또는 일부 다른 데이터 크기)을 프리페칭하기보다는, 제어기(123)는 더 적은 양의 추가 데이터(예컨대, 128 KB 또는 RLA에 이용가능한 데이터의 최대량보다 작은 일부 다른 데이터 크기)를 보수적으로 프리페칭할 수 있다. 다른 예에서, RLA는 사실상 동적일 수 있다. 예를 들어, RLA에 이용가능한 데이터의 최대량을 프리페칭하기보다는, 제어기(123)는 호스트 디바이스(806)로부터의 이전의 순차적인 패턴들(예컨대, 순차적인 패턴들(824)) 또는 다른 이력 정보에 기초하여 프리페칭될 추가 데이터(760)의 양을 결정할 수 있다.
대안적으로, 블록(912)에서 제어기가 구역 경계들에 걸친 판독이 허용된다고 결정할 때 또는 저장된 정보가 메타데이터를 포함할 때, 블록(920)에 의해 표현되는 바와 같이, 제어기는 후속 데이터와 연관된 저장된 메타데이터에 기초하여 후속 데이터의 프리페칭을 제한할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)는, 도 7a 및 도 7b에 관련하여 전술된 최적화된 RLA의 시뮬레이션된 버전을 수행함으로써, 후속 데이터(830)와 연관된 저장된 메타데이터(822)에 기초하여 후속 데이터(830)의 프리페칭을 제한할 수 있다. 예를 들어, 블록(922)에 의해 표현되는 바와 같이, 제어기는 메타데이터로부터 후속 데이터의 데이터 길이를 식별할 수 있고, 블록(924)에 의해 표현되는 바와 같이, 제어기는 데이터 길이에 따라 후속 데이터의 프리페칭을 제한할 수 있다. 예를 들어, 도 8을 참조하면, 제어기(802)가 데이터(804)의 일부분과 연관된 FMU 헤더 내에 (예컨대, FMU(828) 내에) 후속 데이터(830)와 연관된 메타데이터(820)를 기록한 후, 제어기(802)는 FMU(828) 내에 태깅된 메타데이터(820)를 판독하여, 메타데이터(820)로부터 후속 데이터(830)의 데이터 길이(826)를 식별할 수 있고, 제어기(802)는 데이터 길이(826)에 따라 후속 데이터(830)의 프리페칭을 제한할 수 있다. 예를 들어, 메타데이터(820)가, 후속 데이터(830)가 단지 64 KB의 데이터만을 포함했음을 나타내는 경우, 제어기는 RLA에 이용가능한 최대 크기(예컨대, 512 KB)보다는 64 KB의 데이터를 프리페칭할 수 있다.
따라서, 본 발명에 설명된 저장 디바이스는 구역 경계들에 걸친 판독을 금지하도록 구성된 ZNS 디바이스들에 대해 최적화된 순차적인 판독 정책을 제공한다. 호스트 디바이스에 의해 나타내진 구역 구성들에 기초하여 RLA로의 데이터의 프리페칭을 제한함으로써, 성공적인 RLA 예측 가능성이 더 높아질 수 있다. 또한, 이러한 효과는, RLA로 프리페칭된 데이터가 호스트 디바이스에 의해 나타내진 저장된 메타데이터에 기초하여 유사하게 제한되도록 허용함으로써, 비-ZNS 디바이스들에 대해서뿐만 아니라, 구역 경계들에 걸친 판독을 허용하도록 구성된 ZNS 디바이스들에 대해서도 시뮬레이션될 수 있다. RLA에 대한 이들 최적화들의 결과로서, 저장 디바이스의 자원 사용이 개선될 수 있고 GC와 같은 백그라운드 동작들이 더 효율적으로 수행될 수 있다.
본 발명의 다양한 태양들은 당업자가 본 발명을 실시할 수 있게 하기 위해 제공된다. 본 개시내용 전반에 걸쳐서 제시된 예시적인 실시예들에 대한 다양한 수정들은 당업자에게 용이하게 명백할 것이며, 본 명세서에 개시된 개념들은 다른 자기 저장 디바이스들로 확장될 수 있다. 따라서, 청구범위는 본 발명의 다양한 태양들로 제한되는 것으로 의도되지 않으며, 청구항의 언어와 일치하는 전체 범주에 부합되어야 한다. 당업자에게 알려져 있거나 나중에 알려지게 될 본 개시내용 전반에 걸쳐 기술된 예시적인 실시예들의 다양한 컴포넌트들에 대한 모든 구조적 및 기능적 등가물들은 명백히 본 명세서에 참고로 포함되며, 청구범위에 의해 포괄되도록 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도, 그러한 개시내용이 청구항에서 명시적으로 인용되는지 여부에 관계없이 공중에게 전용되는 것으로 의도되지 않는다. 청구항 구성요소도, 그 구성요소가 문구 "~하기 위한 수단"을 사용하여 명시적으로 인용되지 않는 한, 또는, 방법 청구항의 경우, 그 구성요소가 문구 "~하기 위한 단계"를 사용하여 인용되지 않는 한, 미국 35 U.S.C. §112의 규정 또는 다른 사법권 내에서 유사한 법령 또는 법규 하에서 해석되어서는 안 된다.

Claims (20)

  1. 저장 디바이스로서,
    메모리; 및
    호스트 커맨드에 응답하여 상기 메모리로부터 데이터를 판독하도록, 그리고 호스트로부터 이전에 수신된 저장된 정보에 기초하여 상기 메모리로부터의 후속 데이터의 프리페칭(pre-fetching)을 제한하도록 구성된 제어기를 포함하는, 저장 디바이스.
  2. 제1항에 있어서, 상기 저장된 정보는 상기 호스트로부터 수신된 구역 구성을 포함하는, 저장 디바이스.
  3. 제2항에 있어서, 상기 제어기는, 상기 구역 구성이 구역 경계들에 걸친 판독이 금지됨을 나타낼 때, 상기 데이터와 동일한 구역 내에서 상기 후속 데이터의 프리페칭을 제한하도록 추가로 구성되는, 저장 디바이스.
  4. 제3항에 있어서, 상기 제어기는, 상기 후속 데이터에 대한 후속 호스트 커맨드에 응답하여 상기 후속 데이터와는 상이한 구역 내의 추가 데이터를 프리페칭하도록 추가로 구성되는, 저장 디바이스.
  5. 제4항에 있어서, 상기 제어기는 상기 추가 데이터의 프리페칭을 제한하도록 추가로 구성되는, 저장 디바이스.
  6. 제2항에 있어서, 상기 제어기는, 상기 구역 구성이 구역 경계들에 걸친 판독이 허용됨을 나타낼 때, 상기 후속 데이터와 연관된 저장된 메타데이터에 기초하여 상기 후속 데이터의 프리페칭을 제한하도록 추가로 구성되는, 저장 디바이스.
  7. 제1항에 있어서, 상기 저장된 정보는 상기 후속 데이터 및 상기 데이터가 순차적인 패턴의 일부임을 나타내는 메타데이터를 포함하는, 저장 디바이스.
  8. 제7항에 있어서, 상기 제어기는 상기 메타데이터로부터 상기 후속 데이터의 데이터 길이를 식별하도록, 그리고 상기 데이터 길이에 따라 상기 후속 데이터의 프리페칭을 제한하도록 추가로 구성되는, 저장 디바이스.
  9. 저장 디바이스로서,
    메모리; 및
    호스트로부터 수신된 구역 구성을 상기 메모리 내에 저장하도록, 호스트 커맨드에 응답하여 상기 메모리로부터 데이터를 판독하도록, 그리고 상기 구역 구성에 기초하여 상기 메모리로부터의 후속 데이터의 프리페칭을 제한하도록 구성된 제어기를 포함하는, 저장 디바이스.
  10. 제9항에 있어서, 상기 구역 구성은 구역 경계들에 걸친 판독 플래그를 포함하는 구역 동작 특성을 포함하는, 저장 디바이스.
  11. 제10항에 있어서, 상기 구역 구성은 상기 구역 경계들에 걸친 판독 플래그가 리셋될 때 구역 경계들에 걸친 판독이 금지됨을 나타내고, 상기 구역 구성은 상기 구역 경계들에 걸친 판독 플래그가 설정될 때 구역 경계들에 걸친 판독이 허용됨을 나타내는, 저장 디바이스.
  12. 제9항에 있어서, 상기 제어기는, 상기 구역 구성이 구역 경계들에 걸친 판독 플래그가 리셋됨을 나타낼 때, 상기 데이터와 동일한 구역 내에서 상기 후속 데이터의 프리페칭을 제한하도록 추가로 구성되는, 저장 디바이스.
  13. 제12항에 있어서, 상기 제어기는, 상기 후속 데이터에 대한 후속 호스트 커맨드를 수신한 후, 상기 후속 데이터와는 상이한 구역 내의 추가 데이터를 프리페칭하도록 추가로 구성되는, 저장 디바이스.
  14. 제13항에 있어서, 상기 제어기는 호스트 커맨드들의 이전의 순차적인 패턴에 기초하여 상기 추가 데이터의 프리페칭을 제한하도록 추가로 구성되는, 저장 디바이스.
  15. 제9항에 있어서, 상기 제어기는, 상기 구역 구성이 구역 경계들에 걸친 판독 플래그가 설정됨을 나타낼 때, 상기 후속 데이터와 연관된 저장된 메타데이터에 기초하여 상기 후속 데이터의 프리페칭을 제한하도록 추가로 구성되는, 저장 디바이스.
  16. 저장 디바이스로서,
    메모리; 및
    호스트 커맨드에 응답하여 상기 메모리로부터 데이터를 판독하도록, 호스트에 의해 이전에 나타내진 정보를 포함하는 후속 데이터와 연관된 메타데이터를 상기 메모리로부터 판독하도록, 그리고 상기 정보에 기초하여 상기 메모리로부터 상기 후속 데이터를 프리페칭하는 것을 제한하도록 구성된 제어기를 포함하는, 저장 디바이스.
  17. 제16항에 있어서, 상기 메타데이터는 상기 후속 데이터 및 상기 데이터가 순차적인 패턴의 일부임을 나타내는, 저장 디바이스.
  18. 제16항에 있어서, 상기 정보는 상기 후속 데이터의 데이터 길이를 포함하는, 저장 디바이스.
  19. 제16항에 있어서, 상기 제어기는 상기 데이터의 일부분과 연관된 플래시 관리 유닛(flash management unit, FMU) 헤더 내에 상기 메타데이터를 기록하도록 추가로 구성되는, 저장 디바이스.
  20. 제19항에 있어서, 상기 제어기는 상기 FMU 헤더 내의 상기 메타데이터로부터 상기 후속 데이터의 데이터 길이를 식별하도록, 그리고 상기 데이터 길이에 따라 상기 후속 데이터의 프리페칭을 제한하도록 추가로 구성되는, 저장 디바이스.
KR1020210080061A 2020-09-17 2021-06-21 구역 네임스페이스 디바이스들에서의 판독 처리 KR102663304B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063079898P 2020-09-17 2020-09-17
US63/079,898 2020-09-17
US17/180,631 2021-02-19
US17/180,631 US11513723B2 (en) 2020-09-17 2021-02-19 Read handling in zoned namespace devices

Publications (2)

Publication Number Publication Date
KR20220037333A true KR20220037333A (ko) 2022-03-24
KR102663304B1 KR102663304B1 (ko) 2024-05-03

Family

ID=80351585

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210080061A KR102663304B1 (ko) 2020-09-17 2021-06-21 구역 네임스페이스 디바이스들에서의 판독 처리

Country Status (4)

Country Link
US (1) US11513723B2 (ko)
KR (1) KR102663304B1 (ko)
CN (1) CN114203237A (ko)
DE (1) DE102021114457A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11815938B2 (en) * 2021-07-13 2023-11-14 SK Hynix Inc. Storage device and method of operating the same
US20230063123A1 (en) * 2021-08-26 2023-03-02 SK Hynix Inc. Memory module, memory system including memory module, and method of operating the same
US11977778B2 (en) * 2022-03-09 2024-05-07 Micron Technology, Inc. Workload-based scan optimization
US20230376225A1 (en) * 2022-05-17 2023-11-23 Micron Technology, Inc. Techniques for memory system rebuild
US12014073B2 (en) * 2022-05-17 2024-06-18 Micron Technology, Inc. Techniques for sequential access operations
US11954367B2 (en) 2022-06-15 2024-04-09 Western Digital Technologies, Inc. Active time-based command prioritization in data storage devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451225B1 (en) * 2006-09-12 2008-11-11 Emc Corporation Configuring a cache prefetch policy in a computer system employing object addressable storage
US20190042441A1 (en) * 2018-06-28 2019-02-07 Intel Corporation Intelligent prefetch disk-caching technology
US20200167274A1 (en) * 2019-12-20 2020-05-28 Intel Corporation Zoned namespace with zone grouping

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030200386A1 (en) 2002-04-19 2003-10-23 Seagate Technology Llc Data retention prioritization for a data storage device
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US10025532B2 (en) 2015-09-11 2018-07-17 Sandisk Technologies Llc Preserving read look ahead data in auxiliary latches
US10725835B2 (en) 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10795610B2 (en) 2018-05-30 2020-10-06 Micron Technology, Inc. Read look ahead data size determination
US11016697B2 (en) * 2019-07-02 2021-05-25 International Business Machines Corporation Prefetching data blocks from a primary storage to a secondary storage system while data is being synchronized between the primary storage and secondary storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451225B1 (en) * 2006-09-12 2008-11-11 Emc Corporation Configuring a cache prefetch policy in a computer system employing object addressable storage
US20190042441A1 (en) * 2018-06-28 2019-02-07 Intel Corporation Intelligent prefetch disk-caching technology
US20200167274A1 (en) * 2019-12-20 2020-05-28 Intel Corporation Zoned namespace with zone grouping

Also Published As

Publication number Publication date
US20220083256A1 (en) 2022-03-17
DE102021114457A1 (de) 2022-03-17
KR102663304B1 (ko) 2024-05-03
CN114203237A (zh) 2022-03-18
US11513723B2 (en) 2022-11-29

Similar Documents

Publication Publication Date Title
KR102663304B1 (ko) 구역 네임스페이스 디바이스들에서의 판독 처리
KR101790913B1 (ko) 플래시 메모리에 저장된 데이터의 추론적 프리페칭
US11379151B2 (en) Flow control of large sequential host read commands based on a queue threshold
KR102652694B1 (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
US9563551B2 (en) Data storage device and data fetching method for flash memory
US20140095555A1 (en) File management device and method for storage system
US20160124639A1 (en) Dynamic storage channel
US11385836B2 (en) Read look ahead data size determination
US11403011B1 (en) Host memory buffer allocation management
CN113467704B (zh) 通过智能阈值检测的命令优化
US11294824B2 (en) System and method for reduced latency of read-modify-write operations
US11481136B1 (en) Very low sized zone support for storage devices
US11892928B2 (en) Delayed thermal throttling and associated data routing techniques
US11126558B2 (en) Data storage device and control method for non-volatile memory
US11604735B1 (en) Host memory buffer (HMB) random cache access
US20230359550A1 (en) File system integration into data mining model
US11704249B2 (en) Frozen time cache for multi-host read operations
US11556249B2 (en) Delaying random data relocation for reducing write amplification in storage devices
US11256423B2 (en) Efficiently identifying command readiness based on system state and data spread in multi queue depth environment
US20240086071A1 (en) Ssd use of host memory buffer for improved performance
US20230409470A1 (en) Scratchpad cache for gaming and iot hosts
US20230359391A1 (en) Allocation of host memory buffer for sustained sequential writes

Legal Events

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