CN115203086A - 主机存储器缓冲器分配管理 - Google Patents

主机存储器缓冲器分配管理 Download PDF

Info

Publication number
CN115203086A
CN115203086A CN202210086557.6A CN202210086557A CN115203086A CN 115203086 A CN115203086 A CN 115203086A CN 202210086557 A CN202210086557 A CN 202210086557A CN 115203086 A CN115203086 A CN 115203086A
Authority
CN
China
Prior art keywords
memory
controller
host
storage device
allocation
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
CN202210086557.6A
Other languages
English (en)
Inventor
S·P·R·刚达
S·K·西里普拉加达
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 CN115203086A publication Critical patent/CN115203086A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • 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/10Address translation
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control

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)
  • Memory System (AREA)

Abstract

本发明提供一种包含存储器和控制器的存储装置的方面。所述存储器包含易失性存储器。所述控制器可基于来自主机装置的主机存储器分配而确定所述易失性存储器中的至少一部分为可重复使用区域。所述控制器还可计算所述易失性存储器中的所述可重复使用区域的大小。所述控制器还可基于所述可重复使用区域的所计算大小响应于所述主机存储器分配而在所述易失性存储器的所述可重复使用区域中执行一个或多个存储装置操作。因此,所述控制器可提供主机存储器缓冲器分配的智能处置,由此改进存储装置读取性能。

Description

主机存储器缓冲器分配管理
技术领域
本公开大体上涉及电子装置,且更确切地说,涉及存储装置。
背景技术
存储装置使得用户能够存储且检索数据。存储装置的实例包含非易失性存储器装置。非易失性存储器通常在电力循环后保留数据。非易失性存储器的实例为快闪存储器,其可包含一个或多个裸片上的NAND单元阵列。快闪存储器可存在于固态装置(SSD)、 安全数字(SD)卡等中。通常,非易失性存储器系统具有控制主机系统到存储器系统中 的非易失性存储器的存取的存储器控制器。主机系统可为计算机系统、蜂窝式电话、服 务器等。非易失性存储器系统和主机系统可经由例如外围组件互连高速(PCIe)总线交 换数据。非易失性存储器高速(NVMe)为用于存取经由PCIe总线附接的非易失性存储 器的逻辑装置接口规范。NVMe利用由例如但不限于SSD的半导体存储器提供的并行 度。
存储器控制器可通常具有一定量的易失性存储器,其可用于多种任务。举例来说,易失性存储器可用于高速缓存用于在由主机系统使用的逻辑地址与非易失性存储器中 的物理地址之间转译的管理表的部分。应注意,管理表的完整版本可存储在非易失性存 储器中。高速缓存管理表的益处在于在存储器系统接收读取或写入请求时,其可基于存 储器控制器的易失性存储器中的快得多的查找而确定需要存取哪一存储器位置。为了快 速一致的性能,可选择管理表的组织来最小化所需的计算量和易失性存储器查找的数 目,但代价是需要更多易失性存储器。存储器控制器可出于其它目的使用易失性存储器。
在首先引入SSD时,通常将动态随机存取存储器(DRAM)包含为SSD的高速缓 存且改进驱动性能。DRAM充当用于将数据写入到SSD且用于存储映射表的高速缓存, 所述映射表保持记录SSD上数据的位置以允许存取数据。近年来,使用DRAM的SSD 不断突破极限并获得更好的性能已成为标准。然而,SSD接口、NAND技术、SSD控制 器和固件已存在主要的改进。
与高效地提高性能和经营性能力成本两者的希望耦合,主机系统可使其主机存储器 的部分可供存储器控制器使用。举例来说,NVMe协议的一些版本允许主机存储器缓冲器(HMB)特征,其中主机存储器的部分被分配以供存储器控制器使用。此选项可通过 允许存储器控制器具有较少易失性存储器来节省成本。通过NVMe 1.2规范实现的HMB 允许SSD通过PCIe连接利用附接到主机或中央处理器(CPU)的DRAM中的一些,而 非需要DRAM支持SSD。主机DRAM的最大用途为高速缓存映射信息,这通常仅需要 几十兆字节(MB)的缓冲器大小。
发明内容
本文中公开存储装置的一个方面。存储装置包含存储器和控制器。存储器包含易失 性存储器。控制器配置成基于来自主机装置的主机存储器分配而确定易失性存储器中的 至少一部分为可重复使用区域。控制器还配置成计算易失性存储器中的可重复使用区域 的大小。控制器还配置成基于可重复使用区域的所计算大小响应于主机存储器分配而在 易失性存储器的可重复使用区域中执行一个或多个存储装置操作。
本文中公开存储装置的另一方面。存储装置包含存储器和控制器。存储器包含易失 性存储器。控制器配置成基于来自主机装置的主机存储器分配而确定易失性存储器中的 至少一部分为可重复使用区域。控制器还配置成计算易失性存储器中的可重复使用区域 的大小。控制器还配置成基于可重复使用区域的所计算大小响应于主机存储器分配而在 易失性存储器的可重复使用区域中执行一个或多个存储装置操作。控制器还配置成将主 机存储器分配释放回到主机装置。
本文中公开存储装置的另一方面。存储装置包含存储器和控制器。存储器包含易失 性存储器。控制器配置成确定存储装置是否支持HMB分配。控制器还配置成在确定存 储装置支持HMB分配时将对用于与控制器相关联的一个或多个内部模块的HMB分配 的请求发送到主机装置。控制器还配置成从主机装置接收指示HMB分配是否成功的响 应。控制器还配置成基于来自主机装置的主机存储器分配而确定易失性存储器中的至少 一部分为可重复使用区域。控制器还配置成计算易失性存储器中的可重复使用区域的大 小。控制器还配置成基于可重复使用区域的所计算大小响应于主机存储器分配而在易失 性存储器的可重复使用区域中执行一个或多个存储装置操作。控制器还配置成将主机存 储器分配释放回到主机装置。
应理解,根据以下详细描述,存储装置的其它方面对本领域的技术人员将变得显而 易见,其中借助于说明来展示且描述设备和方法的各种方面。如将意识到,这些方面可以其它且不同的形式实施,并且其若干细节能够在各种其它方面进行修改。因此,图式 和详细描述应被视为在本质上是说明性而非限制性的。
附图说明
现将参考附图借助于实例但不作为限制在详细描述中呈现本公开的各种方面,其中:
图1为示出与主机装置通信的存储装置的示例性实施例的框图。
图2为示出图1的存储装置的非易失性存储器中的逻辑到物理映射表的实例的概念 图。
图3为示出图1的存储装置中的存储器单元的二维阵列的实例的概念图。
图4为示出图1的存储装置中的存储器单元的三维阵列的实例的概念图。
图5为示出图1的存储装置中的块阵列的实例的概念图。
图6为示出图1的存储装置中的三层级单元的电压分布图表的实例的图表。
图7为示出与主机装置通信的图1的存储装置中的非易失性存储器系统的实例的概 念图。
图8为示出在图1的存储装置中的HMB分配期间用于存储器处置的示例性过程的流程图。
图9为示出图1的存储装置中的HMB分配释放的示例性过程的流程图。
图10A和10B为示出图1的存储装置中的存储器处置的实例的概念图。
图11为示出如由图1的存储装置执行的用于主机存储器缓冲器分配的处置的过程的流程图。
图12为示出处置图1的存储装置中的主机存储器缓冲器分配的控制器的实例的概念图。
具体实施方式
下文结合附图阐述的详细描述意图作为对本公开的各种示例性实施例的描述,并且 并不意图表示可实践本公开的仅有实施例。详细描述包含出于提供对本公开的彻底理解 的目的的具体细节。然而,本领域的技术人员将显而易见,可在没有这些具体细节的情况下实践本公开。在一些例子中,以框图形式展示公认结构和组件以便避免混淆本公开 的概念。首字母缩写词和其它描述性术语可仅出于便利和清晰性的目的而使用,并且不 意图限制本公开的范围。
词语“示例性”和“实例”在本文中用于意味着充当实例、例子或说明。不必将本 文中描述为“示例性”的任何示例性实施例解释为比其它示例性实施例优选或有利。同 样地,设备、方法或制品的术语“示例性实施例”不需要本公开的所有示例性实施例包 含所描述的组件、结构、特征、功能性、过程、优点、益处或操作模式。
如本文中所使用,术语“耦合”用于指示两个组件之间的直接连接,或在适当时通过中介或中间组件到彼此的间接连接。相比之下,在组件被称作“直接耦合”到另一组 件时,不存在中介元件。
在以下详细描述中,将呈现与主机装置通信的存储装置的各种方面。这些方面非常 适合于快闪存储装置,例如SSD、通用串行总线(USB)驱动器和SD存储卡。然而, 本领域的技术人员将意识到,这些方面可扩展到能够存储数据的所有类型的存储装置。 因此,对具体设备或方法的任何参考仅意图示出本公开的各种方面,其中应理解,此类 方面可具有广泛范围的应用,并且不脱离本公开的精神和范围。举例来说,虽然以下描 述是指SSD,但所述描述可类似地适用于其它快闪存储装置。
HMB特征利用PCIe的直接存储器存取(DMA)能力来允许SSD使用附接到CPU 的易失性存储器(例如,静态随机存取存储器(SRAM)/DRAM)中的一些,而非需要 SSD含有其自身的SRAM/DRAM。经由PCIe存取主机存储器比存取机载SRAM/DRAM 更慢,但与从快闪(例如,NAND存储器)读取相比相对更快。HMB并不意图为主流 SSD使用的机载SRAM/DRAM的全大小替换。实际上,使用HMB特征的所有SSD具 有几十MB的目标缓冲器大小。这可足以使驱动器高速缓存用于几十千兆字节(GB) 的快闪的映射信息,这对于许多消费者工作负载来说是足够的。
HMB为NVMe协议的突出显示特征,其为用于例如SSD的新兴存储装置的最先进 存储接口。HMB使得底层存储器能够利用主机存储器的部分来高速缓存地址映射信息 和/或用户数据,使得可克服存储装置内的存储器的有限容量。此技术通过与资源受限的 存储装置共享充分的主机存储器来为经济高效地优化I/O性能提供机会。
虽然SSD控制器含有经配置量的存储器,但内置存储器的量可能不足以允许内部高 速缓存NAND映射表的相当大部分。省略易失性存储器资源(例如,SRAM/DRAM)的 SSD可成本更低且大小更小;然而,因为存储装置可为资源受限的,使得其仅可将其映 射表存储在快闪存储器(例如,NAND)而非显著更快的易失性存储器中,所以存在相 当大的性能代偿。由于固件开销、存储操作算法的复杂性和由于易失性存储器资源(例 如,RAM)或有助于决定读取和写入性能的其它硬件外围装置的有限生产成本,因此 SSD可具有局限性。HMB特征在改进SSD性能方面提供优点,但由于HMB受到主机 侧限制,因此无法完全发挥优点。
本发明技术为成功的HMB分配情境提供SSD的读取性能的改进。举例来说,对于 每一成功的HMB分配,可改进主机读取性能。本发明技术可不需要任何额外HMB分 配请求来促进SSD易失性存储器的重复使用以用于SSD读取性能改进。本发明技术还 允许用于随机读取操作、依序读取操作或两者的主机读取性能的动态配置。
本发明技术提供在HMB分配期间内部SRAM/DRAM的有效重复使用以用于加载额 外数据集(例如,用于32MB的主机数据的逻辑块地址(LBA)的信息块到32KB中 的逻辑映射)、逆存储地址表(iSAT)、重新定位信息(例如,垃圾收集)等。SSD控制 器可将对用于其内部模块中的任一个的HMB分配的请求发送到主机装置以高效地处置 以用于改进SSD读取性能。
SSD控制器可将对HMB分配的一个请求发送到主机装置,并且基于相应内部模块的优先级,SSD控制器可决定如何将所分配HMB用于其内部模块。在一些方面中,在 于不同内部SSD控制器模块的HMB分配期间针对SRAM/DRAM处置实施存储器管理 单元(MMU)时,本发明技术可经扩展以包含对地址写入操作(例如,随机、依序、 重叠)的进一步增强。这可帮助实现SSD写入性能的改进,其中由于写入处置需要数据 合并要求的集合。本发明技术可进一步经扩展以解决基于主机读取和/或写入模式以及 HMB的成功分配而加载数据集的自适应算法,以减少从SRAM/DRAM加载和逐出数据 集。
图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)、PCIe、小型 计算机系统接口(SCSI)或串行附接的SCSI(SAS))以及其它可能的候选者进行介接。 替代地,主机接口106可为无线的,并且可使用例如蜂窝式通信(例如,5G NR、4G LTE、 3G、2G、GSM/UMTS、CDMA One/CDMA2000等)、通过存取点(例如,IEEE 802.11、 WiFi、HiperLAN等)的无线分布方法、红外线(IR)、蓝牙、紫蜂、或其它无线广域网 (WWAN)、无线局域网(WLAN)、无线个人区域网(WPAN)技术或类似的广域、局 域和个人区域技术来使存储装置102与主机装置104介接。
存储装置102包含存储器。举例来说,在图1的示例性实施例中,存储装置102可 包含非易失性存储器(NVM)110,以用于持久地存储从主机装置104接收到的数据。 NVM 110可包含例如快闪集成电路、NAND存储器(例如,单层级单元(SLC)存储器、 多层级单元(MLC)存储器、三层级单元(TLC)存储器、四层级单元(QLC)存储器、 五层级单元(PLC)存储器或其任何组合)或NOR存储器。NVM 110可包含多个存储 器位置112,其可存储用于操作存储装置102的系统数据或从主机接收到的存储在存储 装置102中的用户数据。举例来说,NVM可具有交叉点架构,其包含存储器位置112 的2-D NAND阵列,所述2-D NAND阵列具有n行和m列,其中m和n是根据NVM 的大小而预定义的。在图1的示例性实施例中,每一存储器位置112可为裸片114,其 包含多个平面,所述多个平面各自包含多个单元116的多个块。替代地,每一存储器位 置112可为包含单元116的多个块的平面。举例来说,单元116可为单层级单元、多层 级单元、三层级单元、四层级单元和/或五层级单元。存储器位置112的其它实例是可能的;例如,每一存储器位置可为块或块的群组。每一存储器位置可包含3-D NAND阵列 中的一个或多个块。每一存储器位置112可包含经映射到一个或多个物理块的一个或多 个逻辑块。替代地,存储器和每一存储器位置可以本领域的技术人员已知的其它方式来 实施。
存储装置102还包含易失性存储器118,其可例如包含DRAM或静态随机存取存储器(SRAM)。存储在易失性存储器118中的数据可包含从NVM 110读取的数据或待写 入到NVM110的数据。就此而言,易失性存储器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示出存储在NVM的存储器位置112中的一个中 的单个L2P映射表120以避免过度地混淆图1的概念,但L2P映射表120实际上可包含 存储在NVM的一个或多个存储器位置中的多个表。
图2为L2P映射表205的实例的概念图200,其示出从主机装置接收到的数据202 与图1的NVM 110中的逻辑地址和物理地址的映射。数据202可对应于图1中的数据 119,而L2P映射表205可对应于图1中的L2P映射表120。在一个示例性实施例中, 数据202可存储在一个或多个页204(例如,页1到x)中,其中x为经写入到NVM 110 的数据的页的总数目。每一页204可与L2P映射表205的一个或多个条目206相关联, 所述条目识别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 110。高速缓存可以表或其它数据结构的形式存储,所述表或其它数据结构包 含与NVM中正读取数据的每一存储器位置112相关联的逻辑地址。
NVM 110包含连接到每一存储器位置112的感测放大器124和数据锁存器126。举例来说,存储器位置112可为在多个位线上包含单元116的块,并且NVM 110可在每 一位线上包含感测放大器124。此外,一个或多个数据锁存器126可连接到位线和/或感 测放大器。数据锁存器可为例如移位寄存器。在从存储器位置112的单元116读取数据 时,感测放大器124通过将位线上的电压放大到逻辑电平(例如,可读取为‘0’或‘1’) 来感测数据,并且感测到的数据存储在数据锁存器126中。控制器123控制数据经由数 据总线从数据锁存器126到易失性存储器118的传送,所述数据存储在易失性存储器118 中,直到其传送到主机装置104。因为控制器123可能没有额外存储器,所以其可保持 数据直到数据从数据锁存器126移动到易失性存储器118。在数据经写入到存储器位置 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而将数据存储在存储装置102中,所述写入命令指定一个或多个逻辑地址(例如,LBA)以及待写入的数据 的长度。主机接口106接收写入命令,并且控制器在存储装置102的NVM 110中分配 存储器位置112以用于存储数据。控制器123将L2P映射存储在NVM(和高速缓存122) 中,以将与数据相关联的逻辑地址映射到经分配给数据的存储器位置112的物理地址。 控制器还存储L2P经映射数据的长度。控制器123接着通过将数据发送到连接到所分配 存储器位置的一个或多个数据锁存器126而将数据存储在存储器位置112中,所述数据 从所述所分配存储器位置经编程到单元116。
主机装置104可通过发送读取命令而从存储装置102检索数据,所述读取命令指定与待从存储装置102检索的数据相关联的一个或多个逻辑地址,以及待读取的数据的长度。接口106接收读取命令,并且控制器123存取高速缓存122或另外NVM中的L2P 映射,以将在读取命令中指定的逻辑地址转译为指示数据的位置的物理地址。控制器123 接着通过使用感测放大器124来感测数据且将其存储在数据锁存器126中而从由物理地 址指定的存储器位置112读取所请求数据,直到读取数据经由主机接口106回到主机装 置104。
图3示出单元302的NAND存储器阵列300的实例。单元302可对应于图1的NVM 110中的单元116。多个单元302耦合到字线304和位线306。举例来说,存储器阵列 300可在NVM110的裸片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单元308和SGD单元310), 而页316可包含耦合到块内的一个字线的单元302的群组。
图4示出单元422的三维(3D)NAND存储器阵列400的实例。单元422可对应于 图1的NVM 110中的单元116。如在图3的2D存储器阵列300中,多个单元422可耦 合到字线414和位线416。然而,在3D存储器阵列400中,字线414可各自包含多个 字线串418,并且位线416可连接到字线串418中的每一个。类似地,SGS单元和SGD 单元(未图示)可分别将每一字线串418中的存储器单元连接到源极线(未图示)和位 线416。因此,3D存储器阵列400可将比2D存储器阵列300更多的个别可存取的数据 页存储在每一字线414上(例如,在字线串418中)。虽然图4中所示出的3D存储器阵 列400包含每一字线414的两个字线串418的实例,但在其它实例中,字线414可包含 其它数目的字线串(例如,四个WL-Strs 0-3)。图3的架构,或其变化形式可用于3D NAND 实施方案中,包含用于超高密度存储装置的位成本可缩放(BiCS)快闪存储器。
图5示出包含多个串504的块502的NAND存储器阵列500的实例。块502可对应 于图1的NVM 110中的裸片114的块,并且串504可各自对应于图3中的串314。如在 图3的存储器阵列300中,每一串504可包含各自耦合到位线506且个别地耦合到相应 字线508的存储器单元群组。类似地,每一串可包含SGS单元510和SGD单元512, 其分别将每一串504中的存储器单元连接到源极线514和位线506。
在控制器123从(即,字线304、508上的)单元302的页316读取数据或将数据 写入到所述页时,所述控制器可发送命令以将读取电压或编程电压施加到所选择字线且 将穿过电压施加到其它字线。单元的读取或编程状态(例如,用于SLC的逻辑‘0’或 逻辑‘1’)接着可基于单元302的阈值电压而确定。举例来说,在SLC读取操作期间, 如果单元302的阈值电压小于读取电压(即,电流响应于读取电压而流动通过单元), 则控制器123可确定单元存储逻辑‘1’,而如果单元302的阈值电压大于读取电压(即, 电流不响应于读取电压而流动通过单元),则控制器123可确定所述单元存储逻辑‘0’。 类似地,在SLC编程操作期间,控制器可通过发送命令以将编程电压施加到字线304、 508上的单元302直到单元达到阈值电压来存储逻辑‘0’,并且在擦除操作期间,所述 控制器可发送命令以将擦除电压施加到包含单元302的块502(例如,施加到例如p阱 的单元的衬底),直到单元缩减回到低于阈值电压(回到逻辑‘1’)。
对于存储多个位的单元(例如,MLC、TLC、QLC等),每一字线304、508可包含 单元302的多个页316,并且控制器可类似地发送命令以将读取或编程电压施加到字线 以基于单元的阈值电压而确定单元的读取或编程状态。举例而言,在TLC的情况下,每 一字线304、508可包含三个页316,其包含分别对应于存储在TLC中的不同位的下部 页(LP)、中间页(MP)和上部页(UP)。在一个实例中,在对TLC编程时,可首先对 LP编程,接着对MP编程且接着对UP编程。举例来说,编程电压可施加到字线304、 508上的单元,直到所述单元达到对应于单元的最低有效位(LSB)的第一中间阈值电 压。接下来,可读取LP以确定第一中间阈值电压,并且接着编程电压可施加到字线上 的单元,直到所述单元达到对应于单元的下一个位(在LSB与最高有效位(MSB)之 间)的第二中间阈值电压。最终,可读取MP以确定第二中间阈值电压,并且接着编程 电压可施加到字线上的单元,直到所述单元达到对应于单元的MSB的最终阈值电压。 替代地,在其它实例中,LP、MP和UP可在一起经编程(例如,在全序列编程或模糊- 精细编程中),或可首先对LP和MP编程,接着对UP编程(例如,LM-模糊-精细编程)。 类似地,在读取TLC时,控制器123可读取LP以取决于所述单元的阈值电压而确定LSB是存储逻辑0还是1,所述控制器可读取MP以取决于所述单元的阈值电压而确定下一 个位是存储逻辑0还是1,并且所述控制器可读取UP以取决于所述单元的阈值电压而 确定最终位是存储逻辑0还是1。
图6示出电压分布图表600的实例,所述电压分布图表示出TLC(例如,单元116、302)的不同NAND状态,所述TLC存储三个数据位(例如,逻辑000、001等,高达 逻辑111)。TLC可包含对应于逻辑‘111’的擦除状态602和对应于其它逻辑值‘000-110’ 的多个编程状态604(例如,A-G)。编程状态604可由不同阈值电压606分离。最初, 例如在控制器123擦除包含单元的块502之后,单元116、302可处于擦除状态602。在 控制器123对如上文所描述的LP、MP和UP编程时,单元116、302的电压可增加,直 到符合对应于待存储的逻辑值的阈值电压606,此时,所述单元转变为其相应编程状态 604。虽然图6示出TLC的八个NAND状态,但状态的数目可取决于存储在每一单元 116、302中的数据量而不同。举例来说,SLC可具有两个状态(例如,逻辑0和逻辑1), MLC可具有四个状态(例如,逻辑00、01、10、11),并且QLC可具有十六个状态(例 如,擦除和A-N)。
在控制器123尝试将所选择字线304、508的单元116、302编程为编程状态604中 的一个时,所述控制器可在数个编程循环或ISPP周期内执行增量步骤脉冲编程(ISPP)。 举例来说,编程电压(例如,高电压)可施加到所选择字线304、508,穿过电压(例如, 小于编程电压的高电压)可施加到其它字线304、508,位线编程电压(例如,低电压) 可施加在连接到正在所选择字线上编程的所选择单元的位线306、506上,并且位线禁 止电压(例如,高电压)可施加在连接到未在所选择字线上编程的其它单元的位线306、 506上。将高编程电压施加到所选择字线且将低电压施加到所选择位线允许电子从通道 隧穿到所述所选择单元的电荷捕集层中,由此使单元的阈值电压增加。另一方面,将高 电压施加到未经选择位线禁止电子从通道隧穿到所述未经选择单元的电荷捕集层中,由 此防止所述单元的阈值电压增加。因此,可禁止耦合到经编程为较低状态的单元的位线, 以防止所述单元的阈值电压增加,而其它单元经编程为较高状态。举例而言,在TLC 的情况下,可首先禁止首先经编程为A状态的单元的位线,接着禁止经编程为B状态的 不同单元的位线,接着禁止达到C状态、接着达到D状态的所述单元的位线等,直到所 选择字线上的其余单元最终达到G状态且所选择字线上的所有单元均已经编程。
在于一个编程循环或ISPP周期中施加编程电压之后,编程校验电压(例如,低电压)可施加到字线304、508以确定单元的阈值电压是否已增加到超出相应阈值电压, 而进入预期编程状态中。如果单元中无一个转变为预期编程状态,则执行另一编程循环 或ISPP周期,其中可施加较高编程电压以进一步增加单元的阈值电压。随后,可再次 施加编程校验电压,以确定单元的阈值电压是否转变为预期编程状态。使编程电压递增 且校验所选择单元的电压阈值的以上过程可在数个编程循环内重复。如果单元转变为其 相应编程状态且编程循环的总数目不超过预定循环计数,则控制器可确定所述单元已进 入其预期编程状态且因此成功地经编程。否则,如果在单元转变为其相应编程状态之前, 编程循环的总数目超过预定循环计数,则控制器可确定已发生编程失败。
图7为图1的存储装置中的示例非易失性存储器系统的框图,其描绘存储器控制器123和主机装置104的示例性实施例的更多细节。在一个示例性实施例中,图7的系统 为SSD。如本文中所使用,存储器控制器123为管理存储在非易失性存储器装置上的数 据且与例如计算机或电子装置的主机装置104通信的装置。在一些示例性实施例中,非 易失性存储器110含有快闪(例如,NAND、NOR)存储器单元,在此情况下,存储器 控制器123可为快闪存储器控制器。
存储器控制器123除本文中所描述的具体功能性外还可具有各种功能性。举例来说, 存储器控制器可使存储器格式化以确保存储器恰当地操作,列出不良存储器单元,并且 分配备用存储器单元来替换将来故障单元。备用单元的某一部分可用于保持固件来操作 存储器控制器和实施其它特征。在操作中,在主机装置104需要从存储器读取数据或将数据写入到所述存储器时,所述主机装置可与存储器控制器123通信。如果主机装置104 提供数据将被读取/写入到的逻辑地址(LA),则存储器控制器123可将从主机装置104 接收到的逻辑地址转换为存储器中的物理地址。逻辑地址可为LBA,并且物理地址可为 物理块地址(PBA)。(替代地,主机装置104可提供物理地址)。存储器控制器123还 可执行各种存储器管理功能,例如但不限于耗损均衡(分布写入以避免耗损原本将会被 重复地写入到的具体存储器块)和垃圾收集(在块已满之后,仅将有效数据页移动到新 块,如此已满的块可被擦除且重复使用)。
存储器控制器123可配置成实施存储器存取协议,例如NVMe协议。在一些示例性实施例中,存储器控制器123配置成实施对NVMe协议的扩展,其允许存储器控制器 123请求对HMB 770的大小的动态改变。实施NVMe协议或对NVMe协议的扩展的存 储器控制器123在本文中被称作NVMe存储器控制器,所述NVMe协议或对NVMe协 议的扩展允许存储器控制器123请求对HMB 770的大小的动态改变。同样地,实施外 围组件互连(PCI)协议或对NVMe协议的扩展的主机控制器780在本文中被称作NVMe 主机控制器,所述PCI协议或对NVMe协议的扩展授权存储器控制器123请求对HMB 770的大小的动态改变。
主机存储器103的部分可用于HMB 770。HMB 770可为由主机装置104分配以供 存储器控制器123使用的缓冲器。在一些示例性实施例中,HMB 770用于存储器控制器 123的排它性用途。举例来说,存储器控制器123可使用HMB 770来高速缓存数据。在 一个示例性实施例中,主机装置104可保证HMB 770中的数据可为有效的且在可引起 数据损失的任何操作(例如,电力损失、主机可需要此缓冲器等、...)之前强制通知存 储器控制器123。在一个示例性实施例中,主机装置104允许存储器控制器123在数据 损失之前确认此操作。在一个示例性实施例中,在存储器控制器123经初始化时,主机 装置104可执行HMB 770到存储器控制器123的初始分配。在一个示例性实施例中, 在存储装置102通电时,存储器控制器123经初始化。初始分配可符合NVMe;然而, HMB的初始分配不限于NVMe。
HMB 770可逻辑上划分成例如数据缓冲器等单元。举例来说,每一数据缓冲器可为4KB,或某一其它大小。主机存储器103可用于存储HMB指针。HMB指针可含有缓冲 器的主机存储器103中的物理地址。HMB指针还可含有指示缓冲器的大小的大小参数。
应注意,主机存储器103的部分可用于数据缓冲器,其中主机装置104可存储待写入到NVM 110的主机数据,或存储从NVM 110读取的主机数据。
主机装置104具有主机控制器780。在本文使用所述术语时,主机控制器780为与存储器控制器123通信以便存取处于存储器控制器123的控制下的非易失性存储器的装置。主机控制器780可配置成实施包含但不限于NVMe的存储器存取协议的主机控制器 功能。应注意,主机控制器780可配置成实施可为对例如NVMe的存储器存取协议的扩 展的技术。
主机控制器780具有HMB分配器744,所述HMB分配器可配置成将HMB分配给 存储器控制器123,并且维持与存储装置进行的HMB分配直到某些电力状态事件。在 一个示例性实施例中,HMB分配器744配置成基于在存储装置的通电状态期间来自存 储器控制器123的请求而进行HMB 770的分配,并且主机控制器780维持与存储装置 进行的HMB分配直到存储装置断电(正常或不正常)。就此而言,可在存储装置的断电 状态期间完全释放HMB分配。在一些方面中,主机控制器780可维持与存储装置进行 的HMB分配,即使存储装置转变为低电力状态(例如,电力状态3、电力状态4)也是 如此。
主机控制器780可经由接口106(在图1中)与存储器控制器123通信。存储装置 接口748可包含提供与存储装置102和/或接口106的电接口的物理层接口(PHY)。在 一个示例性实施例中,PHY包含符合PCIe的硬件。然而,PHY不限于PCIe。存储装置 接口748通常促进经由接口106的数据、控制信号和定时信号的传送。
举例来说,HMB分配器744和存储装置接口748可采用以下形式:经设计以与其 它组件一起使用的经封装功能性硬件单元(例如,电路)、可由通常执行相关功能中的 特定功能的处理电路(或一个或多个处理器)执行的编程码(例如,软件或固件)的部 分,或与较大系统介接的独立硬件或软件组件。举例来说,HMB分配器744可包含ASIC、 FPGA、电路、数字逻辑电路、模拟电路、离散电路的组合、门或任何其它类型的硬件 或其组合。替代地或另外,每一模块可包含或包括存储在处理器可读装置(例如,主机 存储器103)中以对一个或多个处理器编程以执行本文中所描述的功能的软件。
存储器控制器123可与NVM 110介接。在一个示例性实施例中,存储器控制器123和多个存储器裸片(一起包括存储装置102)实施SSD,其可模拟、替换或代替主机内 部的硬盘驱动器使用,作为NAS装置等。另外,不需要使SSD充当硬盘驱动器。
在一些示例性实施例中,存储装置102包含存储器控制器123与非易失性存储器110 之间的单个通道,但本文中所描述的主题不限于具有单个存储器通道。举例来说,在一些非易失性存储器装置架构中,取决于存储器控制器能力,在存储器控制器123与存储 器裸片之间可存在4个、7个、8个或更多个通道。在本文中所描述的示例性实施例中 的任一个中,在存储器控制器与存储器裸片之间可存在多于单个通道,即使在图式中展 示单个通道也是如此。
存储器控制器123包含提供与主机装置104或下一层级存储性存储器控制器的电接 口的主机接口106。主机接口106可包含PHY。在一个示例性实施例中,主机接口106 包含符合PCIe的硬件。然而,主机接口106不限于PCIe。主机接口106通常促进数据、 控制信号和定时信号的传送。主机接口可配置成提供与主机装置104的通信。
存储器控制器123具有HMB处置模块750。在一些方面,HMB处置模块750可被 称作MMU。HMB处置模块750配置成对HMB 770的分配作出请求。HMB处置模块 750可配置成在存储器控制器初始化期间请求HMB的初始分配。在一个示例性实施例 中,HMB处置模块750配置成在运行时间期间(例如,在初始化存储器控制器之后) 对额外HMB 770作出请求。在一个示例性实施例中,HMB分配在存储装置的正常或不 正常关机之后释放,在此之后,在存储装置再次通电时,HMB处置模块750可对HBM 分配作出另一请求。在另一示例性实施例中,HMB处置模块750可配置成在使用额外 HMB 770完成存储器控制器123之后释放额外HMB 770。
主机存储器103可存储作为指向HMB 770的数据缓冲器指针的HMB指针。举例来说,每一HMB指针可指向存储器的一个单元。存储器的每一单元可为页,其中页大小 由主机装置104设置。在一个示例性实施例中,HMB指针可为根据NVMe协议的主机 存储器缓冲器描述符。然而,HMB指针不限于NVMe协议。HMB指针可由主机装置 104中的HMB分配器744提供。
在一些方面,HMB处置模块750可请求具有最小和/或最大范围的HMB分配。如 果HMB处置模块750确定所授权HMB分配对应于小于所请求最小分配(例如,部分 HMB分配),则HMB处置模块750可不接受HMB分配且随后起始新请求。另一方面, 如果HMB处置模块750接受所授权HMB分配,则HMB处置模块750可不起始修改所 请求HMB分配大小的新请求。在其它方面中,主机存储器103可用于存储日志页,所 述日志页可用于存储待报告给主机装置104的各种信息。在一个示例性实施例中,日志 页用于存储请求HMB 770的量的改变的信息。举例来说,日志页可含有对额外HMB的 请求,或将HMB 770的部分释放回到主机装置104。
HMB 770可用于存储管理表。在一个示例性实施例中,管理表包含L2P表(逻辑 到物理映射)和P2L表(物理到逻辑映射)。存储器控制器123可使用管理表来将逻辑 地址(LA)映射到物理地址(PA)。此类管理表可用于将LA直接映射到PA,或LA可 映射到中间或虚拟块地址,所述中间或虚拟块地址映射到PA。在一些示例性实施例中, 逻辑地址为逻辑块地址,并且物理地址为物理块地址。其它变化形式也是可能的。
管理表还可用于管理除非易失性存储器110中之外的位置中的数据的高速缓存。在 一个示例性实施例中,存储器控制器123高速缓存HMB 770中的数据。举例来说,存 储器控制器123可使用HMB 770来高速缓存与一些LA(或LA的范围)相关联的数据。 管理表还可用于管理HMB 770中的数据的高速缓存。在一个示例性实施例中,存储器 控制器123高速缓存易失性存储器118中的数据。举例来说,存储器控制器123可使用 易失性存储器118来高速缓存与一些LA(或LA的范围)相关联的数据。管理表还可用 于管理易失性存储器118中的数据的高速缓存。在一个示例性实施例中,易失性存储器 118为易失性存储器(例如,图1的易失性存储器118)。
DMA逻辑753配置成控制非易失性存储器110与主机装置104中的主机存储器103之间的数据的DMA传送。DMA逻辑753可直接存储器存取HMB 770。举例来说,DMA 逻辑753可将数据高速缓存到HMB 770中。举例来说,DMA逻辑753可从HMB 770 存取数据且将其传送到易失性存储器118(例如,图1的高速缓存122)。DMA逻辑753 可使用HMB指针来存取HMB 770中的正确位置。
存储器控制器123可包含将命令序列提供到非易失性存储器110且从非易失性存储 器110接收状态信息的存储器接口。存储器接口可配置成存取非易失性存储器110上的非易失性存储器。存储器接口可提供到线路718的电连接。存储器接口可控制信号经由 线路718到非易失性存储器110的定时。在一个示例性实施例中,存储器接口可为双数 据速率(DDR)接口。在一些示例性实施例中,存储器接口为快闪存储器接口。然而, 非易失性存储器110中的存储器单元不限于快闪存储器。因此,存储器接口不限于快闪 存储器接口。
举例来说,图7中所描绘的存储器控制器123的组件可采用以下形式:经设计以与其它组件一起使用的经封装功能性硬件单元(例如,电路)、可由通常执行相关功能中 的特定功能的(微)处理器或处理电路(或一个或多个处理器)执行的编程码(例如, 软件或固件)的部分,或与较大系统介接的独立硬件或软件组件。举例来说,每一模块 的全部或部分(包含但不限于HMB处置模块750、DMA逻辑753、主机接口106)可 包含ASIC、FPGA、电路、数字逻辑电路、模拟电路、离散电路的组合、门或任何其它 类型的硬件或其组合。替代地或另外,每一模块的全部或部分可包含或包括存储在处理 器可读装置(例如,存储器)中以对用于存储器控制器123的一个或多个处理器编程以 执行本文中所描述的功能的软件。图7中所描绘的架构为可(或可不)使用存储器控制 器123的组件(例如,高速缓存122)的一个示例性实施例。
如图7中所描述,存储器控制器123使用存储器来高速缓存用于存储在NVM 110 中的数据的映射信息。然而,存储器控制器123中的存储器的大小通常不足以允许高速 缓存NAND映射表的相当大部分。因此,存储装置102(例如,存储器控制器123)使 用HMB特征来高速缓存用于几十千兆字节的快闪的映射信息,这对于许多消费者工作 负载来说是足够的。
在示例性实施例中,存储器控制器123将对HMB分配的请求(例如,HMB分配请 求730)发送到主机装置104。HMB分配可经请求以用于服务存储器控制器123的任何 内部模块(未展示),例如存储地址表(SAT)、逆SAT(iSAT)、异或(XOR)奇偶校 验数据、控制器地址表(CAT)、重新定位(RLC)等。在一些方面中,HMB分配请求 730可包含来自一个内部模块的请求,使得可代表存储器控制器123的多个内部模块将 多个HMB分配请求发送到主机装置104,其中每一请求是关于内部模块中的一个。在 其它方面中,HMB分配请求730可包含来自多个内部模块的聚合请求,其中HMB分配 请求730指定用于内部模块中的每一个的HMB 770的所请求大小。如果主机装置104 授权全部的所请求HMB分配,则可不使用存储装置102的易失性存储器118(例如, 静态随机存取存储器(SRAM))中用于所请求模块(例如,SAT、iSAT、XOR、CAT、 RLC等)的区域。
本公开提供管理用于改进SSD读取性能的HMB分配的过程。根据本发明技术,在 成功分配HMB 770后,就由存储器控制器123确定用于相应模块的所分配HMB大小。 获取用于对应模块的易失性存储器118(例如,SRAM/DRAM)分配,并且确定 SRAM/DRAM区域是否可重复使用。如果确定易失性存储器118区域可重复使用,则存 储器控制器123计算可重复使用易失性存储器118区域的大小且在可重复使用易失性存 储器118区域中加载优选数据集(例如,用于32MB的主机数据的LBA的信息块到32 KB中的逻辑映射)以用于改进依序读取性能或随机读取性能。数据集的加载可由存储 器控制器123基于主机读取的当前模式而决定,并且加载可针对应用定制以获得最佳读 取性能。如果将释放所分配HMB区域,则存储器控制器123可确定哪些模块正使用HMB 770中的所分配区域以及对应的所分配易失性存储器118区域是否正重复使用。如果存 储器控制器123确定重复使用的易失性存储器118区域的释放,则存储器控制器123可 从易失性存储器118区域逐出所有数据集且将所分配HMB770区域释放回到主机装置 104。基于主机读取/写入模式而进一步调适加载数据集的算法以减少来自易失性存储器 118区域的数据集的加载和逐出。
如果存储器控制器123的多个模块将HMB 770的所授权分配用于其内部操作(作为单个请求,并且为存储装置授权HMB分配),则HMB处置模块750可将释放易失性 存储器118区域的所有信息块组合成一个逻辑信息块且使用此有效地用于改进主机读 取。
图8为示出在图1的存储装置102中的HMB分配期间用于存储器处置的示例性过 程800的流程图。在图8中,存储器控制器123可基于其对HMB分配的请求是否由主 机控制器780授权而起作用。在一些方面中,可在存储器控制器123的初始化阶段期间 执行过程800。在其它方面中,可在运行时间阶段期间执行过程800。
框中的一些可由主机装置104(例如,由主机控制器780)执行,其中其它框由存 储装置102(例如,由存储器控制器123)执行。初始化阶段是指初始化存储器控制器 123。在一个实施例中,根据NVMe协议执行初始化阶段。然而,初始化阶段不限于NVMe。 初始化阶段可在通电复位存储装置102之后执行。初始化阶段可用于建立例如PCIe寄 存器的寄存器中的值。
在802处,确定存储装置102是否支持HMB分配。在一些方面中,框802可由主 机装置104(例如,由主机控制器780)执行。在其它方面中,框802可由存储装置102 (例如,由存储器控制器123)执行。如果存储装置102支持HMB分配,则过程800进 行到框804。否则,终止过程800。
在804处,存储器控制器123向主机控制器780请求一定量的主机存储器103以供存储器控制器123使用(例如,HMB分配请求730)。在一个实施例中,存储器控制器 123依照NVMe协议的版本作出请求。在一个实施例中,存储器控制器123根据NVMe 协议的版本请求HMB 770的分配。存储器控制器123可指示分配的主机存储器103的 所请求大小以供存储器控制器123使用。在一些方面中,存储器控制器123可指定HMB 770的所请求优选大小。在一些方面中,存储器控制器123可指定存储器控制器123所 需的HMB 770的最小大小。
框804包含主机控制器780分配主机存储器103的区域以供存储器控制器123使用。在框804中,响应于来自存储器控制器123的请求,可由主机控制器780执行框804。 在一个实施例中,主机控制器780可产生具有指向主机存储器103的区域的指针的描述 符列表。在一些方面中,描述符列表可包含指向HMB 770的一个或多个区域的指针。
在806处,存储器控制器123可确定所请求HMB分配是否成功。如果HMB分配 成功,则过程800进行到框808。否则,可终止过程800。框806包含主机控制器780 报告主机存储器103到存储器控制器123的分配是否成功。在一些方面中,主机控制器 780发送指示HMB分配是否成功的HMB分配响应(例如,图7中的HMB分配响应732)。 在一个实施例中,主机控制器780将命令发送到存储器控制器123以报告分配。举例来 说,主机控制器780可指示存储器控制器123的哪一内部模块分配有HMB 770的至少 一部分。在另一实例中,主机控制器780可指示对应于供存储器控制器123使用的HMB 770的总分配大小的总HMB分配。
框806可包含基于主机控制器780是否授权HMB分配请求730的决策。基于主机 控制器780授权请求的程度,可存在三个结果。主机装置104可完全地授权HMB分配 请求730,这意味着主机控制器780提供HMB 770的整个所请求分配量。就此而言, HMB分配请求730的完全授权表示成功HMB分配。主机控制器780可拒绝HMB分配 请求730,这意味着主机控制器780将不授权HMB 770的所请求分配。就此而言,HMB 分配请求730的拒绝表示不成功HMB分配。主机控制器780可部分地授权HMB分配 请求730,这意味着主机控制器780可授权HMB770的所请求量的部分的分配。就此而 言,HMB分配请求730的部分授权表示成功HMB分配。如果主机装置104完全地授权 HMB分配请求730,则存储器控制器123使用所分配HMB 770来执行任务。举例来说, 存储器控制器123使用所分配HMB 770来执行存储装置操作(例如,垃圾收集)。
在框808处,存储器控制器123基于相应模块的对应优先级而根据来自用于存储器控制器123的相应模块的总HMB分配的所分配HMB分配易失性存储器的区域。就此 而言,存储器控制器123可决定如何通过分配易失性存储器区域来利用相应模块的所分 配HMB以确定是否可改进HMB分配期间的SSD读取性能。相比之下,传统方法要求 存储装置中分配给请求模块的SRAM区域不能响应于完全请求的HMB分配而有效地利 用。在一些方面中,存储器控制器123的每一内部模块可具有不同优先级。在一些方面 中,优先级可基于内部模块的类型。在一些方面中,优先级可基于正用内部模块处理的 工作负载的数目,使得优先级随着工作负载的数目增加而增加。
在框810处,存储器控制器123获取用于相应模块的易失性存储器118的所分配区域。举例来说,存储器控制器123可获取高速缓存122的所分配区域(例如,SRAM、 DRAM)。易失性存储器118中的区域可分配给存储器控制器123的具体内部模块。将 参考图9论述用于相应模块的易失性存储器118分配的其它细节。
在812处,存储器控制器123确定易失性存储器118的所获取的所分配区域是否可重复使用。如果易失性存储器118的所获取的所分配区域可重复使用,则过程800进行 到框814。否则,此时可终止过程800。
在一些方面中,如果主机控制器780完全地授权所请求HMB分配,则所释放的易 失性存储器的量可大体上对应于由内部模块使用的易失性存储器的全部量。举例来说, 如果内部模块使用500KB的易失性存储器且HMB分配指示500KB的主机存储器分配 给内部模块,则存储器控制器123可确定500KB可通过HMB分配释放。存储器控制器 123可确定500KB足以执行将改进内部模块的SSD读取性能的一个或多个读取操作, 并且决定易失性存储器118的所获取的所分配区域可重复使用。在另一方面中,如果主 机控制器780授权所请求HMB分配的部分量,则所释放的易失性存储器的量可对应于 由内部模块使用的易失性存储器的全部量的部分。举例来说,如果内部模块使用50KB 的易失性存储器且HMB分配指示4KB的主机存储器分配给内部模块,则存储器控制器 123可确定4KB可通过HMB分配释放。存储器控制器123可确定4KB不足以执行将 改进内部模块的SSD读取性能的一个或多个读取操作,并且决定易失性存储器118的所 获取的所分配区域不可重复使用。在另一实例中,如果内部模块使用100KB的易失性 存储器且HMB分配指示90KB的主机存储器分配给内部模块,则存储器控制器123可 确定90KB可通过HMB分配释放。存储器控制器123可确定90KB足以执行将改进内 部模块的SSD读取性能的一个或多个读取操作,并且决定易失性存储器118的所获取的 所分配区域可重复使用。在一些方面中,易失性存储器118中的释放区域可重复使用的 程度可基于可配置阈值。举例来说,在释放区域超过可配置阈值时,存储器控制器123可确定易失性存储器的释放区域可重复使用。在一些方面中,可配置阈值可表示用以促 进与存储器控制器模块相关联的存储装置操作的执行的存储器的所需量。
在814处,在易失性存储器118中的所获取的所分配区域可重复使用时,存储器控制器123计算可重复使用易失性存储器118区域的大小。计算可为比在框812处所使用 的粗略计算更精细的计算。可重复使用区域计算可用于确定是否可执行针对主机装置 104的映射表的后续加载和/或缓冲器分配。
在816处,取决于可重复使用区域计算,存储器控制器123可加载iSAT表和/或重新定位信息。用于加载iSAT/RLC的易失性存储器的量可对应于在框814处所计算的量。
在818处,取决于可重复使用区域计算,存储器控制器123可加载数据集以用于改进随机读取性能。用于加载用于随机性能的数据集的易失性存储器的量可对应于在框 814处所计算的量。
在820处,取决于可重复使用区域计算,存储器控制器123可加载数据集以用于改进依序读取性能。用于加载用于依序性能的数据集的易失性存储器的量可对应于在框 814处所计算的量。
在822处,取决于可重复使用区域计算,存储器控制器123可加载数据集以用于改进随机和依序读取性能。用于加载用于随机和依序性能的数据集的易失性存储器的量可对应于在框814处所计算的量。
在824处,取决于可重复使用区域计算,存储器控制器123可分配可重复使用区域以用于主机读取和/或写入缓冲。用于分配用于主机读取/写入缓冲的易失性存储器的量可对应于在框814处所计算的量。
图9为示出图1的存储装置102中的HMB分配释放的示例性过程900的流程图。 存储器控制器123可利用可重复使用易失性存储器来改进SSD读取/写入性能,并且决 定将所分配HMB释放回到主机装置104。
在902处,存储器控制器123决定将所分配HMB释放到主机装置104。在一些方 面中,存储器控制器123可确定相应内部模块是使用易失性存储器118中的重复使用区 域完成的,并且决定将指示存储器控制器123意图释放对应所分配HMB的命令发布到 主机装置104。
在904处,存储器控制器123可识别哪些模块正使用HMB分配。存储器控制器123 可通过从HMB分配响应632获得指示用于相应内部模块的所请求HMB分配是否成功 的信息而确定哪些模块正使用HMB分配。在其它方面中,存储器控制器123可保留指 示哪些内部模块已使用其相应HMB分配的位图。
在906处,存储器控制器123确定易失性存储器118中与用于相应模块的HMB分 配相关联的区域是否被重复使用。举例来说,易失性存储器118中通过HMB分配释放 的确定为足以供存储器控制器123重复使用的区域可由存储器控制器123标记在位图 中。如果确定易失性存储器118中的区域重复使用,则过程900进行到框908。否则, 过程900进行到框910。
在908处,在存储器控制器123确定易失性存储器118中的对象区域重复使用时,存储器控制器123可从易失性存储器118中的重复使用区域逐出所有数据集。在其它方 面中,存储器控制器123可从用于主机读取和写入缓冲器的扩展易失性存储器(例如, RAM)区域逐出所有数据集。在910处,存储器控制器123将所分配HMB释放回到主 机装置104。
图10A和10B为示出图1的存储装置102中的易失性存储器处置的实例的概念图。在图10A中,存储器控制器123包含配置成执行具体存储装置操作的一个或多个内部模 块。举例来说,存储器控制器123包含多个内部模块,例如SAT、iSAT、XOR、CAT槽、 经压缩CAT槽、RLC,以及其它模块(例如,模块N-1、模块N),其中N为存储器控 制器的模块的预定义数目。举例来说,SAT可指逻辑到物理地址映射。iSAT可指物理到 逻辑地址映射。垃圾收集算法还可使用物理到逻辑地址映射来识别需要重新定位哪些存 储器块。物理到逻辑地址映射有时将在本文中被称作“反向映射”或iSAT。在其它实例 中,XOR或“异或”为可增加NAND组件的可靠性的可靠性增强。XOR方案以布尔逻 辑函数命名,并且允许通过XOR操作替换组件中高达整个有缺陷NAND裸片。XOR方 案可通过利用可经由XOR奇偶校验数据位内置有经重构数据的备用NAND裸片阵列来 替换NAND裸片阵列的整个或有缺陷部分而提供针对裸片故障和外部不可校正位错误 率(UBER)事件的保护。XOR方案在SSD中的主要目标为减少任何灾难性的数据损失 故障和平均故障率。这使用A XOR B XOR B=A的布尔XOR逻辑函数来实现。对来自 主机的传入数据包的XOR产生XOR奇偶校验位,如果需要,所述XOR奇偶校验位随后可用于重建数据。通过将A XOR B的结果存储为奇偶校验数据,所述方案允许通过 将奇偶校验数据与A(以重新产生B)或B(以重新产生A)进行XOR来重新产生A 或B。
如图10A中所描绘,易失性存储器118包含指派给相应内部模块的所分配区域。在HMB分配期间,这些所分配区域可完全或部分地释放。举例来说,可向SAT内部模块 分配易失性存储器118中包含释放区域1022的第一区域,可向XOR内部模块分配易失 性存储器118中包含释放区域1024的第二区域,可向CAT槽内部模块分配易失性存储 器118中包含释放区域1026的第三区域,并且可向另一内部模块(例如,模块N-1)分 配易失性存储器118中包含释放区域1028的第四区域。释放区域1022、1024、1026、 1028中的每一个可彼此不连续且对应于相应内部模块的经指派存储器区域。在一些方面 中,释放区域中的每一个可被称作释放存储器的信息块。
在图10B中,存储器控制器123可确定存储器控制器123的多个模块针对其内部操作接收HMB 770的分配。存储器控制器123的HMB处置模块750可将释放易失性存储 器的所有信息块组合成一个逻辑信息块且有效地使用释放存储器的所组合信息块来改 进主机读取性能。举例来说,HMB处置模块750可将释放区域1022、1024、1026、1028 组合成可用易失性存储器的连续逻辑信息块1030。易失性存储器118的剩余区域可经重 新组织以形成所使用易失性存储器的逻辑信息块1032。
图11为示出如由图1的存储装置执行的用于主机存储器缓冲器分配的处置的过程1100的流程图。举例来说,过程1100可在例如图1中所示出的存储装置102中进行。 流程图中的步骤中的每一个可使用如下文所描述的控制器(例如,控制器123)、通过控 制器的组件或模块或通过一些其它合适的构件来控制。
如由框1102所表示,控制器123可基于来自主机装置114的主机存储器分配而确定易失性存储器中的至少一部分为可重复使用区域。举例来说,参考图1、7、8和9, 控制器123可确定存储装置是否支持HMB分配。控制器123还可在确定存储装置支持 HMB分配时将对用于与控制器相关联的一个或多个内部模块的HMB分配的请求发送到 主机装置。控制器123还可从主机装置接收指示HMB分配是否成功的响应。控制器123 还可基于控制器的内部模块的对应优先级而根据总主机存储器分配来分配对应于用于 内部模块的主机存储器分配的易失性存储器中的可重复使用区域。控制器123还可获取 用于内部模块的易失性存储器中的所分配区域。在易失性存储器中的至少一部分可重复 使用的确定中,控制器123可基于主机存储器分配而计算在易失性存储器的至少一部分 中释放的存储器的第一量,并且可确定用于执行与控制器的内部模块相关联的存储装置 操作的存储器的第二量,使得控制器123可确定存储器的第一量大于存储器的第二量以 得出释放区域可重复使用的结论。
如由框1104所表示,控制器123可计算易失性存储器中的可重复使用区域的大小。如由框1106所表示,控制器123可基于可重复使用区域的所计算大小响应于主机存储 器分配而在易失性存储器的可重复使用区域中执行一个或多个存储装置操作。
如由框1108所表示,控制器123可将主机存储器分配释放回到主机装置114。控制器123还可确定释放主机存储器的对应于主机存储器分配的所分配区域。控制器123可 识别与控制器相关联的一个或多个内部模块中的哪些正使用主机存储器的所分配区域, 并且确定与主机存储器分配相关联的易失性存储器中的可重复使用区域是否由所识别 内部模块重复使用。在确定易失性存储器中的可重复使用区域被重复使用时,控制器123 还可从易失性存储器的可重复使用区域逐出一个或多个数据集。
图12为示出处置图1的存储装置102中的主机存储器缓冲器分配的控制器1202的实例的概念图1200。控制器1202耦合到存储装置中的存储器1204。控制器1202可包 含模块1206。举例来说,控制器1202可对应于控制器123,并且存储器1204可对应于 图1中的存储装置102的易失性存储器128。模块1206可对应于HMB处置模块750。 控制器1202还耦合到包含HMB 1212的主机1210。举例来说,主机1210可对应于主机 装置104,并且HMB 1212可对应于HMB 770。控制器1202可以软件、硬件或硬件与 软件的组合实施。在一个示例性实施例中,控制器用在一个或多个处理器上执行的若干 软件模块来实施,但如本领域的技术人员应了解,控制器可以不同方式实施。本领域的 技术人员将易于理解如何基于系统的特定设计参数而最佳实施控制器。
控制器1202可包含模块1206,其可提供用于基于与主机装置进行的主机存储器分配而确定易失性存储器中的至少一部分为可重复使用区域的构件。举例来说,模块1206 可执行1102处所描述的前述过程。在一个配置中,模块1206可提供用于计算易失性存 储器中的可重复使用区域的大小的构件,例如,如结合1104所描述。在一个配置中, 模块1206可提供用于基于可重复使用区域的所计算大小响应于主机存储器分配而在易 失性存储器的可重复使用区域中执行一个或多个存储装置操作的构件,例如,如1106 结合所描述。控制器1202还可提供用于将主机存储器的所分配区域释放回到主机装置 的构件,例如,如结合1108所描述。
因此,本公开中所描述的控制器通过在HMB分配期间内部易失性存储器的有效重复使用来改进存储装置的读取和/或写入性能。举例而言,控制器可加载额外数据集(例如,主机数据的逻辑块地址的信息块的逻辑映射)、逆存储地址表、重新定位信息(例 如,垃圾收集)等。以此方式,控制器可将对用于其内部模块中的任一个的HMB分配 的请求发送到主机装置以高效地处置。因此,SSD读取和写入性能的改进可在对控制器 逻辑和/或到内部存储器和主机装置的接口的最小改变的情况下实现。
提供本公开的各种方面以使本领域普通技术人员能够实践本公开。对于本领域技术 人员来说,贯穿本公开所呈现的示例性实施例的各种修改将是显而易见的,并且本文中所公开的概念可扩展到其它磁性存储装置。因此,权利要求不意图限于本公开的各种方面,而是要符合与权利要求的语言一致的全部范围。贯穿本公开所描述的示例性实施例 的各种组件的所有结构和功能等效物对于本领域的普通技术人员是已知的或稍后将是 已知的,其明确地以引用方式并入本文,并且意图由权利要求书涵盖。此外,本文中所 公开的任何内容均不意图专用于公众,无论权利要求书中是否明确地陈述此公开内容。 不得根据美国35U.S.C.§112(f)的规定或另一司法管辖区的类似法规或法律规则对任何 权利要求元素进行解释,除非使用短语“构件用于”明确说明所述元素,或在方法权利 要求的情况下,使用短语“步骤用于”来列举所述元素。

Claims (20)

1.一种存储装置,其包括:
存储器,其包含易失性存储器;以及
控制器,其配置成:
基于来自主机装置的主机存储器分配而确定所述易失性存储器中的至少一部分为可重复使用区域;
计算所述易失性存储器中的所述可重复使用区域的大小;以及
基于所述可重复使用区域的所计算大小响应于所述主机存储器分配而在所述易失性存储器的所述可重复使用区域中执行一个或多个存储装置操作。
2.根据权利要求1所述的存储装置,其中所述控制器进一步配置成确定所述存储装置是否支持主机存储器缓冲器(HMB)分配。
3.根据权利要求2所述的存储装置,其中所述控制器进一步配置成:
响应于确定所述存储装置支持所述HMB分配而将对用于与所述控制器相关联的一个或多个内部模块的所述HMB分配的请求发送到所述主机装置;以及
从所述主机装置接收指示所述HMB分配是否成功的响应。
4.根据权利要求1所述的存储装置,其中所述控制器进一步配置成:
基于所述控制器的内部模块的对应优先级而根据所述主机存储器分配为所述内部模块分配所述易失性存储器中的所述可重复使用区域;以及
获取用于所述内部模块的所述易失性存储器中的所分配可重复使用区域。
5.根据权利要求1所述的存储装置,其中所述易失性存储器中的所述至少一部分可重复使用的所述确定包括:
基于所述主机存储器分配而计算在所述易失性存储器的所述至少一部分中释放的存储器的第一量;
确定用于执行与所述控制器的内部模块相关联的所述一个或多个存储装置操作的存储器的第二量;以及
确定存储器的所述第一量大于存储器的所述第二量。
6.根据权利要求1所述的存储装置,其中所述一个或多个存储装置操作的所述执行包括在所述易失性存储器的所述可重复使用区域中加载与垃圾收集操作相关联的逆存储地址表信息或重新定位信息中的一个或多个。
7.根据权利要求1所述的存储装置,其中所述一个或多个存储装置操作的所述执行包括在所述易失性存储器的所述可重复使用区域中加载与所述一个或多个存储装置操作相关联的一个或多个映射表。
8.根据权利要求7所述的存储装置,其中所述一个或多个存储装置操作包括随机读取操作、依序读取操作、随机写入操作、依序写入操作或重新定位操作中的一个或多个。
9.根据权利要求1所述的存储装置,其中所述一个或多个存储装置操作的所述执行包括在所述易失性存储器的所述可重复使用区域中分配与所述一个或多个存储装置操作相关联的一个或多个主机缓冲器。
10.根据权利要求1所述的存储装置,其中所述控制器进一步配置成:
确定释放对应于所述主机存储器分配的主机存储器的所分配区域;
识别正使用所述主机存储器的所述所分配区域的与所述控制器相关联的一个或多个内部模块;
确定与所述主机存储器分配相关联的所述易失性存储器中的所述可重复使用区域是否由所识别的一个或多个内部模块重复使用;
在确定所述可重复使用区域被重复使用时,从所述易失性存储器的所述可重复使用区域逐出一个或多个数据集;以及
将所述主机存储器的所述所分配区域释放到所述主机装置。
11.一种存储装置,其包括:
存储器,其包含易失性存储器;以及
控制器,其配置成:
基于来自主机装置的主机存储器分配而确定所述易失性存储器中的至少一部分为可重复使用区域;
计算所述易失性存储器中的所述可重复使用区域的大小;
基于所述可重复使用区域的所计算大小响应于所述主机存储器分配而在所述易失性存储器的所述可重复使用区域中执行一个或多个存储装置操作;以及
将所述主机存储器分配释放到所述主机装置。
12.根据权利要求11所述的存储装置,其中所述控制器进一步配置成确定所述存储装置是否支持主机存储器缓冲器(HMB)分配。
13.根据权利要求12所述的存储装置,其中所述控制器进一步配置成:
响应于确定所述存储装置支持所述HMB分配而将对用于与所述控制器相关联的一个或多个内部模块的所述HMB分配的请求发送到所述主机装置;以及
从所述主机装置接收指示所述HMB分配是否成功的响应。
14.根据权利要求11所述的存储装置,其中所述控制器进一步配置成:
基于所述控制器的内部模块的对应优先级而根据所述主机存储器分配为所述内部模块分配所述易失性存储器中的所述可重复使用区域;以及
获取用于所述内部模块的所述易失性存储器中的所分配可重复使用区域。
15.根据权利要求11所述的存储装置,其中所述控制器进一步配置成:
确定释放对应于所述主机存储器分配的主机存储器的所分配区域;
识别正使用所述主机存储器的所述所分配区域的与所述控制器相关联的一个或多个内部模块;
确定与所述主机存储器分配相关联的所述易失性存储器中的所述可重复使用区域是否由所识别的一个或多个内部模块重复使用;以及
在确定所述可重复使用区域被重复使用时,从所述易失性存储器的所述可重复使用区域逐出一个或多个数据集。
16.根据权利要求11所述的存储装置,其中所述一个或多个存储装置操作的所述执行包括在所述易失性存储器的所述可重复使用区域中加载与所述一个或多个存储装置操作相关联的一个或多个映射表,并且其中所述一个或多个存储装置操作包括随机读取操作、依序读取操作、随机写入操作、依序写入操作或重新定位操作中的一个或多个。
17.一种存储装置,其包括:
存储器,其包含易失性存储器;以及
控制器,其配置成:
确定所述存储装置是否支持主机存储器缓冲器(HMB)分配;
响应于确定所述存储装置支持所述HMB分配而将对用于与所述控制器相关联的一个或多个内部模块的所述HMB分配的请求发送到主机装置;
从所述主机装置接收指示所述HMB分配是否成功的响应;
在与所述主机装置进行的所述HMB分配成功时,确定所述易失性存储器中的至少一部分为可重复使用区域;
计算所述易失性存储器中的所述可重复使用区域的大小;
基于所述可重复使用区域的所计算大小响应于所述HMB分配而在所述易失性存储器的所述可重复使用区域中执行一个或多个存储装置操作;以及
将所述HMB分配释放回到所述主机装置。
18.根据权利要求17所述的存储装置,其中所述控制器进一步配置成:
基于所述控制器的内部模块的对应优先级而根据所述HMB分配为所述内部模块分配所述易失性存储器中的所述可重复使用区域;以及
获取用于所述内部模块的所述易失性存储器中的所分配可重复使用区域。
19.根据权利要求17所述的存储装置,其中所述易失性存储器中的所述至少一部分可重复使用的所述确定包括:
基于所述HMB分配而计算在所述易失性存储器的所述至少一部分中释放的存储器的第一量;
确定用于执行与所述控制器的内部模块相关联的所述一个或多个存储装置操作的存储器的第二量;以及
确定存储器的所述第一量大于存储器的所述第二量。
20.根据权利要求17所述的存储装置,其中所述控制器进一步配置成:
确定释放对应于所述HMB分配的主机存储器的所分配区域;
识别正使用所述主机存储器的所述所分配区域的与所述控制器相关联的一个或多个内部模块;
确定与所述HMB分配相关联的所述易失性存储器中的所述可重复使用区域是否由所识别的一个或多个内部模块重复使用;以及
在确定所述可重复使用区域被重复使用时,从所述易失性存储器的所述可重复使用区域逐出一个或多个数据集。
CN202210086557.6A 2021-04-05 2022-01-25 主机存储器缓冲器分配管理 Pending CN115203086A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/222,565 2021-04-05
US17/222,565 US11403011B1 (en) 2021-04-05 2021-04-05 Host memory buffer allocation management

Publications (1)

Publication Number Publication Date
CN115203086A true CN115203086A (zh) 2022-10-18

Family

ID=82652492

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210086557.6A Pending CN115203086A (zh) 2021-04-05 2022-01-25 主机存储器缓冲器分配管理

Country Status (3)

Country Link
US (1) US11403011B1 (zh)
CN (1) CN115203086A (zh)
DE (1) DE102022101607A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11531473B1 (en) * 2021-09-10 2022-12-20 Western Digital Technologies, Inc. Selective HMB backup in NVM for low power mode
US11977479B2 (en) * 2022-01-11 2024-05-07 Western Digital Technologies, Inc. Log file system (LFS) invalidation command and operational mode

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720597B2 (en) 2014-01-24 2017-08-01 Nec Corporation Systems and methods for swapping pinned memory buffers
US9880783B2 (en) 2015-10-28 2018-01-30 Sandisk Technologies Llc System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller
US10528463B2 (en) * 2016-09-28 2020-01-07 Intel Corporation Technologies for combining logical-to-physical address table updates in a single write operation
KR102384759B1 (ko) 2017-11-13 2022-04-11 삼성전자주식회사 호스트 메모리 버퍼를 사용하기 위해 호스트 장치와 속성 정보를 공유하는 스토리지 장치 및 그것을 포함하는 전자 장치
US10613778B2 (en) 2018-03-21 2020-04-07 Western Digital Technologies, Inc. Dynamic host memory allocation to a memory controller
US11074007B2 (en) * 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
KR20200046264A (ko) 2018-10-24 2020-05-07 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US11403011B1 (en) 2022-08-02
DE102022101607A1 (de) 2022-10-06

Similar Documents

Publication Publication Date Title
US20140281173A1 (en) Nonvolatile memory system, system including the same, and method of adaptively adjusting user storage region in the same
US10067873B2 (en) Data storage device and operating method thereof
US9396108B2 (en) Data storage device capable of efficiently using a working memory device
US11150811B2 (en) Data storage apparatus performing flush write operation, operating method thereof, and data processing system including the same
US10283196B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
US11513723B2 (en) Read handling in zoned namespace devices
US10503433B2 (en) Memory management method, memory control circuit unit and memory storage device
KR20220031490A (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
US10747462B2 (en) Data processing system and operating method thereof
CN115203086A (zh) 主机存储器缓冲器分配管理
US10929289B2 (en) Controller, memory system and operating method thereof
US20200310981A1 (en) Controller, memory system and operating method thereof
US10466938B2 (en) Non-volatile memory system using a plurality of mapping units and operating method thereof
CN115203085A (zh) 用于存储装置的超小区域支持
US11892928B2 (en) Delayed thermal throttling and associated data routing techniques
US11281405B2 (en) Controlled die asymmetry during MLC operations for optimal system pipeline
US11604735B1 (en) Host memory buffer (HMB) random cache access
US11675528B2 (en) Switch based BGA extension
US11507303B2 (en) User controlled data-in for lower and middle page in MLC-fine QLC memories
US11561713B2 (en) Simplified high capacity die and block management
CN106935265B (zh) 非易失性存储器装置以及包括该非易失性存储器装置的数据存储装置
US10515693B1 (en) Data storage apparatus and operating method thereof
US20240069773A1 (en) Open block relocation
US11537514B2 (en) Data storage device and operating method thereof
US20220308769A1 (en) Persistent switch-based storage controller

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