CN114203237A - 分区命名空间设备中的读取处置 - Google Patents

分区命名空间设备中的读取处置 Download PDF

Info

Publication number
CN114203237A
CN114203237A CN202110634923.2A CN202110634923A CN114203237A CN 114203237 A CN114203237 A CN 114203237A CN 202110634923 A CN202110634923 A CN 202110634923A CN 114203237 A CN114203237 A CN 114203237A
Authority
CN
China
Prior art keywords
data
controller
zone
storage device
host
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202110634923.2A
Other languages
English (en)
Inventor
R·穆提亚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN114203237A publication Critical patent/CN114203237A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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)
  • Container, Conveyance, Adherence, Positioning, Of Wafer (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Mram Or Spin Memory Techniques (AREA)

Abstract

本发明提供了包括存储器和控制器的存储设备的各方面,这些方面基于区配置或所存储的元数据而优化了先行读取(RLA)性能。该控制器将先前从主机接收的信息存储在存储器中,该信息包括可确定与将要在RLA中预先获取的后续的数据相关联的元数据所依据的区配置或其他信息。当该所存储的信息包括该区配置时,该控制器响应于主机命令而从存储器读取数据,并且基于该区配置而限制从该存储器对后续的数据的预先获取。当该所存储的信息包括元数据时,该控制器从该存储器读取与后续的数据相关联的该元数据,并且基于该元数据而限制对该后续的数据的预先获取。因此,通常用于RLA的该存储设备的资源可替代地用于其他操作,从而提高了该存储设备的效率。

Description

分区命名空间设备中的读取处置
背景技术
相关申请的交叉引用
本申请要求在2020年9月17日提交的名称为“分区命名空间设备中的读取处置(Read Handling in Zoned Namespace Devices)”的美国临时专利申请号63/079,898的权益和优先级权利,该申请的全部内容以引用的方式并入本文,就好像在本文完全阐述一样。
技术领域
本公开大体上涉及电子设备,并且更具体地,涉及存储设备。
背景技术
存储设备使用户能够存储和检索数据。存储设备的示例包括非易失性存储器设备。非易失性存储器(NVM)一般在电力循环之后保持数据。非易失性存储器的示例是闪存存储器,该闪存存储器可包括一个或多个管芯上的NAND单元阵列。闪存存储器可存在于固态设备(SSD)、安全数字(SD)卡等中。
闪存存储设备可使用NVM命令集和管理(admin)命令集进行操作。该NVM命令集可包括闪存存储设备可对非易失性存储器中的数据执行的各种命令,诸如读取、写入、验证等。该admin命令集可包括闪存存储设备对于管理耐力组、命名空间或非易失性存储器的其他参数可执行的各种命令。
分区命名空间(ZNS)是SSD命名空间架构,其中非易失性存储器中的一定范围的逻辑地址(例如,分区命名空间)被划分为固定大小组的逻辑地址或区。分区命名空间内的每个区用于特定应用。例如,主机可将与不同应用相关联的数据写入分区命名空间的不同区中。闪存存储设备与主机介接以获得限定的区,并且将该区映射至闪存存储器中的块。因此,主机可将单独应用相关的数据写入到闪存存储器的单独的块中。
在ZNS中,NVM命令集和admin命令集可包括闪存存储设备可对分区命名空间执行的附加的命令,该附加的命令一起可称为分区命名空间命令集。作为示例,分区命名空间命令集支持指示区操作特性的识别命名空间数据结构,该区操作特性限定分区命名空间的特定行为。一个此类特性包括指示闪存存储设备是否可执行指定横跨多个区的一定范围的逻辑地址的读取操作(即,该设备是否可跨区边界进行读取)的位或旗标。如果该旗标被设置(例如,值‘1’),则可准许闪存存储设备跨区边界进行读取,而如果该旗标被重置或清零(例如,值‘0’),则可禁止控制器跨区边界进行读取。主机可在识别命名空间数据结构中(或在某一其他区配置中)向闪存存储设备提供此旗标,该识别命名空间数据结构可存储在闪存存储设备的配置寄存器中。
发明内容
本文公开了存储设备的一个方面。该存储设备包括存储器和控制器。该控制器被配置为响应于主机命令而从存储器读取数据,并且基于先前从主机接收的所存储的信息而限制从存储器对后续的数据的预先获取。
本文公开了存储设备的另一方面。该存储设备包括存储器和控制器。该控制器被配置为:将从主机接收的区配置存储在存储器中;响应于主机命令而从存储器读取数据;以及基于该区配置而限制从存储器对后续的数据的预先获取。
本文公开了存储设备的另一方面。该存储设备包括存储器和控制器。该控制器被配置为:响应于主机命令而从存储器读取数据;从存储器读取与后续的数据相关联的元数据,该元数据包括先前由主机指示的信息;以及基于该信息而限制从存储器预先获取该后续的数据。
应理解,本领域技术人员从以下详细描述将容易明白存储设备的其他方面,其中以说明的方式示出和描述装置和方法的各方面。如将认识到的,这些方面可以其他和不同的形式实现,并且其若干细节能够在各种其他方面进行修改。因此,附图和具体实施方式本质上被认为是例示性的而不是限制性的。
附图说明
现在将参考附图以举例的方式而非限制的方式在具体实施方式中呈现本发明的各个方面,其中:
图1是绘示与主机设备通信的存储设备的示例性实施方案的框图。
图2是绘示图1的存储设备的非易失性存储器中的逻辑到物理映射表的示例的概念图。
图3是绘示图1的存储设备中的存储器单元阵列的示例的概念图。
图4是绘示图1的存储设备中的块阵列的示例的概念图。
图5是绘示区与由图1的存储设备接收的逻辑地址组的关联的示例的概念图。
图6是绘示传统的先行读取性能的示例的概念图。
图7A是绘示基于区的优化的先行读取性能的示例的概念图。
图7B是绘示基于区的优化的先行读取性能的示例的概念图。
图8是绘示使用优化的先行读取来执行读取处置的图1的存储设备的控制器的示例的概念图。
图9是绘示由图1的存储设备执行的用于读取处置的方法的流程图。
具体实施方式
下面结合附图阐述的具体实施方式旨在作为对本发明的各种示例性实施方案的描述,而并非旨在代表可以实践本发明的唯一实施方案。具体实施方式包括具体细节,其目的是提供对本发明的透彻理解。然而,对本领域的技术人员将显而易见的是,可在没有这些具体细节的情况下实践本发明。在一些情况下,熟知的结构和部件以框图的形式示出,以便避免使发明的概念晦涩难懂。首字母缩略词和其他描述性术语可仅为了方便和清楚起见而使用,而无意限制本发明的范围。
词语“示例性”或“示例”在本文中用于表示用作示例、实例或说明。本文中描述为“示例性”的任何示例性实施方案没有必要理解为比其他示例性实施方案优选或有利。同样,术语装置、方法或制品的“示例性实施方案”不要求本发明的所有示例性实施方案都包括所描述的部件、结构、特征、功能性、工艺、优点、益处或操作模式。
如本文所用,术语“联接”用于指示两个部件之间的直接连接,或者在适当的情况下,指示通过居间部件或中间部件彼此间接连接。相比之下,当部件被称为“直接联接”至另一个部件时,不存在居间元件。
在以下具体实施方式中,将呈现与主机设备通信的存储设备的各个方面。这些方面非常适用于闪存存储设备,诸如SSD和SD卡。然而,本领域的技术人员将认识到,这些方面可扩展到能够存储数据的所有类型的存储设备。因此,对具体装置或方法的任何引用仅旨在说明本发明的各个方面,应当理解,在不脱离本公开的精神和范围的情况下,这些方面可具有广泛的应用范围。
通常,在ZNS中,主机向闪存存储设备提供逻辑地址的区或组的限定。例如,主机可指示一组LBA或一个逻辑块与第一区相关联,另一组LBA或另一逻辑块与第二区相关联,依此类推。闪存存储设备随后可将每个逻辑块映射至闪存存储器中的一个或多个物理块。例如,闪存存储设备可将与第一区相关联的LBA映射至第一物理块,将与第二区相关联的LBA映射至第二物理块等。闪存存储设备随后可将数据写入与该区相关联的块中以及在该块中读取数据。
当将数据写入至区时,闪存存储设备可首先发出区写入命令以发起对区的写入,紧接着发出一个或多个区附加命令以随后对那个区进行写入。例如,如果第一区包括LBA0-1023并且每个LBA表示512个字节,则主机可起初向闪存存储设备发送命令以将256KB的数据写入LBA 0-511中(闪存存储设备使用区写入命令来执行),并且主机随后可向闪存存储设备发送一个或多个命令以将另一256KB的数据写入LBA 512-1023中(闪存存储设备使用一个或多个区附加命令来执行)。类似地,如果第二区包括LBA 1024-2047,则主机起初可请求闪存存储设备将256KB的数据写入LBA 1024-1535中,并且随后将256KB的数据写入LBA1536-2047中。如果主机试图覆写部分写入区中的先前写入的LBA(例如,如果主机试图在未完成LBA 512-1023的情况下再次向LBA 0-511写入数据),则闪存存储设备可中止该命令作为无效写入。因此,主机可受到ZNS约束以将数据循序地写入限定区中。
类似地,当读取区中的数据时,闪存存储设备可循序地读取每个区中的数据。例如,在第一区包括LBA 0-1023并且每个LBA表示512个字节的情况下,主机可类似地向闪存存储设备发送命令以从LBA 0-511读取256KB的数据,并且主机随后可向闪存存储设备发送一个或多个命令以从LBA 512-1023读取256KB的数据。同样地,在第二区包括LBA 1024-2047的情况下,主机起初可向闪存存储设备发送命令以从LBA 1024-1535读取数据,并且主机随后可向闪存存储设备发送一个或多个命令以从LBA1536-2047读取数据。
在一些情况下,主机可请求闪存存储设备跨区边界读取数据。在此类情况下,闪存存储设备可检查配置寄存器以确定是否准许跨区边界进行读取。例如,闪存存储设备可检查从主机接收的分区命名空间命令集专有识别命名空间数据结构中的跨区边界读取位。依据该位的值,闪存存储设备可准许指定包含一个以上区中的逻辑块的LBA范围的读取操作。例如,在第一区包括LBA 0-1023并且第二区包括LBA 1024-2047并且主机发送读取命令以读取LBA 0-1535中的数据(跨第一区和第二区的边界)的情况下,如果设置了跨区边界读取位(例如,值为1),则控制器可成功地读取该数据。否则,如果跨区边界读取位被重置(例如,值为0),则控制器可中止该命令作为具有区边界错误的无效读取。因此,主机可受到ZNS约束以循序地读取限定区内的数据。
当读取数据时,闪存存储设备还可执行先行读取(RLA)。在RLA中,闪存存储设备在从主机接收到对数据的读取命令之前从非易失性存储器读取那个数据,并且在该读取命令稍后到达的情况下,闪存存储设备将那个数据存储到缓存或将要访问的其他易失性存储器中。因此,闪存存储设备在执行RLA时可从存储器预先获取数据。在RLA中预先获取的数据的大小传统上基于闪存存储设备中的可用资源(例如,NAND总线大小、锁存器的数目等)而是最大化的并且是固定的。例如,如果闪存存储设备基于可用资源可一次预先获取的最大数据量是512KB,则闪存存储设备一般可在每当执行RLA时便预先获取那个量。
在RLA中预先获取的数据可基于前一读取命令进行预测或推测。例如,如果闪存存储设备从主机接收到对512KB的连续数据(例如,LBA 0-1023,假设每个LBA表示512个字节)的读取命令,则闪存存储设备可预测主机将可能发出对另一512KB的后续的连续数据(例如,LBA 1024-2047)的读取命令。因此,除了响应于读取命令而获取前512KB的数据并且向主机提供该数据之外,闪存存储设备可预先获取下一512KB的数据并且将那个数据存储在易失性存储器中,直到该设备接收到对该预先获取的数据的后续的读取命令为止。如果预测成功,则闪存存储设备可快速地将该数据从易失性存储器提供至主机而不联系非易失性存储器中的资源,从而允许同时在非易失性存储器中执行其他后台操作,诸如垃圾收集(GC)。成功地预测RLA因此可节省时间和闪存存储设备中的资源。然而,如果RLA预测不成功(即,主机未发出对该预先获取的数据的读取命令),则该预先获取的数据可遭重创,并且在预先获取期间花费的时间和在非易失性存储器中联系的资源可被低效使用或浪费。
因此,恰当地预测数据并且触发对此类数据的RLA可显著有益于闪存存储设备。然而,当闪存存储设备实施ZNS时,上文描述的传统的RLA方法可导致较少的成功预测,因为传统的RLA通常是不管分区命名空间配置而执行的。例如,当闪存存储设备从主机接收到对一个区中的数据的读取命令时,通常在RLA中接收的固定和最大量的数据可包括来自不同区的数据,即使闪存存储设备先前接收到禁止主机和闪存存储设备跨区读取数据的区配置也如此。例如,假设第一区包括LBA 0-1023并且第二区包括LBA1024-2047。在此类情况下,如果闪存存储设备接收到包括第一区中的LBA384-895(例如,256KB的数据)的读取命令并且预先获取RLA中的最大512KB的后续的连续数据(例如,涵盖LBA 896-1919),则预先获取的数据可来自第一区和第二区两者。然而,如果跨区边界读取旗标被重置(禁止跨区进行读取),则主机无法发送指定此LBA范围的读取命令,因为该LBA范围包含了一个以上区中的逻辑块,并且因此有可能RLA数据可响应于失败的预测而遭重创。
因此,为了优化RLA并且提供实施ZNS的闪存存储设备中的成功预测的更高的可能性,闪存存储设备的控制器可基于由主机指示的区配置来限制其对数据的预先获取(例如,给其RLA定限额)。例如,该区配置可包括分区命名空间命令集专有识别命名空间数据结构,该分区命名空间命令集专有识别命名空间数据结构包括区操作特性,诸如跨区边界读取旗标,并且控制器可确定该跨区边界读取旗标是否被重置(即,禁止跨区边界进行读取)。如果控制器确定禁止跨区边界进行读取,则控制器接下来可确定来自主机的当前读取命令是否包括特定区内的逻辑地址,但不包括该特定区的末尾。如果当前读取命令中的逻辑地址不涵盖该区的末尾(它们位于该区的中间内),则控制器可预先获取所预测的数据,直到该区的末尾,而不管是否有缓存和***资源可用于对数据的附加的预先获取。如果控制器稍后接收到对预先获取的数据(包括直到该区的末尾的逻辑地址)的读取命令,则控制器随后可基于可用的***资源来执行RLA中的最大大小的预先获取(不限制RLA)。
例如,在第一区包括LBA 0-1023并且第二区包括LBA 1024-2047的以上示例中,控制器可确定跨区边界读取旗标被重置,并且当前读取命令包括第一区中的LBA 384-895(例如,256KB的数据)。在此类情况下,为了避免此时在第二区中执行不必要的RLA,控制器可将对数据的预先获取限制于在第一区处结束的LBA 896-1023(例如,64KB),即使诸如上文描述RLA一次可进行的最大数据量是512KB也如此。如果RLA预测成功并且控制器稍后接收到对直到第一区的末尾的LBA 896-1023的后续的读取命令,则控制器可确定将有较高的可能性可接收到对第二区中的附加的数据的附加的读取命令(因为在第一区中未剩下数据要读取)。因此,控制器可对第二区(例如,LBA 1024-2047)中的附加的数据执行RLA,而不基于区配置来限制预先获取。因此,ZNS中的成功的RLA预测的可能性可增加,并且可提高闪存存储设备的资源使用。
在不同的示例中,控制器可确定跨区边界读取旗标被设置或原本准许跨区边界进行读取。可替代地,闪存存储设备可以是不实施ZNS的设备,并且因此可不具有任何区。在任一示例中,控制器可在这些情形下尝试通过基于指示连续主机写入模式的所存储的元数据而限制对数据的预先获取(例如,给其RLA定限额)来优化RLA。所存储的元数据可由控制器确定,或在一些情况下,由主机提供。
在一个示例中,控制器可根据来自主机的写入命令的提交队列确定元数据,该元数据可包括指示第一写入命令中的连续写入模式在第二写入命令中是延续还是结束的信息。例如,控制器可根据该提交队列确定包括与256KB的连续数据相关联的LBA 384-895的第一写入命令和包括LBA 896-1023的第二写入命令是待决的。控制器可接收该提交队列中的第二写入命令,之后处理第一写入命令中的主机数据并且向闪存存储器冲洗该主机数据。基于这些写入命令的LBA的数据长度和次序,控制器可识别出第一写入命令和第二写入命令本质上是连续的(即,针对LBA 896-1023的第二写入命令从针对LBA 384-895的第一写入命令延续连续模式)。为了记住关于RLA的连续模式的此信息,控制器可存储该信息作为与第一写入命令相关联的元数据。例如,控制器可在第一写入命令中的写入的连续数据的闪存管理单元(FMU)标头中标记该元数据,之后将该数据冲洗到非易失性存储器中;以表格或其他数据结构将元数据保存在非易失性存储器中;或以其他方式存储元数据。稍后,当控制器接收到针对该连续数据的读取命令时,控制器可连同该连续数据一起读取此元数据以确定是否将需要对后续的数据的RLA或预先获取以及需要多少。例如,如果读取命令包括与256KB的连续数据相关联的LBA 384-895并且元数据如上文描述指示连续模式对LBA 896-1023延续,则控制器可基于该元数据而将对数据的预先获取限制于LBA 896-1023(例如,64KB),即使诸如上文描述RLA一次可进行的最大数据量是512KB也如此。可替代地,如果该元数据指示连续模式结束(例如,下一个LBA对于当前读取命令不是连续的),则控制器可不执行RLA,从而节约了时间和用于诸如GC的其他后台操作的资源。因此,还可针对不实施ZNS的设备或实施不具有区边界约束的ZNS的设备提高由于RLA对闪存存储设备的资源使用。
图1示出了根据示例性实施方案的与主机设备104(还称为“主机”)通信的存储设备102的示例性框图100。主机104和存储设备102可形成***,诸如计算机***(例如,服务器、桌上型计算机、移动/膝上型计算机、平板计算机、智能电话等)。图1的部件可以在物理上协同定位或可以不在物理上协同定位。在此方面,主机104可相对于存储设备102远程定位。虽然图1绘示了主机104被示出为与存储设备102分开,但在其他实施方案中,可整体或部分地将主机104集成到存储设备102中。可替代地,主机104可整体地或可替代地以存储设备102中的一些功能性跨多个远程实体而分布。
本领域的普通技术人员将会知道,其他示例性实施方案可以包括比图1中所示的那些元件更多或更少的元件,并且可以在其他环境中实现所公开的过程。例如,其他示例性实施方案可包括与存储设备102通信的不同数目的主机,或与主机通信的多个存储设备102。
主机设备104可将数据存储至存储设备102和/或从该存储设备检索数据。主机设备104可包括任何计算设备,包括(例如)计算机服务器、网络附接存储设备(NAS)单元、桌上型计算机、笔记本(例如,膝上型)计算机、平板计算机、移动计算设备,诸如智能电话、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备等。主机设备104可包括至少一个处理器101和主机存储器103。至少一个处理器101可包括能够处理数据的任何形式的硬件,并且可包括通用处理单元(诸如中央处理单元(CPU))、专用硬件(诸如专用集成电路(ASIC))、数字信号处理器(DSP)、可配置硬件(诸如现场可编程门阵列(FPGA))或通过软件指令、固件等配置的任何其他形式的处理单元。主机存储器103可由主机设备104使用以存储由主机处理的数据或指令或从存储设备102接收的数据。在一些示例中,主机存储器103可包括非易失性存储器,诸如磁性存储器设备、光学存储器设备、全息存储器设备、闪存存储器设备(例如,NAND或NOR)、相变存储器(PCM)设备、电阻性随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)以及任何其他类型的非易失性存储器设备。在其他示例中,主存储器103可包括易失性存储器,诸如随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4等)。主存储器103还可包括非易失性存储器和易失性存储器两者,无论是集成在一起还是作为离散单元。
主机接口106被配置为经由总线/网络108使存储设备102与主机104介接,并且可使用(例如)以太网或WiFi或总线标准进行介接,该总线标准诸如串行高级技术附接(SATA)、PCI express(PCIe)、小型计算机***接口(SCSI)或串行附接SCSI(SAS)以及其他可能的候选方案。可替代地,主机接口106可以是无线的,并且可使用以下各项使存储设备102与主机104介接:(例如)蜂窝通信(例如,5G NR、4G LTE、3G、2G、GSM/UMTS、CDMA One/CDMA2000等)、通过接入点的无线分配方法(例如,IEEE 802.11、WiFi、HiperLAN等)、红外线(IR)、蓝牙、Zigbee或其他无线广域网(WWAN)、无线局域网(WLAN)、无线个人区域网(WPAN)技术或相当的广域技术、局域技术和个人区域技术。
存储设备102包括存储器。例如,在图1的示例性实施方案中,存储设备102可包括用于持久地存储从主机104接收的数据的非易失性存储器(NVM)110。NVM 110可包括(例如)闪存集成电路、NAND存储器(例如,单层单元(SLC)存储器、多层单元(MLC)存储器、三层单元(TLC)存储器、四层单元(QLC)存储器、五层单元(PLC)存储器或它们的任何组合)或NOR存储器。NVM 110可包括多个存储器位置112,该多个存储器位置可存储用于操作存储设备102的***数据或从主机接收的用于存储在存储设备102中的用户数据。例如,NVM可具有交叉点架构,该交叉点架构包括具有n行和m列的存储器位置112的2D NAND阵列,其中,根据NVM的大小来预定义m和n。在图1的示例性实施方案中,每个存储器位置112可以是包括多个平面的管芯114,每个平面包括多个单元116的多个块。可替代地,每个存储器位置112可以是包括单元116的多个块的平面。例如,单元116可以是单层单元、多层单元、三层单元、四层单元和/或五层单元。存储器位置112的其他示例是可能的;例如,每个存储器位置可以是块或块组。每个存储器位置可包括3-D NAND阵列中的一个或多个块。每个存储器位置112可包括映射至一个或多个物理块的一个或多个逻辑块。可替代地,可通过本领域技术人员已知的其他方式来实施存储器和每个存储器位置。
存储设备102还包括易失性存储器118,该易失性存储器可(例如)包括动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。存储在易失性存储器118中的数据可包括从NVM 110读取的数据或要写入NVM 110的数据。就这一点而言,易失性存储器118可包括用于暂时存储数据的写入缓冲区或读取缓冲区。虽然图1将易失性存储器118绘示成远离存储设备102的控制器123,但可将易失性存储器118集成到控制器123中。
存储器(例如,NVM 110)被配置为存储从主机设备104接收的数据119。数据119可存储在存储器位置112的任一个存储器位置中的单元116中。例如,图1例示存储在不同存储器位置112中的数据119,但是数据可存储在相同存储器位置中。在另一个示例中,存储器位置112可以是不同管芯,并且数据可以存储在不同管芯中的一个或多个中。
数据119中的每个可与逻辑地址相关联。例如,NVM 110可存储存储设备102的使每个数据119与逻辑地址关联的逻辑到物理(L2P)映射表120。L2P映射表120存储为从主机104写入的数据指定的逻辑地址到NVM 110中指示存储数据中的每个数据的位置的物理地址的映射。此映射可由存储设备的控制器123执行。L2P映射表可以是包括标识符的表或其他数据结构,该标识符诸如与NVM中的存储数据的每个存储器位置112相关联的逻辑块地址(LBA)。虽然图1例示存储在NVM的存储器位置112中的一个中的单个L2P映射表120以避免不当地模糊图1的概念,但是L2P映射表120实际上可包括存储在NVM的一个或多个存储器位置中的多个表。
图2是L2P映射表205的示例的概念图200,该L2P映射表绘示了从主机设备接收的数据202至图I的NVM 110中的逻辑地址和物理地址的映射。数据202可对应于图1中的数据119,而L2P映射表205可对应于图1中的L2P映射表120。在一个示例性实施方案中,数据202可以被存储在一个或多个页面204中,例如,第1页面至第x页面,其中x是被写入NVM 110的数据的页面总数。每个页面204可以与L2P映射表205的一个或多个条目206相关联,该L2P映射表标识逻辑块地址(LBA)208、与写入到NVM的数据相关联的物理地址210以及数据的长度212。LBA 208可以是针对从主机设备接收的数据的写入命令中指定的逻辑地址。物理地址210可指示与LBA 208相关联的数据被物理写入的块和偏移。长度212可指示写入数据的大小(例如,4KB或其他大小)。
再参考图1,易失性存储器118还存储存储设备102的缓存122。高速缓存122包括示出针对主机104所请求的数据指定的逻辑地址到NVM 110中的物理地址的映射的条目,该物理地址指示存储数据的位置。该映射可由控制器123执行。当控制器123接收到用于数据119的读取命令或写入命令时,控制器检查高速缓存122以获取每个数据的逻辑到物理映射。如果不存在映射(例如,这是对数据的第一请求),则控制器访问L2P映射表120,并将该映射存储在高速缓存122中。当控制器123执行读取命令或写入命令时,控制器访问来自高速缓存的映射,并在指定的物理地址处从NVM 110读取数据或将数据写入该NVM。高速缓存可以表或其他数据结构的形式存储,该表或其他数据结构包括与NVM中的正在读取数据的每个存储器位置112相关联的逻辑地址。
NVM 110包括连接至每个存储器位置112的感测放大器124和数据锁存器126。例如,存储器位置112可以是在多条位线上包括单元116的块,并且NVM 110可以在每条位线上包括感测放大器124。此外,一个或多个数据锁存器126可以连接到位线和/或感测放大器。数据锁存器可以是(例如)移位寄存器。当从存储器位置112的单元116读取数据时,感测放大器124通过将位线上的电压放大到逻辑电平(例如,可读取为‘0’或‘1’)来感测数据,并且感测到的数据存储在数据锁存器126中。然后将数据从数据锁存器126传输到控制器123,之后将数据存储在易失性存储器118中,直到将其传递到主机设备104为止。当将数据写入至存储器位置112的单元116时,控制器123将编程数据存储在数据锁存器126中,并且随后将数据从数据锁存器126传递至单元116。
存储设备102包括控制器123,该控制器包括诸如用于执行指令的一个或多个处理器的电路,并且可包括微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、硬连线逻辑、模拟电路和/或其组合。
控制器123被配置为响应于读取命令而接收从各种存储器位置112的单元116中的一个或多个单元传递的数据。例如,控制器123可通过激活感测放大器124以将来自单元116的数据感测到数据锁存器126中来读取数据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通过向存储设备102发送指定一个或多个逻辑地址(例如,LBA)以及要写入的数据的长度的写入命令来将数据存储在存储设备102中。接口元件106接收写入命令,并且控制器在存储设备102的NVM 110中分配存储器位置112以用于存储数据。控制器123将L2P映射存储在NVM(和缓存122)中,以将与数据相关联的逻辑地址映射到为数据分配的存储器位置112的物理地址。控制器还存储L2P映射数据的长度。然后,控制器123通过将数据发送到连接至所分配的存储器位置的一个或多个数据锁存器126来将数据存储在存储器位置112中,数据从该一个或多个数据锁存器编程到单元116。
主机104可通过发送读取命令来从存储设备102检索数据,该读取命令指定与要从存储设备102检索的数据相关联的一个或多个逻辑地址以及要读取的数据的长度。接口106接收读取命令,并且控制器123访问缓存122中的L2P映射或以其他方式访问NVM,以将在读取命令中指定的逻辑地址转译为指示数据的位置的物理地址。然后,控制器123通过以下操作从由物理地址指定的存储器位置112读取所请求的数据:使用感测放大器124感测数据并将数据存储在数据锁存器126中,直到经由主机接口106将读取的数据返回给主机104为止。
图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,等等)。选择栅极源极(SGS)单元308和选择栅极漏极(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。类似地,每个串可包括SGS单元410和SGD单元412,该SGS单元和该SGD单元分别将每个串404中的存储器单元连接至源极线414和位线406。
当控制器123从单元302的页面316读取数据或向该页面写入数据(即,在字线304、408上)时,控制器可发送命令以向选定的字线施加读取电压或编程电压并且向其他字线施加通过电压。随后可基于单元302的阈值电压来确定该单元的读取或编程状态(例如,SLC的逻辑‘0’或逻辑‘1’)。例如,在SLC读取操作期间,如果单元302的阈值电压小于读取电压(即,电流响应于读取电压而流过该单元),则控制器123可确定该单元存储逻辑‘1’,而如果单元302的阈值电压大于读取电压(即,电流未响应于读取电压而流过该单元),则控制器123可确定该单元存储逻辑‘0’。类似地,在SLC编程操作期间,控制器可通过发送命令以在字线304、408上向单元302施加编程电压直到该单元达到阈值电压来存储逻辑‘0’,并且在擦除操作期间,控制器可发送命令以向包括单元302的块402(例如,向该单元的衬底,诸如p阱)施加擦除电压,直到该单元降低回到阈值电压以下(回到逻辑‘1’)为止。
控制器123还可在由主机104配置的区中写入和读取数据。例如,在ZNS中,可将毗连的非重叠的逻辑地址的组(例如,LBA 208)划分为不同的区。控制器可从块402中的对应于与不同的区相关联的逻辑地址208的单元302的页面316读取数据或向该页面写入数据。
图5绘示了区502的示例的概念图500。每个区502的大小是固定的,并且包括NVM110中的相连范围的连续逻辑地址504。例如,如所绘示,NVM 110可包括被划分为x个区的总共z个LBA,其中每个区包括一系列n-m个连续LBA,其中z表示闪存存储器中的扇区的总数,x表示区的数目,m表示区中的第一LBA,并且n表示同一区中的最后一个LBA。每个区可由主机单独使用来用于存储与由主机运行的一个或多个应用相关联的数据。因此,主机104可依据由该主机运行的应用的数目将LBA划分为若干区。
当向区502写入数据时,控制器123可首先发出区写入命令以发起对区的写入,紧接着发出一个或多个区附加命令以随后向那个区进行写入。例如,如果区502中的一个区包括LBA 0-1023并且每个LBA表示512个字节,则主机104可起初向控制器发送命令以将256KB的数据写入LBA 0-511中(控制器可使用区写入命令来执行),并且主机随后可向控制器发送一个或多个命令以将另一256KB的数据写入LBA 512-1023中(控制器可使用一个或多个区附加命令来执行)。类似地,如果区502中的另一区包括LBA 1024-2047,则主机起初可请求控制器将256KB的数据写入LBA1024-1535中,并且随后将256KB的数据写入LBA 1536-2047中。如果主机试图覆写部分写入区中的先前写入的LBA(例如,如果主机试图在未完成LBA 512-1023的情况下再次向LBA 0-511写入数据),则控制器123可中止该命令作为无效写入。因此,主机104可受到ZNS约束以将数据循序地写入区502中的每个区中。
类似地,当读取区502中的数据时,控制器123可循序地读取每个区中的数据。例如,在区502中的一个区包括LBA 0-1023并且每个LBA表示512个字节的情况下,主机104可类似地向控制器发送命令以从LBA 0-511读取256KB的数据,并且主机随后可向控制器发送一个或多个命令以从LBA 512-1023读取256KB的数据。同样地,在区502中的另一区包括LBA1024-2047的情况下,主机104起初可向控制器发送命令以从LBA1024-1535读取数据,并且主机随后可向控制器发送一个或多个命令以从LBA 1536-2047读取数据。
控制器123还可由主机104配置以跨区边界506读取数据。例如,控制器可检查存储在NVM 110中的配置寄存器,以确定是否准许跨区边界506进行读取。例如,控制器可检查从主机104接收的分区命名空间命令集专有识别命名空间数据结构中的跨区边界读取位。依据该位的值,控制器123可准许指定包含区502中的一个以上区中的逻辑块的LBA范围的读取操作。例如,在区502中的一个区包括LBA 0-1023并且区502中的另一区包括LBA 1024-2047并且主机104发送读取命令以读取LBA 0-1535中的数据(跨相应区的边界506)的情况下,如果设置了跨区边界读取位(例如,值为1),则控制器可成功地读取该数据。否则,如果跨区边界读取位被重置(例如,值为0),则控制器可中止该命令作为具有区边界错误的无效读取。因此,主机可受到ZNS约束以循序地读取限定区内的数据。
当从NVM 110的块402中的单元302的页面316读取数据时,控制器123还可执行RLA。在RLA中,控制器可在从主机104接收到针对数据的读取命令之前从NVM 110预先获取那个数据,并且在该读取命令稍后到达的情况下,控制器123可将那个预先获取的数据存储到缓存122或将要访问的其他易失性存储器(例如,易失性存储器118)中。在RLA中预先获取的数据的大小传统上基于存储设备102中的可用资源(例如,NAND总线大小、锁存器的数目等)而是最大化的并且是固定的。例如,如果控制器基于可用资源可一次预先获取的最大数据量是512KB,则控制器传统上可在每当执行RLA时便预先获取那个量。
图6描绘了说明在NVM 110被划分为区时的传统RLA性能的示例性图600,该区包括被区边界606分隔的第一区602和第二区604。第一区602和第二区604可各自对应于图5中的区502中的一个区,并且区边界606可对应于图5中的区边界506中的一个区边界。在图6的示例中,控制器123从主机104接收包括第一区602中的逻辑地址的读取命令,并且控制器从那些逻辑地址读取数据608。例如,第一区602可被配置为包括LBA 0-1023,并且控制器可从第一区602读取LBA 384-895中的256KB的数据608。另外,控制器123可识别出在LBA 384-895处读取的数据608反映了连续模式,并且因此控制器可确定主机104将可能在该连续模式下发出针对例如在LBA 896-1919处的后续的数据610的读取命令。因此,控制器可确定基于存储设备102中的可用资源而执行最大大小的RLA(例如,512KB的后续的数据610),如图6中所绘示。因此,除了响应于读取命令而获取数据608之外,控制器可预先获取后续的数据610并且将那个数据临时地存储在易失性存储器118中。
然而,当控制器123如上文描述在传统的RLA中预先获取后续的数据610时,可不管第一区602和第二区604而预先获取该后续的数据。例如,控制器可在执行RLA时不考虑后续的数据610恰好在不同的区,或主机104被禁止跨区边界进行读取(例如,跨区边界读取旗标被重置)。因此,在RLA中预先获取的一些后续的数据610可遭重创。例如,主机可基于区配置而将第一区602和第二区604视为逻辑上由区边界606定界,并且因此主机104可自身给其在区边界606处的后续的读取命令定限额。换句话说,主机104可不发出针对全部后续的数据610的后续的读取命令,而是可在不同的时间发出针对不同区中的数据的单独的读取命令。因此,由于主机可能未立即请求曾预先获取的一些后续的数据610,所以那个数据可能以被从缓存丢弃为结局(例如,为其他预先获取的数据腾出空间)。因此,在预先获取后续的数据610期间所花费的时间和在NVM 110中联系的资源可能被低效使用或浪费。
因此,为了优化RLA并且降低重创的可能性,控制器123可基于由主机104指示的区配置而限制对后续的数据(例如,后续的数据610)的预先获取。例如,控制器123可从主机104接收以下各项:区配置,该区配置指示区(例如,区502)与连续的非毗连的逻辑地址(例如,逻辑地址504)的组的关联;识别命名空间数据结构,该识别命名空间数据结构指示区操作特性和任选的区命令支持;以及与ZNS相关的其他信息。从主机接收的区操作特性中的一个区操作特性可包括跨边界区旗标,该跨边界区旗标指示主机是否可跨区边界506、606(例如,在第一区602和第二区604内)读取数据,并且该跨边界区旗标可存储在NVM 110中的配置寄存器中。如果控制器确定跨区边界读取旗标被重置或另外指示主机不可跨区边界进行读取,则在来自主机的当前读取命令包括在特定区内的逻辑地址但不包括该特定区的末尾的情况下,控制器可限制RLA。例如,参考图6,如果控制器123确定响应于第一区602中的读取命令而读取数据608(例如,从LBA 384-895)在区边界606(在此示例中由LBA 1023表示)之前结束,则控制器可确定它将可能接收到针对第一区602内(例如,在LBA896-1023中)的后续的数据610的后续的读取命令,但在同一命令中未针对第二区604内(例如,在LBA1024-2047中)的后续的数据610。因此,控制器可限制RLA,使得控制器仅预先获取在第一区602的末尾之前的后续的数据610而不进入第二区604,而不管存储设备102中的资源是否可用于对第二区中的数据的附加的预先获取。一旦接收到请求来自第一区602的预先获取的数据的后续的读取命令并且控制器确定它将可能接收到针对开始于第二区604中的后续的数据610的附加的读取命令,控制器便可在那时在没有对第二区604内的后续的数据610的限制的情况下执行RLA。
因此,控制器123可通过以下操作最佳地使用存储设备102的资源:在禁止跨区边界进行读取并且当前读取命令请求在当前区的末尾之前的数据的情形下实际上执行二段式RLA。在RLA的第一阶段,控制器123可针对处于与当前读取请求相同的区内的后续的数据的一部分立即触发RLA,同时制止针对处于与当前读取请求不同的区内的后续的数据的剩余部分执行RLA。之后,如果控制器123确定RLA的第一阶段是成功的(接收到请求后续的数据的预先获取的部分的后续的读取命令),则控制器可执行RLA的第二阶段,其中预先获取处于不同区内的后续的数据的剩余部分。因此,可最佳地使用存储设备102的资源以使控制器能够在可能原本会执行RLA的时间期间执行GC或其他后端功能性。
图7A和图7B绘示了在NVM 110被划分为区时的优化的RLA性能的示例性图700、750,该区包括被区边界706、756分隔的第一区702、752和第二区704、754。该优化的RLA可以是如上文描述的二段式RLA,其中图7A绘示了优化的RLA的第一阶段的示例(在时间t1处执行),并且图7B绘示了优化的RLA的第二阶段的示例(在时间t2处执行)。第一区702、752和第二区704、754可分别对应于图6中的第一区602和第二区604,并且区边界706、756可类似地对应于图6中的区边界606。
参考图7A,存储设备102的控制器123起初从主机104接收包括第一区702中的逻辑地址的读取命令,并且控制器从那些逻辑地址读取数据708(例如,在时间t1处)。例如,第一区702可被配置为包括LBA 0-1023,并且控制器可从第一区702读取LBA 384-895中的256KB的数据708。另外,控制器123可识别出从这些逻辑地址(例如,LBA 384-895)读取的数据反映了连续模式,并且因此控制器可预测主机104将可能在该连续模式下发出针对后续的数据710(例如,LBA 896-1919中的后续的数据)的读取命令。另外,控制器可基于从主机104接收的区配置而确定跨区边界进行读取被禁止(例如,跨区边界读取旗标被重置)并且当前读取命令包括在区边界706之前结束的第一区702中的LBA(例如,在可以是第一区702的边界的LBA 1023之前结束的LBA 384-895)。
因此,控制器123可基于区配置而预测只要主机104尚未完成对当前区的读取,来自主机的后续的读取命令便将仍在同一区内。例如,响应于接收到针对第一区702中的LBA384-895的命令,控制器可预测主机将可能发送针对第一区702中的LBA 896-1023但将不会同时针对第二区704中的LBA 1024-1919的后续的读取命令。因此,控制器可确定将针对后续的数据710的预先获取限制于在第一区702的区边界706处结束的那些LBA(例如,在此示例中的LBA 896-1023或64KB的数据),而不执行第二区704(例如,LBA 1024-1919)中的附加的数据712的RLA。
参考图7B,控制器123稍后可从主机104接收后续的读取命令,该后续的读取命令包括与第一区752中的预先获取的数据相关联的逻辑地址,并且控制器可从那些逻辑地址读取后续的数据758(例如,在时间t2处)。例如,该后续的读取命令现在可请求先前预先获取并且存储在易失性存储器118中的LBA 896-1023中的数据,并且控制器可从易失性存储器获得那个后续的数据以提供给主机。如果控制器123确定该后续的读取命令包括第一区752中的LBA的其余部分(即,将没有针对第一区的其他读取命令),则控制器123可确定将可能从主机接收到针对第二区754中的数据(例如,附加的数据760)的附加的读取命令。例如,控制器可确定现在请求来自LBA 1024-1919的数据的附加的读取命令可到达,并且此请求的数据是与先前请求的数据相同的连续模式的部分。因此,如上文描述,控制器可执行RLA,并且预先获取第二区704中的附加的数据760。
在一个示例中,控制器123可基于区配置而对第二区754中的附加的数据760执行RLA,而不限制预先获取。例如,控制器可执行不受约束的RLA,直至基于可用的***资源而可预先获取的最大大小的可用量,诸如上文关于图6所描述。然而,由于附加的数据760开始于与先前读取的数据不同的区中,所以有可能主机可不发送请求来自第二区的全部预先获取的数据的读取命令。例如,主机可决定发送针对第二区中的附加的数据的一部分的读取命令,或者甚至可发送针对第三区(未示出)中的附加的数据的读取命令。在此类情况下,***资源仍然可能低效地用于RLA。
为了解决对附加的数据760的低效RLA的此可能性,控制器123可限制对附加的数据760的预先获取。在一个示例中,RLA约束可本质上是静态的。例如,不是预先获取可用于RLA的最大数据量(例如,512KB或某一其他数据大小),控制器123可保守地预先获取较小量的附加的数据(例如,128KB或少于可用于RLA的最大数据量的某一其他数据大小)。在另一示例中,RLA可本质上是动态的。例如,不是预先获取可用于RLA的最大数据量,控制器123可基于来自主机104的先前连续模式或其他历史信息来确定要预先获取的附加的数据760的量。例如,当执行上文针对先前的读取命令所描述的二段式RLA时,控制器123可跟踪RLA的第二阶段的成功或失败的数目和在RLA的第二阶段之后由主机稍后在第二区中请求的附加的数据的量(如果有)。如果控制器基于先前的连续模式或其他历史信息而确定主机倾向于仅请求第二区中的附加的数据的一部分或主机一般完全不请求第二区中的附加的数据,则控制器可确定诸如通过使用较小的RLA大小或阻止RLA来更大程度地限制对附加的数据的RLA。相比而言,如果控制器基于先前的连续模式或其他历史信息而确定主机倾向于请求第二区中的附加的数据的较大部分或甚至其全部,则控制器可确定诸如通过使用较大(或甚至最大)的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接收的写入命令的提交队列来确定连续模式存在于初始的写入命令和后续的写入命令中,并且控制器可连同初始的写入命令中的数据一起存储指示LBA、数据长度和与NVM 110中的后续的写入命令相关联的其他信息(例如,通过在用于初始的写入命令的写入的连续数据的一部分的FMU标头中标记元数据)。当控制器稍后响应于读取命令而执行对此数据的连续读取时,控制器可读取和分析该元数据以确定是否要执行RLA,并且如果是,则确定在RLA期间要预先获取的数据的量。控制器可基于所存储的元数据而限制在RLA期间要预先获取的数据的量。因此,类似于关于图7A和图7B所描述的方法,甚至在不具有区边界的非ZNS设备或可跨区边界进行读取的ZNS设备中,主机可向控制器指示边界以给RLA定限额或限制RLA(经由由控制器确定的元数据),并且因此RLA可进一步得以优化。另外,通过如上文描述基于配置或元数据而执行RLA,控制器可识别边界以用于与连续主机模式一致地更有信心地限制RLA,并且因此与可能依赖于信心较少的控制器产生的边界(例如,在产生新的L2P地址转译表的情况下所识别的边界或不依赖于主机提供的配置的其他设备特有情形)的其他方法相比实现RLA的较高的成功预测率。
在一个示例中,当控制器接收到提交队列中的连续写入命令时,控制器可从该提交队列识别指示从主机写入的连续数据模式是延续(在不同的写入命令中)还是结束(在当前写入命令下)的信息。例如,如果提交队列中的初始的写入命令包括与256KB的连续数据相关联的LBA 384-895并且提交队列中的后续的写入命令包括LBA 896-1023,则控制器可确定连续模式从初始的写入命令延续至后续的写入命令,并且因此控制器可将关于连续模式的此信息识别为与初始的写入命令相关联的元数据并且存储该信息。例如,当控制器将初始的写入命令中的主机数据写入到NVM 110中时,控制器还可存储LBA、数据长度或关于后续的写入命令的其他信息作为与初始的写入命令相关联的元数据。例如,控制器可在与初始的写入命令中的数据的最后部分相关联的FMU标头中标记元数据(在将数据冲洗到非易失性存储器中之前),控制器可将该元数据以表格或其他数据结构的形式保存在NVM 110中,或者控制器以其他方式存储元数据。因此,当控制器稍后接收到针对该数据的连续读取命令时,控制器可连同该连续数据一起读取此元数据以确定是否将需要对后续的数据的RLA或预先获取以及需要多少。例如,如果读取命令包括与256KB的连续数据相关联的LBA384-895并且元数据指示连续模式对LBA 896-1023延续,则控制器可基于该元数据而将对数据的预先获取限制于LBA 896-1023(例如,64KB),即使基于存储设备中的可用资源在RLA中可预先获取的最大数据量更大(例如,512KB)也如此。可替代地,如果该元数据指示连续模式结束(例如,下一个LBA对于当前读取命令不是连续的),则控制器可不执行RLA,从而节约了时间和用于诸如GC的其他后台操作的资源。
当控制器123正在处理多个读取流时,也可应用此方法。例如,控制器可从控制器接收多个读取命令,以并行地(或几乎平行地)读取不同范围的LBA中的连续数据。在此类情况下,控制器可通过读取每个流的元数据并且基于每个流的元数据来限制RLA而与单个读取流类似地操作。例如,控制器可接收包括与将要在第一读取流中处理的256KB的连续数据相关联的LBA 384-895的读取命令和包括与将要在第二读取流中处理的256KB的其他连续数据相关联的LBA 10384-10895的另一读取命令。在示例中,如果第一读取流的元数据指示连续模式对于LBA 896-1023延续下去,并且第二读取流的元数据指示连续模式对于LBA10896-11023延续下去,则控制器可基于第一读取流中的元数据而将对数据的预先获取限制于LBA 896-1023(例如,64KB),并且类似地基于第二读取流中的元数据而将对数据的预先获取限制于LBA 10896-11023(例如,64KB)。因此,可针对多个读取流进一步优化RLA。
上述基于所存储的元数据(无论是单个读取流还是多个读取流)来优化RLA的方法假设主机是以与向NVM 110写入数据大致相同的方式读取数据。例如,如果主机以包括256KB的数据紧接着是64KB的数据的连续模式写入数据,则此方法假设主机以256KB紧接着是64KB的类似的连续模式读取数据。虽然有可能主机可通过类似的连续模式进行写入和读取,然而此方法可在主机不以此类类似的方式进行写入和读取的不可能事件中导致太多或太少的RLA。因此,如上文描述基于先前的连续模式或其他历史信息对RLA的其他优化(诸如动态地约束RLA)可同样地被视为降低不足(或额外充足)的RLA的风险。另外,即使仍然偶尔出现不足或额外充足的RLA,此类出现将不在任何情况下导致存储设备的功能性失败。
图8绘示了响应于来自主机设备806的读取命令而执行对数据804的优化的RLA的存储设备的控制器802的示例性图800。例如,控制器802可对应于图1的存储设备102的控制器123,主机设备806可对应于图1中的主机104,并且数据804可对应于图1的数据119。控制器在存储器808中写入和读取数据804,该存储器可对应于图1的NVM 110。控制器802和存储器808可位于ZNS设备或非ZNS设备内。
主机设备806可向控制器802提供信息810,该控制器可将该信息存储在存储器808中(例如,作为所存储的信息812)。在一个示例中,信息810可包括以下各项:区配置814,该区配置指示区(例如,图5中的区502)与连续的非毗连的逻辑地址(例如,图5中的逻辑地址504)的组的关联;识别命名空间数据结构,该识别命名空间数据结构指示区操作特性816和任选的区命令支持;以及与ZNS相关的其他信息。区操作特性816中的一个区操作特性可包括指示主机设备806是否可跨区边界(例如,图5、图6、图7A和图7B中的区边界506、606、706、756)读取数据的跨边界区旗标818。在另一示例中,信息810可包括提交队列条目,该提交队列条目指示LBA、数据长度和与写入命令相关联的其他信息,并且控制器可根据信息810确定写入命令中的连续模式在后续的写入命令中是否延续(或结束)。如果该信息指示后续的写入命令以连续模式跟随初始的写入命令,则控制器可存储LBA、数据长度或与后续的写入命令相关联的其他信息作为与初始的写入命令相关联的元数据820。控制器还可在针对不同的写入命令确定此类信息时随时间存储元数据820(例如,作为所存储的元数据822)。因此,所存储的元数据822可包括关于与各种写入命令相关联的连续模式824和数据长度826的信息。
起初,控制器802可从主机设备806接收包括数据804的写入命令,并且控制器802可在多个FMU 828中将数据804写入到存储器808中。每个FMU 828可包括数据804的一部分,例如8个扇区或LBA(n-7至n),其中n表示当前数据部分中的最新的LBA。例如,假设每个LBA表示512个字节并且每个FMU包括八个LBA,每个FMU可表示数据804的4KB大小的部分。当控制器确定元数据820(例如,根据信息810)时,控制器可通过在FMU 828中的一个FMU(例如,数据804的多个FMU或部分中的最后一个FMU或部分)中标记元数据820来将元数据820存储在存储器808中,如图8中绘示。可替代地,控制器可通过其他方式将元数据820存储在存储器808中。元数据820可指示关于连续模式是否对后续的写入命令中的后续的数据830延续的信息。在此类情况下,控制器802可从主机104接收包括后续的数据830的后续的写入命令,并且控制器可类似地在多个FMU中向存储器808写入后续的数据830。如果控制器类似地确定连续模式对附加的写入命令中的附加的数据延续,则控制器还可存储指示此模式的元数据820,并且该过程可针对各种写入命令重复。
在向存储器808写入数据804和后续的数据830之后,控制器802可接收到请求读取数据804(例如,图7A中的数据708)的主机命令832。在一个示例中,信息810可包括区配置814(例如,存储设备是ZNS设备),并且主机命令832可请求读取第一区(例如,图6和图7A中的第一区602、702)中的数据。在此类情况下,控制器802可检查存储在存储器808中的跨区边界读取旗标818是否被重置或以其他方式指示主机不可跨区边界进行读取。如果主机设备806无法跨区边界进行读取,则控制器可确定所请求的数据804是否位于第一区内的逻辑地址中但不包括第一区的末尾。如果是,则控制器802可确定相对于数据804连续的后续的数据830(例如,图7A和图7B中的后续的数据710、758)可位于第一区(例如,图6和图7A至图7B中的第一区602、702、752)和第二区(例如,图6和图7A至图7B中的第二区604、704、754)内,并且控制器可从第一区获取数据804,并且将对后续的数据830的RLA或预先获取限制于第一区的末尾。当控制器802稍后接收到针对先前预先获取的后续的数据830的后续的主机命令834时,控制器可在接收到针对附加的数据836(例如,图7A至图7B中的附加的数据712、760,该附加的数据可对应于第二区704、754内的后续的数据的剩余部分)的附加的主机命令之前使用RLA预先获取该附加的数据。控制器可在不限制预先获取的情况下对附加的数据836执行RLA,或者控制器可在受限的预先获取(例如,本质上是静态或动态的)的情况下对附加的数据836执行RLA。例如,控制器可基于连续模式824、数据长度826或来自先前的主机命令的其他历史信息来动态地限制RLA。
在另一示例中,控制器可根据信息810(例如,存储设备是非ZNS设备或准许跨区边界进行读取的ZNS设备)确定元数据820。在此类情况下,在控制器802接收到请求读取数据804的主机命令832之后,控制器可基于元数据820来确定是否执行RLA以及RLA的大小。例如,控制器可连同数据804一起读取所存储的元数据822,并且控制器可根据元数据确定后续的数据830接数据804延续连续模式。在此类情况下,控制器可将RLA中的预先获取限制于在元数据中指示的后续的数据830的量,而不管附加的资源是否可用于同时在RLA中预先获取附加的数据836。控制器802可在处理多个读取流时类似地执行RLA。
图9绘示了用于使用优化的RLA的读取处置的方法的示例性流程图900。例如,该方法可在诸如图1中绘示的存储设备的存储设备102中执行。流程图中的步骤中的每个步骤可使用如下文所描述的控制器(例如,控制器123、802)或由一些其他合适的构件控制。
在一个示例中,如由框902表示,控制器可将从主机接收的区配置存储在存储器中。例如,参考图8,控制器802可将从主机设备806接收的区配置814存储在存储器808中。区配置814可包括区操作特性816,该区操作特性包括跨区边界读取旗标818。区配置814还可在跨区边界读取旗标818被重置时指示跨区边界(例如,图5至图7B中的区边界506、606、706、756)进行读取被禁止,并且在跨区边界读取旗标818被设置时指示准许跨区边界进行读取。
在另一示例中,如由框904表示,控制器可写入数据和与后续的数据相关联的元数据。例如,参考图8,控制器802可在存储器808中写入数据804和与后续的数据830相关联的元数据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可从存储器808读取与后续的数据830相关联的所存储的元数据822,该所存储的元数据包括先前由主机设备806指示的信息(例如,信息810,诸如LBA或与在元数据820中指示的后续的数据相关联的其他信息)。元数据820还可包括后续的数据830的数据长度826。
如由框910表示,控制器可基于先前从主机接收的所存储的信息而限制从存储器对后续的数据的预先获取。例如,参考图8,控制器802基于先前从主机设备806接收的所存储的信息812(例如,包括区配置814的信息810,或诸如LBA、数据长度或确定为元数据820的其他信息的信息810)而限制从存储器808对后续的数据830的预先获取。所存储的信息可包括从主机设备806接收的区配置814、指示后续的数据830和数据804是连续模式824的部分的元数据820,或以上两者。
该限制可对应于诸如上文关于图7A所描述的优化的RLA的第一阶段。例如,当所存储的信息包括区配置时,随后如由框912表示,控制器可确定是否禁止跨区边界进行读取。例如,参考图8,控制器802可确定跨区边界读取旗标818是否在区配置814的区操作特性816中被重置。如果是,则如由框914表示,控制器可限制对与该数据相同的区内的后续的数据的预先获取。例如,参考图8,控制器802可限制对与数据804相同的区内的后续的数据830的预先获取。例如,参考图7A,当控制器从第一区702读取数据708时,控制器可仅预先获取在第一区702的末尾之前的后续的数据710。
控制器随后可执行诸如上文关于图7B所描述的优化的RLA的第二阶段。例如,如由框916表示,控制器可响应于后续的主机命令而预先获取与后续的数据不同的区中的附加的数据。例如,参考图8,控制器802可响应于后续的主机命令834而预先获取与后续的数据830不同的区中的附加的数据836。例如,参考图7B,当控制器从第一区702读取后续的数据758时,控制器可从第二区754预先获取附加的数据760。
此外,如由框918表示,控制器可限制对附加的数据的预先获取。例如,参考图7B和图8,控制器802可限制从第二区754对附加的数据760、836的预先获取。例如,控制器可如上文描述在受限的预先获取(例如,本质上是静态或动态的)的情况下对附加的数据760、836执行RLA。在一个示例中,RLA约束可本质上是静态的。例如,不是预先获取可用于RLA的最大数据量(例如,512KB或某一其他数据大小),控制器123可保守地预先获取较小量的附加的数据(例如,128KB或少于可用于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仅包括64KB的数据,则控制器可预先获取64KB的数据,而不是可用于RLA的最大大小(例如,512KB)。
因此,在本公开中描述的存储设备为被配置为禁止跨区边界进行读取的ZNS设备提供了优化的连续读取策略。通过基于由主机设备指示的区配置而限制RLA中的对数据的预先获取,可实现较高的成功RLA预测的可能性。另外,可通过以下操作针对非ZNS设备以及被配置为准许跨区边界进行读取的ZNS设备模拟此效应:允许在RLA中预先获取的数据基于由主机设备指示的所存储的元数据而类似地受到限制。由于对RLA的这些优化,可提高存储设备的资源使用并且可更高效地执行诸如GC的后台操作。
提供本公开的各个方面以使本领域的普通技术人员能够实践本发明。对贯穿本公开呈现的示例性实施方案的各种修改对于本领域技术人员而言将是显而易见的,并且本文所公开的概念可扩展到其他磁存储设备。因此,权利要求书并非旨在限于本公开的各个方面,而是旨在被赋予与权利要求书的语言一致的全部范围。本领域的普通技术人员已经知道或之后知道的贯穿本公开描述的示例性实施方案的各种部件的所有结构等同物和功能等同物以引用的方式明确地并入本文并旨在被权利要求所涵盖。此外,无论在权利要求中是否明确地叙述此公开内容,本文公开的内容都并非旨在贡献给社会大众。依据美国的35U.S.C.§112(f)的条款,或另一司法管辖区的类似法规或法治,将不解释任何权利要求要素,除非使用短语“用于......的构件”来明确地叙述该要素,或在方法权利要求的情况下使用短语“用于......的步骤”来叙述该要素。

Claims (20)

1.一种存储设备,所述存储设备包括:
存储器;和
控制器,所述控制器被配置为响应于主机命令而从所述存储器读取数据,并且基于先前从主机接收的所存储的信息而限制从所述存储器对后续的数据的预先获取。
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所述的存储设备,其中所述控制器还被配置为在与所述数据的一部分相关联的闪存管理单元(FMU)标头中写入所述元数据。
20.根据权利要求19所述的存储设备,其中所述控制器还被配置为从所述FMU标头中的所述元数据识别所述后续的数据的数据长度,并且根据所述数据长度来限制对所述后续的数据的所述预先获取。
CN202110634923.2A 2020-09-17 2021-06-07 分区命名空间设备中的读取处置 Pending CN114203237A (zh)

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 US11513723B2 (en) 2020-09-17 2021-02-19 Read handling in zoned namespace devices
US17/180,631 2021-02-19

Publications (1)

Publication Number Publication Date
CN114203237A true CN114203237A (zh) 2022-03-18

Family

ID=80351585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110634923.2A Pending CN114203237A (zh) 2020-09-17 2021-06-07 分区命名空间设备中的读取处置

Country Status (4)

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

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
US12014073B2 (en) * 2022-05-17 2024-06-18 Micron Technology, Inc. Techniques for sequential access operations
US20230376225A1 (en) * 2022-05-17 2023-11-23 Micron Technology, Inc. Techniques for memory system rebuild
US11954367B2 (en) 2022-06-15 2024-04-09 Western Digital Technologies, Inc. Active time-based command prioritization in data storage devices

Family Cites Families (9)

* 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
US7451225B1 (en) * 2006-09-12 2008-11-11 Emc Corporation Configuring a cache prefetch policy in a computer system employing object addressable storage
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
US10891233B2 (en) * 2018-06-28 2021-01-12 Intel Corporation Intelligent prefetch disk-caching technology
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
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping

Also Published As

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

Similar Documents

Publication Publication Date Title
US11513723B2 (en) Read handling in zoned namespace devices
US10564853B2 (en) System and method for locality detection to identify read or write streams in a memory device
JP5823875B2 (ja) 固体メモリフォーマッティング
JP5728672B2 (ja) ハイブリッドメモリ管理
KR102570367B1 (ko) 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US9563551B2 (en) Data storage device and data fetching method for flash memory
KR102652694B1 (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
JP2015026379A (ja) 磁気ランダムアクセスメモリ(mram)を使用する記憶デバイスのメモリアレイのコントローラ管理
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
US20170228191A1 (en) Systems and methods for suppressing latency in non-volatile solid state devices
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
US11347420B2 (en) Attribute mapping in multiprotocol devices
US20210311660A1 (en) Read Modify Write Optimization for Video Performance
CN111580744B (zh) 存储器控制器及其操作方法
US11481136B1 (en) Very low sized zone support for storage devices
US11892928B2 (en) Delayed thermal throttling and associated data routing techniques
US11775222B2 (en) Adaptive context metadata message for optimized two-chip performance
US20230359550A1 (en) File system integration into data mining model
US11604735B1 (en) Host memory buffer (HMB) random cache access
KR20210032222A (ko) 메모리 컨트롤러 및 그것의 동작 방법
US11556249B2 (en) Delaying random data relocation for reducing write amplification in storage devices
CN115390747A (zh) 存储设备及其操作方法
KR20210028335A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
US20230367498A1 (en) Stream oriented writing for improving sequential write and read performance

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination