CN109840048B - 存储命令处理方法及其存储设备 - Google Patents
存储命令处理方法及其存储设备 Download PDFInfo
- Publication number
- CN109840048B CN109840048B CN201711222238.9A CN201711222238A CN109840048B CN 109840048 B CN109840048 B CN 109840048B CN 201711222238 A CN201711222238 A CN 201711222238A CN 109840048 B CN109840048 B CN 109840048B
- Authority
- CN
- China
- Prior art keywords
- deallocation
- ftl
- state
- command
- 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.)
- Active
Links
Images
Landscapes
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了存储命令处理方法及其存储设备。所公开的存储设备执行的方法,包括:接收读命令;若去分配表中没有任何条目被标记为“去分配”,查询FTL表获得读命令访问的逻辑地址对应的物理地址;以及从物理地址获取数据作为对读命令的响应。
Description
技术领域
本申请涉及存储技术领域,尤其涉及存储命令处理方法及其存储设备。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的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字节。物理页也可以具有其他的尺寸。
大块包括来自多个逻辑单元(LUN),也称为逻辑单元组的每个的物理块。每个逻辑单元可以为大块提供一个物理块。例如,在图2所示出的大块的示意图中,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个分别来自16个逻辑单元(LUN)的物理块。在图2的例子中,大块0包括来自16个逻辑单元(LUN)中的每个逻辑单元的物理块0,而大块1包括来自每个逻辑单元(LUN)的物理块1。也可以以多种其他方式来构造大块。
例如,在大块中构造页条带,每个逻辑单元(LUN)内相同物理地址的物理页构成了“页条带”。图2中,物理页P0-0、物理页P0-1……与物理页P0-x构成了页条带0,其中,物理页P0-0、物理页P0-1……物理页P0-14用于存储用户数据,而物理页P0-x用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,图2中,物理页P2-0、物理页P2-1……与物理页P2-x构成了页条带2。用于存储校验数据的物理页可以位于页条带中的任意位置。作为又一个例子,在申请号为201710752321.0的中国专利申请的图3A及其说明书中对图3A的相关描述中,提供了大块的又一种构造方式。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。FTL表的数据项记录了固态存储设备中以数据单元为单位的地址映射关系。在一个例子中,FTL表中的逻辑页对应4KB存储空间,而物理页的存储空间也为4KB(还包括附加的带外存储空间)。FTL表为每个4KB的数据单元提供一条记录,以记录其逻辑地址到物理地址的映射。在另一个例子中,数据单元对应的存储空间大小和物理页的存储空间大小不同,例如物理页可容纳多个数据单元,数据单元对应4KB的存储空间,而物理页的存储空间能够容纳多个数据单元(例如4个)
FTL表包括多个FTL表条目(或称表项)。在一种情况下,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
在处理来自主机的读命令时,固态存储设备利用读命令中携带的逻辑地址从FTL表中获得对应的物理地址,并依据物理地址向NVM芯片发出读请求,并接收NVM芯片响应于读请求输出的数据。在处理来自主机的写命令时,固态存储设备为写命令分配物理地址,在FTL表中记录写命令的逻辑地址与分配的物理地址的对应关系,并依据分配的物理地址向NVM芯片发出写请求。
在ATA8-ACS2中定义了Trim(修剪)命令,具有相同或类似含义的命令在SCSI(Small Computer System Interface,小型计算机系统接口)规范中被称为UNMAP(解除映射),而在NVMe规范中被称为Deallocate(去分配)。下文中,用“去分配”来指示具有同ATA8-ACS2的“修剪”、SCSI的“解除映射”、NVMe的“去分配”具有相同或相似功能的数据集管理命令,以及也指示在其他或将来的协议、规范或技术中出现的具有相同或相似功能的命令。
在去分配命令中,描述了逻辑地址范围。在执行了去分配命令后,可以有不同的效果。例如,(1)执行去分配命令后,(执行对该逻辑地址范围的其他写入操作之前)再读取去分配命令所指示的逻辑地址范围时,所得到的是确定的;(2)执行去分配命令后,(执行对该逻辑地址范围的其他写入操作之前)再读取去分配命令所指示的逻辑地址范围时,所得到的结果是全0;(3)执行去分配命令后,(执行对该逻辑地址范围的其他写入操作之前)再读取去分配命令所指示的逻辑地址范围时,所得到的结果可以是任意值。在去分配命令或者其他命令中可设置或选择去分配命令的执行效果。
发明内容
通过使用去分配命令,主机能够告知固态硬盘哪些逻辑地址空间不再存储有效数据,从而固态硬盘在回收存储空间时,不必搬移已经失效的数据。然而,现有技术中,随着固态存储设备的存储容量变大,FTL表的尺寸随之增大,导致在执行去分配命令过程中,需要大量的内存访问操作,这严重延长了对去分配命令进行处理的时间,并影响固态硬盘的性能,进而影响对同时发生的IO命令的执行。
根据本申请的第一方面,提供了根据本申请第一方面的第一存储设备执行的方法,包括:接收读命令;若去分配表中没有任何条目被标记为“去分配”,查询FTL表获得读命令访问的逻辑地址对应的物理地址;以及从物理地址获取数据作为对读命令的响应。
根据本申请第一方面的第一存储设备执行的方法,提供了根据本申请第一方面的第二存储设备执行的方法,还包括:若去分配表中有至少一个条目被标记为“去分配”,查询去分配表以确定读命令访问的逻辑地址是否被去分配;若读命令访问的逻辑地址在去分配表中被标记为“去分配”,以指定值作为对读命令的响应。
根据本申请第一方面的第二存储设备执行的方法,提供了根据本申请第一方面的第三存储设备执行的方法,还包括:若读命令访问的逻辑地址在去分配表中未被标记为“去分配”,依据查询FTL表获得的物理地址获取数据作为对读命令的响应。
根据本申请第一方面的第一至第三存储设备执行的方法之一,提供了根据本申请第一方面的第四存储设备执行的方法,其中通过去分配表的状态指示去分配表中是否有任何条目被标记为“去分配”。
根据本申请第一方面的第一至第四存储设备执行的方法之一,提供了根据本申请第一方面的第五存储设备执行的方法,还包括:响应于接收去分配命令,将去分配表的状态设置为指示去分配表中有至少一个条目被标记为“去分配”。
根据本申请第一方面的第一至第五存储设备执行的方法之一,提供了根据本申请第一方面的第六存储设备执行的方法,还包括:扫描去分配表,根据去分配表中被标记为“去分配”的条目对应的逻辑地址,将FTL表的同逻辑地址对应的条目更新为指示“去分配”。
根据本申请第一方面的第六存储设备执行的方法,提供了根据本申请第一方面的第七存储设备执行的方法,还包括:响应于扫描去分配表完成,将去分配表的状态设置为指示去分配表中没有任何条目被标记为“去分配”。
根据本申请第一方面的第一至第七存储设备执行的方法之一,提供了根据本申请第一方面的第八存储设备执行的方法,还包括:响应于接收写命令,为写命令分配物理地址;若去分配表中没有任何条目被标记为“去分配”,用写命令的逻辑地址与分配的物理地址更新FTL表;以及根据物理地址写入数据。
根据本申请第一方面的第八存储设备执行的方法,提供了根据本申请第一方面的第九存储设备执行的方法,还包括:若去分配表中有至少一个条目被标记为“去分配”,将去分配表中同写命令的逻辑地址对应的条目清除“去分配”标记。
根据本申请第一方面的第八或第九存储设备执行的方法,提供了根据本申请第一方面的第十存储设备执行的方法,还包括:在根据物理地址写入数据之前,向写命令的发出方指示写命令已处理完成。
根据本申请第一方面的第八存储设备执行的方法,提供了根据本申请第一方面的第十一存储设备执行的方法,其中响应于获知去分配表中没有任何条目被标记为“去分配”,向写命令的发出方指示写命令已处理完成。
根据本申请第一方面的第八或第九存储设备执行的方法,提供了根据本申请第一方面的第十二存储设备执行的方法,其中响应于获知去分配表中有至少一个条目被标记为“去分配”,在将去分配表中同写命令的逻辑地址对应的条目清除“去分配”标记之后,向写命令的发出方指示写命令已处理完成。
根据本申请第一方面的第一至第十二存储设备执行的方法之一,提供了根据本申请第一方面的第十三存储设备执行的方法,其中去分配表包括第一去分配表与第二去分配表,分别对应于第一FTL表与第二FTL表;第一去分配表的状态指示包括第一去分配表与第二去分配表的去分配表中是否有任何条目被标记为“去分配”;第二去分配表的状态指示包括第一去分配表与第二去分配表的去分配表中是否有任何条目被标记为“去分配”。
根据本申请第一方面的第十三存储设备执行的方法,提供了根据本申请第一方面的第十四存储设备执行的方法,还包括:响应于接收去分配命令,将第一去分配表的状态与第二去分配表的状态设置为去分配表中有至少一个条目被标记为“去分配”。
根据本申请第一方面的第十四存储设备执行的方法,提供了根据本申请第一方面的第十五存储设备执行的方法,还包括:响应于扫描第一去分配表完成,将第一去分配表的状态设置为“扫描完成”;响应于扫描第二去分配表完成,将第二去分配表的状态设置为“扫描完成”。
根据本申请第一方面的第十五存储设备执行的方法,提供了根据本申请第一方面的第十六存储设备执行的方法,还包括:响应于第一去分配表的状态被设置为“扫描完成”,若第二去分配表的状态为“扫描完成”或“无记录”,将第一去分配表的状态设置为“无记录”,其中“无记录”状态指示包括第一去分配表与第二去分配表的去分配表中没有任何条目被标记为“去分配”。
根据本申请第一方面的第十五或十六存储设备执行的方法,提供了根据本申请第一方面的第十七存储设备执行的方法,还包括:响应于第二去分配表的状态被设置为“扫描完成”,若第一去分配表的状态为“扫描完成”或“无记录”,将第二去分配表的状态设置为“无记录”,其中“无记录”状态指示包括第一去分配表与第二去分配表的去分配表中没有任何条目被标记为“去分配”。
根据本申请第一方面的第十三至第十七存储设备执行的方法之一,提供了根据本申请第一方面的第十八存储设备执行的方法,其中第一CPU处理访问第一去分配表的去分配命令;第二CPU处理访问第二去分配表的去分配命令。
根据本申请第一方面的第十八存储设备执行的方法,提供了根据本申请第一方面的第十九存储设备执行的方法,还包括:响应于第一去分配表的状态被更新,第一CPU向第二CPU通知第一去分配表的状态被更新。
根据本申请第一方面的第十八或十九存储设备执行的方法,提供了根据本申请第一方面的第二十存储设备执行的方法,还包括:响应于第二去分配表的状态被更新,第二CPU向第一CPU通知第一去分配表的状态被更新。
根据本申请第一方面的第一至第二十存储设备执行的方法之一,提供了根据本申请第一方面的第二十一存储设备执行的方法,还包括:获取去分配表的更新日志;若去分配表的更新日志可压缩,缓存所获取的去分配表的更新日志。
根据本申请第一方面的第二十一存储设备执行的方法,提供了根据本申请第一方面的第二十二存储设备执行的方法,还包括:若去分配表的更新日志不可压缩,将去分配表的更新日志写入NVM芯片。
根据本申请第一方面的第二十一或二十二存储设备执行的方法,提供了根据本申请第一方面的第二十三存储设备执行的方法,其中依据获取的去分配表的更新日志同缓存的去分配表的更新日志是否连续,确定去分配表的更新日志是否可压缩。
根据本申请第一方面的第二十一至第二十三存储设备执行的方法之一,提供了根据本申请第一方面的第二十四存储设备执行的方法,其中依据获取的去分配表的更新日志同缓存的去分配表的更新日志是否连续,以及获取的去分配表的更新日志同缓存的去分配表的更新日志的来源是否相同,确定去分配表的更新日志是否可压缩。
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,包括控制部件、存储器和NVM芯片,其中,存储器存储去分配表和FTL表,控制部件执行根据本申请第一方面的第一至第二十四存储设备执行的方法之一。
根据本申请的第三方面,提供了根据本申请第三方面的第一存储设备,包括控制部件、存储器和NVM芯片,其中,存储器存储去分配表和FTL表,控制部件包括第一CPU与第二CPU;第一CPU与第二CPU分别执行根据本申请第一方面的第一至第二十四存储设备执行的方法之一。
根据本申请第三方面的第一存储设备,提供了根据本申请第三方面的第二存储设备,其中存储器存储第一去分配表、第二去分配表、第一FTL表和第二FTL表,第一去分配表用于第一FTL表,而第二去分配表用于第二FTL表;第一CPU维护第一去分配表的状态,第二CPU维护第二去分配表的状态。
根据本申请第三方面的第一或第二存储设备,提供了根据本申请第三方面的第三存储设备,还包括分配器,用于将接收的命令分配给第一CPU或第二CPU之一。
根据本申请第三方面的第三存储设备,提供了根据本申请第三方面的第四存储设备,其中所述分配器根据去分配命令访问的逻辑地址,将去分配命令分配给同逻辑地址对应的第一或第二CPU之一。
根据本申请第三方面的第三或第四存储设备,提供了根据本申请第三方面的第五存储设备,其中所述分配器将读命令或写命令随机或轮流分配给第一CPU或第二CPU之一。
本申请的第四方面提供一种计算机程序,当被载入存储设备并在存储设备的控制部件上执行时,计算机程序包括的计算机程序代码使控制部件执行根据本申请第一方面的第一至第二十四存储设备执行的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术的固态存储设备的框图;
图2示出了大块的示意图;
图3A是根据本申请实施例的处理去分配命令前的FTL表的部分的示意图;
图3B是根据本申请实施例的处理去分配命令后的FTL表的部分的示意图。
图4A为本申请实施例中处理去分配命令前的去分配表的示意图;
图4B为本申请实施例中处理去分配命令后的去分配表的示意图;
图5A为本申请实施例的处理去分配命令的方法的流程图;
图5B为本申请实施例的响应读命令的方法的流程图;
图5C为本申请实施例的响应写命令的方法的流程图;
图6A是根据本申请又一实施例的控制部件的框图;
图6B为根据图6A的实施例的响应读命令的方法的流程图;
图6C为根据图6A的实施例的响应写命令的方法的流程图;
图7A展示了根据本申请又一实施例的去分表的状态的状态转换图;
图7B是根据本申请图6A所示的实施例的处理去分配命令的流程图;
图7C是根据本申请图6A所示的实施例的扫描去分配表的流程图;
图8是根据本申请另一实施例的控制部件的框图;
图9是根据本申请实施例的处理日志的系统的示意图;
图10A是根据本申请实施例的日志条目缓存的示意图;
图10B展示了根据本申请实施例的压缩去分配表日志的流程图;以及
图10C是根据本申请又一实施例的日志条目缓存的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3A是根据本申请实施例的处理去分配命令前的FTL表的部分的示意图。图3B是根据本申请实施例的处理去分配命令后的FTL表的部分的示意图。
参看图3A,FTL表中记录了同逻辑地址范围0-7(分别记为LBA 0到LBA 7)对应的物理地址(记为PPA a-b),其中“PPA”指示物理地址,“a”指示物理块,而“b”指示物理页。以物理块1为例,其物理地址为“PPA 1-4”的物理页中存储了逻辑地址为“LBA 0”的数据,而物理地址为“PPA 1-10”的物理页中存储了逻辑地址为“LBA”的数据。依然作为举例,
根据本申请的实施例,为执行去分配操作,将FTL表中,由去分配命令所描述的逻辑地址范围所指示的FTL表项设置为特殊标记(例如,0或其他值)。例如,去分配命令指示的逻辑地址范围包括0-7与100-103。为执行该去分配命令,将FTL表中记录了逻辑地址0-7以及100-103的条目的内容设置为0。参看图3B,FTL表中同逻辑地址范围0-3(分别记为LBA 0到LBA 3)对应的物理地址变为0,而同逻辑地址范围4-7(分别记为LBA 4到LBA 7)对应的逻辑地址相对于图3A未被改变。
从而接下来要读取逻辑地址LBA 0-7或LBA 100-103中的一个或多个时,在FTL表中查询到这些逻辑地址对应的物理地址为0(含义为特殊标记),从而以符合去分配命令的指定效果的结果(例如,全0)作为对读命令的响应。可以理解的是,去分配命令所指示的逻辑地址范围可以与FTL表的表项的具有不同的单位大小。例如,去分配命令中,一个逻辑地址对应512字节的存储空间,而在FTL表中,一个表项对应4KB的存储空间。
根据本申请的实施例,为高效处理去分配命令,还维护去分配表。图4A为本申请实施例中处理去分配命令前的去分配表的示意图;图4B为本申请实施例中处理去分配命令后的去分配表的示意图。去分配表中,存储对应于FTL表中的每个逻辑地址是否被去分配的信息。作为举例,在去分配表中为FTL表的每个逻辑地址提供1比特的存储空间。
如图4A所示,当逻辑地址已经被分配(即在FTL表中该逻辑地址具有有效的物理地址)(也参看图3A),在去分配表中,将该逻辑地址标记为“被分配”(例如,将对应的1比特存储空间设置为0)。当逻辑地址未被分配或者已经被应用了去分配命令时(也参看图3B),该逻辑地址在去分配表中被标记为“去分配”(例如,将对应的1比特存储空间设置为1)。
示例性地,在与图3A所示的处理去分配命令前的FTL表对应的图4A所示的去分配表中,FTL表中逻辑地址LBA 0-LBA 7都被分配了有效的物理地址。因而在如图4A所示的去分配表中,LBA 0-LBA 7都被标记为“被分配”(对应的1比特存储空间均设置为0)。响应于收到去分配命令,对LBA 0-LBA 3的逻辑地址范围执行去分配命令,FTL表的部分如图3B所示,而去分配表的部分如图4B所示。去分配表中LBA 0-LBA 3都被标记为“去分配”(对应的1比特存储空间均设置为1),而去分配表中LBA 4-LBA 7依然被标记为“被分配”(对应的1比特存储空间均设置为0)。
示例性地,根据本申请实施例的去分配表存储在控制部件104(参看图1)的内部存储器或DRAM 110中。可选地,通过DMA操作更新去分配表。
进一步地,固态存储断电时,还将去FTL表与分配表写入NVM,从而在异常掉电后重新启动时,能够从NVM中恢复掉电时的FTL表与去分配表。
图5A为本申请实施例的处理去分配命令的方法的流程图。响应于收到去分配命令(510),获取去分配命令所指示的逻辑地址范围(512)。例如,去分配命令指示要对LBA 0–LBA 3的逻辑地址范围执行去分配。根据去分配命令所指示的逻辑地址范围,更新去分配表(参看图4A与图4B)的表项(514),例如将图4A所示的去分配表中与逻辑地址LBA 0-LBA 3对应的表项标记为“去分配”(具有1值)(如图4B所示)。在更新了去分配表后,即可向主机指示去分配命令执行完成。从而去分配命令的执行速度得到了极大的提升。还依据去分配命令所指示的逻辑地址范围,更新FTL表的表项(518)。例如,将去分配命令所指示的一个或多个逻辑地址对应的FTL表项清零,或设置为指定值(参看图3B)。可选地,在更新FTL表前,还对要更新的一个或多个逻辑地址对应的FTL表的表项加锁,从而避免FTL表项被更新期间,其他任务读取这些FTL表项。以及在更新FTL表后,还对被更新的一个或多个逻辑地址对应的FTL表的表项解锁。
图5B为本申请实施例的响应读命令的方法的流程图。主机读取被去分配的逻辑地址时,应当收到诸如全0的指定指示。
参看图5B,响应于收到读命令(530),查询去分配表(也参看图4B),判断读命令所读取的逻辑地址是否被去分配(532)。若去分配表指示所读取的逻辑地址处于去分配状态,则以全0或者其他指定的结果作为对读命令的响应(534)。在步骤532,若去分配表指示所读取的逻辑地址已被分配时,查询FTL表获得要读取的逻辑地址对应的物理地址(536),并从获得的物理地址读取数据作为对读命令的响应(538)。
可选地,查询去分配表将增加读操作的延迟,对于访问已被分配的逻辑地址的读命令,查询去分配表是没有积极意义的。为此,还记录固态存储设备正在执行去分配命令的状态。响应于收到去分配命令(510),标记存储设备正在执行去分配命令。在此情况下,若收到读命令,则首先查询去分配表(参看图5B中532)。而当去分配命令执行完成后,例如在图5A所示的步骤518执行完成后,标记存储设备已经完成对去分配命令的执行。在此情况下,若收到读命令,则不必执行图5B中步骤532,而直接执行图5B中步骤536。
图5C为本申请实施例的响应写命令的方法的流程图。
对于未被写入数据的固态存储设备,其去分配表中指示所有的逻辑地址均处于去分配状态。响应于逻辑地址被写入数据,去分配表的与被写入数据的逻辑地址对应的表项被修改为已分配状态。而响应于执行去分配命令,被去分配的逻辑地址在去分配表中的表项被再次修改为去分配状态。
参看图5C,当收到写命令(540),为写命令分配物理地址,并用写命令所指示的逻辑地址与分配的物理地址更新FTL表(542)。向被分配的物理地址写入数据,并向主机反馈写命令处理完成(544)。可选地,为降低写命令处理延迟,在步骤542之后,在将数据写入物理地址之前,即向主机反馈写命令处理完成。还更新去分配表,将被写入的逻辑地址在去分配表中的表项设置为已分配(548)。图5C中,步骤542、步骤544与步骤548的顺序可以调整,也可以并行或同时被执行。优选地,步骤544与步骤548发生在步骤542之后。
图6A是根据本申请又一实施例的控制部件的框图。图6A中示出的控制部件104包括主机接口610、分配器630、用于FTL任务的多个CPU(CPU0与CPU1)和用于访问NVM芯片105的介质接口620。
主机接口610用于同主机交换命令与数据。在一个例子中,主机与存储设备通过NVMe/PCIe协议通信,主机接口610处理PCIe协议数据包,提取出NVMe协议命令,并向主机返回NVMe协议命令的处理结果。
分配器630耦合到主机接口610,用于接收主机发送给存储设备的IO命令,并将IO命令分配给用于处理FTL任务的多个CPU之一。分配器630可由CPU或专用硬件实现。
控制部件104还耦合到外部存储器(例如,DRAM)110。参看图6A,外部存储器110存储FTL表0、FTL表1、去分配表0与去分配表1。用于处理FTL任务的多个CPU通过使用FTL表与去分配表来处理FTL任务。
对于写命令,在CPU的指示下,为要写入数据的逻辑地址分配新的物理地址,在FTL中记录逻辑地址与物理地址的映射关系,还更新去分配表。对于读命令,CPU访问FTL表和/或去分配表,获得同读命令的逻辑地址对应的物理地址,从物理地址读出数据。
根据图6A的实施例,FTL表被分为两部分(FTL表1与FTL表2)。CPU 0对应于FTL表0,而CPU 1对应于FTL表1。例如,按逻辑地址为奇数或偶数,确定逻辑地址位于FTL表0还是FTL1。又例如,逻辑地址空间的前一半逻辑地址位于FTL表0,而后一半地址位于FTL表1。也有多种其他方式将FTL表划分为FTL表0与FTL表1。去分配表0同FTL表0对应,记录了FTL表0中的逻辑地址是否被去分配。去分配表1同FTL表1对应,记录了FTL表1中的逻辑地址是否被去分配。CPU 0对应于去分配表0,而CPU 1对应于去分配表1。从而,关联于FTL表的不同部分的IO命令,可由不同CPU处理。由分配器630根据IO命令访问的逻辑地址将IO命令分配给CPU 0与CPU 1之一。CPU 0与CPU 1并行处理IO命令。
可选地,CPU 0与CPU 1的每个,都可访问所有的FTL表和/或去分配表。从而,对于任何IO命令,分配器可将其分配给任何一个CPU处理。
根据图6A的实施例,CPU还为其对应的去分配表维护状态。CPU 0维护状态0,而CPU维护状态1。状态0指示去分配表0的状态,而状态1指示去分配表1的状态。去分配表的状态,至少指示了去分配表中是否存在至少一项条目被标记为“去分配”。从而,作为举例,对于去分配表0,状态0仅用一比特信息,指示去分配表中是否存在至少一项条目被标记为“去分配”;对于去分配表1,状态1仅用一比特信息,指示去分配表中是否存在至少一项条目被标记为“去分配”。从而状态0与状态1所需的存储空间极小,可存储在CPU内部的寄存器或存储器中。
图6B为根据图6A的实施例的响应读命令的方法的流程图。
参看图6B,响应于收到读命令(630),作为举例,分配器将其分配给CPU 0(也参看图6A)处理。CPU 0首先查询状态0以确定去分配表0中是否有至少一项记录被标记为“去分配”(631)。若状态0指示去分配表0中没有任何的记录被标记为“去分配”,CPU 0查询FTL表0获得要读取的逻辑地址对应的物理地址(636),并从获得的物理地址读取数据作为对读命令的响应(538),而无须访问去分配表0。若状态0指示去分配表0中有至少一个记录被标记为“去分配”(631),CPU 0查询去分配表0(也参看图4B),判断读命令所读取的逻辑地址是否被去分配(632)。若去分配表0指示所读取的逻辑地址处于去分配状态,则以全0或者其他指定的结果作为对读命令的响应(634)。在步骤632,若去分配表指示所读取的逻辑地址已被分配时,查询FTL 0表获得要读取的逻辑地址对应的物理地址(636),并从获得的物理地址读取数据作为对读命令的响应(638)。
CPU 0还维护状态0。CPU 0通过扫描去分配表0,若发现去分配表0中没有任何记录被标记为“去分配”,则相应地设置状态0。以及响应于执行去分配命令而更新去分配表0,将状态0设置为指示去分配表0中有至少一项记录被标记为“去分配”。类似地,CPU 1维护状态1。
图6C为根据图6A的实施例的响应写命令的方法的流程图。
参看图6C,响应于收到读命令(660),作为举例,分配器将其分配给CPU 0(也参看图6A)处理。CPU 0为写命令分配物理地址(665),用于承载写命令要写入的数据。CPU 0查询状态0以确定去分配表0中是否有至少一项记录被标记为“去分配”(670)。若状态0指示去分配表0中没有任何的记录被标记为“去分配”,CPU 0根据写命令的逻辑地址与步骤665为写命令分配的物理地址,更新FTL表(例如,FTL表0)(680),在FTL表中记录写命令的逻辑地址与为其分配的物理地址的对应关系。以及还指示NVM芯片将写命令的数据写入所分配的物理地址(690)。可选地,在步骤690之前,即生成对写命令处理完成的指示,并发送给写命令的发出方。
在步骤670,若状态0指示去分配表0中存在被标记为“去分配”的条目,则还根据写命令的逻辑地址更新去分配表0的条目(675),使得去分配表中同写命令的逻辑地址对应的条目被设置为“已分配”或清除该条目的“去分配”标识。可选地,若步骤670需要被执行,则步骤670与步骤675的执行顺序不做限定。
图7A展示了根据本申请又一实施例的去分表的状态的状态转换图。
去分配表的状态包括“待扫描”状态、“扫描中”状态、“扫描完成”状态与“无记录”状态。因而,状态0和/或状态1包括至少2比特指示去分配表的四种状态。
分配器(参看图6A)将访问FTL 0对应的逻辑地址空间的去分配命令,分配给CPU 0处理,而将访问FTL 1对应的逻辑地址空间的去分配命令,分配给CPU 1处理。
以CPU 0为例,响应于为去分配表0处理了去分配命令,CPU 0将状态0(也参看图6A)设置为“待扫描”状态,而无论状态0之前处于何种状态。由于执行了去分配命令,去分配表0中的部分条目被设置为“去分配”。而状态0被设置为“待扫描”状态,也指示了去分配表中存在至少一项记录被标记为“去分配”(也参看图6,步骤631)。可选地,在状态0处于“待扫描”、“扫描中”或“扫描完成”状态时,都指示了去分配表0中存在至少一项记录被标记为“去分配”(也参看图6,步骤631),而状态0处于“无记录”状态时,指示去分配表0中没有任何的记录被标记为“去分配”(也参看图6,步骤631)。
可选地或进一步地,响应于为去分配表0处理了去分配命令,CPU 0还将状态1(也参看图6A)设置为“待扫描”状态,或者请求CPU 1将状态1(也参看图6A)设置为“待扫描”状态。以及,类似地,响应于为去分配表1处理了去分配命令或状态1被设置为“待扫描”状态,将状态0设置为“待扫描”状态。
在一些条件下,CPU 0开始清理去分配表0,根据去分配表0中的被设置为“去分配”的条目,将FTL表0中对应的条目的物理地址设置为指定值(例如,0)。例如,CPU 0在没有要处理的IO命令的空闲期间,清理去分配表0。或者,响应于主机的指示,CPU 0开始清理去分配表0。响应于开始清理去分配表0,CPU 0还将处于“待扫描”状态的状态0设置为“扫描中”状态。
响应于CPU 0完成对去分配表0的清理,CPU 0将处于“扫描中”状态的状态0设置为“扫描完成”状态。为完成对去分配表的清理,CPU 0将去分配表0中被设置为“去分配”的条目对应的FTL表0的条目的物理地址都设置为指定值,以及相应地将去分配表0中被设置为“去分配”的条目修改为清除“去分配”标记,以指示在对应的FTL表0的条目中记录的是对应的逻辑地址同物理地址的真实映射关系。
若状态0处于“扫描完成”状态,CPU 0还获取状态1所指示的状态。若状态1处于“扫描完成”或“无记录”状态,则CPU 0将状态0设置为“无记录”状态。
在一种实施方式中,若状态0处于“扫描完成”状态,CPU 0访问或向CPU 1请求状态1的值。在又一种实施方式中,若状态0进入“扫描完成”状态,CPU 0向CPU 1通知状态的状态变化结果。在依然又一种实施方式中,每当状态0发生状态变化,CPU 0向CPU 1通知状态的状态变化结果。
进一步地,响应于状态0变为“无记录”状态,若状态1处于“扫描完成”状态,还将状态1设置为“无记录”状态。
可选地或依然进一步地,响应于
根据本申请的实施例,CPU 1以同CPU 0类似的方式维护状态1。
图7B是根据本申请图6A所示的实施例的处理去分配命令的流程图。
响应于收到去分配命令(710),分配器630将去分配命令分配给CPU之一(例如,CPU0)。分配器630根据去分配命令指示的逻辑地址范围,选择负责相应逻辑地址范围的CPU处理去分配命令(720),将去分配命令发送给选择的CPU(例如,CPU 0)。被选择的CPU(CPU 0)根据去分配命令指示的逻辑地址范围,将去分配表对应的一个或多个条目设置为“去分配”(730)。至此向主机指示去分配命令处理完成。以及将状态0设置为处于“待扫描”状态。
图7C是根据本申请图6A所示的实施例的扫描去分配表的流程图。
当状态0处于“待扫描”状态,当没有待处理的IO命令,或者响应于主机的指示,CPU(以CPU 0为例)发起对所负责的去分配表0的扫描(740)。CPU 0遍历去分配表0,对于去分配表中每个指示“去分配”的条目,获取其逻辑地址,将对应FTL表(FTL 0)中同逻辑地址对应的表项的物理地址修改为指示逻辑地址被“去分配”的指定值(750)。CPU 0还将去分配表0中指示“去分配”的条目更新为清除“去分配”标记。可选地,响应于开始扫描去分配表0,CPU0还将状态0设置为“扫描中”状态。
当CPU 0将去分配表0中的所有“去分配”标记都被清除,意味着去分配表0扫描完成。响应于扫描去分配表0完成,CPU 0将状态0设置为“扫描完成”状态(760)。若在扫描去分配表0的过程中,CPU 0收到了去分配命令,则停止扫描,以及将状态0更新为“待扫描”状态。
响应于状态0被设置为“扫描完成”状态,CPU 0还获取状态0所指示的状态。若此时状态1处于“扫描完成”或“无记录”状态,则CPU 0将状态0设置为“无记录”状态(770)。以及若状态1处于“扫描完成”,CPU 0将状态0设置为“无记录”状态,还使得状态被设置为“无记录”状态。对状态1的维护,由例如CPU 1进行。
图8是根据本申请另一实施例的控制部件的框图。图8中示出的控制部件104包括主机接口810、分配器、用于FTL任务的多个CPU(CPU0、CPU1、CPU2与CPU3)和用于访问NVM芯片105的介质接口820。
分配器用于接收主机发送给存储设备的命令,并将命令分配给用于处理FTL任务的多个CPU之一。
控制部件104还耦合到外部存储器(例如,DRAM)110。参看图8,外部存储器110存储FTL表0、FTL表1、FTL表2、FTL表3、去分配表0、去分配表1、去分配表2与分配表3。用于处理FTL任务的多个CPU通过使用FTL表与去分配表来处理FTL任务。
根据图8的实施例,FTL表被分为四部分(FTL表1、FTL表2、FTL表3与FTL表4)。CPU 0对应于FTL表0,CPU 1对应于FTL表1,CPU 2对应于FTL表2,而CPU 3对应于FTL表3。例如,按逻辑地址被4除的余数确定逻辑地址位于哪个FTL表。又例如,逻辑地址空间的前1/4逻辑地址位于FTL表0,接下来的1/4逻辑地址位于FTL表1,以此类推。也有多种其他方式划分FTL表。去分配表0同FTL表0对应,记录了FTL表0中的逻辑地址是否被去分配。去分配表1同FTL表1对应,记录了FTL表1中的逻辑地址是否被去分配。去分配表2同FTL表2对应,记录了FTL表2中的逻辑地址是否被去分配。去分配表3同FTL表3对应,记录了FTL表3中的逻辑地址是否被去分配。
CPU 0对应于去分配表0,CPU 1对应于去分配表1,CPU 2对应于去分配表2,CPU 3对应于去分配表3。从而,关联于FTL表的不同部分的命令,可由不同CPU处理。由分配器根据命令访问的逻辑地址将命令分配给CPU 0、CPU1、CPU2与CPU 3之一。多个CPU并行处理命令。
可选地,每个CPU,都可访问所有的FTL表和/或去分配表。从而,对于任何IO命令,分配器可将其分配给任何一个CPU处理。
根据图8的实施例,CPU还为其对应的去分配表维护状态。CPU 0维护状态0,CPU维护状态1,CPU 2维护状态2,CPU 3维护状态3。状态0指示去分配表0的状态,状态1指示去分配表1的状态,状态2指示去分配表2的状态,状态3指示去分配表3的状态。去分配表的状态,至少指示了所有去分配表中是否存在至少一项条目被标记为“去分配”。
根据图8的实施例,各个CPU按照图6A、图7A与图7B所展示的方式,维护和使用状态0、状态1、状态2与状态3。
进一步地,CPU每次更新自己所维护的状态,将对状态的更新广播或通知给其他CPU,使得任何CPU能够知晓其他CPU所维护的状态的最新值。CPU还根据收到的其他CPU维护的状态的更新,更新自身维护的状态。以及在状态0处于“扫描完成”状态时,只有CPU 0识别出所有其他CPU维护的状态均处于“扫描完成”或“无记录”状态,才将自己维护的状态0设置为“无记录”状态。以及,若状态0处于“无记录”状态,CPU 0收到去分配命令,或识别出任何其他CPU维护的状态进入“待扫描”或“扫描中”状态,则将状态0设置为“待扫描”状态。
图9是根据本申请实施例的处理日志的系统的示意图。
为提高固态存储设备的可靠性,固态存储设备对其重要元数据(例如,FTL表、去分配表等)的任何更新记录日志。参看图9,多个CPU的任何一个,响应于对例如FTL表和/或去分配表的任何更新,生成日志(称为FTL表日志或去分配表日志)条目。以去分配表日志为例,日志条目记录了被更新的去分配表条目的索引,以及该去分配表条目的更新内容。可选地,在日志条目中还记录该日志的生成者或来源(称为日志标识符)。日志标识符指示例如CPU 0。CPU 0将日志条目发送给固态存储设备的日志服务。可以由控制部件的多个CPU的一个或多个提供日志服务。日志服务将多个日志条目生成数据块并写入NVM芯片。
去分配命令通常访问大段的逻辑地址空间,并导致产生大量的日志,影响固态存储设备的性能。根据本申请的实施例,对去分配表日志进行压缩,以降低写入NVM芯片的日志数据量。
图10A是根据本申请实施例的日志条目缓存的示意图。
日志服务部件维护多个日志条目缓存。例如,日志条目缓存的数量同日志标识符的取值集合大小一致。图10A中,展示了4个日志条目缓存,分别对应于控制部件的4个会产生去分配表日志的CPU。日志条目缓存指示日志标识符(用于指示日志来源,例如,CPU)。日志条目缓存还记录去分配表索引与可选地计数值。去分配表索引指示了该日志条目来源于去分配表的那个条目,也指示了作为去日志条目来源的分配表条目所对应的逻辑地址。日志服务部件根据日志条目缓存压缩去分配表日志。
图10B展示了根据本申请实施例的压缩去分配表日志的流程图。
日志服务部件获取来自CPU的去分配表日志(1010),获取的去分配表日志的来源或日志标识符(例如,CPU 0),以及根据获取的去分配表日志指示的去分配表索引(1020)。识别去分配表日志是否可压缩(1030)。例如,根据日志标识符访问日志条目缓存,并比较日志条目缓存记录的去分配表索引,与从收到的去分配表日志中获取的去分配表索引是否连续。若缓存的去分配表索引与收到的去分配表索引连续,则识别为日志可被压缩,并在访问的日志条目缓存中,将去分配表索引更新为新接收的值。可选地,还使日志条目缓存的计数值递增。依然可选地,若计数值大于阈值,根据日志条目缓存生成要写入NVM芯片的日志数据,以避免被缓存的日志过多。若缓存的去分配表索引与收到的去分配表索引不连续,则识别为日志不可被压缩,则根据日志条目缓存生成要写入NVM芯片的日志数据,以及根据收到的去分配表日志更新日志条目缓存。
图10C是根据本申请又一实施例的日志条目缓存的示意图。
日志条目缓存有多个条目,每个条目记录了去分配表索引与计数值。日志服务部件利用日志条目缓存识别连续的去分配表日志。响应于接收到去分配表日志,日志服务部件识别收到的去分配表日志是否命中日志条目缓存。命中日志条目缓存,意味着接收的去分配表日志对应的去分配表索引同日志条目缓存的某条目记录的去分配表索引相连续或相同。在此情况下,更新被命中的日志条目缓存条目的计数值。若计数值大于阈值,根据日志条目缓存生成要写入NVM芯片的日志数据,以避免被缓存的日志过多。若接收的去分配表日志未命中日志条目缓存,且日志条目缓存中还有空余条目,则在空余条目中记录接收的去分配表日志,而无须向NVM芯片写入数据。若接收的去分配表日志未命中日志条目缓存,且日志条目缓存中没有空余条目,则根据日志条目缓存和/或接收的去分配表条目生成要写入NVM芯片的日志数据。以及可选地根据收到的去分配表日志更新日志条目缓存。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (9)
1.一种存储设备执行的方法,包括:
接收读命令;
若去分配表中没有任何条目被标记为“去分配”,查询FTL表获得读命令访问的逻辑地址对应的物理地址,其中去分配表存储对应于FTL表的每个逻辑地址是否被去分配的信息;以及
从物理地址获取数据作为对读命令的响应;
所述方法,还包括:
若去分配表中有至少一个条目被标记为“去分配”,查询去分配表以确定读命令访问的逻辑地址是否被去分配;
若读命令访问的逻辑地址在去分配表中被标记为“去分配”,以指定值作为对读命令的响应。
2.根据权利要求1所述的方法,还包括:
若读命令访问的逻辑地址在去分配表中未被标记为“去分配”,依据查询FTL表获得的物理地址获取数据作为对读命令的响应。
3.根据权利要求1或2所述的方法,还包括:
响应于接收写命令,为写命令分配物理地址;
若去分配表中没有任何条目被标记为“去分配”,用写命令的逻辑地址与分配的物理地址更新FTL表;以及
根据物理地址写入数据。
4.根据权利要求3所述的方法,还包括:
若去分配表中有至少一个条目被标记为“去分配”,将去分配表中同写命令的逻辑地址对应的条目清除“去分配”标记。
5.根据权利要求1所述的方法,其中所述FTL表被划分为第一FTL表与第二FTL表;
去分配表包括第一去分配表与第二去分配表,分别对应于第一FTL表与第二FTL表;
第一去分配表的状态指示包括第一去分配表与第二去分配表的去分配表中是否有任何条目被标记为“去分配”;
第二去分配表的状态指示包括第一去分配表与第二去分配表的去分配表中是否有任何条目被标记为“去分配”。
6.一种存储设备,包括控制部件、存储器和NVM芯片,其中,存储器存储去分配表和FTL表,控制部件包括第一CPU与第二CPU,其中去分配表存储对应于FTL表的每个逻辑地址是否被去分配的信息;
第一CPU与第二CPU分别执行根据权利要求1-5之一所述的方法。
7.根据权利要求6所述的存储设备,其中所述FTL表被划分为第一FTL表与第二FTL表;
存储器存储第一去分配表、第二去分配表、第一FTL表和第二FTL表,第一去分配表用于第一FTL表,而第二去分配表用于第二FTL表;第一CPU维护第一去分配表的状态,第二CPU维护第二去分配表的状态;
所述存储设备,还包括分配器,用于将接收的命令分配给第一CPU或第二CPU之一。
8.根据权利要求7所述的存储设备,其中
所述分配器根据去分配命令访问的逻辑地址,将去分配命令分配给同逻辑地址对应的第一或第二CPU之一。
9.根据权利要求7或8所述的存储设备,其中
所述分配器将读命令或写命令随机或轮流分配给第一CPU或第二CPU之一。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711222238.9A CN109840048B (zh) | 2017-11-29 | 2017-11-29 | 存储命令处理方法及其存储设备 |
PCT/CN2018/093483 WO2019105029A1 (zh) | 2017-11-29 | 2018-06-28 | 去分配命令处理方法及其存储设备 |
US17/044,457 US11397672B2 (en) | 2017-11-29 | 2018-06-28 | Deallocating command processing method and storage device having multiple CPUs thereof |
US17/846,524 US20220327049A1 (en) | 2017-11-29 | 2022-06-22 | Method and storage device for parallelly processing the deallocation command |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711222238.9A CN109840048B (zh) | 2017-11-29 | 2017-11-29 | 存储命令处理方法及其存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109840048A CN109840048A (zh) | 2019-06-04 |
CN109840048B true CN109840048B (zh) | 2022-04-15 |
Family
ID=66881711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711222238.9A Active CN109840048B (zh) | 2017-11-29 | 2017-11-29 | 存储命令处理方法及其存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109840048B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148645A (zh) * | 2019-06-28 | 2020-12-29 | 北京忆芯科技有限公司 | 去分配命令处理方法及其存储设备 |
CN110825586A (zh) * | 2019-10-31 | 2020-02-21 | 江苏华存电子科技有限公司 | 非易失性内存主机控制器数据集管理操作效果保持方法 |
CN114047886A (zh) * | 2022-01-13 | 2022-02-15 | 苏州浪潮智能科技有限公司 | 一种nvme命令处理方法、系统、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019971A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 快速响应trim命令的方法、SSD控制器及系统 |
CN103914409A (zh) * | 2013-01-06 | 2014-07-09 | 北京忆恒创源科技有限公司 | 用于具有多处理器的存储设备的方法 |
CN107003942A (zh) * | 2014-10-27 | 2017-08-01 | 桑迪士克科技有限责任公司 | 对用于增强存储设备的性能和持久性的解除映射命令的处理 |
CN107797938A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 加快去分配命令处理的方法与存储设备 |
CN109086219A (zh) * | 2017-06-14 | 2018-12-25 | 北京忆恒创源科技有限公司 | 去分配命令处理方法及其存储设备 |
-
2017
- 2017-11-29 CN CN201711222238.9A patent/CN109840048B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019971A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 快速响应trim命令的方法、SSD控制器及系统 |
CN103914409A (zh) * | 2013-01-06 | 2014-07-09 | 北京忆恒创源科技有限公司 | 用于具有多处理器的存储设备的方法 |
CN107003942A (zh) * | 2014-10-27 | 2017-08-01 | 桑迪士克科技有限责任公司 | 对用于增强存储设备的性能和持久性的解除映射命令的处理 |
CN107797938A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 加快去分配命令处理的方法与存储设备 |
CN109086219A (zh) * | 2017-06-14 | 2018-12-25 | 北京忆恒创源科技有限公司 | 去分配命令处理方法及其存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109840048A (zh) | 2019-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220327049A1 (en) | Method and storage device for parallelly processing the deallocation command | |
TWI682278B (zh) | 記憶體系統及控制方法 | |
CN109086219B (zh) | 去分配命令处理方法及其存储设备 | |
US10191688B2 (en) | Memory system and information processing system | |
KR101769883B1 (ko) | 저장부 할당 장치, 시스템, 및 방법 | |
US20180129600A1 (en) | Memory system and control method | |
CN107797934B (zh) | 处理去分配命令的方法与存储设备 | |
TW201917580A (zh) | 計算機系統及儲存裝置之控制方法 | |
US20100030946A1 (en) | Storage apparatus, memory area managing method thereof, and flash memory package | |
CN108595349B (zh) | 大容量存储设备的地址转换方法与装置 | |
WO2012083308A2 (en) | Apparatus, system, and method for persistent data management on a non-volatile storage media | |
CN107797938B (zh) | 加快去分配命令处理的方法与存储设备 | |
EP3346387B1 (en) | Storage system and system garbage collection method | |
CN109840048B (zh) | 存储命令处理方法及其存储设备 | |
US20170192903A1 (en) | Storage apparatus and storage control method | |
US10049042B2 (en) | Storage device, semiconductor memory device, and method for controlling same | |
TWI777720B (zh) | 用來藉助於裝置側表資訊而在主機效能增幅器架構中進行記憶裝置的存取管理的方法及設備 | |
CN110554833A (zh) | 存储设备中并行处理io命令 | |
WO2018041258A1 (zh) | 去分配命令处理的方法与存储设备 | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
CN110968527B (zh) | Ftl提供的缓存 | |
CN110096452B (zh) | 非易失随机访问存储器及其提供方法 | |
CN110580228A (zh) | 去分配命令处理方法及其存储设备 | |
CN109840219B (zh) | 大容量固态存储设备的地址转换系统与方法 | |
CN109960667B (zh) | 大容量固态存储设备的地址转换方法与装置 |
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 | ||
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. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |