CN114201417A - 存储装置的动态缓冲器高速缓存 - Google Patents
存储装置的动态缓冲器高速缓存 Download PDFInfo
- Publication number
- CN114201417A CN114201417A CN202111093459.7A CN202111093459A CN114201417A CN 114201417 A CN114201417 A CN 114201417A CN 202111093459 A CN202111093459 A CN 202111093459A CN 114201417 A CN114201417 A CN 114201417A
- Authority
- CN
- China
- Prior art keywords
- read
- buffer
- buffers
- controller
- count
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/224—Disk storage
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文描述的各种实施方案涉及用于存储装置的动态缓冲器高速缓存的系统和方法,其包含由所述存储装置的控制器从主机接收指示存取存储在所述存储装置中的数据的频率的信息,以及响应于接收到所述信息,由所述控制器确定为下一个读取命令分配所述存储装置的读取缓冲器的顺序。虚拟字线WL的NAND读取计数也用于高速缓存更频繁存取的WL,从而主动减少读取干扰,并因此增加NAND可靠性和NAND寿命。
Description
技术领域
本公开大体上涉及用于在数据存储装置中实施缓冲器的系统、方法和非暂时性处理器可读媒体。
背景技术
在非易失性存储器(NVM)装置的常规读取干扰算法中,为每一存储器页维持读取干扰计数器。超过读取阈值(例如,64K读取)的任何页成为对页中数据完整性的周期性读取干扰检查的候选页。这些检查涉及读取数据,这不仅会使裸片和通道处于繁忙状态(因此降低随机读取性能),而且会导致更多的读取干扰效应。例如,NVM中超过完整性检查的特定阈值的任何存储器页都成为读取干扰刷新的候选页,并且可将整个超级块移动到新的块,从而引起写入放大。在读取密集型工作负载中的过度写入放大最终会减少NVM的寿命。此方法不考虑使用在读取操作中使用存储器缓冲器来减少读取干扰。
发明内容
在一些布置中,一种方法包含:由存储装置的控制器从主机接收指示存取存储在存储装置中的数据的频率的信息;以及响应于接收到所述信息,由所述控制器确定为下一个读取命令分配所述存储装置的读取缓冲器的顺序。
在一些布置中,一种方法至少部分地包含使用由所述存储装置的所述控制器计算的所述读取缓冲器的总读取计数器来确定所述存储装置的读取缓冲器经布置用于分配给下一个读取命令的顺序。
在一些布置中,一种用于计算总读取计数的方法包含计算所述读取缓冲器的命中计数、所述NVM中的所述存储器页的实际读取计数和由所述存储装置的所述控制器指派给频繁读取的数据(如由所述主机通知)的高读取计数的和,以确定为下一个读取命令分配所述存储装置的读取缓冲器的顺序。
在一些布置中,一种非暂时性计算机可读媒体,其包括计算机可读指令,使得当执行所述指令时致使处理器从主机接收指示存取存储在所述存储装置中的数据的频率的信息,以及响应于接收到所述信息,确定为下一个读取命令分配所述存储装置的读取缓冲器的顺序。
附图说明
图1展示根据一些布置的实例存储装置的框图。
图2是根据一些实施方案的支持低时延操作的架构的框图。
图3是说明根据一些布置的使用中列表和空闲列表的框图。
图4是说明根据NVMe协议的实例存取频率值的表。
图5是说明根据一些布置的空闲列表的框图。
图6是说明根据各种布置的用于执行读取命令的实例方法的流程图。
图7是说明根据各种布置的用于执行读取命令(读取缓冲器上没有读取命中)的实例方法的流程图。
图8是说明根据各种布置的用于执行读取命令(读取缓冲器上没有读取命中)的实例方法的流程图。
图9A和9B是根据各种布置的用于维持读取缓冲器的总读取计数的实例读取缓冲器表。
图10是说明根据各种布置的用于管理使用中列表和空闲列表中的读取缓冲器的实例方法的框图。
图11是说明根据各种布置的用于当重叠写入或解除分配命令使缓冲器标识符(ID)无效时管理使用中列表和空闲列表中的读取缓冲器的实例方法的框图。
图12是说明根据各种布置为使用中列表中的每一缓冲器维持的实例等待读取命令ID列表的框图。
图13是说明根据各种布置的用于管理读取缓冲器的实例方法的流程图。
具体实施方式
在用于NVM装置的常规读取干扰算法中,为每一虚拟字线(WL)组维持读取干扰计数器。超过读取阈值(例如,64K读取)的任何WL组成为扫描读取的候选组。扫描读取不仅会使裸片和通道处于繁忙状态(因此降低随机读取性能),而且会导致更多的读取干扰和触发移位读取重试,且最终导致Vth恢复。
例如,在每秒600K的输入/输出操作(IOPS)随机读取目标性能下,可每107ms触发一次扫描读取。如果虚拟字线(WL)超过15次扫描读取的阈值,那么可触发读取干扰,并且将整个超级块移动到NVM装置的新块,从而导致写入放大。读取干扰刷新或Vth恢复可另外导致一组输入/输出确定性(IOD)装置经历到非确定性窗口的自主转变。
常规读取只检查循序读取的预取。这增加循序读取的处理量,而不是随机读取或本地化读取的处理量。另外,读取缓冲器通常在读取完成后立即解除分配。换句话说,如果当前读取缓冲器不考虑NAND块中的读取干扰WL来高速缓存热数据,那么对于使用当前读取缓冲器设计的集中工作负载,NAND可靠性并未改进。用来避免读取干扰错误的当前机制是使用扫描读取和读取干扰回收。读取干扰回收通常是指用于避免读取干扰错误导致的数据损坏的任何预期性预防过程。在此上下文中,读取干扰回收是指当虚拟WL中的扫描读取的数目达到阈值时,将数据移动到新的超级块。这种使用扫描读取的方法会因为使裸片和通道处于繁忙状态而降低随机读取性能。在那些WL上的进一步读取和扫描读取引起读取干扰回收,从而增加驱动器的写入放大。
常规读取缓冲器不使用由主机提供的存取频率信息来高速缓存热数据,且因此不利用元数据来改进NVM存储器的管理和增加读取处理量。
因此,本文描述的读取缓冲器设计利用NVM中的存储器页的读取计数器和主机提供的存取频率信息来高速缓存热数据。这不仅减少NVM中的读取干扰从而增加NVM的寿命,而且增加集中随机读取工作负载的处理量。
本文公开的布置涉及针对存储器存储读取缓冲器的系统、方法和非暂时性处理器可读媒体,所述读取缓冲器主动地增加集中工作负载的处理量并减少读取干扰扫描读取和超级块回收,因此通过减少后台活动增加NVM存储器(例如,NAND装置)的寿命。在一些实例中,避免提前释放落入具有高读取计数的虚拟WL组中的读取缓冲器。本文公开的读取缓冲器可以分散-集中的方式管理,组合最频繁使用和最近使用的缓冲器策略进行高速缓存,从而通过有效地释放读取缓冲器来增加非易失性存储器存储装置的读取处理量和可靠性。
在一些布置中,读取缓冲器在完成读取命令后不立即释放,而是以适当的顺序在空闲列表中排队,使得在为新的非重叠逻辑地址分配读取缓冲器之前,这些读取缓冲器可用于高速缓存以改进频繁读取数据的时延并避免长尾读取时延,特别是对于随机和本地化读取命令。实际上,某些数据/元数据被非常频繁地读取。在主机缓冲器高速缓存(如果有)未命中后,通常直接从NAND读取此数据,这会导致读取干扰。在没有任何机制来避免对已被干扰的WL的进一步读取的情况下,进一步读取和扫描此类WL导致读取电平移位,且因此即使在确定性模式中也会因触发移位读取而降低读取确定性。频繁的移位读取重试最终触发Vth错误恢复,从而导致在IOD驱动器中自动转变到非确定性模式。
为了帮助说明本实施方案,图1展示根据一些实施方案的包含耦合到主机101的存储装置100的系统的框图。在一些实例中,主机101可为由用户操作的用户装置。主机101可包含操作系统(OS),其配置为提供文件系统和使用所述文件系统的应用程序。文件系统通过合适的有线或无线通信链路或网络与存储装置100(例如,存储装置100的控制器110)通信,以管理在存储装置100中的数据存储。
就此来说,主机101的文件系统使用适当的主机接口110向存储装置100发送数据并从存储装置100接收数据。主机接口110允许主机101的软件(例如,文件系统)与存储装置100(例如,控制器110)通信。虽然主机接口110概念性地展示为主机101与存储装置100之间的块,但主机接口110可包含一或多个控制器、一或多个命名空间、端口、传输机制及其连接性。为了发送和接收数据,主机101的软件或文件系统使用在主机接口110上运行的存储数据传送协议与存储装置100通信。协议的实例包含但不限于串行附接小型计算机系统接口(SAS)、串行AT附接(SATA)和高速非易失性存储器(NVMe)协议。主机接口110包含在主机101、存储装置100(例如,控制器110),或者经由一或多个合适网络可操作地耦合到主机101和/或存储装置100的另一装置上实施的硬件(例如,控制器)。主机接口110和在其上运行的存储协议还包含在硬件上执行的软件和/或固件。
在一些实例中,存储装置100定位在数据中心(为了简洁起见而未展示)中。数据中心可包含一或多个平台,每一平台支持一或多个存储装置(例如但不限于存储装置100)。在一些实施方案中,平台内的存储装置连接到架顶式(TOR)交换机,并且可经由TOR交换机或另一适当平台内通信机制彼此通信。在一些实施方案中,至少一个路由器可经由合适的网络结构促进不同平台、机架或机柜中的存储装置之间的通信。存储装置100的实例包含非易失性装置,例如但不限于固态驱动器(SSD)、非易失性双列直插存储器模块(NVDIMM)、通用闪存(UFS)、安全数字(SD)装置等。
存储装置100至少包含控制器110及非易失性存储器(NVM)140。为了简洁起见,未展示存储装置100的其它组件。NVM 140包含NAND闪存装置。每一NAND闪存装置包含一或多个NAND闪存裸片142a到142d、144a到144d、146a到146d和148a到148d,其是能够在没有电力的情况下保持数据的NVM。因此,NAND闪存装置是指NVM 140内的多个NAND闪存装置或裸片。因此,NVM 140可被称为裸片的存储器阵列,如展示。每一裸片142a到142d、144a到144d、146a到146d和148a到148d具有一或多个平面。每一平面具有多个块,且每一块具有多个页。
裸片142a到142d、144a到144d、146a到146d和148a到148d可布置在连接到控制器120的一或多个存储器通信通道中。例如,可将裸片142a到d配置在一个存储器通道上,将裸片144a到d配置在另一存储器通道上,以此类推。虽然16个裸片142a到142d、144a到144d、146a到146d和148a到148d如图1中展示,但NVM 140可包含布置在与控制器120通信的一或多个通道中的任何适当数目的NVM裸片。
虽然裸片142a到142d、144a到144d、146a到146d和148a到148d展示为NVM 140的实例实施方案,但用于实施NVM 140的NVM技术的其它实例包含但不限于磁随机存取存储器(MRAM)、相变存储器(PCM)、铁电RAM(FeRAM)、电阻式RAM(ReRAM)等。本文描述的缓冲器机制可同样地在使用此类存储器技术和其它合适存储器技术的存储器系统上实施。
控制器110的实例包含但不限于SSD控制器(例如,客户端SSD控制器、数据中心SSD控制器、企业SSD控制器等)、UFS控制器或SD控制器等。
控制器110可组合裸片142a到142d、144a到144d、146a到146d和148a到148d中的原始数据存储装置,使得所述裸片142a到142d、144a到144d、146a到146d和148a到148d用作单个存储装置。控制器110可包含处理器、微控制器、中央处理单元(CPU)、高速缓存130、缓冲器(例如,缓冲器152、154和156)、错误校正系统、数据加密系统、闪存转换层(FTL)132、映射表134、闪存接口136等。此类功能可在硬件、软件和固件或其任何组合中实施。在一些布置中,控制器110的软件/固件可存储在NVM 140中或任何其它合适计算机可读存储媒体中。
控制器110包括用于执行在本文描述的功能以及其它功能的适当处理和存储器能力。控制器110管理NVM 140的各种特征,包含但不限于I/O处置、读取、写入/编程、擦除、监测、日志记录、错误处置、垃圾收集、磨损均衡、逻辑到物理地址映射、数据保护(加密/解密)等。因此,控制器110为裸片142a到142d、144a到144d、146a到146d和148a到148d提供可见性。
高速缓存130、读取缓冲器152和写入缓冲器156中的每一者是控制器110的本地存储器。在一些实例中,高速缓存130、读取缓冲器152和写入缓冲器156中的每一者是一或多个易失性存储器。在一些实例中,高速缓存130、读取缓冲器152和写入缓冲器156中的每一者是非易失性永久存储装置。高速缓存130、读取缓冲器152和写入缓冲器156中的每一者的实例包含但不限于RAM、DRAM、静态RAM(SRAM)、MRAM、PCM等。
读取缓冲器152存储响应于来自主机101的读取命令从NVM 140读取的数据。控制器120可经由主机接口110将数据从读取缓冲器152传送到主机101。在一些实例中,每一逻辑地址范围的数据存储在读取缓冲器152的一者中。在数据被传送到主机101之后,每一读取缓冲器152可存在一段时间,随后被用于高速缓存另一逻辑地址范围的数据。在所述时间段期间,响应于接收到针对相同逻辑地址范围的另一读取命令,发生了对读取缓冲器的命中,并且控制器120可将相同的数据从所述读取缓冲器传送到主机101,而不必从NVM 140读取。本文公开的布置涉及动态管理读取缓冲器152,如本文进一步详细公开。
读取缓冲器表154由缓冲器管理器125用于管理读取缓冲器152的动态分配,如本文进一步详细描述的。读取缓冲器表154可包含用于读取缓冲器的各种类型的信息,包含但不限于逻辑地址的范围、读取缓冲器标识符(ID)、列表或缓冲器类型、总读取计数、时间戳等。
写入缓冲器156存储从主机101(经由主机接口110)接收的数据。控制器120可将存储在写入缓冲器156中的数据写入NVM 140(例如,裸片142a到142d、144a到144d、146a到146d和148a到148d)。
缓冲器管理器125包含经配置用于管理高速缓存130、读取缓冲器152、读取缓冲器表154和写入缓冲器156的适当硬件(例如,一或多个CPU)、软件和/或固件。在一些实例中,缓冲器管理器125使用专用硬件(例如,专用处理器、CPU和存储器)来实施。
映射表134是地址映射表(例如,逻辑到物理(L2P)映射表)。FTL 132(例如,FTL处理器、FTL接口模块等)可处理映射表134。映射表134是保持逻辑地址与物理地址之间的对应关系的记录的映射表。例如,映射表134可将关于逻辑块/地址的(从主机101接收的)读取和写入命令转换为引用物理块/地址的低级命令。在一些实例中,从主机101接收的读取或写入命令包含逻辑地址,例如但不限于逻辑块地址(LBA)。LBA是识别逻辑块的逻辑地址,所述逻辑块可为区域或扇区。在某些实例中,逻辑地址范围是指多个LBA的范围或逻辑集群地址(LCA)。映射表134存储每一逻辑地址与存储逻辑地址的数据的一或多个物理地址(例如,存储器裸片的页)之间的映射。
FTL 132可基于映射表134执行L2P操作。例如,FTL 132可将逻辑地址转换为物理地址,从而解析对应于逻辑地址的物理地址。响应于从主机101接收写入或读取命令(其中包含LCA),FTL 132可通过使用映射表132查找对应于LCA的物理地址(例如,媒体群集地址(MCA)),以便写入到物理地址或从物理地址读取。映射表134可存储在NVM 140、高速缓存130或控制器120的适当存储器中的一或多者中。
闪存接口136(例如,闪存接口层(FIL))在命令队列中处理来自FTL 132的输入闪存命令,以最佳方式为命令的目的地物理存储器裸片调度那些命令。
在一些实例中,控制器120(例如,主机接口110)从主机101接收读取命令并将读取命令转发到高速缓存130。高速缓存130将逻辑地址范围发送到缓冲器管理器125。缓冲器管理器125确定逻辑地址范围是否与对应于读取缓冲器152或写入缓冲器156中的一者的逻辑地址范围重叠(命中缓冲器)。响应于确定是否已发生对读取缓冲器152或写入缓冲器156中的一者的命中,缓冲器管理器125将命中结果报告回到高速缓存130。如本文所描述,缓冲器管理器125管理空闲列表和使用中列表。
对于对一个读取缓冲器152的命中,将数据从所述读取缓冲器传送到主机101,并且完成读取命令。响应于确定没有发生对读取缓冲器152和写入缓冲器156的命中,FTL 132确定对应于来自映射表134的逻辑地址范围的物理地址,并且经由闪存接口136将读取请求提交给NVM 140。闪存接口136从NVM 140的物理地址读取数据,并将数据、读取计数和扫描读取计数发送到高速缓存130。高速缓存130将数据传送到主机101(例如,传送到主机101的缓冲器),确定并更新总读取计数。
虽然本文将NVM 140作为实例来呈现,但是所公开的方案可在通过接口连接到主机101的任何存储系统或装置上实施,其中此系统临时或永久地存储用于主机101的数据以供以后检索。
图2是根据一些实施方案的支持低时延操作的架构200的框图。参考图1和2,架构200可从例如但不限于NVM 140的存储装置的非易失性存储器配置。如图2中展示,架构200包含跨8个通道(CH0到CH7)布置的32个非易失性存储器裸片的阵列,其中4个NVM裸片耦合到每一通道。换句话说,架构200包含NAND闪存装置阵列。每一NVM裸片具有一或多个平面。任何适当数目的裸片可操作地耦合到任何适当数目的通道。架构200中的每一非易失性存储器裸片可为非易失性存储器裸片142a到142d、144a到144d、146a到146d和148a到148d中的一者。通道CH0到CH7可为物理通道或逻辑通道。
架构200包含通过在相同通道和相邻通道上从每一NVM裸片中选择所有物理块而形成的超级块(由相同阴影标示),而不是通过跨所有8个通道从每一NVM裸片中选择物理块而形成的超级块。假设每一区域经由不与其它区域共享的通道存取,那么这些超级块中的每一者在NVM 140内形成不受到NVM 140的其它区域的通道I/O活动影响的隔离区域(例如,与其它区域隔离的区域)。每一隔离区可称为NVM组。因此,在架构200中,隔离区域202包含两个通道CH0和CH1上的非易失性存储器裸片的物理块。隔离区域204包含两个通道CH2和CH3上的非易失性存储器裸片的物理块。隔离区域206包含两个通道CH4和CH5上的非易失性存储器裸片的物理块。隔离区域208包含两个通道CH6和CH7上的非易失性存储器裸片的物理块。
通过仅使用来自在固定数目的单独通道中的NVM裸片的物理块来配置超级块以形成隔离区域,例如图2中展示,可最小化或完全避免NVM裸片和通道控制器处的I/O操作冲突,从而允许存储装置的更低的时延、更大的可预测性以及更一致的I/O性能。如展示,每一隔离区域202到208包含耦合到多个(例如,两个)通道的NVM裸片,因此利用每一隔离区的多个通道控制器来处置主机I/O操作以改进每一隔离区域的处理量。或者,隔离区域可包含耦合到一个通道的NVM裸片。因此,架构200的裸片可经选择和布置以形成隔离区域202到208,但原则上,可使用任何数目的通道来形成隔离区域,其中单独隔离区域不共享通道。
就此来说,IOD驱动器是指实施如本文描述的IOD特征的SSD。每一NVM组在逻辑上经管理为独立于IOD驱动器的其它NVM组的逻辑。即,IOD装置的每一物理请求被映射到IOD装置的逻辑请求。IOD装置可独立地管理对每一NVM组执行的逻辑,并向每一NVM组分配适当的存储空间和带宽。独立于其它NVM组,从NVM组保证关于所述NVM组的I/O操作的一定带宽水平,因此当主机知道所保证的带宽时,允许时延对主机是可预测的。因此,主机101可在期望所保证带宽的情况下使用IOD驱动器执行存储和计算功能,归因于IOD驱动器的特性,可始终满足所保证的带宽。IOD装置的实例架构可以在2017年11月1日申请的标题为“支持低时延操作的SSD架构(SSD ARCHITECTURE SUPPORTING LOW LATENCY OPERATION)”的第2019/0042150号美国公开专利案中找到,所述专利案的全部内容通过引用的方式并入本文中。
在一些布置中,除了NAND读取计数和读取缓冲器(高速缓存)命中计数之外,读取缓冲器152还可使用主机接口110的读取命令中的“存取频率”字段(例如,NVMe传输层)来确定读取缓冲器152的寿命以增加命中率。命中率是指传入的读取命令命中现有读取缓冲器的比率。在一些布置中,主机101可通知数据是否被频繁读取,并且读取缓冲器高速缓存可基于存储器资源可用性来缩放。
在实施本文公开的读取缓冲器系统的IOD驱动器中,可通过减少到非确定性窗口(NDWIN)的自主转变来改进读取确定性。特定来说,最后释放被确定为频繁地读取的数据。
在一个实例中,使用具有512吉字节(Gb)的NAND裸片大小的NVM的1太字节(TB)驱动器包含16个并行裸片。假定4个WL在一个WL组中,那么一个虚拟WL组的总容量为:
虚拟大小WL*4=16KB*3(LMU)*2(平面)*4=384KB
在WL组中的所有数据都是热数据的情形中,6兆字节(MB)的读取缓冲器大小可减少读取干扰扫描读取并避免至少16个虚拟WL组(例如,6MB/384KB)的回收,即在最坏情形中每裸片1个虚拟WL组。
但是,在一些情形中(例如,用以增加读取处理量的SSD的FTL实施方案),在中间页(M)之前,至少循序写入(编程)用于存储体(本文中,跨所有通道的裸片称为存储体)的所有下部页(L),并且在循序写入中间页之后,循序写入存储体的所有上部页(U)。因此,虚拟WL中只有一个双平面页(例如,32千字节(KB))是热数据。因此,具有6MB大小的读取缓冲器可减少192个虚拟WL(例如,6MB/32KB)的扫描读取和回收。此读取缓冲器可覆盖每裸片192/16=12个虚拟WL。
从性能角度来看,在有效通道速度为640MB/s的情况下,在每通道400MB/s的速度下跨2个裸片的多平面读取足以保持通道繁忙。因此,3MB(例如,16KB页大小*2个平面*16个通道*3)读取缓冲器足以使16通道配置中的所有通道的通道带宽饱和。
因此,如果为16通道驱动器中的读取缓冲器分配总共6MB,那么运行时间读取缓冲器分配可在较高队列深度处被限制在3MB,而不会有任何读取性能损失,使得在任何时间点,3MB的频繁读取数据缓冲器可单独专用于用作读取高速缓存,如本文描述。在读取缓冲器的总大小为36MB的情况下,可在任何时间点高速缓存总共1152个(192*6)读取干扰WL组。
如本文描述,通过基于要高速缓存的WL组的数目确定读取缓冲器大小,可在用于读取缓冲器152的存储器与尾部读取时延/写入放大之间实现折衷。
在一些布置中,读取缓冲器大小可基于要高速缓存的WL组的数目来定义。特定来说,读取缓冲器大小可根据可用存储器和要高速缓存的读取干扰WL组的数目来定义。
一些布置针对分散集中缓冲器系统,其中维持使用中列表和空闲列表。图3是说明根据一些布置的使用中列表300和空闲列表320的框图。参考图3,读取缓冲器152可被组织成使用中列表300和空闲列表320。使用中列表300包含所有分配的和使用中的读取缓冲器(当前用于将数据从那些使用中缓冲器传送到主机101)。空闲列表320含有可响应于从主机101接收到新的读取命令而被占用的所有读取缓冲器。使用中列表300是读取缓冲器的列表,每一读取缓冲器由对应的缓冲器ID识别。如展示,使用中列表300包含缓冲器ID 310a、缓冲器ID 310b、…、缓冲器ID 310n。每一缓冲器ID链接到下一个缓冲器ID。例如,第一缓冲器ID(缓冲器ID 310a)链接到第二缓冲器ID 310b,以此类推。最后一个缓冲器ID 310n链接到NULL,指示缓冲器ID 310n是使用中列表300中的最后一个缓冲器ID。
类似地,使用中列表320是读取缓冲器的列表,每一读取缓冲器由对应的缓冲器ID识别。如展示,空闲列表320包含缓冲器ID 330a、缓冲器ID 330b、…、缓冲器ID 330n。每一缓冲器ID链接到下一个缓冲器ID。例如,第一缓冲器ID(缓冲器ID 330a)链接到第二缓冲器ID 330b,以此类推。最后一个缓冲器ID 330n链接到NULL,指示缓冲器ID 330n是空闲列表320中的最后一个缓冲器ID。从空闲列表320的头部(例如,缓冲器ID 330a)分配读取缓冲器。例如,响应于接收到针对非重叠逻辑地址范围的新读取命令,控制器120(例如,缓冲器管理器125)分配作为空闲列表320的当前头部的读取缓冲器,并将从NVM装置读取的数据存储在读取缓冲器中。非重叠逻辑地址范围是指与对应于空闲列表320和使用中列表300中的读取缓冲器的范围不重叠(不同)的范围。因此,非重叠逻辑地址范围不会导致对现有缓冲器的命中。
在一些布置中,使用经由主机接口110(例如,NVMe规范)的读取命令的字段(例如,“存取频率”字段)和总读取计数将频繁读取的数据动态地高速缓存在读取缓冲器152中。这确保仅在不太频繁使用和未分配的数据缓冲器被消耗之后,才为新的非重叠读取分配更频繁读取的数据缓冲器。
主机101可(例如)通过向控制器120发送信息来指示对任何给定范逻辑地址范围的存取频率。此信息包含指示对逻辑地址范围的存取频率的存取频率值。图4是说明根据NVMe标准协议的实例存取频率值的表400。存取频率值可由主机接口110定义。在读取命令中的“存取频率”字段中提供存取频率值。每一存取频率值映射到指示存取频率的对应定义(例如,读取和/或写入逻辑地址范围的频率,另外称为预期读取频率和/或预期写入频率)。
响应于从主机101接收到针对逻辑地址范围的存取频率值0(“0000”),控制器120(例如,缓冲器管理器125)确定主机101没有提供针对所述逻辑地址范围的频率信息。响应于从主机101接收到针对逻辑地址范围的存取频率值1(“0001”),控制器120(例如,缓冲器管理器125)确定针对所述逻辑地址范围预期典型(中等)的读取和写入次数。
响应于从主机101接收到针对逻辑地址范围的存取频率值2(“0010”),控制器120(例如,缓冲器管理器125)确定针对所述逻辑地址范围预期较低的读取和写入次数(例如,不频繁写入和不频繁读取)。响应于从主机101接收到针对逻辑地址范围的存取频率值3(“0011”),控制器120(例如,缓冲器管理器125)确定针对所述逻辑地址范围预期较低的写入次数(例如,不频繁写入)和较高的读取次数(例如,频繁读取)。
响应于从主机101接收到针对逻辑地址范围的存取频率值4(“0100”),控制器120(例如,缓冲器管理器125)确定针对所述逻辑地址范围预期存在较低的读取次数(例如,不频繁读取)和较高的写入次数(例如,频繁写入)。响应于从主机101接收到针对逻辑地址范围的存取频率值5(“0101”),控制器120(例如,缓冲器管理器125)确定针对所述逻辑地址范围预期较高的读取和写入次数(例如,频繁读取和写入)。
响应于从主机101接收到针对逻辑地址范围的存取频率值6(“0110”),控制器120(例如,缓冲器管理器125)确定对应于所述逻辑地址范围的命令是一次性读取命令(例如,命令由主机101归因于病毒扫描、备份、文件复制、归档等而发出)。响应于从主机101接收到针对逻辑地址范围的存取频率值7(“0111”),控制器120(例如,缓冲器管理器125)确定对应于所述逻辑地址范围的命令是推测性读取命令(例如,命令由主机101针对预取操作而发出)。响应于从主机101接收到针对逻辑地址范围的存取频率值8(“1000”),控制器120(例如,缓冲器管理器125)确定所述逻辑范围将在不久的将来被覆写。
在一些实例中,响应于确定针对所述逻辑地址范围的读取缓冲器具有对应于频繁读取和不频繁写入的存取频率值(例如,存取频率值3),当第一次发出读取缓冲器(由缓冲器ID识别)时,缓冲器管理器125将高读取计数指派给读取缓冲器。在一些实例中,高读取计数是64K的读取计数,其从读取干扰的角度来看被视为高读取计数。读取缓冲器根据总读取计数链接到空闲列表320。
另一方面,响应于确定针对所述逻辑地址范围的读取缓冲器(1)具有对应于不频繁读取的存取频率值(例如,存取频率值2、4、6或7);(2)具有对应于频繁写入(频繁更新)的存取频率值(例如,存取频率值5或8);或(3)通过写入或解除分配命令而无效,缓冲器管理器125将对应于逻辑地址范围的读取缓冲器放置在空闲列表320的头部(例如,缓冲器ID330a)。在此方面,对应于所述逻辑地址范围的数据被高速缓存较短时间量。空闲列表320中的剩余读取缓冲器以总读取计数的升序链接,其中总读取计数最少的缓冲器(具有缓冲器ID 330b)紧接在缓冲器ID 330a之后,而总读取计数最多的缓冲器(具有缓冲器ID 330n)紧接在NULL之前。
此机制允许仅在空闲列表320中消耗较不频繁读取、频繁写入和/或未分配的数据缓冲器之后,才由新的非重叠读取来分配更频繁读取的数据缓冲器。
在一些布置中,控制器120可保存对应于读取命令的时间戳。在一个实例中,控制器120从主机101一起接收时间戳与读取命令。在此情况下,时间戳指示主机101发出读取命令的时间(例如,读取命令的产生时间戳)。在另一实例中,控制器120响应于从主机101接收到读取取命令,确定对应于读取命令的时间戳。在此情况下,时间戳指示控制器120接收到读取命令的时间。在一些实例中,控制器120可将对应于每一接收到的读取命令的时间戳存储在读取缓冲器表中。
在一些布置中,一旦在预定数目的读取缓冲器分配中,就分配最旧的读取缓冲器而不是空闲列表320的头部。例如,假设缓冲器计数的总数为N,在每(N/4)次读取之后,为下一次非重叠读取分配空闲列表320中最旧的缓冲器条目(例如,对应于最早时间戳的读取缓冲器),而不是从空闲列表320的头部分配缓冲器。这允许控制器120在驱逐当前正被频繁读取的其它读取缓冲器之前从空闲列表320中逐渐驱逐具有高读取计数的读取缓冲器,假定那些读取缓冲器在过去可能被频繁读取但在一段时间内没有被存取。
就此来说,图5是说明根据一些布置的空闲列表500的框图。参考图1到5,空闲列表500可为缓冲器(缓冲器ID)的列表,例如但不限于空闲列表320。空闲列表500是读取缓冲器的列表,每一读取缓冲器由对应的缓冲器ID识别。如展示,空闲列表500包含缓冲器ID501、…、缓冲器ID 510、缓冲器ID 511、…、缓冲器ID 520、缓冲器ID 521、…和缓冲器ID530。每一缓冲器ID链接到下一个缓冲器ID。最后一个缓冲器ID 530链接到NULL,指示缓冲器ID 530是空闲列表500的最后一个缓冲器ID和尾部。从空闲列表500的头部(例如,缓冲器ID 501)分配读取缓冲器。例如,响应于接收到针对非重叠逻辑地址范围的读取命令,控制器120分配作为空闲列表500的当前头部的读取缓冲器,并将从NVM 140读取的数据存储在读取缓冲器中。因此,在更接近空闲列表500的尾部(NULL)的缓冲器ID之前,为新的读取命令分配具有更接近空闲列表500的头部的缓冲器ID的读取缓冲器。
在一个实例中,空闲列表500包含属于三个组(例如,第一组541、第二组542和第三组543)的读取缓冲器。缓冲器ID 501到510的第一组541比第二组542和第三组543更靠近空闲列表500的头部,因此,在为新的读取命令分配缓冲器ID 511到530之前,为新的读取命令分配缓冲器ID 501到510。第一组541中的缓冲器ID 501到510中的每一者识别含有不再有效的数据的读取缓冲器。例如,主机101可针对逻辑地址范围发出写入或解除分配命令,并且作为执行所述命令的结果,读取缓冲器中的对应于所述逻辑地址范围的数据过时和/或不再被需要。就此来说,此类读取缓冲器可首先分配给新的读取命令,并且因此位于空闲列表500的头部。
缓冲器ID 511到520的第二组542比第三组543更靠近空闲列表500的头部,因此,在为新的读取命令分配缓冲器ID 521到530之前,为新的读取命令分配缓冲器ID 511到520。第二组542中的缓冲器ID 511到520中的每一者识别对应于被视为与频繁写入和不频繁读取(例如,在表400中具有存取频率值2、4、5、6、7或8)相关联的逻辑地址范围的读取缓冲器。频繁写入导致读取缓冲器中的数据过时。因此,对应于预期经历频繁写入和不频繁读取两者的逻辑地址范围的数据可能不需要长时间保持,且因此在已经为新的读取命令分配第一组541中的缓冲器之后,可为新的读取命令分配所述数据。
第三组541中的缓冲器ID 521到530根据总读取计数排序。在一些实例中,根据增加的总读取计数来布置缓冲器,其中具有最低总读取计数的缓冲器(例如,缓冲器ID 521)最接近空闲列表500的头部,并且具有最高总读取计数的缓冲器(例如,缓冲器ID 530)最接近空闲列表500的尾部。如所描述,假定命中对应于预期具有更高总读取计数(例如,在表400中具有存取频率值3)的逻辑地址范围的读取缓冲器的可能性由于频繁读取而很高,为新的读取命令分配此读取缓冲器。
如描述,在一些实例中,假设缓冲器ID 501到530的总数为N,在每(N/4)次读取之后,为下一次非重叠读取命令分配空闲列表500中对应于最早时间戳的缓冲器ID,而不是从空闲列表500的头部分配缓冲器。
图6是说明根据各种布置的用于执行读取命令的实例方法600的流程图。根据图1到6,可由控制器120执行方法600。在610,控制器120经由主机接口110从主机101接收读取命令。在620,控制器120确定读取命令是否命中读取缓冲器。命中读取缓冲器是指读取命令中的逻辑地址范围对应于其中已经存储所述逻辑地址范围的最新数据的读取缓冲器,使得控制器120可从读取缓冲器传送数据而不是从NVM 140读取数据。
在一些布置中,响应于控制器120确定命中读取缓冲器(620:是),控制器120在640处理来自读取缓冲器的读取命令。另一方面,响应于控制器120确定未命中读取缓冲器(620:否),控制器120在630处理来自NVM 140的读取命令。
图7是说明根据各种布置的用于执行读取命令的实例方法700的流程图。根据图1到7,方法700可由控制器120执行,且是框630的实例实施方案。例如,响应于确定逻辑地址范围不会导致命中任何读取缓冲器(620:否),控制器120在701从空闲列表320的头部分配读取缓冲器。
在702,控制器120确定对应于所述逻辑地址范围的一或多个物理地址。例如,控制器120可从地址映射表(例如,L2P映射表)获得映射到所述逻辑地址范围的MCA,并经由闪存接口层(FIL)发出从NVM 140读取数据的请求。在703,控制器120(例如,FIL)从NVM 140一起返回数据与NVM 140中的对应虚拟WL的读取计数和扫描读取计数(例如,0到15)。
在704,控制器120将数据返回到主机101,并存储读取缓冲器的NAND读取计数。例如,控制器120可经由主机接口110将数据从读取缓冲器传送到主机101的缓冲器(例如,DRAM)。在一些实例中,虚拟WL上的NAND读取计数(NNAND)可使用表达式(1)确定:
NNAND=Nread_count+Nscan_read_count*64K (1);
其中Nread_count是指虚拟WL上的读取计数,并且Nscan_read_count是指虚拟WL上的扫描读取计数。
在705,控制器120确定存取频率值是否是第一值(例如,3)。如表400中展示,可从主机101接收指示存取频率(例如,读取频率和写入频率)的存取频率值。逻辑地址范围的存取频率值3对应于针对所述逻辑地址范围预期的较低的写入次数(例如,不频繁写入)和较高的读取次数(例如,频繁读取)。
响应于确定存取频率值为3(705:是),控制器120在706确定所述逻辑地址范围的指派读取计数。在一个实例中,响应于确定所述逻辑地址范围的指派读取计数当前为0,控制器120指派预定数目(例如,64K)作为指派读取计数。另一方面,响应于确定存取频率值不是3(705:否),控制器120在707确定存取频率值是否是第二值(例如,2、4、5、6、7或8)。
响应于确定存取频率值是第二值(707:是),在708,控制器120将读取缓冲器移动到空闲列表320的头部或将读取缓冲器移动到第二组542中。例如,缓冲器ID 330a识别在703分配的读取缓冲器。另一方面,响应于确定存取频率值不是第二值(707:否),在709,控制器120确定在703分配的读取缓冲器的总读取计数。在一些实例中,读取缓冲器的总读取计数(NTotal)可使用表达式(2)确定:
NTotal=Nhit_count+NNAND+Nassigned (2);
其中Nhit_count是读取命中计数,且Nassigned是指派的读取计数。总读取计数存储在读取缓冲器表中。
在710,控制器120根据读取缓冲器的总读取计数链接空闲列表320中的读取缓冲器(例如,其缓冲器ID)。换句话说,空闲列表320中存取频率值不是2、4、5、6、7和8的缓冲器按总读取计数布置,使得总读取计数数目较低的缓冲器更接近空闲列表320的头部(并且首先被分配供下次使用)。
对应于读取缓冲器的缓冲器ID被链接或插入在第一缓冲器ID与第二缓冲器ID之间,使得具有小于读取缓冲器的总读取计数的总读取计数的第一缓冲器ID更接近空闲列表320的头部,并且具有大于读取缓冲器的总读取计数的总读取读取计数的第二缓冲器ID更接近空闲列表320的尾部。这允许具有较低总读取计数的读取缓冲器更接近空闲列表320的头部。
方法700避免对对应于与具有较高读取计数的逻辑地址对应的数据的WL的进一步读取干扰,且避免对对应于那些虚拟WL的超级块的未来扫描读取和读取干扰回收。
图8是说明根据各种布置的用于执行读取命令的实例方法800的流程图。根据图1到8,方法800可由控制器120执行,且是框640的实例实施方案。例如,响应于确定逻辑地址范围导致命中任何读取缓冲器(620:是),控制器120在801增加读取缓冲器的读取命中计数(Nhit_count)。控制器120因此可为高速缓存的每一缓冲器维持读取命中计数。
在802,控制器120将读取缓冲器从空闲列表320移动到使用中列表300。在803,控制器120经由主机接口110将存储在读取缓冲器中的数据传送到主机101的缓冲器(例如,DRAM)。在804,控制器120确定存取频率值是否是预定值(例如,2、4、5、6、7或8)。
响应于确定存取频率值是预定值(804:是),在805,控制器120将读取缓冲器移动到空闲列表320的头部。例如,缓冲器ID 330a识别读取缓冲器。另一方面,响应于确定存取频率值不是预定值(804:否),在806,控制器120确定读取缓冲器的总读取计数。在一些实例中,读取缓冲器的总读取计数(NTotal)可使用表达式(2)确定,其中读取命中计数(Nhit_count)在801增加。总读取计数存储在读取缓冲器表中。
在807,控制器120根据读取缓冲器的总读取计数链接空闲列表320中的读取缓冲器(例如,其缓冲器ID),使得空闲列表320中的缓冲器按总读取计数布置,使得具有较低的总读取计数数目的缓冲器更接近空闲列表320的头部(并且首先被分配供下次使用)。
在其中两个或更多个读取缓冲器具有相同的总读取计数的一些实例中,使用具有较晚时间戳的读取缓冲器来高速缓存读取数据,并且将具有较早时间戳的读取缓冲器链接到更靠近空闲列表320的头部(并且在具有较晚时间戳的读取缓冲器之前被分配供下次使用)。
图9A和9B是根据各种布置的用于维持读取缓冲器的总读取计数的实例读取缓冲器表900a和900b。参考图1到9B,读取缓冲器表900a和900B维持逻辑地址(例如,LCA)的范围、读取缓冲器ID、列表类型(使用中列表300或空闲列表320)、总读取计数和时间戳之间的对应关系。读取缓冲器表900a是在存储装置100的操作期间的读取缓冲器表的快照。读取缓冲器表900b是在启动时初始化的读取缓冲器表。
在其中存储装置100是IOD存储装置的布置中,存储装置100处于确定性窗口(DTWIN)或NDWIN中。在启动时,所有的读取缓冲器将在空闲列表300中,如读取缓冲器表900b中展示。
在一些布置中,在DTWIN和NDWIN两者中启用读取缓冲器表搜索。假定存储装置100在NDWIN中主要进行写入、解除分配和执行后台操作,响应于确定写入或解除分配命令命中读取缓冲器表900a中的LCA,控制器120可使对应于LCA的条目无效,并且从读取缓冲器表900a中移除所述条目。
在其中存储装置100是IOD存储装置的布置中,DTWIN和NDWIN可交替。在DTWIN开始时,控制器120通常插入与对应于新的、非重叠的读取命令的LCA的读取缓冲器相关的条目。在NDWIN开始时,控制器120通常使与对应于重叠的写入命令的LCA的读取缓冲器相关的条目无效。
在启动时以及在其中存储装置100被启用用于可预测时延模式的情形中,读取缓冲器表900b初始化为无效的LCA(例如,“0xFFFFFFFF”)。当在DTWIN期间从主机101接收到新的读取命令时,可首先根据与读取命令相关联的逻辑地址(例如,LCA)的范围搜索读取缓冲器表900a,以确定是否发生读取缓冲器命中。响应于确定没有发生读取缓冲器命中,控制器120在读取缓冲器表900a中用逻辑地址范围、读取缓冲器ID、列表类型、总读取计数和时间戳填充新条目。
此外,响应于从主机101接收到读取命令,控制器120搜索读取缓冲器表900a,并确定对具有相同逻辑地址范围的现有条目的读取缓冲器命中。如果确定读取缓冲器命中,那么控制器120递增读取命中计数(因此增加总读取计数),将列表类型从空闲设定为使用中,将读取缓冲器移动到使用中列表300,并从读取缓冲器读取现有数据。
在数据的副本传送到主机101之后,控制器120根据LCA的新存取频率和更新的总读取计数将读取缓冲器重新定位回到空闲列表320,并相应地更新读取缓冲器表900a。这确保根据在存储装置100的操作期间可能改变的读取缓冲器的存取频率和总读取计数动态地对空闲列表320进行排序。
图10是说明根据各种布置的用于管理使用中列表1000和空闲列表1020中的读取缓冲器的实例方法的框图。参考图1到10,使用中列表1000是使用中列表300的实例实施方案,且空闲列表1020是空闲列表320的实例实施方案。
使用中列表1000是读取缓冲器的列表,每一读取缓冲器由对应的缓冲器ID识别。如展示,使用中列表1000包含缓冲器ID 1010a、缓冲器ID 1010b和缓冲器ID 1010c。每一缓冲器ID链接到下一个缓冲器ID。例如,使用中列表1000的头部(缓冲器ID 1010a)链接到第二缓冲器ID 1010b,且第二缓冲器ID 1010b链接到最后一个缓冲器ID 1010c。最后一个缓冲器ID 1010c链接到NULL,指示缓冲器ID 1010c是使用中列表1000的尾部。
空闲列表1020是读取缓冲器的列表,每一读取缓冲器由对应的缓冲器ID识别。如展示,空闲列表1020包含缓冲器ID 1030a、缓冲器ID 1030b和缓冲器ID 1030c。每一缓冲器ID链接到下一个缓冲器ID。例如,空闲列表1020的头部(缓冲器ID 1030a)链接到第二缓冲器ID 1030b,且第二缓冲器ID 1030b链接到最后一个缓冲器ID 1030c。最后一个缓冲器ID1030c链接到NULL,指示缓冲器ID 1030c是空闲列表1020的尾部。
响应于接收到针对逻辑地址的非重叠范围的读取命令(未命中空闲列表1020或使用中列表1000中的任何缓冲器),控制器120分配作为空闲列表1020的当前头部的读取缓冲器(例如,对应于缓冲器ID 1030a)。如描述,在一些实例中,一旦在预定数目(例如,N/4)的读取缓冲器分配中,就分配最旧的读取缓冲器(例如,对应于最早时间戳的读取缓冲器)而不是空闲列表1020的头部。
在分配之后,在1041,将由缓冲器ID 1030a识别的读取缓冲器从空闲列表1020移动到使用中列表1000。如展示,缓冲器ID 1030a被移动到使用中列表1000的尾部,作为缓冲器ID 1010c。控制器120向NVM 140发出读取命令,并将从NVM 140读取的数据存储在所述读取缓冲器中。在控制器120将数据从读取缓冲器(缓冲器ID 1010c)传送到主机101之后,控制器120将读取缓冲器(缓冲器ID 1010c)移回到空闲列表1020。在所展示的实例中,响应于确定存取频率值是预定数(例如,第二值,707:是),控制器120在1042(708)将读取缓冲器(缓冲器ID 1010c)移动到空闲列表1020的头部,其中读取缓冲器ID 1010c再次对应于读取缓冲器ID 1030a。或者,控制器120将读取缓冲器(缓冲器ID 1010c)移动到第二组542中。在其它实例中,如所描述,控制器120可根据读取缓冲器(缓冲器ID 1010c)的更新的总读取计数将读取缓冲器(缓冲器ID 1010c)移动到空闲列表1020。
图11是说明根据各种布置的用于管理使用中列表1100和空闲列表1120中的读取缓冲器的实例方法的框图。参考图1到11,使用中列表1100是使用中列表300的实例实施方案,且空闲列表1120是空闲列表320的实例实施方案。
使用中列表1100是读取缓冲器的列表,每一读取缓冲器由对应的缓冲器ID识别。如展示,使用中列表1100包含缓冲器ID 1110a、缓冲器ID 1110b和缓冲器ID 1110c。每一缓冲器ID链接到下一个缓冲器ID。例如,使用中列表1100的头部(缓冲器ID 1110a)链接到第二缓冲器ID 1110b,且第二缓冲器ID 1110b链接到最后一个缓冲器ID 1110c。最后一个缓冲器ID 1110c链接到NULL,指示缓冲器ID 1110c是使用中列表1100的尾部。
空闲列表1120是读取缓冲器的列表,每一读取缓冲器由对应的缓冲器ID识别。如展示,空闲列表1120包含缓冲器ID 1130a、缓冲器ID 1130b和缓冲器ID 1130c。每一缓冲器ID链接到下一个缓冲器ID。例如,空闲列表1120的头部(缓冲器ID 1130a)链接到第二缓冲器ID 1130b,且第二缓冲器ID 1130b链接到最后一个缓冲器ID 1130c。最后一个缓冲器ID1130c链接到NULL,指示缓冲器ID 1130c是空闲列表1120的尾部。
在一些布置中,响应于在NDTWIN期间接收到新的写入或解除分配命令,控制器120在读取缓冲器表900a中搜索读取缓冲器命中。例如,控制器120可确定所接收的写入或解除分配命令的逻辑地址(例如,LCA)范围与对应于缓冲器ID 1130b的逻辑地址范围相同。在此情况下,控制器120将数据写入到写入缓冲器高速缓存。然后,控制器120使逻辑地址的重叠范围无效,并在1141将对应的读取缓冲器ID 1130b移动到空闲列表1120的头部(作为缓冲器ID 1130a),以由下一个非重叠读取消耗。写入缓冲器中的数据将最终被写入到NVM 140。
在一些布置中,响应于在DTWIN和NDTWIN两者中接收到新的读取命令,可填充且搜索读取缓冲器表900a。可并行地检测写入缓冲器上的读取命中。
当从空闲列表320的开头为非重叠读取分配读取缓冲器时,缓冲器的先前LCA条目(如果存在)可从读取缓冲器表900a中移除,并且将新的LCA条目连同相关联的新的总读取计数和时间戳一起添加到读取缓冲器表900a。
在其中已确定对使用中的缓冲器的多次命中的一些布置中,可使用链表对那些使用中的读取命令ID进行排队。图12是说明根据各种布置针对使用中列表1200中识别的每一缓冲器维持的实例等待读取命令ID列表的框图。参考图1到12,使用中列表1200是读取缓冲器的列表,包含本文所描述的读取缓冲器ID 1210a、1210b、…和1210n。读取缓冲器ID1210a、1210b、…和1210n中的每一者链接到或包含等待读取命令ID列表1210a、1210b、…和1210n中的对应一者。
等待读取命令ID列表1210a中的每一读取命令ID(例如,读取命令ID A、读取命令ID B、…、读取命令ID N)对应于针对缓冲器ID 1210a的逻辑地址(例如,LCA)范围从主机101接收的读取命令(例如,对缓冲器ID 1210a的LCA的命中)。如展示,等待读取命令ID列表1220a包含读取命令ID A、读取命令ID B、…和读取命令ID N。每一读取命令ID链接到下一个读取命令ID。例如,等待读取命令ID列表1220a的头部(读取命令ID A)链接到第二读取命令ID B,以此类推。最后一个读取命令ID N链接到NULL,指示读取命令ID N是已命中对应于特定读取命令ID的LCA的等待读取命令列表1220a的尾部。每一读取命令ID识别由控制器120从主机101接收的读取命令。可根据每一读取命令A到N的时间戳对等待读取命令ID列表1220a中的读取命令ID A到N进行排队。在较早时间(较早时间戳)接收到的读取命令(例如,读取命令ID A)被朝向等待读取命令ID列表1220a的头部放置。其它等待读取命令ID列表1220b到1220n类似地配置,如展示。
在控制器120将数据从NVM传送到对应于使用中缓冲器300中的缓冲器ID的读取缓冲器之后,等待列表1200中针对相同逻辑地址范围的所有读取命令(由对应的读取命令ID识别)可使用相同的缓冲器来服务。
假定针对逻辑地址范围的重叠写入命令因为数据归因于写入过时而使对应于来自读取缓冲器表900a的相同逻辑地址范围的条目无效,控制器120可在搜索写入缓冲器上的读取命中的同时搜索读取缓冲器表900a表。这改进了总的读取时延。
因此,如本文所描述,本布置涉及使用读取命令的“存取频率”字段来改进读取性能的读取缓冲器机制。因此,存取频率值是可用于改进性能和增加NAND寿命的元数据。控制器120可使用读取命令的“存取频率”字段中的存取频率值来管理空闲列表320,使得高速缓存频繁读取的数据的读取缓冲器可被维持更长的时间段,并且频繁写入和/或不频繁读取的数据被更快地释放,从而增加处理量并减少热数据的时延。
另外,高速缓存的缓冲器的读取命中计数和WL组的NAND读取干扰读取计数用于确定空闲列表320中的读取缓冲器的顺序,并因此用于高速缓存更频繁读取的数据。这减少读取干扰扫描读取和读取干扰回收,从而降低写入放大并增加NAND寿命。
实施空闲缓冲器列表以根据最频繁使用和最近使用的高速缓存策略对读取缓冲器进行排序允许有效地释放读取缓冲器,使得读取缓冲器可同时充当动态读取缓冲器高速缓存。因此,实施如本文所描述的有效缓冲器分配和释放策略以及读取命令年表,可在DTWIN中改进读取确定性且可减少到NDWIN的自主转变。
图13是说明根据各种布置的用于管理读取缓冲器的实例方法1300的流程图。参考图1到13,方法1300可由控制器120执行。
在1310,控制器120从主机101接收指示存取存储在存储装置100(例如,NVM 140)中的数据的频率的信息。在1320,响应于接收到所述信息,控制器120(例如,缓冲器管理器125)确定为下一个读取命令分配存储装置100的读取缓冲器152的顺序。在一些实例中,确定分配读取缓冲器152的顺序是指确定空闲列表320中读取缓冲器152的顺序。空闲列表320中的每一读取缓冲器对应于存活时间,其被定义为在完成读取命令(完成从读取缓冲器到主机101的数据传送)和分配给具有不同逻辑地址范围的下一个新读取命令之间的时间段。放置在空闲列表320的头部或更靠近空闲列表320的头部的读取缓冲器的存活时间比放置在读取列表320的尾部或更靠近读取列表320的尾部的另一读取缓冲器的存活时间短。
在一些布置中,每一读取缓冲器152存储对应于逻辑地址范围的数据。指示存取数据的频率的信息包含每一读取缓冲器152的逻辑地址范围的存取频率值(在表400中展示)。控制器120(例如,缓冲器管理器125)至少部分地基于对应于每一读取缓冲器152的存取频率值来布置空闲列表320中的读取缓冲器。
在一些实例中,存取频率值指示预期读取频率或预期读取频率和预期写入频率的组合中的一者。对应于从主机101接收的逻辑地址范围的读取命令包含存取频率值。
在一些实例中,空闲列表320中的读取缓冲器152根据每一读取缓冲器152的总读取计数来布置。在分配总读取计数较低的读取缓冲器152的第二读取缓冲器之后,为新的读取命令分配总读取计数较高的读取缓冲器152的第一读取缓冲器。每一读取缓冲器152的总读取计数是读取命中计数、NAND读取计数和分配的读取计数的和。在一些实例中,读取缓冲器表900a针对每一读取缓冲器152存储逻辑地址范围、读取缓冲器ID、缓冲器类型、总读取计数和时间戳中的一或多者。
在一些实例中,空闲列表320中的至少一些读取缓冲器152根据每一读取缓冲器152的总读取计数来布置。在分配总读取计数较低且时间戳较迟的读取缓冲器152的第二读取缓冲器之前,为新的读取命令分配总读取计数较高且时间戳较早的读取缓冲器152的第一读取缓冲器。
在一些布置中,空闲列表230(500)中的读取缓冲器152包含第一组541、第二组542和第三组543。第一组541包含第一读取缓冲器(对应于缓冲器ID 501到510),其各自对应于无效数据。第二组542包含第二读取缓冲器(对应于缓冲器ID 511到520),其各自具有对应于频繁写入和不频繁读取的存取频率值(例如,表400中的存取频率值2、4、5、6、7或8)。第三组543包含根据每一第三读取缓冲器的总读取计数布置的第三读取缓冲器(对应于缓冲器ID 521到530)。在一些实例中,在分配第一读取缓冲器和第二读取缓冲器之后,为新的读取命令分配第三读取缓冲器。在分配第一读取缓冲器之后,为新的读取命令分配第二读取缓冲器。
在一些布置中,响应于确定新读取命令的逻辑地址范围不同于空闲列表320中的任何读取缓冲器的逻辑地址范围(没有命中缓冲器,范围不重叠),控制器120(缓冲器管理器125)从空闲列表320分配第一读取缓冲器。控制器120从NVM 140将对应于新读取命令的逻辑地址范围的数据读取到第一读取缓冲器中。控制器120将数据从第一读取缓冲器传送到主机10。
在其中新读取命令中的存取频率值(例如,3)对应于频繁读取和不频繁写入的一些实例中,控制器120(缓冲器管理器125)向第一读取缓冲器指派较高指派读取计数。在将数据传送到主机101之后,控制器120(缓冲器管理器125)根据至少部分地基于高读取计数确定的第一读取缓冲器的总读取计数,将第一读取缓冲器添加回到空闲列表320。
在其中新读取命令中的存取频率值(例如,2、4、5、6、7或8)对应于不频繁读取或频繁写入中的一或多者的一些实例中,控制器120(缓冲器管理器125)在将数据传送到主机101之后将第一读取缓冲器添加回到空闲列表320的第二组。
在其中新读取命令中的存取频率值(例如,0或1)对应于没有提供频率信息或典型的读取和写入次数的一些实例中,控制器120(缓冲器管理器125)在将数据传送到主机101之后,根据第一读取缓冲器的总读取计数将第一读取缓冲器添加回到空闲列表230。
在一些布置中,响应于确定新读取命令的逻辑地址范围与空闲列表中的读取缓冲器的第一读取缓冲器的逻辑地址范围相同,控制器120(缓冲器管理器125)增加第一读取缓冲器的读取命中计数。
在其中新读取命令中的存取频率值(例如,2、4、5、6、7或8)对应于不频繁读取或频繁写入中的一或多者的一些实例中,控制器120(缓冲器管理器125)在将数据传送到主机101之后将第一读取缓冲器添加回到空闲列表320的第二组。
在其中新读取命令中的存取频率值(例如,0或1)对应于没有提供频率信息或典型的读取和写入次数的一些实例中,控制器120(缓冲器管理器125)在将数据传送到主机101之后,根据第一读取缓冲器的总读取计数将第一读取缓冲器添加回到空闲列表230。
在其中新读取命令中的存取频率值(例如,3)对应于频繁读取和不频繁写入的一些实例中,控制器120(缓冲器管理器125)在将数据传送到主机101之后,根据第一读取缓冲器的总读取计数将第一读取缓冲器添加回到空闲列表320。
提供先前的描述来使所属领域的技术人员能够实践本文描述的各种方面。所属领域的技术人员将容易了解对这些方面的各种修改,且本文定义的一般原理可应用于其它方面。因此,权利要求书不希望限制于本文展示的方面,而希望赋予其与权利要求书语言相一致的完整范围,其中除非有明确声明,否则以单数形式参考元件并不意味着“一个且仅一个”,而是意味着“一或多个”。除非另有明确声明,否则术语“一些”是指一或多个。所属领域的一般技术人员已知的或以后将知晓的贯穿先前描述所描述的各个方面的元件的所有结构和功能等效物明确通过引用的方式并入本文中,并且希望由权利要求书涵盖。而且,本文公开的任何内容都不希望用于大众,这与此公开内容是否在权利要求书中明确叙述无关。任何主张的要素不能解释为方法加功能,除非所述要素使用短语“用于……的方法”明确叙述。
应理解,所公开的过程中的步骤的任何特定顺序或层次是说明性方法的实例。基于设计偏好,应理解,过程中的步骤的特定顺序或层次可重新布置,同时仍保持在先前描述的范围内。所附方法权利要求书以样本顺序呈现各种步骤的要素,且并不意在限于所呈现的特定顺序或层次。
提供所公开实施方案的先前描述以使所属领域的技术人员能够制作或使用所公开的标的物。对于所属领域的技术人员来说,对这些实施方案的各种修改将是显而易见的,且在不背离先前描述的精神或范围的情况下,本文定义的一般原理可应用于其它实施方案。因此,先前描述并不希望限制于本文中展示的实施方案,而是符合与本文中公开的原理及新颖特征一致的最广范围。
所说明和描述的各种实例仅作为实例提供以说明权利要求书的各种特征。然而,关于任何给定实例展示且描述的特征不一定限于相关联的实例,并且可与所展示且描述的其它实例一起使用或组合。此外,权利要求书并不希望受任何一个实例的限制。
前文方法描述和工艺流程图仅经提供作为说明性实例且并不希望要求或暗示各种实施例的步骤必须按所呈现的顺序执行。如所属领域的技术人员将了解,可按任意顺序执行前文实例中的步骤顺序。例如“其后”、“接着”、“其次”等的字词希望限制步骤的顺序;这些字词仅用于贯穿方法的描述引导读者。此外,例如使用冠词“一(a/an)”、或“所述”对单数形式的权利要求要素的任何参考不应被解释为将要素限制为单数。
结合本文公开的实例描述的各种说明性逻辑块、模块、电路及算法步骤可经实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的这种可互换性,上文已在其功能方面对各种说明性组件、块、模块、电路及步骤进行了大体描述。将此功能性实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施方案决策不应被解释为导致脱离本公开的范围。
用于实施结合本文公开的实例描述的各种说明性逻辑、逻辑块、模块和电路的硬件可使用通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或经设计执行本文描述的功能的其任何组合实施或执行。通用处理器可为微处理器,但在替代例中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可被实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、结合DSP核心的一或多个微处理器,或任何其它此配置。或者,一些步骤或方法可由专用于给定功能的电路系统执行。
在一些示范性实例中,描述的功能可经实施于硬件、软件、固件或其任何组合中。如果在软件中实施,那么功能可经存储为非暂时性计算机可读存储媒体或非暂时性处理器可读存储媒体上的一或多个指令或代码。本文公开的方法或算法的步骤可体现在可驻留在非暂时性计算机可读或处理器可读存储媒体上的处理器可执行软件模块中。非暂时性计算机可读或处理器可读存储媒体可为可由计算机或处理器存取的任何存储媒体。通过实例而非限制,此非暂时性计算机可读或处理器可读媒体可包含RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、或可用于存储呈可由计算机存取的指令或数据结构的形式的所要程序代码的任何其它媒体。如本文使用的磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上组合也包含在非暂时性计算机可读和处理器可读媒体的范围内。另外,方法或算法的操作可作为代码及/或指令的一个或任何组合或集合驻留于非暂时性处理器可读存储媒体及/或计算机可读存储媒体上,其可并入计算机程序产品中。
所公开实例的前述描述经提供以使任何所属领域的技术人员能够进行或使用本发明。对于所属领域的技术人员来说,对这些实例的各种修改将是显而易见的,且在不背离本公开的精神或范围的情况下,本文定义的一般原理可应用于一些实例。因此,本公开不希望限制于本文展示的实例,而是应符合与所附权利要求书及本文公开的原理及新型特征一致的最广范围。
Claims (20)
1.一种方法,其包括:
由存储装置的控制器从主机接收指示存取存储在所述存储装置中的数据的频率的信息;及
响应于接收到所述信息,由所述控制器确定为下一个读取命令分配所述存储装置的读取缓冲器的顺序。
2.根据权利要求1所述的方法,其中
每一所述读取缓冲器存储对应于逻辑地址范围的数据;
指示存取所述数据的所述频率的所述信息包括每一所述读取缓冲器的所述逻辑地址范围的存取频率值;且
所述方法进一步包括由所述控制器至少部分地基于对应于每一所述读取缓冲器的所述存取频率值来布置空闲列表中的所述读取缓冲器。
3.根据权利要求2所述的方法,其中
所述存取频率值指示预期读取频率或所述预期读取频率与预期写入频率的组合中的一者;且
对应于从所述主机接收的所述逻辑地址范围的读取命令包括所述存取频率值。
4.根据权利要求2所述的方法,其中
所述空闲列表中的所述读取缓冲器根据每一所述读取缓冲器的总读取计数来布置;
在分配总读取计数较低的所述读取缓冲器的第二读取缓冲器之后,为新的读取命令分配总读取计数较高的所述读取缓冲器的第一读取缓冲器。
5.根据权利要求4所述的方法,其中每一所述读取缓冲器的所述总读取计数是读取命中计数、NAND读取计数和分配的读取计数的和。
6.根据权利要求5所述的方法,其中读取缓冲器表对每一所述读取缓冲器存储逻辑地址范围、读取缓冲器标识符ID、缓冲器类型、总读取计数和时间戳中的一或多者。
7.根据权利要求2所述的方法,其中
所述空闲列表中的至少一些所述读取缓冲器根据每一所述读取缓冲器的总读取计数来布置;
在分配总读取计数较低且时间戳较迟的所述读取缓冲器的第二读取缓冲器之前,为新的读取命令分配总读取计数较高且时间戳较早的所述读取缓冲器的第一读取缓冲器。
8.根据权利要求2所述的方法,其中
所述空闲列表中的所述读取缓冲器包括第一组、第二组和第三组;
所述第一组包括第一读取缓冲器,其各自对应于无效数据;
所述第二组包括第二读取缓冲器,其各自具有对应于频繁写入和不频繁读取的存取频率值;且
所述第三组包括根据每一所述第三读取缓冲器的总读取计数布置的第三读取缓冲器。
9.根据权利要求8所述的方法,其中
在分配所述第一读取缓冲器和所述第二读取缓冲器之后,为新的读取命令分配所述第三读取缓冲器;且
在分配所述第一读取缓冲器之后,为新的读取命令分配所述第二读取缓冲器。
10.根据权利要求2所述的方法,其进一步包括响应于确定新读取命令的逻辑地址范围不同于所述空闲列表中的任何所述读取缓冲器的逻辑地址范围:
由所述控制器从所述空闲列表中分配第一读取缓冲器;
由所述控制器从所述存储装置的非易失性存储器将对应于所述新读取命令的所述逻辑地址范围的所述数据读取到所述第一读取缓冲器中;及
由所述控制器将所述数据从所述第一读取缓冲器传送到所述主机。
11.根据权利要求10所述的方法,其中
所述新读取命令中的所述存取频率值对应于频繁读取和不频繁写入;且
所述方法进一步包括:
由所述控制器为所述第一读取缓冲器指派较高指派读取计数;及
在将所述数据传送到所述主机之后,由所述控制器根据至少部分地基于所述较高读取计数确定的所述第一读取缓冲器的总读取计数,将所述第一读取缓冲器添加回到所述空闲列表。
12.根据权利要求10所述的方法,其中
所述新读取命令中的所述存取频率值对应于不频繁读取或频繁写入中的一或多者;且
所述方法进一步包括:
在将所述数据传送到所述主机之后,由所述控制器将所述第一读取缓冲器添加回到所述空闲列表的位置,其中所述位置对应于一组读取缓冲器,其各自具有对应于频繁写入和不频繁读取的存取频率值。
13.根据权利要求10所述的方法,其中
所述新读取命令中的所述存取频率值对应于没有提供频率信息或典型的读取和写入次数;且
所述方法进一步包括:
在将所述数据传送到所述主机之后,由所述控制器根据所述第一读取缓冲器的总读取计数将所述第一读取缓冲器添加回到所述空闲列表。
14.根据权利要求2所述的方法,其中响应于确定新读取命令的所述逻辑地址范围与所述空闲列表中的所述读取缓冲器的第一读取缓冲器的逻辑地址范围相同,增加所述第一读取缓冲器的读取命中计数。
15.根据权利要求14所述的方法,其中
所述新读取命令中的所述存取频率值对应于不频繁读取或频繁写入中的一或多者;且
所述方法进一步包括:
在将所述数据传送到所述主机之后,由所述控制器将所述第一读取缓冲器添加回到所述空闲列表的位置,其中所述位置对应于一组读取缓冲器,其各自具有对应于频繁写入和不频繁读取的存取频率值。
16.根据权利要求14所述的方法,其中
所述新读取命令中的所述存取频率值对应于没有提供频率信息或典型的读取和写入次数;且
所述方法进一步包括:
在将所述数据传送到所述主机之后,由所述控制器根据总读取计数将所述第一读取缓冲器添加回到所述空闲列表。
17.根据权利要求14所述的方法,其中
所述新读取命令中的所述存取频率值对应于频繁读取和不频繁写入;且
所述方法进一步包括:
在将所述数据传送到所述主机之后,由所述控制器根据总读取计数将所述第一读取缓冲器添加回到所述空闲列表。
18.一种存储装置,其包括:
非易失性存储器;及
控制器,其经配置以:
从主机接收指示存取存储在所述存储装置中的数据的频率的信息;及
响应于接收到所述信息,确定为下一个读取命令分配所述存储装置的读取缓冲器的顺序。
19.根据权利要求18所述的存储装置,其中
每一所述读取缓冲器存储对应于逻辑地址范围的数据;
指示存取所述数据的所述频率的所述信息包括每一所述读取缓冲器的所述逻辑地址范围的存取频率值;及
所述控制器经进一步配置以至少部分地基于对应于每一所述读取缓冲器的所述存取频率值来布置空闲列表中的所述读取缓冲器。
20.一种包括计算机可读指令的非暂时性计算机可读媒体,使得当执行所述指令时,致使处理器:
从主机接收指示存取存储在所述存储装置中的数据的频率的信息;及
响应于接收到所述信息,确定为下一个读取命令分配所述存储装置的读取缓冲器的顺序。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/025,898 | 2020-09-18 | ||
| US17/025,898 US11392499B2 (en) | 2020-09-18 | 2020-09-18 | Dynamic buffer caching of storage devices |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN114201417A true CN114201417A (zh) | 2022-03-18 |
| CN114201417B CN114201417B (zh) | 2026-01-09 |
Family
ID=80646064
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202111093459.7A Active CN114201417B (zh) | 2020-09-18 | 2021-09-17 | 存储装置的动态缓冲器高速缓存 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US11392499B2 (zh) |
| CN (1) | CN114201417B (zh) |
| TW (2) | TWI866331B (zh) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11417410B2 (en) | 2020-09-16 | 2022-08-16 | Kioxia Corporation | Die-based high and low priority error queues |
| US11435920B2 (en) | 2021-01-20 | 2022-09-06 | Western Digital Technologies, Inc. | Storage system and method for using read and write buffers in a memory |
| US11886741B2 (en) * | 2021-04-16 | 2024-01-30 | Samsung Electronics Co., Ltd. | Method and storage device for improving NAND flash memory performance for intensive read workloads |
| US20230120184A1 (en) * | 2021-10-19 | 2023-04-20 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for ordered access of data in block modified memory |
| US11842069B2 (en) | 2022-01-14 | 2023-12-12 | Western Digital Technologies, Inc. | Storage system and method for delaying flushing of a write buffer based on a host-provided threshold |
| KR20240075339A (ko) * | 2022-11-22 | 2024-05-29 | 삼성전자주식회사 | 스토리지 장치 및 데이터 처리 방법 |
| CN116028388B (zh) * | 2023-01-17 | 2023-12-12 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
| US20240289019A1 (en) * | 2023-02-23 | 2024-08-29 | Micron Technology, Inc. | Techniques for efficient memory system programming |
| US12541326B2 (en) | 2023-03-16 | 2026-02-03 | Samsung Electronics Co., Ltd. | Device cache engine for a cache-coherent interconnect memory expansion |
| TWI891263B (zh) * | 2023-03-30 | 2025-07-21 | 慧榮科技股份有限公司 | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及記憶體裝置 |
Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030149843A1 (en) * | 2002-01-22 | 2003-08-07 | Jarvis Thomas Charles | Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries |
| US8117396B1 (en) * | 2006-10-10 | 2012-02-14 | Network Appliance, Inc. | Multi-level buffer cache management through soft-division of a uniform buffer cache |
| CN103996415A (zh) * | 2013-01-18 | 2014-08-20 | 三星电子株式会社 | 非易失性存储器件、存储系统及相关控制方法 |
| US20150254186A1 (en) * | 2012-12-28 | 2015-09-10 | Hitachi, Ltd. | Information processing device having a plurality of types of memory caches with different characteristics |
| CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
| US10263919B1 (en) * | 2017-11-06 | 2019-04-16 | Innovium, Inc. | Buffer assignment balancing in a network device |
| CN109992537A (zh) * | 2018-01-02 | 2019-07-09 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
| US20190303019A1 (en) * | 2018-03-30 | 2019-10-03 | Toshiba Memory Corporation | Memory device and computer system for improving read performance and reliability |
| US20190332535A1 (en) * | 2018-04-27 | 2019-10-31 | International Business Machines Corporation | Integration of the frequency of usage of tracks in a tiered storage system into a cache management system of a storage controller |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| NL7510904A (nl) * | 1975-09-17 | 1977-03-21 | Philips Nv | Woordgroepsprioriteitsinrichting. |
| US6092127A (en) * | 1998-05-15 | 2000-07-18 | Hewlett-Packard Company | Dynamic allocation and reallocation of buffers in links of chained DMA operations by receiving notification of buffer full and maintaining a queue of buffers available |
| US6370619B1 (en) * | 1998-06-22 | 2002-04-09 | Oracle Corporation | Managing partitioned cache |
| TWI375953B (en) * | 2008-02-21 | 2012-11-01 | Phison Electronics Corp | Data reading method for flash memory, controller and system therof |
| CN102023811B (zh) * | 2009-09-10 | 2012-11-28 | 群联电子股份有限公司 | 对闪存下达程序化指令的方法和系统 |
| US9355036B2 (en) * | 2012-09-18 | 2016-05-31 | Netapp, Inc. | System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers |
| US9563382B2 (en) * | 2014-06-05 | 2017-02-07 | Sandisk Technologies Llc | Methods, systems, and computer readable media for providing flexible host memory buffer |
| US11093397B1 (en) * | 2015-05-19 | 2021-08-17 | EMC IP Holding Company LLC | Container-based flash cache with a survival queue |
| US10108552B2 (en) * | 2015-08-21 | 2018-10-23 | International Business Machines Corporation | Using cache lists for processors to determine tracks to demote from a cache |
| US10185660B2 (en) * | 2015-12-22 | 2019-01-22 | Reduxio Systems Ltd. | System and method for automated data organization in a storage system |
| US10423541B1 (en) * | 2016-12-22 | 2019-09-24 | Amazon Technologies, Inc. | Using encryption within a computing system |
| US10126964B2 (en) * | 2017-03-24 | 2018-11-13 | Seagate Technology Llc | Hardware based map acceleration using forward and reverse cache tables |
| US11144474B2 (en) * | 2018-06-26 | 2021-10-12 | International Business Machines Corporation | Integration of application indicated maximum time to cache to least recently used track demoting schemes in a cache management system of a storage controller |
| CN110737399B (zh) * | 2018-07-20 | 2023-09-05 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
| TWI688859B (zh) * | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
| US11182307B2 (en) * | 2020-02-22 | 2021-11-23 | International Business Machines Corporation | Demoting data elements from cache using ghost cache statistics |
-
2020
- 2020-09-18 US US17/025,898 patent/US11392499B2/en active Active
-
2021
- 2021-09-14 TW TW112125974A patent/TWI866331B/zh active
- 2021-09-14 TW TW110134238A patent/TWI809504B/zh active
- 2021-09-17 CN CN202111093459.7A patent/CN114201417B/zh active Active
-
2022
- 2022-07-18 US US17/867,074 patent/US11797452B2/en active Active
Patent Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030149843A1 (en) * | 2002-01-22 | 2003-08-07 | Jarvis Thomas Charles | Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries |
| US8117396B1 (en) * | 2006-10-10 | 2012-02-14 | Network Appliance, Inc. | Multi-level buffer cache management through soft-division of a uniform buffer cache |
| US20150254186A1 (en) * | 2012-12-28 | 2015-09-10 | Hitachi, Ltd. | Information processing device having a plurality of types of memory caches with different characteristics |
| CN103996415A (zh) * | 2013-01-18 | 2014-08-20 | 三星电子株式会社 | 非易失性存储器件、存储系统及相关控制方法 |
| CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
| US10263919B1 (en) * | 2017-11-06 | 2019-04-16 | Innovium, Inc. | Buffer assignment balancing in a network device |
| CN109992537A (zh) * | 2018-01-02 | 2019-07-09 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
| US20190303019A1 (en) * | 2018-03-30 | 2019-10-03 | Toshiba Memory Corporation | Memory device and computer system for improving read performance and reliability |
| US20190332535A1 (en) * | 2018-04-27 | 2019-10-31 | International Business Machines Corporation | Integration of the frequency of usage of tracks in a tiered storage system into a cache management system of a storage controller |
Also Published As
| Publication number | Publication date |
|---|---|
| US11797452B2 (en) | 2023-10-24 |
| TWI809504B (zh) | 2023-07-21 |
| TW202343259A (zh) | 2023-11-01 |
| US20220350746A1 (en) | 2022-11-03 |
| CN114201417B (zh) | 2026-01-09 |
| US20220091984A1 (en) | 2022-03-24 |
| TW202217576A (zh) | 2022-05-01 |
| US11392499B2 (en) | 2022-07-19 |
| TWI866331B (zh) | 2024-12-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN114201417B (zh) | 存储装置的动态缓冲器高速缓存 | |
| US10761777B2 (en) | Tiered storage using storage class memory | |
| US8688894B2 (en) | Page based management of flash storage | |
| KR101717644B1 (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
| JP5221332B2 (ja) | メモリシステム | |
| US9785564B2 (en) | Hybrid memory with associative cache | |
| US9378131B2 (en) | Non-volatile storage addressing using multiple tables | |
| US9411522B2 (en) | High speed input/output performance in solid state devices | |
| KR101824295B1 (ko) | 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리 | |
| US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
| US20170024140A1 (en) | Storage system and method for metadata management in non-volatile memory | |
| CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
| US9639481B2 (en) | Systems and methods to manage cache data storage in working memory of computing system | |
| US20150058525A1 (en) | Garbage collection in hybrid memory system | |
| JP2015518987A (ja) | フラッシュストレージのためのi/oアクセスパターンの特殊化 | |
| WO2012106362A2 (en) | Apparatus, system, and method for managing eviction of data | |
| WO2011044154A1 (en) | Data caching in non-volatile memory | |
| JP2021033849A (ja) | メモリシステムおよび制御方法 | |
| US10635581B2 (en) | Hybrid drive garbage collection | |
| TW202333059A (zh) | 有序訪問塊修改記憶體中的資料的系統和方法及儲存裝置 | |
| US9189392B1 (en) | Opportunistic defragmentation during garbage collection | |
| US11630779B2 (en) | Hybrid storage device with three-level memory mapping |
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 | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |