CN111290975A - 使用统一缓存处理读命令与预读命令的方法及其存储设备 - Google Patents
使用统一缓存处理读命令与预读命令的方法及其存储设备 Download PDFInfo
- Publication number
- CN111290975A CN111290975A CN201811496068.8A CN201811496068A CN111290975A CN 111290975 A CN111290975 A CN 111290975A CN 201811496068 A CN201811496068 A CN 201811496068A CN 111290975 A CN111290975 A CN 111290975A
- Authority
- CN
- China
- Prior art keywords
- cache
- container
- unit
- data
- ftl
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000012545 processing Methods 0.000 title abstract description 47
- 230000004044 response Effects 0.000 claims abstract description 56
- 238000003379 elimination reaction Methods 0.000 claims description 29
- 230000008030 elimination Effects 0.000 claims description 28
- 230000010365 information processing Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 22
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 21
- 230000008569 process Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 9
- 238000007689 inspection Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了使用统一缓存处理读命令与预读命令的方法及其存储设备,所公开的用于存储设备的方法包括:响应于接收到读命令,通过读命令指示的逻辑地址查询FTL表,若查询FTL表获得记录第一缓存容器索引的第一FTL条目;则分配空闲的第二缓存单元,将第二缓存单元关联于第一缓存容器;并且,将与第一缓存容器相关联的第一缓存单元的数据复制到第二缓存单元;读出第二缓存单元的数据以响应读命令。
Description
技术领域
本申请涉及存储技术,具体地,涉及使用存储设备的统一缓存处理读命令与预读命令的方法及其存储设备。
背景技术
图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small ComputerSystem Interface,小型计算机***接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速***组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(DynamicRandom Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XPoint存储器等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享CE(,Chip Enable,芯片使能)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作***等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。
为存储设备提供缓存,来提升存储设备的性能。例如,在中国专利申请201710219077.1、201710219096.4与201710219112.X中提供了用于固态存储设备的分布式缓存。在中国专利申请2018112036939、2018111542948、2018112036905与2018111541907中提供了用于存储设备的统一缓存。缓存也可以由主机或存储管理装置提供。
发明内容
本申请意在改进FTL,由FTL统一管理存储设备的地址映射与缓存,从而提升存储设备的性能。
根据本申请的第一方面,提供了根据本申请第一方面的第一用于存储设备的方法,包括:响应于接收到读命令,通过读命令指示的逻辑地址查询FTL表,若查询FTL表获得记录第一缓存容器索引的第一FTL条目;则分配空闲的第二缓存单元,将第二缓存单元关联于第一缓存容器;并且,将与第一缓存容器相关联的第一缓存单元的数据复制到第二缓存单元;读出第二缓存单元的数据以响应读命令。
根据本申请的第一方面的第一用于存储设备的方法,其中,响应于将第二缓存单元关联于第一缓存容器,递增指示第一缓存容器关联的缓存单元数量的引用计数。
根据本申请的第一方面的第一或第二用于存储设备的方法,其中,响应于读出第二缓存单元的数据,撤销第二缓存单元与第一缓存容器的关联关系。
根据本申请的第一方面的第三用于存储设备的方法,其中,响应于撤销第二缓存单元与第一缓存容器的关联关系,递减指示第一缓存容器关联缓存单元数量的引用计数。
根据本申请的第一方面的第一至第四用于存储设备的方法之一,其中,响应于撤销第二缓存单元与第一缓存容器的关联关系,第一缓存容器关联的第一缓存单元的数据为通过预读命令从NVM数据帧地址中读出的数据。
根据本申请的第一方面的第五用于存储设备的方法,还包括,通过预读命令指示的逻辑地址查询FTL表,获得记录第二NVM数据帧地址的第二FTL条目;分配空闲的第三缓存单元,将从第二NVM数据帧地址中读出的数据存储于第三缓存单元;分配空闲的第二缓存容器,并将第三缓存单元关联于第二缓存容器;用第三缓存容器索引更新FTL表中记录NVM数据帧地址的第二FTL条目。
根据本申请的第一方面的第六用于存储设备的方法,其中,响应于更新第二FTL条目,将生成的指示了第三缓存单元关联第二缓存容器的预读数据消息添加至预读队列。
根据本申请的第一方面的第七用于存储设备的方法,还包括:响应于根据接收的读命令查询FTL表获得记录第二缓存容器索引的第二FTL条目,则分配空闲的第四缓存单元,将第四缓存单元关联于第二缓存容器;并且,将与第二缓存容器相关联的第三缓存单元的数据复制到第四缓存单元;读出第四缓存单元的数据以响应读命令。
根据本申请的第一方面的第八用于存储设备的方法,其中,在指定的条件下,释放容纳预读命令指示的数据的第三缓存单元。
根据本申请的第一方面的第九用于存储设备的方法,其中,响应于释放第三存储单元,递减指示第二缓存容器关联的缓存单元数量的引用计数。
根据本申请的第一方面的第十用于存储设备的方法,其中,响应于第二缓存容器的引用计数为0,释放第二缓存容器。
根据本申请的第一方面的第十一用于存储设备的方法,其中,响应于释放第二缓存容器,用第二缓存容器记录的NVM数据帧地址更新记录第二缓存容器索引的第二FTL条目。
根据本申请的第一方面的第六至第十二用于存储设备的方法之一,其中,预读命令是控制部件内部产生的读命令。
根据本申请的第一方面的第一至第十三用于存储设备的方法之一,其中,响应于接收到读命令,通过读命令指示的逻辑地址查询FTL表,若查询FTL表获得记录NVM数据帧地址的第三FTL条目;则分配空闲的第五缓存单元,并且将根据第三FTL条目记录的NVM数据帧地址读出的数据存储于第五缓存单元;读出第五缓存单元的数据以响应读命令。
根据本申请的第一方面的第十四用于存储设备的方法,其中,分配第三缓存容器,并且将第五缓存单元关联于第三缓存容器;用第三缓存容器的索引更新FTL表中记录NVM数据帧地址的第三FTL条目。
根据本申请的第一方面的第十五用于存储设备的方法,其中,将NVM数据帧地址记录于第三缓存容器,响应于第五缓存单元和第三缓存容器被释放,用第三缓存容器中记录的NVM数据帧地址更新FTL表中记录第三缓存容器索引的第三FTL条目。
根据本申请的第一方面的第一至第十六用于存储设备的方法之一,其中,响应于读出第二缓存单元或第五缓存单元的全部数据,向主机发送指示所述读命令完成的消息。
根据本申请的第一方面的第十七用于存储设备的方法,其中,响应于读命令处理完成,释放第二缓存单元或第五缓存单元。
根据本申请的第一方面的第一至第十八用于存储设备的方法,之一,还包括:响应于写命令指示的数据写入缓存的第六缓存单元,向淘汰队列的队尾添加指示第六缓存单元关联于缓存的第六缓存容器的淘汰消息;根据淘汰队列队头的淘汰消息将第七缓存单元的数据写入NVM芯片的第七数据帧,并且用第七数据帧的地址更新FTL表中记录第七缓存容器索引的第七条目,其中淘汰队列队头的淘汰消息指示第七缓存单元关联于第七缓存容器。
根据本申请的第一方面的第十九用于存储设备的方法,还包括,检查淘汰队列队头的淘汰消息所记录的第七缓存单元和第七缓存容器的关联关系是否有效,若有效,则将第七缓存单元的数据写入NVM芯片的第七数据帧,并且用第七数据帧的地址更新FTL表中记录第七缓存容器索引的第七条目。
根据本申请的第一方面的第十九或第二十用于存储设备的方法,其中,检查淘汰队列队头的淘汰消息所记录的第七缓存单元和第七缓存容器的关联关系是否有效,若无效,则丢弃所述淘汰队列队头的淘汰消息,而不将第七缓存单元的数据写入NVM芯片,并且不用第七数据帧的地址更新FTL表。
根据本申请的第一方面的第十九至第二十一用于存储设备的方法之一,其中,若接收到被组合在一起的第一写命令与第二写命令,响应于第一写命令指示的数据写入第八缓存单元以及第二写命令指示的数据写入第九缓存单元,向淘汰队列添加组合淘汰消息;所述组合淘汰消息指示第八缓存单元关联于第八缓存容器,并且指示第九缓存单元关联于第九缓存容器。
根据本申请的第一方面的第二十二用于存储设备的方法,还包括:根据从淘汰队列获取的组合淘汰消息将第十缓存单元的数据写入NVM芯片的第四数据帧,以及将第十一缓存单元的数据写入NVM芯片的第五数据帧,其中所述组合淘汰消息指示第十缓存单元关联于第十缓存容器,并且指示第十一缓存单元关联于第十一缓存容器,以及其中第四数据帧和第五数据帧具有连续的物理地址。
根据本申请的第一方面的第二十三用于存储设备的方法,还包括:用第四数据帧地址更新FTL表中的记录了第十缓存容器的索引的第八条目,用第五数据帧的地址更新FTL表中记录了第十一缓存容器的索引的第九条目。
根据本申请的第一方面的第二十四用于存储设备的方法,还包括,检查从淘汰队列获取的组合淘汰消息所记录的第十缓存单元和第十缓存容器的关联关系以及第十一缓存单元和第十一缓存容器的关联关系是否有效;若从淘汰队列获取的组合淘汰消息所记录的第十缓存单元和第十缓存容器的关联关系以及第十一缓存单元和第十一缓存容器的关联关系均有效,则将第十缓存单元的数据写入NVM芯片的第十数据帧,将第十一缓存单元的数据写入NVM芯片的第十一数据帧。
根据本申请的第一方面的第二十五用于存储设备的方法,其中,若从淘汰队列获取的组合淘汰消息所记录的第十缓存单元和第十缓存容器的关联关系以及第十一缓存单元和第十一缓存容器的关联关系中有一个关联关系无效,则将关联关系有效的缓存单元中的数据写入NVM芯片。
根据本申请的第一方面的第二十五用于存储设备的方法,其中,若从淘汰队列获取的组合淘汰消息所记录的第十缓存单元和第十缓存容器的关联关系以及第十一缓存单元和第十一缓存容器的关联关系均无效,则丢弃所述淘汰消息,而不将第十缓存单元的数据写入NVM芯片,也不将第十一缓存单元的数据写入NVM芯片。
根据本申请的第二方面,提供了根据本申请第二方面的第一信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现上述之一的用于存储设备的方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了固态存储设备的框图;
图2是根据本申请实施例的FTL管理的存储空间的示意图;
图3是本申请实施例的逻辑地址(LBA)空间的示意图;
图4展示了本申请实施例的FTL表;
图5展示了本申请实施例的FTL提供缓存的示意图;
图6A展示了根据本申请实施例向存储设备写入数据的流程图;
图6B展示了根据本申请又一实施例向存储设备写入数据的流程图;
图6C展示了根据本申请另一实施例从存储设备读出数据的流程图;
图7展示了根据本申请实施例的缓存淘汰的技术方案的示意图;
图8A到图8D展示了根据本申请实施例处理写命令的示意图;
图9A到图9E展示了根据本申请又一实施例处理写命令的示意图;
图10展示了根据本申请又一实施例的缓存淘汰的技术方案的示意图;
图11A到图11C展示了根据本申请又一实施例处读命令的示意图;
图12A到图12D展示了根据本申请又一实施例处预读命令与随后的读命令的示意图;
图13A到图13E展示了根据本申请再一实施例处理写命令的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2是根据本申请实施例的FTL管理的存储空间的示意图。
根据本申请的实施例,存储设备102的控制部件204提供FTL。存储设备向主机提供逻辑地址(称为LBA)空间。主机使用逻辑地址访问存储设备。FTL将主机提供的逻辑地址映射为物理地址。
根据本申请的实施例,FTL映射得到的物理地址,部分是访问NVM芯片105的物理地址,而部分是访问DRAM110的物理地址。因而,参看图2,NVM芯片105与DRAM110的部分,提供了由FTL管理的存储空间200。
可选地,除了DRAM 110,诸如SRAM的其他类型的存储器也用于提供由FTL管理的存储空间。
可以理解地,根据本申请又一实施例的FTL,由耦合到存储设备的主机,或者被设置在主机与存储设备之间的存储管理装置提供。
FTL由例如运行在控制部件204的CPU中的软件、固件和/或作为ASIC的部分的硬件实现。
图3是本申请实施例的逻辑地址(LBA)空间的示意图。作为举例,逻辑地址空间是连续的地址空间。FTL维护逻辑地址空间。
图3中从上向下的方向是逻辑地址空间递增的方向。逻辑地址空间包括多个具有相同大小的区域,每个区域被称为小块。FTL表的每个条目(称为FTL条目),记录了逻辑地址空间的小块到物理地址的映射。图3中示出了FTL表的多个条目,包括FTL条目0、FTL条目1……FTL条目5。例如,每个FTL条目对应的逻辑地址空间的大小可以是例如512字节、1KB或4KB。根据逻辑地址空间的地址,索引FTL条目。例如,用逻辑地址空间的地址除以FTL条目对应的逻辑地址空间的大小,所得的商为FTL条目的索引。
图4展示了本申请实施例的FTL表。
FTL表包括多个FTL条目,每个FTL条目对应于小块之一,FTL条目的值记录了为小块提供存储空间的NVM数据帧地址或缓存容器索引。可选地,根据FTL条目的值,识别该值指示NVM数据帧地址还是缓存容器索引。例如,将大于阈值的FTL条目值,映射为NVM数据帧地址,而将不大于阈值的FTL条目值,映射为缓存容器索引。作为又一个例子,在FTL条目中记录标志位,用于指示FTL条目的值指示NVM数据帧地址还是缓存容器索引。
FTL表被存储在例如DRAM 110(也参看图2)或SRAM中。FTL根据访问的逻辑地址,计算出对应的FTL条目的索引,并从FTL条目中得到为小块提供存储空间的NVM数据帧或缓存容器。
NVM数据帧地址,是例如访问NVM芯片的物理页的物理地址、访问NVM芯片的多个组合的物理页的物理地址(组合的物理页是例如,位于相同逻辑单元(LUN)的多个平面(Plane)上的具有相同物理页号的物理页)、访问NVM芯片的物理页内的部分数据单元的物理地址。缓存容器索引是例如DRAM中的缓存单元的地址或缓存单元的描述符的地址。缓存单元是例如DRAM或SRAM中的一段存储空间。缓存单元描述符用于描述缓存单元。缓存容器用于记录缓存单元描述符。
图5展示了本申请实施例的FTL提供缓存的示意图。作为举例,FTL将逻辑地址空间映射到一个或多个NVM芯片105的部分(记为NVM芯片510)与DRAM 110的部分(记为统一缓存520)。
NVM芯片510的存储空间包括多个物理块。NVM芯片510的存储空间被组织为NVM数据帧(参看块512)。大块512包括多个NVM数据帧。NVM数据帧的大小同小块的大小相同,从而一个小块对应的逻辑地址空间所存储的数据可被记录在一个NVM数据帧中。
继续参看图5,统一缓存520的存储空间被组织为缓存单元。缓存单元是例如统一缓存520的一段存储空间。缓存单元的大小同小块的大小相同,从而一个小块对应的逻辑地址空间所存储的数据可被记录在一个缓存单元中。
返回参看图4,FTL条目的值记录的缓存容器的索引指示了缓存容器。根据缓存容器可访问关联于缓存容器的缓存单元。
缓存容器描述了同其关联的一个或多个缓存单元。缓存单元可被分配给缓存容器,或者缓存单元同缓存容器具有被指定的关联关系。例如,缓存容器记录了关联于缓存容器的一个或多个缓存单元的缓存单元描述符,缓存单元描述符记录了缓存单元的地址与缓存单元的工作状态。
继续参看图5,FTL条目0、FTL条目2、FTL条目3的值与FTL条目4的值,指示了位于NVM芯片510的NVM数据帧地址,而FTL条目1与FTL条目5的值,指示了位于统一缓存520的缓存容器的索引。从而FTL根据逻辑地址得到FTL条目,并根据FTL条目的值,而提供为逻辑地址空间的小块提供存储空间的物理地址。
图6A展示了根据本申请实施例向存储设备写入数据的流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(610)。存储设备的控制部件根据逻辑地址查询FTL表(612),获取同逻辑地址对应的物理地址。
可选地,写命令指示了逻辑地址空间的多个小块,相应地,根据每个小块的逻辑地址查询FTL表以得到对应的物理地址。为了清楚的目的,在下面的一个或多个例子中,以写命令访问单一小块为例,描述根据本申请的实施例。
识别所得到的同逻辑地址对应的物理地址是否指示缓存容器索引(614)。若FTL提供的同写命令访问的逻辑地址的物理地址是缓存容器索引,则用该缓存容器索引访问对应缓存容器的缓存单元,以承载写命令要写入的数据(616)。可选地,将写命令要写入的数据写入缓存单元后,向发出写命令的主机指示写命令处理完成。
若FTL提供的同写命令访问的逻辑地址对应的物理地址不是缓存容器索引(614)(例如,是NVM数据帧地址,或其他内容),则为该逻辑地址分配新的缓存容器(618),将写命令要写入的数据写入新分配的缓存容器的缓存单元(620)。还在同逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(622)。
根据本申请的实施例,可选地,在需要时或周期性地,将一个或多个FTL条目所指示的缓存容器的缓存单元中存储的数据,写入NVM芯片。响应于缓存单元中存储的数据被写入NVM芯片,用NVM芯片的NVM数据帧地址,替换FTL条目中的缓存容器索引。从而,直到将FTL表条目中记录的缓存容器索引修改为指示NVM芯片的数据单元的物理地址之前,FTL表条目记录的始终是缓存容器索引,这意味着在这期间,若接收到访问这些FTL表条目的读命令或写命令,将命中统一缓存,并用缓存容器索引记录的缓存单元来响应读命令或写命令。
图6B展示了根据本申请又一实施例向存储设备写入数据的流程图。
存储设备获取主机提供的写命令,写命令指示了逻辑地址(630)。存储设备的控制部件根据逻辑地址查询FTL表(632),获取同逻辑地址对应的物理地址。
识别所得到的同逻辑地址对应的物理地址是否指示缓存容器索引(634)。若FTL提供的同写命令访问的逻辑地址的物理地址是缓存容器索引,则进一步识别该缓存容器索引对应缓存容器的缓存单元是否正在被使用(636)。缓存单元正在被使用,例如,根据其他写命令正向该缓存单元写入数据,正在从该缓存单元读出数据,或者控制部件正在将该缓存单元的数据写入NVM芯片。若该缓存单元当前未被使用,用该缓存单元承载写命令要写入的数据(638)。若该缓存单元当前正在被使用,则为该缓存容器分配新的缓存单元(640),并用该新的缓存单元承载写命令要写入的数据(642)。
若FTL提供的同写命令访问的逻辑地址的物理地址不是缓存容器索引(634)(例如,是NVM数据帧地址,或其他内容),则为该逻辑地址分配新的缓存容器(644),将写命令要写入的数据写入新分配的缓存容器的缓存单元(646)。还在同逻辑地址对应的FTL条目中记录该新分配的缓存容器的索引(648)。
图6C展示了根据本申请另一实施例从存储设备读出数据的流程图。
存储设备获取主机提供的读命令,读命令指示了逻辑地址(650)。存储设备的控制部件根据逻辑地址查询FTL表(652),获取同逻辑地址对应的物理地址。
识别所得到的同逻辑地址对应的物理地址指示缓存容器索引、NVM数据帧地址还是其他类型的物理地址(654)。若FTL提供的同读命令访问的逻辑地址的物理地址是缓存容器索引,则访问缓存容器的缓存单元,从缓存单元获取数据作为对读命令的响应(656)。若FTL提供的物理地址是NVM数据帧地址,则向NVM芯片发送读取命令来读出数据(658)。可选地,FTL条目中记录了其他类型的地址,例如指示所读取的逻辑地址尚未被写入数据,则向主机指示读命令处理出错,或者以指定的值(例如全0)作为对读命令的响应。
图7展示了根据本申请实施例的缓存淘汰的技术方案的示意图。
存储设备的控制部件(也参看图1)包括主机接口760、命令处理单元765与介质接口770。主机接口760、命令处理单元765与介质接口770均可由CPU、专用硬件或其组合实现。
主机接口760接收访问存储设备的命令。命令处理单元765从主机接口760获取待处理的命令,根据命令要访问的地址指示介质接口770生成一个或多个操作NVM芯片740的命令。作为举例,命令处理单元765用获取的命令所指示的逻辑地址访问FTL表750,以得到同逻辑地址对应的物理地址,并用物理地址访问NVM芯片740。
本领域技术人员可以理解地,主机接口760接收的命令可能访问一个或多个FTL条目所对应的逻辑地址空间。以及命令处理单元765可能将从主机接口760接收的命令改变形态(例如,根据FTL条目所对应的逻辑地址空间大小切分命令),并处理改变形态的命令。为了清楚的目的,以主机接口760接收的IO命令访问单一FTL条目为例来描述根据本申请的实施例。
FTL表750的条目记录NVM数据帧地址或者缓存容器索引。图7中,FTL条目1与FTL条目5记录了缓存容器索引,其他FTL条目记录了NVM数据帧地址。
统一缓存710包括多个缓存容器。FTL表750的FTL条目记录的缓存容器索引指示了统一缓存710的缓存容器。参看图7,FTL条目1记录的缓存容器索引,指示了统一缓存710的缓存容器712,而FTL条目5的缓存容器索引指示了缓存容器716。缓存容器714未被任何FTL条目索引,是未被使用的空闲缓存容器。
统一缓存710还包括多个缓存单元。缓存容器关联于一个或多个缓存单元。例如,缓存容器712关联于缓存单元722,缓存容器716关联于缓存单元726与缓存单元727,缓存单元724未被关联于任何缓存容器,是未被使用的空闲缓存单元。
根据本申请的实施例,还包括淘汰队列780。淘汰队列780容纳用于统一缓存710的淘汰消息。作为举例,响应于缓存单元727承载了写命令指示的要写入存储设备的数据,向淘汰队列780的队尾添加淘汰消息787。淘汰消息787指示要将缓存单元727承载的数据写入NVM芯片740。可选地,淘汰消息787还指示缓存单元727关联于缓存容器716。
淘汰是将统一缓存710的缓存单元中的数据写入NVM芯片的过程。在淘汰过程中,还为缓存单元中的数据分配用于NVM芯片的NVM数据帧地址,以及将缓存单元中的数据根据NVM数据帧地址写入NVM芯片。还在FTL表的条目中记录所分配的NVM数据帧地址。从而在淘汰过程完成后,FTL条目从记录缓存容器地址变为记录NVM数据帧地址。
向淘汰队列780的队尾添加淘汰消息,而从淘汰队列780的队头取出淘汰消息,并根据淘汰消息向NVM芯片写入缓存单元所记录的数据。
淘汰消息在淘汰队列780中从队尾变为队头需要一段时间,这段时间中,淘汰消息所指示的缓存单元的数据可能变为无效(例如,因为向逻辑地址写入新数据使得缓存单元所对应的缓存容器被更新),对于从淘汰队列780的队头取出的淘汰消息,通过检查单元790检查所取出的淘汰消息。检查单元790检查淘汰消息中指示的缓存单元当前是否关联于缓存容器之一,或者淘汰消息所指示的缓存容器当前记录的缓存单元,同淘汰消息所指示的缓存单元是否相同。如果淘汰消息所指示的缓存单元当前未被任何缓存容器所记录或关联,检查单元790丢弃该淘汰消息,并指示统一缓存710释放该淘汰消息所指示的缓存单元。如果淘汰消息所指示的缓存单元当前被某缓存容器所记录或关联,检查单元790指示介质接口770将淘汰消息所指示的缓存单元的数据写入NVM芯片(例如,写入NVM数据帧742)。以及还用NVM数据帧742的NVM数据帧地址,更新索引了该缓存单元所对应的缓存容器的FTL条目(例如,FTL条目2)。以及该缓存容器也被释放。
根据本申请的实施例,统一缓存710向淘汰队列780添加淘汰消息的操作,与检查单元790从淘汰队列取出淘汰消息的操作被并行或并发处理。以及向淘汰队列780添加淘汰消息的数量与从淘汰队列780取出淘汰消息的数量的比例可被设置。例如,设置添加淘汰消息的数量与取出淘汰消息的数量的比例等于1,使得淘汰队列中容纳的淘汰消息数量基本稳定。可选地,还根据淘汰队列中容纳的淘汰消息的数量调节该比例,若淘汰队列中的淘汰消息过多或增速过快,降低该比例,反之则增加该比例。依然可选地,在一段时间内,仅向淘汰队列添加淘汰消息而不取出淘汰消息,以在淘汰队列中容纳一定数量的淘汰消息,以及使得淘汰队列中的淘汰消息保持在一定数量,比如,每向淘汰队列添加一个淘汰消息,则相应地从淘汰队列取出一个淘汰消息。
通过本申请实施例的缓存淘汰方案,对统一缓存710的淘汰操作是持续发生的,而非依据统一缓存710的缓存容器或缓存单元的使用情况而发生,使得淘汰队列780总有空间容纳淘汰消息,从而在指定的IO命令负载下,统一缓存710总能提供可用的缓存容器与缓存单元来响应写命令。使得命令处理单元765处理写命令时,所有的写命令(无论其访问的逻辑地址对应的FTL条目是否记录了缓存容器索引)都通过统一缓存710处理,缩短了写命令的处理延迟,也使得所有或绝大多数写命令的处理延迟基本一致,而避免了多个写命令的处理延迟的抖动。
进一步地,根据本申请的实施例,缓存容器的数量是有限的,以满足存储设备的控制部件的硬件资源限制,而缓存单元由例如外部于控制部件的存储器提供,缓存单元的数量多于缓存容器,从而进一步使得统一缓存在同一时刻能响应的写命令多于缓存容量数量。
依然进一步地,介质接口770的写命令处理能力是已知的,统一缓存710的写命令带宽依赖于介质接口770的处理能力,从而命令处理单元765根据该处理能力来接收写命令,就总能得到统一缓存710的立即响应,并使得存储设备对所有写命令的处理延迟基本一致,降低了处理延迟的波动性,提高了服务质量。
图8A到图8D展示了根据本申请实施例处理写命令的示意图。
参看图8A,命令处理单元865从主机接口860接收了写命令。命令处理单元865根据写命令指示的逻辑地址访问FTL表850。作为举例,写命令的逻辑地址索引了FTL条目2。FTL条目2记录了NVM数据帧地址,意味着该写命令未命中统一缓存810的任何缓存容器。统一缓存810的缓存容器812与缓存容器814正在被使用,其各自关联于缓存单元822与缓存单元824。
参看图8B,响应于写命令未命中统一缓存810的任何缓存容器,为其分配空闲的缓存容器816,以及分配空闲的缓存单元826。将缓存容器816关联于缓存单元826,例如在缓存容器816中记录缓存单元826的索引。通过主机接口860将写命令要写入存储设备的数据搬移到缓存单元826,以及将FTL条目2记录的NVM数据帧地址更新为指示缓存容器816的缓存容器索引。以及可选地,缓存容器816还记录其引用计数为1,来指示其关联的缓存单元的数量。至此,向主机指示该写命令处理完成。
以及,还向淘汰队列880添加淘汰消息887,所添加的淘汰消息887指示了缓存单元826与同其关联的缓存容器816。
继续参看图8C,一段时间之后,淘汰消息887成为淘汰队列的队头。检查单元890从淘汰队列880的队头取出淘汰消息887,并检查淘汰消息887所记录的缓存容器816与缓存单元826的关联关系是否依然有效。作为举例,检查单元890访问缓存容器816,识别出缓存容器816当前所记录的缓存单元依然是缓存单元826,从而识别出淘汰消息887所记录的缓存容器816与缓存单元826的关联关系依然有效。据此,检查单元890指示介质接口870,将缓存单元826中记录的数据写入NVM芯片840。作为举例,为缓存单元826的数据分配NVM芯片840的数据帧842。
继续参看图8D,响应于缓存单元826的数据被写入NVM数据帧842,更新FTL条目2,在FTL条目2中记录NVM数据帧842的NVM数据帧地址。以及释放缓存单元826,从而缓存单元826可被分配给其他写命令或其他缓存容器。以及响应于缓存单元826被释放,原本关联于缓存单元826的缓存容器816的引用计数被递减,得到的新引用计数为0。影响于FTL条目2不再索引缓存容器816,缓存容器816的引用计数为0,释放缓存容器816。释放后的缓存容器816可被分配给其他写命令或其他缓存容器。
图9A到图9E展示了根据本申请又一实施例处理写命令的示意图。
参看图9A,命令处理单元965从主机接口960接收了写命令。命令处理单元965根据写命令指示的逻辑地址访问FTL表950。作为举例,写命令的逻辑地址索引了FTL条目1。FTL条目1记录了缓存容器索引,意味着该写命令命中统一缓存910的缓存容器912。统一缓存910的缓存容器912关联于缓存单元922。用于缓存单元922的淘汰消息982已经位于淘汰队列980中。淘汰消息982指示了缓存单元922同缓存容器912相关联。而缓存容器912的引用计数为1,缓存单元922引用了缓存容器912。
参看图9B,响应于写命令命中统一缓存910的缓存容器912,为缓存容器912分配空闲的缓存单元926。将缓存容器912关联于缓存单元926,例如在缓存容器912中记录缓存单元926的索引。通过主机接口960将写命令要写入存储设备的数据搬移到缓存单元926。以及使缓存容器912的引用递增为2,来指示有两个缓存单元(922与926)。至此,向主机指示该写命令处理完成。
以及,还向淘汰队列980添加淘汰消息984,所添加的淘汰消息984指示了缓存单元926与同其关联的缓存容器912。由于FTL条目1依然记录缓存容器912的索引,因而无须更新FTL条目1。
根据本申请的实施例,响应于写命令命中缓存容器,分配空闲的缓存单元(例如,缓存单元926,参看图9B)来承载写命令要写的数据,而被命中的缓存容器的其他缓存单元(例如,缓存单元922)的数据没有被更新,使得对该其他缓存单元的访问不被影响,该缓存单元正在处理的读命令或写命令的数据传输无须被打断。
继续参看图9C,一段时间之后,淘汰消息982成为淘汰队列的队头。检查单元990从淘汰队列980的队头取出淘汰消息982,并检查淘汰消息982所记录的缓存容器912与缓存单元922的关联关系是否依然有效。在图9C的例子中,检查单元990访问缓存容器912,识别出缓存容器912当前所记录的缓存单元是缓存单元926而非淘汰消息982所指示的缓存单元922,从而识别出淘汰消息982所记录的缓存容器912与缓存单元922的关联关系已失效。据此,检查单元990丢弃淘汰消息982,而不将淘汰消息982所指示的缓存单元922所容纳的数据写入NVM芯片。以及检查单元990还释放缓存单元922,从而缓存单元922可被分配给其他缓存容器。进一步地,响应于缓存单元922被释放,引用缓存容器912的缓存单元减少,使缓存容器912的引用计数递减为1。
继续参看图9D,一段时间之后,淘汰消息984成为淘汰队列980的队头。检查单元990从淘汰队列980的队头取出淘汰消息984,并检查淘汰消息984所记录的缓存容器912与缓存单元926的关联关系是否依然有效。在图9D的例子中,检查单元990访问缓存容器912,识别出缓存容器912当前所记录的缓存单元是缓存单元926,从而识别出淘汰消息982所记录的缓存容器912与缓存单元926的关联关系有效。据此,检查单元990指示介质接口970,将缓存单元926中记录的数据写入NVM芯片940。作为举例,为缓存单元926的数据分配NVM芯片940的数据帧942。
继续参看图9E,响应于缓存单元926的数据被写入NVM数据帧942,更新FTL条目1,在FTL条目1中记录NVM数据帧942的NVM数据帧地址。以及释放缓存单元926,从而缓存单元926可被分配给其他写命令或其他缓存容器。以及响应于缓存单元926被释放,原本关联于缓存单元926的缓存容器912的引用计数被递减,得到的新引用计数为0。影响于FTL条目1不再索引缓存容器912,也没有其他FTL条目引用缓存容器912,缓存容器912的引用计数为0,从而释放缓存容器912。释放后的缓存容器912可被分配给其他写命令或其他缓存容器。
图10展示了根据本申请又一实施例的缓存淘汰的技术方案的示意图。
存储设备的控制部件(也参看图7)包括主机接口760、命令处理单元765与介质接口770。
统一缓存1010包括多个缓存容器(1012、1014与1016)。参看图10,FTL条目1记录的缓存容器索引,指示了统一缓存1010的缓存容器1012,而FTL条目5的缓存容器索引指示了缓存容器1016。缓存容器1014未被任何FTL条目索引,是未被使用的空闲缓存容器。
统一缓存1010包括多个缓存单元。例如,缓存容器1012关联于缓存单元1022,缓存容器1016关联于缓存单元1026与缓存单元1027,缓存单元1024未被关联于任何缓存容器,是未被使用的空闲缓存单元。
根据图10的实施例,包括淘汰队列1080、预读队列1082与热数据队列1084。淘汰队列1080容纳用于统一缓存1010的淘汰消息。一些缓存单元容纳的数据是热数据。热数据是近期很可能被再次访问的数据,从而希望将热数据保留在统一缓存1010中。响应于将热数据写入了缓存单元(例如,缓存单元1024),除了将缓存单元1024关联于缓存容器之一,将用于缓存单元1024的淘汰消息不添加到淘汰队列1080,而是将其添加到热数据队列1084。从而在热数据队列1084中承载的是用于热数据的淘汰消息。检查单元1090以不同的策略从淘汰队列1080与热数据队列1084获取淘汰消息。例如,检查单元1090按N:1的比例分别从淘汰队列1080与热数据队列1084获取淘汰消息,其中N是远大于1的自然数。从而使得热数据被更长时间的保留在缓存单元中。对于从热数据队列1084取出的淘汰消息,检查单元1090按从淘汰队列获取的淘汰消息的相同方式处理。依然可选地,通常情况,检查单元仅从淘汰队列1080获取淘汰消息,而不从热数据队列1084获取淘汰消息,而仅在指定条件下(例如,收到主机的指示、存储设备掉电、或者热数据队列内的淘汰消息数量大于阈值),才从热数据队列1084获取淘汰消息。
继续参看图10,一些缓存单元容纳的数据不是来自主机的写命令,而是来自控制部件发起的从NVM芯片读出数据的命令,例如,控制部件在预取操作或垃圾回收操作中产生的读出数据的命令。将这些缓存单元中容纳的数据称为预读数据。预读数据不需要被写入NVM芯片。因而也无须对预读数据执行淘汰过程。响应于将预读数据写入缓存单元,生成预读数据消息,并将预读数据消息添加到预读队列1082。作为举例,预读数据消息具有同淘汰消息同样的结构或内容。检查单元1090不从预读队列1082获取预读数据消息。在一些情况下,存储了预读数据的缓存单元被释放。例如,从预读队列1082获取预读数据消息,根据预读数据消息获取存储了预读数据的缓存单元,并将其释放。例如,响应于估计预读数据不再被使用、存储设备掉电等情况,而释放存储了预读数据的缓存单元。
可以理解地,由于预读队列1082中的消息无须被按顺序取出,从而可将预读队列1082以其他数据结构实现,例如,数组、链表、堆栈等。依然可以理解地,可采用其他数据结构来存储淘汰消息。
依然可选地,提供其他数量或种类的队列来容纳对应于缓存单元被填充了数据的淘汰消息。检查单元1090为不同的队列提供不同的处理策略。例如,向缓存单元填充的数据伴随有流标识符,根据流标识符选择队列,从而承载来自不同流的数据的缓存单元所对应的淘汰消息被添加到不同的队列。依然可选地,将一个或多个流绑定到队列之一,而将其他一个或多个流绑定到另一队列。
图11A到图11C展示了根据本申请又一实施例处读命令的示意图。
参看图11A,命令处理单元1165从主机接口1160接收了读命令。命令处理单元1165根据读命令指示的逻辑地址访问FTL表1150。作为举例,读命令的逻辑地址索引了FTL条目1。FTL条目1记录了缓存容器索引,意味着该读命令命中统一缓存1110的缓存容器1112。统一缓存1110的缓存容器1112关联于缓存单元1122。当前缓存容器1112的引用计数值为1,缓存单元1122引用了缓存容器1112。
参看图11B,响应于读命令命中统一缓存1110的缓存容器1112,虽然缓存容器1112所关联的缓存单元1122中存储了能够响应读命令的数据,然而根据本申请的实施例,不使用缓存单元1122直接响应该读命令,而是为该读命令分配空闲的缓存单元1126。将缓存单元1122的数据复制到缓存单元1126。在数据复制期间,缓存容器1112的引用计数为2,以指示缓存单元1122与缓存单元1126均引用缓存容器1112。
继续参看图11C,在将缓存单元1122的数据复制到缓存单元1126完成后,将缓存单元1126的数据通过主机接口1160传输给主机,作为对读命令的响应。以及缓存容器1112不再关联于缓存单元1126,而依然关联于缓存单元1122,缓存容器1112的引用计数变为1。响应于缓存单元1126的数据被传输给主机,向主机指示读命令处理完成,以及也释放缓存单元1126。
用缓存单元1126来向主机传输数据,使得对读命令的响应过程,不影响缓存单元1122的其他处理。在用缓存单元1126响应读命令的过程中,缓存单元1122可被淘汰,也可被更新。以及若多个读命令持续命中缓存容器1112,为每个读命令分配新的缓存单元,并向新缓存单元复制缓存单元1122的数据,这一过程也使得缓存容器的引用计数不会变为零,从而缓存单元1122不会被使用,而能持续响应读命令。
根据本申请的一个实施例,若命令处理单元根据收到的读命令的逻辑地址,获得的FTL条目记录的是NVM数据帧地址,则意味着读命令未命中任何缓存容器。命令处理单元根据FTL条目记录的NVM数据帧地址指示介质接口从NVM芯片读出数据。可选地,还为读命令分配可用的缓存单元,以容纳从NVM芯片读出的数据。然而,分配的缓存单元不被关联到任何缓存容器。响应于将缓存单元中的数据通过主机接口提供给主机,释放缓存单元。
根据本申请的有一个实施例,若读命令未命中任何缓存容器,根据FTL条目记录的NVM数据帧地址指示介质接口从NVM芯片读出数据。以及分配缓存单元与相关联的缓存容器,缓存单元用于承载从NVM芯片读出的数据,并将缓存单元中的数据提供给主机,以及还用分配的缓存容器索引更新FTL表。在缓存容器中记录NVM数据帧的地址。以及响应于缓存容器与缓存单元被释放,用缓存容器中记录的NVM数据帧地址再次更新FTL表。
图12A到图12D展示了根据本申请又一实施例处预读命令与随后的读命令的示意图。
参看图12A,命令处理单元1265处理预读命令。预读命令不是由主机发起,而是存储设备的控制部件自己发起。作为举例,命令处理单元1265预读命令指示的逻辑地址访问FTL表1250。预读命令的逻辑地址索引了FTL条目2。FTL条目2记录了指示NVM数帧1242的NVM数据帧地址。根据FTL条目2记录的NVM数据帧地址,从NVM芯片1240读出数据。在统一缓存1210中分配空闲的缓存单元1224来承载从NVM数据帧1242读出的数据。
参看图12B,分配空闲的缓存容器1214,将缓存单元1224关联到缓存容器1214。以及在FTL条目2中记录缓存容器1214的缓存容器索引。可选地,还生成预读数据消息并添加到预读队列1282。预读数据消息指示了缓存单元1224关联到缓存容器1214。
预读队列1282记录那些被用于容纳预读数据的缓存单元以及同其关联的缓存容器。容纳预读数据的缓存单元无须被淘汰。
可选地,在用于处理预读命令中的缓存容器1214中还记录预读命令所访问的NVM数据帧地址。响应于缓存容器1214被释放,在记录缓存容器1214的索引的FTL条目中记录缓存容器1214所记录的NVM数据帧地址。
继续参看图12C,命令处理单元1265从主机接口1260收到了读命令。根据读命令的逻辑地址访问FTL表1250,得到FTL条目2。当前,FTL条目2记录了缓存容器1214的缓存容器索引,意味着该读命令命中了的缓存容器1214。而缓存容器1214所关联的缓存单元1224中记录的是之前通过预读命令所读取的数据。响应于读命令命中缓存容器1214,而是为该读命令分配空闲的缓存单元1226。将缓存单元1224的数据复制到缓存单元1226。响应于数据复制的开始,使缓存容器1214的引用计数递增。
继续参看图12D,在将缓存单元1224的数据复制到缓存单元1226完成后,将缓存单元1226的数据通过主机接口1260传输给主机,作为对读命令的响应。以及使缓存容器1214的引用计数递减。
可选地,在一段时间后,释放容纳预读数据的缓存单元1224。以及作为响应,使缓存容器1214的引用计数递增。在缓存容器1214的引用计数为0时,释放缓存容器1214。以及还用缓存容器1214记录的NVM数据帧地址更新FTL条目2。
图13A到图13E展示了根据本申请再一实施例处理写命令的示意图。
参看图13A,命令处理单元1365从主机接口1360接收了被组合在一起的两个写命令。命令处理单元1365根据两个写命令的每个指示的逻辑地址访问FTL表1350。作为举例,两个写命令的逻辑地址分别索引了FTL条目1与FTL条目2。FTL条目1记录了缓存容器1312的缓存容器索引,意味着该写命令命中统一缓存1310的缓存容器1312。缓存容器1312关联于缓存单元1322。FTL条目2记录了NVM数据帧地址,意味着该另一写命令未命中缓存容器索引。
参看图13B,响应于写命令命中缓存容器1312,为缓存容器1312分配空闲的缓存单元1223。将缓存容器1312关联于缓存单元1223。通过主机接口1360将写命令要写入存储设备的数据搬移到缓存单元1323。
对于访问FTL条目2的该另一写命令,分配空闲缓存单元1326与空闲缓存容器索引1316,将缓存容器1316关联于缓存单元1326,通过主机接口1360将该另一写命令要写入存储设备的数据搬移到缓存单元1326。还在FTL条目2中记录缓存容器1316的缓存容器索引。
以及,还向淘汰队列1380添加淘汰消息1387,所添加的淘汰消息1387指示了缓存单元1323与同其关联的缓存容器1312,以及还指示了缓存单元1326与同其关联的缓存单元1316。
参看图13B,淘汰消息队列1380中还有淘汰消息1382,其指示缓存单元1322与同其关联的缓存容器1312。
继续参看图13C,一段时间之后,淘汰消息1382成为淘汰队列的队头。检查单元1390从淘汰队列1380的队头取出淘汰消息1382,并检查淘汰消息1382所记录的缓存容器1312与缓存单元1322的关联关系是否依然有效。在图13C的例子中,检查单元识别出淘汰消息1382所记录的缓存容器1312与缓存单元1322的关联关系已失效。据此,检查单元1390丢弃淘汰消息1382,而不将淘汰消息1382所指示的缓存单元1322所容纳的数据写入NVM芯片。以及检查单元1390还释放缓存单元1322。
继续参看图13D,一段时间之后,淘汰消息1387成为淘汰队列1380的队头。检查单元1390从淘汰队列1380的队头取出淘汰消息1387,并检查淘汰消息1387所记录的缓存容器1316与缓存单元1326的关联关系是否依然有效,以及缓存容器1312与缓存单元1323的关联关系是否依然有效。在图13D的例子中,检查单元1390识别出缓存容器1316与缓存单元1326的关联关系,以及缓存容器1312与缓存单元1323的关联关系,当前均有效。据此,检查单元1390指示介质接口1370,将缓存单元1326有缓存单元1323中记录的数据写入NVM芯片1340。作为举例,为缓存单元1326的数据分配NVM芯片1340的数据帧1342,以及为缓存单元1323的数据分配NVM芯片1340的数据帧1344,其中,NVM数据帧1342与NVM数据帧1344具有连续的地址,并可利用单一读命令从读出NVM数据帧1342与NVM数据帧1344的数据。
继续参看图13E,响应于缓存单元1326的数据被写入NVM数据帧1342,更新FTL条目1,在FTL条目1中记录NVM数据帧1342的NVM数据帧地址。以及释放缓存单元1326。以及响应于缓存单元1326被释放,原本关联于缓存单元1326的缓存容器1316也被释放。响应于缓存单元1323的数据被写入NVM数据帧1344,更新FTL条目2,在FTL条目2中记录NVM数据帧1344的NVM数据帧地址。以及释放缓存单元1323与缓存容器1312也被释放。
根据本申请的实施例还提供了一种存储设备,执行本申请实施例提供的任意一种处理方法。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被存储设备的控制器运行时,使得存储设备执行根据本申请实施例提供的任意一种处理方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种用于存储设备的方法,包括:
响应于接收到读命令,通过读命令指示的逻辑地址查询FTL表,若查询FTL表获得记录第一缓存容器索引的第一FTL条目;
则分配空闲的第二缓存单元,将第二缓存单元关联于第一缓存容器;
并且,将与第一缓存容器相关联的第一缓存单元的数据复制到第二缓存单元;
读出第二缓存单元的数据以响应读命令。
2.根据权利要求1所述的用于存储设备的方法,还包括,响应于收到预读命令,通过预读命令指示的逻辑地址查询FTL表,获得记录第二NVM数据帧地址的第二FTL条目;
分配空闲的第三缓存单元,将从第二NVM数据帧地址中读出的数据存储于第三缓存单元;
分配空闲的第二缓存容器,并将第三缓存单元关联于第二缓存容器;
用第三缓存容器索引更新FTL表中记录NVM数据帧地址的第二FTL条目。
3.根据权利要求1或2所述的用于存储设备的方法,其中,响应于接收到读命令,通过读命令指示的逻辑地址查询FTL表,若查询FTL表获得记录NVM数据帧地址的第三FTL条目;
则分配空闲的第五缓存单元,并且将根据第三FTL条目记录的NVM数据帧地址读出的数据存储于第五缓存单元;
读出第五缓存单元的数据以响应读命令。
4.根据权利要求3所述的用于存储设备的方法,其中,分配第三缓存容器,并且将第五缓存单元关联于第三缓存容器;
用第三缓存容器的索引更新FTL表中记录NVM数据帧地址的第三FTL条目。
5.根据权利要求4所述的用于存储设备的方法,其中,将NVM数据帧地址记录于第三缓存容器,响应于第五缓存单元和第三缓存容器被释放,用第三缓存容器中记录的NVM数据帧地址更新FTL表中记录第三缓存容器索引的第三FTL条目。
6.根据权利要求1或2所述的用于存储设备的方法,还包括:
响应于写命令指示的数据写入缓存的第六缓存单元,向淘汰队列的队尾添加指示第六缓存单元关联于缓存的第六缓存容器的淘汰消息;
根据淘汰队列队头的淘汰消息将第七缓存单元的数据写入NVM芯片的第七数据帧,并且用第七数据帧的地址更新FTL表中记录第七缓存容器索引的第七条目,其中淘汰队列队头的淘汰消息指示第七缓存单元关联于第七缓存容器。
7.根据权利要求6所述的用于存储设备的方法,还包括:
检查淘汰队列队头的淘汰消息所记录的第七缓存单元和第七缓存容器的关联关系是否有效,若有效,则将第七缓存单元的数据写入NVM芯片的第七数据帧,并且用第七数据帧的地址更新FTL表中记录第七缓存容器索引的第七条目。
8.根据权利要求6所述的用于存储设备的方法,其中,若接收到被组合在一起的第一写命令与第二写命令,响应于第一写命令指示的数据写入第八缓存单元以及第二写命令指示的数据写入第九缓存单元,向淘汰队列添加组合淘汰消息;
所述组合淘汰消息指示第八缓存单元关联于第八缓存容器,并且指示第九缓存单元关联于第九缓存容器。
9.根据权利要求8所述的用于存储设备的方法,还包括:
根据从淘汰队列获取的组合淘汰消息将第十缓存单元的数据写入NVM芯片的第四数据帧,以及将第十一缓存单元的数据写入NVM芯片的第五数据帧,其中所述组合淘汰消息指示第十缓存单元关联于第十缓存容器,并且指示第十一缓存单元关联于第十一缓存容器,以及其中第四数据帧和第五数据帧具有连续的物理地址。
10.一种信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1-9之一的用于存储设备的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811496068.8A CN111290975A (zh) | 2018-12-07 | 2018-12-07 | 使用统一缓存处理读命令与预读命令的方法及其存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811496068.8A CN111290975A (zh) | 2018-12-07 | 2018-12-07 | 使用统一缓存处理读命令与预读命令的方法及其存储设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111290975A true CN111290975A (zh) | 2020-06-16 |
Family
ID=71029790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811496068.8A Pending CN111290975A (zh) | 2018-12-07 | 2018-12-07 | 使用统一缓存处理读命令与预读命令的方法及其存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111290975A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930517A (zh) * | 2020-09-18 | 2020-11-13 | 北京中科立维科技有限公司 | 一种高性能自适应垃圾收集方法和计算机*** |
CN113721838A (zh) * | 2021-07-22 | 2021-11-30 | 成都忆芯科技有限公司 | 用于存储设备的写、读数据方法、存储控制器以及dma引擎 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1549486A1 (de) * | 1966-12-27 | 1971-03-04 | Ibm | Verfahren zur Datenuebertragung zwischen mindestens einer zentralen Recheneinheit und mehreren externen Speichern |
CN1538284A (zh) * | 2003-04-14 | 2004-10-20 | ��ʽ���������Ƽ� | 存储设备 |
JP2010191983A (ja) * | 2010-04-12 | 2010-09-02 | Renesas Electronics Corp | 記憶装置 |
US8464001B1 (en) * | 2008-12-09 | 2013-06-11 | Nvidia Corporation | Cache and associated method with frame buffer managed dirty data pull and high-priority clean mechanism |
CN107797759A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 访问缓存信息的方法、装置与驱动器 |
CN107797934A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 处理去分配命令的方法与存储设备 |
CN107885456A (zh) * | 2016-09-29 | 2018-04-06 | 北京忆恒创源科技有限公司 | 减少io命令访问nvm的冲突 |
CN108664212A (zh) * | 2017-03-31 | 2018-10-16 | 北京忆恒创源科技有限公司 | 固态存储设备的分布式缓存 |
-
2018
- 2018-12-07 CN CN201811496068.8A patent/CN111290975A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1549486A1 (de) * | 1966-12-27 | 1971-03-04 | Ibm | Verfahren zur Datenuebertragung zwischen mindestens einer zentralen Recheneinheit und mehreren externen Speichern |
CN1538284A (zh) * | 2003-04-14 | 2004-10-20 | ��ʽ���������Ƽ� | 存储设备 |
US8464001B1 (en) * | 2008-12-09 | 2013-06-11 | Nvidia Corporation | Cache and associated method with frame buffer managed dirty data pull and high-priority clean mechanism |
JP2010191983A (ja) * | 2010-04-12 | 2010-09-02 | Renesas Electronics Corp | 記憶装置 |
CN107797759A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 访问缓存信息的方法、装置与驱动器 |
CN107797934A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 处理去分配命令的方法与存储设备 |
CN107885456A (zh) * | 2016-09-29 | 2018-04-06 | 北京忆恒创源科技有限公司 | 减少io命令访问nvm的冲突 |
CN108664212A (zh) * | 2017-03-31 | 2018-10-16 | 北京忆恒创源科技有限公司 | 固态存储设备的分布式缓存 |
Non-Patent Citations (1)
Title |
---|
彭聪;陕振;张淑萍;李俊;: "iSCSI存储***中缓存技术的研究", 计算机工程与设计, no. 10 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930517A (zh) * | 2020-09-18 | 2020-11-13 | 北京中科立维科技有限公司 | 一种高性能自适应垃圾收集方法和计算机*** |
CN111930517B (zh) * | 2020-09-18 | 2023-07-14 | 北京中科立维科技有限公司 | 一种高性能自适应垃圾收集方法和计算机*** |
CN113721838A (zh) * | 2021-07-22 | 2021-11-30 | 成都忆芯科技有限公司 | 用于存储设备的写、读数据方法、存储控制器以及dma引擎 |
CN113721838B (zh) * | 2021-07-22 | 2023-12-19 | 成都忆芯科技有限公司 | 用于存储设备的写、读数据方法、存储控制器以及dma引擎 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9785545B2 (en) | Method and apparatus for providing dual memory access to non-volatile memory | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
US20130198439A1 (en) | Non-volatile storage | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
CN108595349B (zh) | 大容量存储设备的地址转换方法与装置 | |
CN109164976B (zh) | 利用写缓存优化存储设备性能 | |
JP7030942B2 (ja) | メモリ装置及びその制御方法 | |
CN108228483B (zh) | 处理原子写命令的方法和设备 | |
CN115993930A (zh) | 用于有序访问块修改存储器中的数据的***、方法和装置 | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
CN110968527B (zh) | Ftl提供的缓存 | |
CN115048034A (zh) | 用于sgl的存储空间映射方法及其装置 | |
CN111352865B (zh) | 存储控制器的写缓存 | |
JP6689325B2 (ja) | メモリ装置の制御方法 | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
JP6595654B2 (ja) | 情報処理装置 | |
CN109960667B (zh) | 大容量固态存储设备的地址转换方法与装置 | |
CN110968520B (zh) | 基于统一缓存架构的多流存储设备 | |
CN113254363A (zh) | 具有部分逻辑到物理地址转换表的非易失性存储控制器 | |
CN109840219B (zh) | 大容量固态存储设备的地址转换***与方法 | |
CN110532199B (zh) | 预读方法及其存储控制器 | |
CN112947845A (zh) | 热数据识别方法及其存储设备 | |
CN110580128A (zh) | 使用缓存反馈信息指导数据预读 | |
CN117806570B (zh) | 在线内存扩展方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |