CN109086219B - 去分配命令处理方法及其存储设备 - Google Patents
去分配命令处理方法及其存储设备 Download PDFInfo
- Publication number
- CN109086219B CN109086219B CN201710449766.1A CN201710449766A CN109086219B CN 109086219 B CN109086219 B CN 109086219B CN 201710449766 A CN201710449766 A CN 201710449766A CN 109086219 B CN109086219 B CN 109086219B
- Authority
- CN
- China
- Prior art keywords
- physical
- command
- address
- allocation
- logical address
- 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
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
Abstract
本申请公开了分配命令处理方法及其存储设备。所公开的去分配方法,包括:响应于去分配命令,根据去分配命令获取去分配命令指示的逻辑地址范围;更新FTL表,将去分配命令指示的逻辑地址范围对应的FTL表的表项设为指定值;响应于写命令,将为写命令分配的物理地址与写命令访问的逻辑地址的关联关系记录在NVM中。
Description
技术领域
本申请涉及存储技术领域,尤其涉及处理去分配命令处理方法及其存储设备。
背景技术
主机同存储设备之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA、IDE、USB、PCIE、NVMe(NVM Express)、SAS、以太网、光纤通道、无线通信网络等连接主机与存储设备。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。
图1为存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(SmallComputer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal SerialBus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)芯片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命令。控制部件104还耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为闪存通道控制器)。闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。NVM芯片105的接口协议包括“Toggle”、“ONFI”等公知的接口协议或标准。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,Logic UnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,每个逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了目标(target)、逻辑单元、LUN、平面(Plane)的含义参见,其为现有技术的一部分。
固态存储设备中包括多个NVM芯片。每个NVM芯片包括一个或多个管芯(DIE)或逻辑单元(LUN,Logic UNit)。管芯或逻辑单元之间可以并行响应读写操作。在同一管芯或逻辑单元上的多个读、写或擦除操作顺序执行
存储介质上通常按页来存储和读取数据,而按块来擦除数据。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在固态存储设备中,逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
其中,存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
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)执行去分配命令后,再读取去分配命令所指示的逻辑地址范围时,所得到的结果可以是任意值(执行对该逻辑地址范围的其他写入操作之前)。在去分配命令或者其他命令中可设置或选择去分配命令的执行效果。
通过使用去分配命令,主机能够告知固态硬盘哪些逻辑地址空间不再存储有效数据,从而固态硬盘在回收存储空间时,不必搬移已经失效的数据。然而,现有技术中,在执行去分配命令过程中,需要大量的内存访问操作,这严重延长了对去分配命令进行处理的时间,并影响固态硬盘的性能,进而影响同时发生的IO命令的执行。
发明内容
本申请的目的在于提供一种去分配方法、存储设备和计算机程序,用于在高速对去分配命令进行处理时,不影响同时发生的IO命令的执行。
本申请的第一方面提供一种去分配方法,该方法包括:根据去分配命令获取去分配命令指示的逻辑地址范围;更新去分配表,将去分配命令指示的逻辑地址范围对应的去分配表的表项设置为第一指定值;其中去分配表用于记录FTL表中的逻辑地址是否被分配的信息;指示去分配命令执行完成。
结合本申请的第一方面,在第一种可能的实现方式中,去分配方法还包括:更新FTL表,将去分配命令指示的逻辑地址范围对应的FTL表的表项设为第一指定值。
结合本申请的第一方面的第一种可能的实现方式,在第二种可能的实现方式中,去分配方法还包括:更新有效数据单元表,有效数据单元表用于记录存储设备的各物理数据单元的数据的状态;更新有效数据单元计数表,其中,有效数据单元计数表用于记录物理块、大块或物理块组中处于有效状态的物理数据单元的数量。
结合本申请的第一方面的第二种可能的实现方式,在第三种可能的实现方式中,有效数据单元表为有效数据单元位图,有效数据单元位图中每个比特用于指示存储设备的各物理数据单元的数据的状态。
结合本申请的第一方面的第二种或者第三种可能的实现方式,在第四种可能的实现方式中,物理数据单元是物理页或物理页的部分。
结合本申请的第一方面的第二种至第四种可能的实现方式之一,在第五种可能的实现方式中,去分配方法还包括:依据有效数据单元计数表,更新物理块、大块或物理块组的第一优先级,该第一优先级为用于执行垃圾回收操作的优先级;依据第一优先级执行垃圾回收操作。
结合本申请的第一方面的第五种可能的实现方式,在第六种可能的实现方式中,含有更少有效数据单元的物理块、大块或物理块组具有更高的第一优先级。
结合本申请的第一方面的第一种至第六种可能的实现方式之一,在第七种可能的实现方式中,更新FTL表期间,阻止其他组件访问正在被更新的FTL表的表项,或者,使其他组件不访问正在被更新的FTL表的表项。
结合本申请的第一方面的第一种至第七种可能的实现方式之一,在第八种可能的实现方式中,更新FTL表包括每次更新FTL表的多个表项。
结合本申请的第一方面的第一种至第八种可能的实现方式之一,在第九种可能的实现方式中,更新FTL表包括使用DMA操作更新存储FTL表的多个表项的内存空间。
结合本申请的第一方面的第一种至第九种可能的实现方式之一,在第十种可能的实现方式中,去分配方法还包括:更新FTL表之前,将去分配命令指示的逻辑地址范围对应的FTL表的表项加锁;更新FTL表之后,将去分配命令指示的逻辑地址范围对应的FTL表的表项解锁。
结合本申请的第一方面的第一种至第十种可能的实现方式之一,在第十一种可能的实现方式中,去分配方法还包括:响应于收到读命令,通过去分配表判断所述读命令所读取的逻辑地址是否被分配,其中,若所读取的逻辑地址未被分配,则以第二指定值作为对读命令的响应,若所读取的逻辑单元地址被分配,则查询FTL表获得要读取的逻辑地址对应的物理地址,从物理地址读取数据作为对读命令的响应。
结合本申请的第一方面的第一种至第十种可能的实现方式之一,在第十二种可能的实现方式中,去分配方法还包括:响应于收到读命令,通过去分配表判断所述读命令所读取的逻辑地址是否被分配,其中,若所读取的逻辑地址未被分配,以状态信息向主机告知所读取的逻辑地址无效、非法或处于一种或多种去分配状态。
结合本申请的第一方面的第十二种可能的实现方式,在第十三种可能的实现方式中,去分配方法还包括:主机的驱动程序基于被告知的状态信息,生成提供给读取所述逻辑地址的应用的读取结果或者数据。
结合本申请的第一方面的第二种至第十三种可能的实现方式之一,在第十四种可能的实现方式中,去分配方法还包括:响应于收到写命令,为写命令分配物理地址,根据所分配的物理地址更新FTL表以及去分配表。
结合本申请的第一方面的第十四种可能的实现方式,在第十五种可能的实现方式中,去分配方法还包括:响应于收到写命令,在更新FTL表完成后,向物理地址写入数据,并向主机反馈写命令处理完成。
在使用本申请的第一方面提供的去分配方法处理时,先根据去分配命令获取去分配命令指示的逻辑地址范围,再更新去分配表,将去分配命令指示的逻辑地址范围对应的去分配表的表项设置为第一指定值,其中去分配表用于记录FTL表中的逻辑地址是否被分配的信息,然后指示去分配命令执行完成,从而可以高速对去分配命令进行处理,并且对去分配命令的处理不影响同时发生的IO命令的执行。
本申请的第二方面提供一种处理读命令的方法,该方法包括:响应于收到读命令,通过去分配表判断所述读命令所读取的逻辑地址是否被分配,其中,若所读取的逻辑地址未被分配,则以第二指定值作为对读命令的响应,若所读取的逻辑单元地址被分配,则查询FTL表获得要读取的逻辑地址对应的物理地址,从物理地址读取数据作为对读命令的响应。
本申请的第三方面提供一种处理读命令的方法,该方法包括:响应于收到读命令,通过去分配表判断所述读命令所读取的逻辑地址是否被分配,其中,若所读取的逻辑地址未被分配,以状态信息向主机告知所读取的逻辑地址无效、非法或处于一种或多种去分配状态。
结合本申请的第三方面,在第一种可能的实现方式中,处理读命令的方法还包括:主机的驱动程序基于被告知的状态信息,生成提供给读取所述逻辑地址的应用的读取结果或者数据。
本申请的第四方面提供一种处理写命令的方法,该方法包括:响应于收到写命令,为写命令分配物理地址,用所分配的物理地址更新FTL表、有效数据单元表、有效数据单元计数表以及去分配表。
结合本申请的第四方面,在第一种可能的实现方式中,处理写命令的方法还包括:响应于收到写命令,在更新FTL表完成后,向物理地址写入数据,并向主机反馈写命令处理完成。
本申请的第五方面提供一种存储设备,该存储设备包括获取模块、更新模块和指示模块,其中,获取模块用于根据去分配命令获取去分配命令指示的逻辑地址范围;更新模块用于更新去分配表,将去分配命令指示的逻辑地址范围对应的去分配表的表项设置为第一指定值,其中去分配表用于记录FTL表中的逻辑地址是否被分配的信息;指示模块用于指示去分配命令执行完成。
本申请的第六方面提供一种存储设备,该存储设备包括控制部件、接口、DRAM和一个或多个NVM,其中,DRAM中存储有去分配表和FTL表,接口用于与控制部件交换数据,控制部件根据去分配命令获取去分配命令指示的逻辑地址范围,并更新去分配表,将去分配命令指示的逻辑地址范围对应的去分配表的表项设置为第一指定值,其中去分配表用于记录FTL表中的逻辑地址是否被分配的信息,并指示去分配命令执行完成。
本申请的第七方面提供一种计算机程序,当被载入存储设备并在存储设备的控制部件上执行时,计算机程序包括的计算机程序代码使控制部件执行第一方面或者第一方面的第一种至第十五种可能的实现方式之一所述的去分配方法。
本申请的第八方面提供一种去分配方法,该去分配方法包括:步骤S1、根据去分配命令获取去分配命令指示的逻辑地址范围;步骤S2、更新FTL表,将去分配命令指示的逻辑地址范围对应的FTL表的表项设为预设值,其中,FTL表的表项用于指示逻辑地址与物理地址的对应关系;步骤S3、响应于FTL表的更新,更新有效页表,有效页表用于记录存储设备的物理页所存储的数据的状态;步骤S4、响应于有效页表的更新,更新有效页计数表,其中,有效页计数表用于记录物理块、大块或物理块组中处于有效状态的物理页的数量。
结合本申请的第八方面,在第一种可能的实现方式中,去分配方法还包括:步骤S5、响应于有效页计数表的更新,更新物理块、大块或物理块组的优先级,该优先级为对物理块、大块或物理块组在执行垃圾回收操作时的优先级;步骤S6、对优先级最高的物理块、大块或物理块组执行垃圾回收操作。
结合本申请的第八方面或者第八方面的第一种可能的实现方式,在第二种可能的实现方式中,步骤S2包括:每次更新FTL表的多个表项。
结合本申请的第八方面的第二种可能的实现方式,在第三种可能的实现方式中,在一个CPU更新FTL表的多个表项期间,阻止其他CPU访问正在被更新的FTL表的表项,或者,使其他CPU不要访问正在被更新的FTL表的表项。
结合本申请的第八方面的第三种可能的实现方式,在第四种可能的实现方式中,每次更新存储空间连续的多个FTL表的表项,并且在一个CPU更新存储空间连续的多个FTL表的表项期间,阻止其他CPU访问正在被更新的FTL表的表项,或者,使其他CPU不要访问正在被更新的FTL表的表项。
结合本申请的第八方面或者第八方面的第一种至第四种可能的实现方式之一,在第五种可能的实现方式中,步骤S2中,使用DMA操作更新存储多个FTL表的表项的内存空间。
结合本申请的第八方面或者第八方面的第一种至第五种可能的实现方式之一,在第六种可能的实现方式中,步骤S2中,预设值为0。
结合本申请的第八方面或者第八方面的第一种至第六种可能的实现方式之一,在第七种可能的实现方式中,步骤S2中,逻辑地址为逻辑页的地址,物理地址为物理页的地址。
结合本申请的第八方面的第七种可能的实现方式,在第八种可能的实现方式中,若逻辑页对应的存储空间和物理页的存储空间相同,在有效页表中,每个比特用于指示一个物理页的有效性。
结合本申请的第八方面的第七种可能的实现方式,在第九种可能的实现方式中,若物理页的存储空间可容纳多个逻辑页,在有效页表中每个比特用于指示同逻辑地址相对应的物理存储区域的有效性。
结合本申请的第八方面或者第八方面的第一种至第九种可能的实现方式之一,在第十种可能的实现方式中,步骤S4中,有效页计数表是数组、线性表或者链表。
结合本申请的第八方面的第一种至第十种可能的实现方式之一,在第十一种可能的实现方式中,步骤S6中,有效页数为0的物理块、大块或物理块组为优先级最高的物理块、大块或物理块组。
结合本申请的第八方面或者第八方面的第一种至第十一种可能的实现方式之一,在第十二种可能的实现方式中,去分配方法还包括:在步骤S2之后,向主机反馈去分配命令处理完成;或者,在步骤S4之后,向主机反馈去分配命令处理完成。
结合本申请的八方面或者第八方面的第一种至第十二种可能的实现方式之一,在第十三种可能的实现方式中,去分配方法还包括:在步骤S1和步骤S2之间,将去分配命令指示的逻辑地址范围对应的FTL表的表项加锁;在步骤S2和步骤S3之间,将去分配命令指示的逻辑地址范围对应的FTL表的表项解锁。
结合本申请的第八方面或者第八方面的第一种至第十三种可能的实现方式之一,在第十四种可能的实现方式中,去分配方法还包括:在步骤S1和步骤S2之间,将去分配表的表项清零,其中,去分配表的表项用于存储每个逻辑地址是否被分配的信息。
结合本申请的第八方面的第十四种可能的实现方式,在第十五种可能的实现方式中,去分配方法还包括:在将去分配表清零后,向主机反馈去分配命令处理完成。
结合本申请的第八方面的第十四种或者第十五种可能的实现方式,在第十六种可能的实现方式中,去分配方法还包括:通过DMA操作对去分配表进行更新。
根据本申请的第九方面,提供了根据本申请第九方面第一去分配方法,包括:响应于去分配命令,根据去分配命令获取去分配命令指示的逻辑地址范围;更新FTL表,将去分配命令指示的逻辑地址范围对应的FTL表的表项设为指定值;响应于写命令,将为写命令分配的物理地址与写命令访问的逻辑地址的关联关系记录在NVM中。
根据本申请第九方面第一去分配方法,提供了根据本申请第九方面第二去分配方法,还包括:响应于去分配命令,更新去分配表,将去分配命令指示的逻辑地址范围对应的去分配表的表项设置为指定值;其中去分配表用于记录FTL表中的逻辑地址是否被分配的信息。
根据本申请第九方面第一或第二去分配方法,提供了根据本申请第九方面第三去分配方法,其中在更新FTL表之前,更新去分配表,并指示去分配命令执行完成。
根据本申请第九方面第一至第三去分配方法,提供了根据本申请第九方面第四去分配方法,其中响应于去分配命令,不在内存中记录物理数据单元是否存储有效数据的指示。
根据本申请第九方面第一至第四去分配方法,提供了根据本申请第九方面第五去分配方法,其中响应于去分配命令或写命令,更新有效数据单元计数表,其中,有效数据单元计数表用于记录物理块、大块或物理块组中处于有效状态的物理数据单元的数量。
根据本申请第九方面第一至第五去分配方法,提供了根据本申请第九方面第六去分配方法,还包括:响应于进行垃圾回收过程:获取物理数据单元的第一物理地址;获取在NVM中记录的同第一物理地址对应的逻辑地址;用所述逻辑地址查询FTL表得到第二物理地址;以及若第一物理地址与第二物理地址相同,回收所述物理数据单元存储的数据。
根据本申请第九方面第六去分配方法,提供了根据本申请第九方面第七去分配方法,还包括:若第一物理地址与第二物理地址不同,丢弃所述物理数据单元存储的数据。
根据本申请第九方面第六或第七去分配方法,提供了根据本申请第九方面第八去分配方法,其中同第一物理地址对应的逻辑地址被记录在在所述物理数据单元所在的物理块、大块或物理块组中。
根据本申请第九方面第一至第八去分配方法之一,提供了根据本申请第九方面第九去分配方法,还包括:依据有效数据单元计数表,更新物理块、大块或物理块组的优先级,该优先级为用于执行垃圾回收操作的优先级;以及依据第一优先级执行垃圾回收操作。
根据本申请第九方面第一至第九去分配方法之一,提供了根据本申请第九方面第十去分配方法,其中更新FTL表期间,阻止正在被更新的FTL表的表项被访问。
根据本申请第九方面第一至第十去分配方法之一,提供了根据本申请第九方面第十一去分配方法,还包括:响应于收到读命令,通过去分配表判断所述读命令所读取的逻辑地址是否被分配,其中,若所读取的逻辑地址未被分配,则以指定值、和/或状态信息作为对读命令的响应,其中状态信息向主机告知所读取的逻辑地址无效、非法或处于一种或多种去分配状态。
根据本申请第九方面第十一去分配方法,提供了根据本申请第九方面第十二去分配方法,还包括:若所读取的逻辑单元地址被分配,则查询FTL表获得要读取的逻辑地址对应的物理地址,从物理地址读取数据作为对读命令的响应。
根据本申请第十方面,提供了根据本申请第十方面的第一固态存储设备,包括控制部件与NVM芯片;所述控制部件用于执行根据本申请第九方面的去分配方法之一。
根据本申请的第十一方面,提供了根据本申请第十一方面的第一垃圾回收方法,包括:获取物理数据单元的第一物理地址;获取在NVM中记录的同第一物理地址对应的逻辑地址;用所述逻辑地址查询FTL表得到第二物理地址;以及若第一物理地址与第二物理地址相同,回收所述物理数据单元存储的数据。
根据本申请的第十一方面的第一垃圾回收方法,提供了根据本申请第十一方面的第二垃圾回收方法,还包括:若第一物理地址与第二物理地址不同,丢弃所述物理数据单元存储的数据。
根据本申请的第十一方面的第一或第二垃圾回收方法,提供了根据本申请第十一方面的第三垃圾回收方法,还包括:响应于回收所述物理数据单元存储的数据,分配第三物理地址,将所述物理数据单元存储的数据写入第三物理地址,在FTL表中记录所述逻辑地址与第三物理地址的关联关系,以及在NVM中记录所述第三物理地址与所述逻辑地址的关联关系。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为存储设备的框图;
图2为本申请实施例的处理去分配命令前的FTL表的示意图;
图3为本申请实施例的处理去分配命令前的有效页表的示意图;
图4为本申请实施例的处理去分配命令前的有效页计数表的示意图;
图5为本申请实施例的处理去分配命令的方法的流程图;
图6为本申请实施例的处理去分配命令后的FTL表的示意图;
图7为本申请实施例的处理去分配命令后的有效页表的示意图;
图8为本申请实施例的处理去分配命令后的有效页计数表的示意图;
图9为本申请实施例的处理读命令的流程图;
图10为本申请实施例的处理去分配命令前的去分配表的示意图;
图11为本申请实施例的处理去分配命令后的去分配表的示意图;
图12A为本申请实施例的处理去分配命令的方法的流程图;
图12B为本申请实施例的响应读命令的方法的流程图;
图12C为本申请实施例的响应写命令的方法的流程图;
图12D是根据本申请实施例的垃圾回收过程的流程图;
图13为本申请实施例的大块的示意图;
图14为本申请实施例的处理去分配命令前的FTL表的示意图;
图15为本申请实施例的处理去分配命令前的有效页表的示意图;
图16为本申请实施例的处理去分配命令前的有效页计数表的示意图;
图17为本申请实施例的处理去分配命令的方法的流程图;
图18为本申请实施例的处理去分配命令后的FTL表的示意图;
图19为本申请实施例的处理去分配命令后的有效页表的示意图;
图20为本申请实施例的处理去分配命令后的有效页计数表的示意图;以及
图21为本申请实施例的处理去分配命令的方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。FTL表记录了存储设备中以数据页为单位的地址映射关系。FTL表包括多个FTL表的表项(或称条目)。在一个例子中,每个FTL表的表项中记录了一个逻辑页地址与一个物理页的对应关系。在另一个例子中,每个FTL表的表项中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一个实施例中,每个FTL表的表项中记录了逻辑块地址与物理块地址的对应关系。在依然又一个例子中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
在去分配命令中,描述了逻辑地址范围。在执行了去分配命令后,可以有不同的效果。例如,(1)执行去分配命令后,在读取去分配命令所指示的逻辑地址范围时,所得到的是确定的(执行对该逻辑地址范围的其他写入操作之前);(2)执行去分配命令后,在读取去分配命令所指示的逻辑地址范围时,所得到的结果是全0(执行对该逻辑地址范围的其他写入操作之前);(3)执行去分配命令后,在读取去分配命令所指示的逻辑地址范围时,所得到的结果可以是任意值(执行对该逻辑地址范围的其他写入操作之前)。在去分配命令或者其他命令中可设置或选择去分配命令的执行效果。通过使用去分配命令,主机能够告知固态硬盘哪些逻辑地址空间不再存储有效数据,从而固态硬盘在回收存储空间时,不必搬移已经失效的数据。
在固态硬盘中,有多种执行去分配命令的方法。为执行去分配操作,将FTL表中,由去分配命令所描述的逻辑地址范围所指示的FTL表项设置为特殊标记(例如,0)。例如,去分配命令指示的逻辑地址范围包括0-7与100-103。为执行该去分配命令,将FTL表中记录了逻辑地址0-7以及100-103的条目的内容设置为0。从而接下来要读取逻辑地址LBA 0-7或LBA100-103中的一个或多个时,在FTL表中查询到这些逻辑地址对应的物理地址为0(含义为特殊标记),从而以符合去分配命令的指定效果的结果(例如,全0)作为对读命令的响应。可以理解的是,去分配命令所指示的逻辑地址范围可以与FTL表的表项的具有不同的单位大小。例如,去分配命令中,一个逻辑地址对应512字节的存储空间,而在FTL表中,一个表项对应4KB(千字节)的存储空间。
在根据本申请的实施例中,以物理块、大块或者物理块组为单位执行擦除或者垃圾回收操作,下文对以物理块为单位执行擦除或者垃圾回收操作,以及以大块为单位执行擦除或者垃圾回收操作相对应的处理去分配命令的方法进行详细描述,以物理块组为单位执行擦除或者垃圾回收操作相对应的处理去分配命令的方法可以参照二者内容获得,文中不再进行赘述。
实施例二
在本实施例中,存储设备中以物理块为单位执行擦除或垃圾回收操作。在本实施例中,每个FTL表的表项中记录了一个逻辑页地址与一个物理页的对应关系。在固态硬盘中,维护FTL表、有效页表以及有效页计数表。其中,图2为本实施例中的处理去分配命令前的FTL表的示意图,FTL表指示逻辑页地址与物理页地址的对应关系。图3为本实施例中的处理去分配命令前的有效页表的示意图(图3中仅示出与图2中的FTL表相关的物理块的有效页表),有效页表记录对应物理块中存储的对应于逻辑页的数据的状态。图4为本实施例中的处理去分配命令前的有效页计数表的示意图,在有效页计数表中记录了各个物理块中处于有效状态的物理页的数量。需要说明的是,图3示出的有效页表中由横线所标注的有效比特指示了图2中示出的逻辑地址LBA0-LBA7对应的物理页,未标注横线的其他有效比特指示了其他逻辑地址对应的物理页,而无效比特所对应的物理页没有被任何逻辑地址所引用。在图3的例子中,用位图作为数据结构来指示物理块的各个物理页的有效性,应当理解,也可以使用多种其他数据结构。
参看图2,以物理块1为例,其物理地址为“PBA 1-4”的物理页中存储了逻辑地址为“LBA0”的数据,因而在图3所示的物理块1的有效页表中,物理地址为“PBA 1-4”的物理页的状态为有效(图3中,在第2行第1列的位置用“1”指示)。而图2所示的物理块1的物理地址为“PBA1-0”的物理页没有被任何逻辑地址所引用,因而在图3所示的物理块1的有效页表中,物理地址为“PBA 1-0”的物理页的状态为无效(图3中,在第1行第1列的位置用“0”指示)。其他类似,此处不再一一描述。与之对应地,图4中的有效页计数表指示物理块0中当前有5个物理页有效,物理块1中当前有9个物理页有效,物理块2中当前有0个物理页有效,物理块3中当前有11个物理页有效。
本实施例中,可以根据逻辑页对应的存储空间和物理页的存储空间的关系,确定在有效页表中,每个比特用于指示有效性的物理存储区域。
在一个例子中,逻辑页对应的存储空间和物理页的存储空间相同,则在有效页表中,用1比特来指示对应的一个物理页的状态,以减少对内存空间的占用。例如,FTL表中的逻辑页对应4KB存储空间,而物理页的存储空间也为4KB(还包括附加的带外存储空间),在此情况下,有效页表中,每个比特指示一个物理页的状态。
在另一个例子中,逻辑页对应的存储空间和物理页的存储空间不相同,例如物理页的存储空间可容纳多个逻辑页,逻辑页对应4KB的存储空间,而物理页的存储空间能够容纳多个逻辑页(例如4个),在此情况下,有效页表中,每个比特指示同逻辑地址相对应的物理存储区域的有效性。例如,若物理块1包括512个物理页,那么物理块1的有效页表中包括2048个比特。类似地,有效页计数表中记录物理块中当前存储的为FTL表中的逻辑地址所引用的4KB存储空间的数量。例如,若物理块1包括512个16KB大小物理页,而在FTL表中有9个LBA所对应的物理地址属于物理块1,那么物理块1的有效页计数为9。
图5为本实施例提供的处理去分配命令的方法的流程图。如图5所示,响应于收到去分配命令(510),获取去分配命令指示的逻辑地址范围(例如,LBA0-LBA3)(520)。去分配命令指示的逻辑地址范围,可以是一段连续的逻辑地址范围,或者两段或更多段连续的逻辑地址范围。去分配命令指示的逻辑地址范围包括可用于索引FTL表的一个或多个逻辑地址。
将去分配命令指示的(一个或多个)逻辑地址(例如,LBA0-LBA3)对应的FTL表的表项(也参看图2)加锁(530),以避免垃圾回收(GC,Garbage Collection)或其他任务会同时访问FTL表的这些表项,从而防止引起错误。加锁并不是必需的,如果不存在多个任务同时访问FTL表的同一表项的可能,则即使不加锁,也不会引起错误。依然可选地,采用无所访问技术访问FTL表,以消除多个任务同时访问FTL的相同表项时可能发生的冲突。
将(一个或多个)逻辑地址(例如,LBA0-LBA3)对应的FTL表的表项清零,或者将FTL表的表项设置为指定值(540)。此时,零或其他指定值作为物理地址,指示读取该物理地址将获取到为执行去分配命令所指定的值(例如,全0的值或者全为指定值的值)。
作为一种可选的方式,当去分配命令指示的(一个或多个)逻辑地址范围为LBA0-LBA3时,在完成对关联于逻辑地址LBA0-LBA3的FTL表表项的清零或设置后,即向主机反馈去分配命令处理完成。
将加锁的FTL表的表项解锁(550),从而允许其他任务访问FTL表的这些表项。
作为另一种可选的方式,根据FTL表的表项的更新,相应更新同被更新的FTL表的表项的物理地址对应的物理块的有效页表(560)。例如,图6为本实施例中的处理去分配命令后的FTL表的示意图。而图2展示的是处理去分配命令前的FTL表。参看图6,响应于LBA0-LBA3对应的FTL表的表项被清零,物理地址PBA 1-4、PBA 3-6、PBA 1-9与PBA 1-10不再存储有效数据。图7为本实施例中的处理去分配命令后的有效页表的示意图。而图3展示的是处理去分配命令前的有效页表。相应地,如图7所示,物理块1的有效页表中,物理块1的地址为PBA1-4、PBA1-9与PBA1-10的物理页变为无效(例如,对应的比特被设置为0),而物理块3的有效页表中,物理块3的地址为PBA3-6的物理页变为无效。
由于物理块中的有效页发生变化,相应更新有效页计数表(570)。例如,图8为本实施例中的处理去分配命令后的有效页计数表的示意图。而图4为本实施例中的处理去分配命令前的有效页计数表的示意图。如图8所示,响应于LBA0-LBA3对应的FTL表的表项被清零,物理块1的有效页计数从9变为6,而物理块3的有效页计数从11变为10。
有效页计数可用于指示垃圾回收操作的优先级。例如,在执行垃圾回收操作时,优先回收有效页计数低的物理块。进一步地,对有效页计数为0的物理块,可立即执行擦除操作以回收存储空间。作为另一个例子,响应于对有效页计数表的更新,还更新有效页数量被更新的物理块的用于垃圾回收的优先级(580)。从而在执行垃圾回收操作时,依照物理块的垃圾回收优先级来选择要被回收的物理块。例如,有效页数量越少的物理块,垃圾回收优先级越高,越先被回收。为维护有效页计数表,有效页计数表可以为数组、线性表、链表等多种数据结构。可选地,在有效页计数表更新完成后,向主机反馈去分配命令处理完成。
在使用图5所展示的处理去分配命令的方法对去分配命令处理完成后,向去分配命令所指示的逻辑地址范围写入数据前,如图9所示,响应于收到读命令(910),查询FTL表获得要读取的逻辑地址对应的物理地址(920),若物理地址为零,以全0作为对读命令的响应(930)。此时,当主机读取应用了去分配命令的地址时,将得到预定的结果,例如是全0。当然,也可用其他方式向主机指示所读取的逻辑地址被去分配,例如,不向主机提供读取的数据,而以状态信息向主机告知所读取的逻辑地址无效、非法或处于一种或多种去分配状态。进一步地,主机的驱动程序基于存储设备告知的状态信息,生成提供给读取这些地址的应用的读取结果或数据。
在上述处理去分配命令的方法中,若去分配命令指示了大量的逻辑地址范围时(例如,LBA10000-LBA 20000),对多个FTL表表项的清零是耗时的,因此,通过多种方式加快对FTL表表项的更新操作。例如,每次更新多个FTL表表项,并且在1个CPU更新多个FTL表表项期间,阻止其他CPU访问被更新的FTL表表项,或使其他CPU不要尝试访问被更新的FTL表表项。作为另一个例子,使用DMA操作来更新存储多个FTL表表项的内存空间。在依然另一个例子中,每次更新存储空间连续的FTL表表项,并且在更新存储空间连续的FTL表表项期间,阻止其他访问FTL表表项的操作,以减少对内存的随机访问,以加快对FTL表表项的更新操作。
示例性地,本实施例中的FTL表、有效页表与有效页计数表均可存储在DRAM中。
实施例三
在根据本申请的实施例3中,相对于实施例2,取消有效页表。具体地,在控制部件104(参看图1)的存储器或DRAM 110中不记录有效页表(参看图3、图7)。
作为替代,在NVM芯片的物理块中,记录该物理块的每个物理地址被写入数据时同物理地址对应的逻辑地址。作为举例,在物理块中记录逻辑页的逻辑地址。在物理块中,相关联地记录属于该物理块的每个被写入数据的物理地址与该物理地址被写入数据时对应的逻辑地址。例如,在物理块中记录物理地址与逻辑地址对,并且依据物理地址可索引对应的逻辑地址。作为又一个例子,在物理块中,按物理地址的顺序,依次记录同各物理地址对应的逻辑地址,从而依据逻辑地址的存储位置可获知与其对应的物理地址,而无须记录物理地址本身,从而节省存储空间。
可以理解地,在向物理块写入数据时,在其中记录物理地址与逻辑地址的关联关系。由于NVM芯片不支持原位写入操作,在物理块被写满数据后,不再更新其中的物理地址与逻辑地址的关联关系。因而,在物理块中记录的物理地址与逻辑地址的对应关系,未必有效。若发生对某逻辑地址的更新,固态存储设备将为逻辑地址分配新物理地址,并在FTL表中记录逻辑地址与新物理地址的关联关系,而物理块中记录的依然是旧物理地址与逻辑地址的关联关系。
可选地,向物理块写入数据的过程中,缓存同物理块中被写入数据的物理地址与逻辑地址的关联关系。在关联关系被写入物理块之前,若部分物理地址同逻辑地址的关联关系已经变为无效,还记录一个或多个物理地址同逻辑地址的关联关系的无效性,从而可有效识别已经存储了无效数据的物理地址。
在根据本申请的实施例3中,为处理去分配命令,在步骤540或步骤550(参看图5)处理完成后,向主机指示去分配命令处理完成。而无须处理图5的步骤560,从而加快去分配命令的处理速度。可选地,也不执行步骤570和/或步骤580,以进一步加快去分配命令的处理速度。
相应地,在根据本申请的实施例3中,在向物理块写入数据时,在其中记录物理地址与逻辑地址的关联关系。从而可依据物理块中记录的物理地址与逻辑地址的关联关系,以及FTL表,恢复出有效页表的信息,用于例如垃圾回收过程。后文中还将详细描述恢复有效页表信息的过程。
实施例四
实施例四中,为高效处理去分配命令,还维护去分配表。进一步地,还将去分配表写入NVM,从而在异常掉电后重新启动时,能够通过去分配表记录的信息获得正确的FTL表。
图10和图11为去分配表的示意图,其中,图10为本申请实施例中处理去分配命令前的去分配表的示意图;图11为本申请实施例中处理去分配命令后的去分配表的示意图。如图10和图11所示,去分配表中,存储对应于FTL表中的每个逻辑地址是否被分配的信息。作为举例,在去分配表中为FTL表的每个逻辑地址提供1比特的存储空间。
如图11所示,当逻辑地址已经被分配(即在FTL表中该逻辑地址具有有效的物理地址),在去分配表中,将该逻辑地址标记为“被分配”(例如,将对应的1比特存储空间设置为0);当逻辑地址未被分配或者已经被应用了去分配命令时,该逻辑地址在去分配表中被标记为“去分配”(例如,将对应的1比特存储空间设置为1)。
示例性地,在与图2所示的处理去分配命令前的FTL表对应的图10所示的去分配表中,FTL表中逻辑地址LBA 0-LBA 7都被分配了有效的物理地址,因而在如图10所示的去分配表中,LBA0-LBA 7都被标记为“被分配”(对应的1比特存储空间均设置为0)。响应于收到去分配命令,对LBA0–LBA3的逻辑地址范围执行去分配命令的过程中,如图11所示,去分配表中LBA0-LBA 3都被标记为“去分配”(对应的1比特存储空间均设置为1),而去分配表中LBA 4-LBA7依然被标记为“被分配”(对应的1比特存储空间均设置为0)。在如图6所示的处理去分配命令后的FTL表中,对应逻辑地址LBA 0-LBA 3的表项的物理地址被设置为0。与之对应地,相应地修改有效页表与有效页计数表。参照图3和图7可知,物理块0与物理块1的有效页表也做了相应更新,类似地,参照图4和图8可知,有效页计数表也做了相应更新。
示例性地,本实施例中的去分配表存储在控制部件104(参看图1)的存储器或DRAM110中。可选地,通过DMA操作更新DRAM中的去分配表。
图12A为本申请实施例四中处理去分配命令的方法的流程图。响应于收到去分配命令(参看图12A中1210),获取去分配命令所指示的逻辑地址范围(参看图12A中1212),例如,要对LBA 0–LBA 3的逻辑地址范围执行去分配。根据去分配命令所指示的逻辑地址范围,更新去分配表(参看图10与图11)的表项(参看图12A中1214),例如将图11所示的去分配表中与逻辑地址LBA 0-LBA 3对应的表项标记为“去分配”(具有1值)。在更新了去分配表后,即可向主机指示去分配命令执行完成。从而在实施例四中,去分配命令的执行速度得到了极大的提升。
接下来,依据去分配命令所指示的逻辑地址范围,更新FTL表的表项,例如,将去分配命令所指示的一个或多个逻辑地址对应的FTL表项清零,或设置为指定值(参看图12A中1218)。可选地,在更新FTL表前,还对要更新的一个或多个逻辑地址对应的FTL表的表项加锁(参看图12A中1216),从而避免FTL表项被更新期间,其他任务读取这些FTL表项。以及在更新FTL表后,还对被更新的一个或多个逻辑地址对应的FTL表的表项解锁(参看图12A中1220)。
相应地,还更新同被更新的FTL表的表项的物理地址对应的物理块的有效页表(参看图7以及图12A中1222)与有效页计数表(参看图8以及图12A中1224)。
图12B为本申请实施例四中响应读命令的方法的流程图。在实施例四中,参看图12A,当去分配表更新完成后,即向主机告知去分配命令执行完成。此后主机读取被去分配的逻辑地址时,应当收到诸如全0的指定指示。在图12B中,响应于收到读命令(参看图12B中1230),查询去分配表(参看图11),判断读命令所读取的逻辑地址是否被去分配(参看图12B中1232)。若去分配表指示所读取的逻辑地址处于去分配状态,则以全0或者其他指定的指示作为对读命令的响应(参看图12B中1234)。只有当区分配表指示所读取的逻辑地址已被分配时,才查询FTL表获得要读取的逻辑地址对应的物理地址(参看图12B中1236),并从获得的物理地址读取数据作为对读命令的响应(参看图12B中1238)。
可选地,查询去分配表将增加读操作的延迟,对于访问已被分配的逻辑地址的读命令,查询去分配表是没有积极意义的。为此,还记录固态存储设备正在执行去分配命令的状态。响应于收到去分配命令(参看图12A中1210),标记存储设备正在执行去分配命令。在此情况下,若收到读命令,则首先查询去分配表(参看图12B中1232)。而当去分配命令执行完成后,例如在图12A所示的步骤1218或步骤1220执行完成后,标记存储设备已经完成对去分配命令的执行。在此情况下,若收到读命令,则不必执行图12B中步骤1232,而直接执行图12B中步骤1236。
图12C为本申请实施例四中响应写命令的方法的流程图。对于未被写入数据的固态存储设备,其去分配表中指示所有的逻辑地址均处于去分配状态。响应于逻辑地址被写入数据,去分配表与被写入数据的逻辑地址对应的表项被修改为已分配状态。而响应于执行去分配命令,被去分配的逻辑地址在去分配表中的表项被再次修改为去分配状态。参看图12C,当收到写命令(参看图12C中1240),为写命令分配物理地址,并用写命令所指示的逻辑地址与分配的物理地址更新FTL表(参看图12C中1242)。向被分配的物理地址写入数据,并向主机反馈写命令处理完成(参看图12C中1244)。可选地,为降低写命令处理延迟,在步骤1242之后,在将数据写入物理地址之前,即向主机反馈写命令处理完成。还更新有效页表与有效页计数表(参看图12C中1246),以作为物理块被写入数据的响应。还更新去分配表,将被写入的逻辑地址在去分配表中的表项设置为已分配(参看图12C中1248)。图12C中,步骤1244、步骤1246与步骤1248的顺序可以调整,也可以并行或同时被执行。优选地,步骤1244、步骤1246与步骤1248发生在步骤1242之后。
实施例五
在根据本申请的实施例五中,响应于收到去分配命令,获取去分配命令所指示的逻辑地址范围。例如,要对LBA 0–LBA 3的逻辑地址范围执行去分配。根据去分配命令所指示的逻辑地址范围,更新去分配表,例如将图11所示的去分配表中与逻辑地址LBA 0-LBA 3对应的表项标记为“去分配”(具有1值)。在更新了去分配表后,即可向主机指示去分配命令执行完成。
在实施例五中,不在控制部件104(参看图1)的存储器或DRAM 110中存储有效页表,在处理去分配命令时,也不更新有效页表。从而在实施例五中,去分配命令的执行速度得到进一步提升。
可选地,在存储器中维护有效页计数表,以及响应于收到去分配命令,还更新有效页计数表。
在实施例五中,响应于处理写命令,在向物理块写入数据时,在物理块中记录物理地址与逻辑地址的关联关系,以替代有效页表。响应于收到写命令,将去分配表与被写入数据的逻辑地址对应的表项被修改为已分配状态。响应于收到写命令,还为写命令分配物理地址,并用写命令所指示的逻辑地址与分配的物理地址更新FTL表。向被分配的物理地址写入数据,并向主机反馈写命令处理完成。可选地,还更新有效页计数表。在向被分配的物理地址写入数据时,还向物理地址所对应的物理块写入该物理地址与逻辑地址的关联关系。可选地,缓存物理地址与逻辑地址的关联关系,而在物理块的用户数据区被写满后,将缓存的多个物理地址与逻辑地址的关联关系一并写入物理块。
图12D是根据本申请实施例五的垃圾回收过程的流程图。在垃圾回收过程中,识别物理块中存储的数据是否是有效数据。对有效数据进行回收,写入固态存储设备的其他物理块,而丢弃无效数据。
为回收物理块中的有效数据,从物理块中获取同第一物理地址对应的逻辑地址,再从FTL表中获取同逻辑地址对应的第二物理地址,若第一物理地址同第二物理地址相同,则意味着第一物理地址处存储的是有效数据,否则,第一物理地址处存储的是无效数据。
参考图12D,对指定的物理块进行垃圾回收时,对于物理块中的容纳用户数据的每个物理单元,获取其物理地址(在实施例五中,将其称为第一物理地址)(1250)。获取物理块中记录的同第一物理地址对应的逻辑地址(1252)。可选地,在对指定物理块进行垃圾回收时,首先将物理块中记录的物理地址同逻辑地址的关联关系读入内存,以便于垃圾回收过程中使用。可选地,在垃圾回收过程中,从物理块读出指定物理地址与逻辑地址的关联关系。
利用物理块中记录的逻辑地址查询FTL表,得到对应的物理地址(在实施例五中,将其称为第二物理地址)(1254)。比较第一物理地址与第二物理地址是否相同(1256),或是否指示了相同的物理地址。若第一物理地址与第二物理地址指示相同的物理地址,意味着物理块的第一物理地址处存储的数据依然有效,需要进行回收,以及将第一物理地址处存储的数据写入其他物理块(1258)。若第一物理地址与第二物理地址指示不同的物理地址,意味着物理块的第一物理地址处存储的数据已经无效,无需回收,可以丢弃(1260)。以及返回步骤1250,处理物理块中的下一个物理单元。
对物理块的中的一个或多个物理单元的垃圾回收过程可以并行处理。
可以理解地,物理块中的每个物理页可包括多个物理单元,每个物理单元容纳对应FTL表的1个表项的逻辑地址所对应的数据(可选地,还包括诸如校验数据的带外数据)。
依然可选地,根据有效页计数表选择要进行垃圾回收的物理块。
根据本申请的实施例五,不维护有效页表,降低了对存储空间的占用。在处理去分配命令时,无须更新有效页表,加快了去分配命令的处理速度。虽然在垃圾回收时识别物理地址处的数据是否有效引入了额外的延迟,但垃圾回收操作的延迟用户基本体会不到,不影响固态硬盘的性能。
实施例六
在根据本申请的实施例六中,存储设备中以大块为单位执行擦除或者垃圾回收操作。图13为大块的示意图,作为举例,如图13所示,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个物理块,来自16个逻辑单元(LUN)的每一个。在图13的例子中,大块0包括来自16个逻辑单元(LUN)的每个的物理块0,大块1包括来自每个逻辑单元(LUN)的物理块1。
在本实施例中,每个FTL表的表项中记录了一个逻辑地址与一个大块中的物理单元的对应关系。示例性地,在FTL表中,每个逻辑地址对应4KB的存储空间,而NVM中的每个物理页包括4个物理单元,每个物理单元容纳对应1个FTL表项的逻辑地址所对应的数据(可选地,还包括诸如校验数据的带外数据)。图14为本实施例中的处理去分配命令前的FTL表的示意图。参看图14,FTL表中记录的PBA 0-4指示大块0的地址为4的物理单元,PBA 1-6指示大块1的地址为6的物理单元,FTL表中记录的PBA0-9指示大块0的地址为9的物理单元,而PBA0-15指示大块0的地址为15的物理单元。当然,有多种其他方式来构造大块,此处不再一一进行赘述。
作为一种可选的方式,在大块中构造页条带。每个逻辑单元(LUN)内相同物理地址的物理页构成了“页条带”。如图13所示,物理页0-0、物理页0-1……与物理页0-x构成了页条带0。其中物理页0-0、物理页0-1……物理页0-14用于存储用户数据,而物理页0-15用于存储根据条带内的所有用户数据计算得到的校验数据。当然,用于存储校验数据的物理页可以位于页条带中的任意位置,以上只是举例而非限定。类似地,图13中,物理页2-0、物理页2-1……与物理页2-x构成了页条带2。大块中的部分物理页(称为元数据页)被保留(用户不可使用),用于存储例如大块的物理单元的物理地址同逻辑地址的关联关系。在图13中,元数据页0到元数据页14用于存储元数据,而元数据页x用于存储根据元数据页计算的校验数据。
在实施例六中,为每个大块提供有效页表,用于记录对应大块中存储的对应于逻辑地址的数据(物理单元)的状态。图15为本实施例中处理去分配命令前的有效页表。需要说明的是,图15中,有效页表中由横线所标注的有效比特指示了图14的FTL表中逻辑地址LBA0-LBA7对应的物理单元,未标注横线的其他有效比特指示了其他逻辑地址对应的物理单元,而无效比特所对应的物理单元没有被任何逻辑地址所引用。
参看图15,以大块0为例,其物理地址为“PBA 0-4”的物理单元中存储了逻辑地址为“LBA0”的数据,因而在大块0的有效页表中,地址为“PBA 0-4”的物理单元的状态为有效(图15中,由有效页表(大块0)的第2行第1列的“1”指示)。而图15所示的大块0的地址为“PBA0-0”的物理单元没有被任何逻辑地址所引用,因而在大块0的有效页表中,地址为“PBA 0-0”的物理单元的状态为无效(图15中,由有效页表(大块0)的第1行第1列的“0”指示)。其他类似,此处不再一一描述。可选地,在有效页表中,用1比特来指示对应的一个物理单元的状态,以减少对内存空间的占用。
图16为根据实施例六的处理去分配命令前的有效页计数表,在有效页计数表中记录了各个大块中处于有效状态的物理单元的数量。与之对应地,如图16所示,大块0中当前有9个物理单元有效,大块1中当前有11个物理单元有效,大块2中有0个物理单元有效,大块3中有11个物理单元有效。
图17为根据实施例六的处理去分配命令的方法的流程图。如图17所示,实施例六提供的处理去分配命令的方法包括:响应于收到去分配命令(参看图17中1710),获取去分配命令指示的(一个或多个)逻辑地址范围(例如,LBA0-LBA3)(参看图17中1720)。
将(一个或多个)逻辑地址(例如,LBA0-LBA3)对应的FTL表的表项(参看图14)加锁(参看图17中1730),以避免垃圾回收(GC,Garbage Collection)或其他任务会同时访问FTL表的这些表项,避免引起错误。当然,加锁并不是必需的,如果不存在多个任务同时访问FTL表的同一表项的可能,则即使不加锁,也不会引起错误。
将(一个或多个)逻辑地址(例如,LBA0-LBA3)对应的FTL表的表项清零,或者将FTL表的表项设置为指定值(参看图17中1740)。此时,零或其他指定值作为物理地址,指示读取该物理地址将获取到为执行去分配命令所指定的值(例如,全0的值或者全为指定值的值)。例如,图18为本实施例中的处理去分配命令后的FTL表的示意图。而图14为本实施例中的处理去分配命令前的FTL表的示意图。参看图18,响应于LBA0-LBA3对应的FTL表的表项被清零,物理地址PBA0-4、PBA 1-6、PBA 0-9与PBA 0-10不再存储有效数据。
作为一种可选的方式,当去分配命令指示的(一个或多个)逻辑地址范围为LBA0-LBA3时,在完成对关联于逻辑地址LBA0-LBA3的FTL表表项的清零后,即可向主机反馈去分配命令处理完成。
将加锁的FTL表的表项解锁(参看图17中1750),从而允许其他任务访问FTL表的这些表项。
作为另一种可选的方式,根据FTL表的表项的更新,相应更新同被更新的FTL表的表项的物理地址对应的大块的有效页表(参看图17中1760)。相应地,图19为本实施例中的处理去分配命令后的有效页表的示意图。而图15为本实施例中的处理去分配命令前的有效页表的示意图。如图19所示,大块0的有效页表中,大块0的物理地址为PBA 0-4、PBA 0-9与PBA0-10的物理单元变为无效(例如,对应的比特被设置为0),而大块1的有效页表中,大块1的地址为PBA1-6的物理单元变为无效。
由于大块中的有效物理单元发生变化,相应更新有效页计数表(参看图17中1770)。例如,响应于LBA0-LBA3对应的FTL表的表项被清零,图20为本实施例中的处理去分配命令后的有效页计数表的示意图。而图16为本实施例中的处理去分配命令前的有效页计数表的示意图。如图20所示,大块0的有效页计数从9变为6,而大块1的有效页计数从11变为10。有效页计数可用于指示垃圾回收操作的优先级。例如,在执行垃圾回收操作时,优先回收有效页计数低的大块。进一步地,对有效页计数为0的大块,可立即执行擦除操作以回收存储空间。作为另一个例子,响应于对有效页计数表的更新,还更新有效页数量被更新的大块的用于垃圾回收的优先级,从而在执行垃圾回收操作时,依照大块的垃圾回收优先级来选择要被回收的大块。其中,有效页数量越少的大块,垃圾回收优先级越高,越先被回收。为维护有效页计数表,有效页计数表可以为数组、线性表、链表等多种数据结构。可选地,在有效页计数表更新完成后,向主机反馈去分配命令处理完成。
在使用根据本申请实施例六提供的处理去分配命令的方法对去分配命令处理完成后,向去分配命令所指示的逻辑地址范围写入数据前,响应于收到读命令,查询FTL表获得要读取的逻辑地址对应的物理地址,若物理地址为零,以全0作为对读命令的响应。此时,当主机读取处理去分配命令时对应的地址时,将得到预定的结果,例如是全0。当然,也可用其他方式向主机指示所读取的逻辑地址被去分配,例如,不向主机提供读取的数据,而以状态信息向主机告知所读取的逻辑地址无效、非法或处于一种或多种去分配状态。进一步地,主机的驱动程序基于存储设备告知的状态信息,生成提供给读取这些地址的应用的读取结果或数据。
在根据本申请实施例六提供的处理去分配命令的方法中,若去分配命令指示了大量的逻辑地址范围时(例如,LBA 10000-LBA 20000),对多个FTL表表项的清零是耗时的。可以通过多种方式加快对FTL表表项的更新操作。例如,每次更新多个FTL表表项,并且在1个CPU更新多个FTL表表项期间,阻止其他CPU访问被更新的FTL表表项,或使其他CPU不要尝试访问被更新的FTL表表项。作为另一个例子,使用DMA操作来更新存储多个FTL表表项的内存空间。在依然另一个例子中,每次更新存储空间连续的FTL表的表项,并且在更新存储空间连续的FTL表表项期间,阻止其他访问FTL表表项的操作,以减少对内存的随机访问,以加快对FTL表表项的更新操作。
示例性地,本实施例中的FTL表、有效页表与有效页计数表均可存储在DRAM中。
实施例七
在根据本申请的实施例七中,相对于实施例六,取消有效页表。具体地,在控制部件104(参看图1)的存储器或DRAM 110中不记录有效页表(参看图5、图19)。
作为替代,在大块的元数据页中,记录该大块的每个物理单元的物理地址被写入数据时同物理地址对应的逻辑地址。在大块中,相关联地记录属于该大块的每个被写入数据的物理地址与该物理地址被写入数据时对应的逻辑地址。例如,在大块中记录物理地址与逻辑地址对,并且依据物理地址可索引对应的逻辑地址。作为又一个例子,在大块中,按物理地址的顺序,依次记录同各物理地址对应的逻辑地址,从而依据逻辑地址的存储位置可获知与其对应的物理地址,而无须记录物理地址本身,从而节省存储空间。
可以理解地,在大块中记录的物理地址与逻辑地址的对应关系,未必有效。若发生对某逻辑地址的更新,固态存储设备将为逻辑地址分配新物理地址,并在FTL表中记录逻辑地址与新物理地址的关联关系,而大块中记录的依然是旧物理地址与逻辑地址的关联关系。
可选地,向大块写入数据的过程中,缓存同大块中被写入数据的物理地址与逻辑地址的关联关系。在关联关系被写入大块之前,若部分物理地址同逻辑地址的关联关系已经变为无效,还记录一个或多个物理地址同逻辑地址的关联关系的无效性,从而可有效识别已经存储了无效数据的物理地址。
在根据本申请的实施例七中,为处理去分配命令,在步骤1740或步骤1750(参看图17)处理完成后,向主机指示去分配命令处理完成。而无须处理图17的步骤1760,从而加快去分配命令的处理速度。可选地,也不执行步骤1770,以进一步加快去分配命令的处理速度。
相应地,在根据本申请的实施例3中,在向物理块写入数据时,在其中记录物理地址与逻辑地址的关联关系。从而可依据物理块中记录的物理地址与逻辑地址的关联关系,以及FTL表,恢复出有效页表的信息,用于例如垃圾回收过程。后文中还将详细描述恢复有效页表信息的过程。
实施例八
根据本申请的实施例八中,为高效处理去分配命令,还维护去分配表。进一步地,还将去分配表写入NVM,从而在异常掉电后重新启动时,能够通过去分配表记录的信息获得正确的FTL表。在异常掉电后启动时,获取去分配表,依据去分配表中记录的各个无效的逻辑地址,将FTL表中对应的逻辑地址的条目的物理地址设置为指定值。
在实施例八中,使用图10或图11示出的去分配表。去分配表中,存储对应于FTL表中的每个逻辑地址是否被分配的信息。作为举例,在去分配表中为FTL表的每个逻辑地址提供1比特的存储空间。
图21为本申请实施例八中处理去分配命令的方法的流程图。响应于收到去分配命令(参看图21中2110),获取去分配命令所指示的(一个或多个)逻辑地址范围(参看图21中2112),例如,要对LBA 0–LBA 3的逻辑地址范围执行去分配。根据去分配命令所指示的逻辑地址范围,更新去分配表(参看图10与图11)的表项(参看图21中2114),例如将图11所示的去分配表中与逻辑地址LBA 0-LBA3对应的表项标记为“去分配”(具有1值)。在更新了去分配表后,即可向主机指示去分配命令执行完成。从而在实施例八中,去分配命令的执行速度得到了极大的提升。
接下来,依据去分配命令所指示的逻辑地址范围,更新FTL表的表项,例如,将去分配命令所指示的一个或多个逻辑地址对应的FTL表项清零,或设置为指定值(参看图21中2118)。可选地,在更新FTL表前,还对要更新的一个或多个逻辑地址对应的FTL表的表项加锁(参看图21中2116),从而避免FTL表项被更新期间,其他任务读取这些FTL表项。以及在更新FTL表后,还对被更新的一个或多个逻辑地址对应的FTL表的表项解锁(参看图21中2120)。
相应地,还更新同被更新的FTL表的表项的物理地址对应的大块的有效页表(参看图15、图19以及图21中2122)与有效页计数表(参看图16、图20以及图21中2124)。
实施例九
在根据本申请的实施例九中,不在控制部件104(参看图1)的存储器或DRAM 110中存储有效页表,在处理去分配命令时,也不更新有效页表。从而在实施例九中,去分配命令的执行速度得到进一步提升。
可选地,在存储器中维护有效页计数表,以及响应于收到去分配命令,还更新有效页计数表。
在实施例九中,响应于处理写命令,在向物理块写入数据时,在物理块中记录物理地址与逻辑地址的关联关系,以替代有效页表。响应于收到写命令,将去分配表与被写入数据的逻辑地址对应的表项被修改为已分配状态。响应于收到写命令,向被分配的物理地址写入数据,并向主机反馈写命令处理完成。可选地,还更新有效页计数表。在向被分配的物理地址写入数据时,还向物理地址所对应的大块写入该物理地址与逻辑地址的关联关系。可选地,缓存物理地址与逻辑地址的关联关系,而在大块或大块的物理块之一的用户数据区被写满后,将缓存的多个物理地址与逻辑地址的关联关系一并写入大块或物理块。
在垃圾回收过程中,识别大中存储的数据是否是有效数据。对有效数据进行回收,写入固态存储设备的其他大块,而丢弃无效数据。
为回收大块中的有效数据,从大块中获取同第一物理地址对应的逻辑地址,以及从FTL表中获取同逻辑地址对应的第二物理地址,若第一物理地址同第二物理地址相同,则意味着第一物理地址处存储的是有效数据,否则,第一物理地址处存储的是无效数据。
对指定的大块进行垃圾回收时,对于大块中的容纳用户数据的每个物理单元,获取其物理地址(在实施例九中,将其称为第一物理地址)。获取大块中记录的同第一物理地址对应的逻辑地址。
利用大块中记录的逻辑地址查询FTL表,得到对应的物理地址(在实施例九中,将其称为第二物理地址)。比较第一物理地址与第二物理地址是否相同,或是否指示了相同的物理地址。若第一物理地址与第二物理地址指示相同的物理地址,意味着大块的第一物理地址处存储的数据依然有效,需要进行回收,以及将第一物理地址处存储的数据写入其他大块。若第一物理地址与第二物理地址指示不同的物理地址,意味着大块的第一物理地址处存储的数据已经无效,无需回收,可以丢弃(1260)。以及返回步骤1250,处理大块中的下一个物理单元。
对大块的中的一个或多个物理单元的垃圾回收过程可以并行处理。
依然可选地,根据有效页计数表中记录的大块的有效页数量和/或大块所经历的擦除次数,选择要进行垃圾回收的大块。
根据本申请的实施例九,不维护有效页表,降低了对存储空间的占用。在处理去分配命令时,无须更新有效页表,加快了去分配命令的处理速度。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种去分配方法,包括:
响应于去分配命令,根据去分配命令获取去分配命令指示的逻辑地址范围;响应于去分配命令,更新去分配表,将去分配命令指示的逻辑地址范围对应的去分配表的表项设置为指定值;其中去分配表用于记录FTL表中的逻辑地址是否被分配的信息;
更新FTL表,将去分配命令指示的逻辑地址范围对应的FTL表的表项设为指定值;响应于写命令,将为写命令分配的物理地址与写命令访问的逻辑地址的关联关系记录在NVM芯片中;
其中,还将去分配表的信息记录在NVM芯片中,在异常掉电后重新启动时,能够通过去分配表记录的信息获得正确的FTL表;
其中,响应于收到去分配命令,标记存储设备正在执行去分配命令,去分配命令执行完成后,标记存储设备已经完成对去分配命令的执行;在标记了存储设备正在执行去分配命令的情况下,若收到读命令,则首先查询去分配表,只有当去分配表指示所读取的逻辑地址已被分配时,才查询FTL表获得要读取的逻辑地址对应的物理地址,并从获得的物理地址读取数据作为对读命令的响应;在标记了存储设备已经完成对去分配命令的执行的情况下,若收到读命令,直接查询FTL表获得要读取的逻辑地址对应的物理地址,并从获得的物理地址读取数据作为对读命令的响应;
响应于进行垃圾回收过程:
获取物理数据单元的第一物理地址;
获取在NVM芯片中记录的同第一物理地址对应的逻辑地址;
用所述逻辑地址查询FTL表得到第二物理地址;以及
若第一物理地址与第二物理地址相同,回收所述物理数据单元存储的数据;
响应于回收所述物理数据单元存储的数据,分配第三物理地址,将所述物理数据单元存储的数据写入第三物理地址,在FTL表中记录所述逻辑地址与物理地址的关联关系,以及在NVM芯片中记录所述第三物理地址与所述逻辑地址的关联关系;
其中,向物理块写入数据的过程中,缓存向物理块中被写入数据的物理地址和逻辑地址的关联关系。
2.根据权利要求1所述的方法,其中
响应于去分配命令,不在内存中记录物理数据单元是否存储有效数据的指示。
3.根据权利要求2所述的方法,其中
响应于去分配命令或写命令,更新有效数据单元计数表,其中,有效数据单元计数表用于记录物理块、大块或物理块组中处于有效状态的物理数据单元的数量。
4.根据权利要求3所述的方法,还包括:
若第一物理地址与第二物理地址不同,丢弃所述物理数据单元存储的数据。
5.根据权利要求2所述的方法,还包括:
依据有效数据单元计数表,更新物理块、大块或物理块组的优先级,该优先级为用于执行垃圾回收操作的优先级;以及
依据第一优先级执行垃圾回收操作。
6.根据权利要求1所述的方法,其中
更新FTL表期间,阻止正在被更新的FTL表的表项被访问。
7.根据权利要求6所述的方法,还包括:
响应于收到读命令,通过去分配表判断所述读命令所读取的逻辑地址是否被分配,其中,若所读取的逻辑地址未被分配,则以指定值、和/或状态信息作为对读命令的响应,其中状态信息向主机告知所读取的逻辑地址无效、非法或处于一种或多种去分配状态。
8.一种固态存储设备,包括控制部件与NVM芯片;所述控制部件用于执行根据权利要求1-7之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710449766.1A CN109086219B (zh) | 2017-06-14 | 2017-06-14 | 去分配命令处理方法及其存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710449766.1A CN109086219B (zh) | 2017-06-14 | 2017-06-14 | 去分配命令处理方法及其存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109086219A CN109086219A (zh) | 2018-12-25 |
CN109086219B true CN109086219B (zh) | 2022-08-05 |
Family
ID=64838987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710449766.1A Active CN109086219B (zh) | 2017-06-14 | 2017-06-14 | 去分配命令处理方法及其存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109086219B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840048B (zh) * | 2017-11-29 | 2022-04-15 | 北京忆恒创源科技股份有限公司 | 存储命令处理方法及其存储设备 |
CN112148645A (zh) * | 2019-06-28 | 2020-12-29 | 北京忆芯科技有限公司 | 去分配命令处理方法及其存储设备 |
CN110825586A (zh) * | 2019-10-31 | 2020-02-21 | 江苏华存电子科技有限公司 | 非易失性内存主机控制器数据集管理操作效果保持方法 |
CN112764670A (zh) * | 2019-11-04 | 2021-05-07 | 深圳宏芯宇电子股份有限公司 | 闪存设备及闪存管理方法 |
CN114546245A (zh) * | 2020-11-18 | 2022-05-27 | 北京忆恒创源科技股份有限公司 | 利用zns标准实现透明压缩的方法及其设备 |
WO2022120527A1 (en) * | 2020-12-07 | 2022-06-16 | Micron Technology, Inc. | Techniques for accessing managed nand |
US11748011B2 (en) * | 2021-03-31 | 2023-09-05 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and storage device |
US11733895B2 (en) | 2021-03-31 | 2023-08-22 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and storage device |
CN115065664B (zh) * | 2022-06-17 | 2024-01-26 | 北京天融信网络安全技术有限公司 | 一种互联网协议地址的回收方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102893266A (zh) * | 2010-04-13 | 2013-01-23 | 苹果公司 | 存储器控制器飞速映射 |
CN103150261A (zh) * | 2013-03-11 | 2013-06-12 | 北京忆恒创源科技有限公司 | 用于同时访问多个固态盘的方法与装置 |
CN106354615A (zh) * | 2015-07-21 | 2017-01-25 | 北京忆恒创源科技有限公司 | 固态硬盘日志生成方法及其装置 |
WO2017091280A1 (en) * | 2015-11-25 | 2017-06-01 | Sandisk Technologies Llc | Multi-level logical to physical address mapping using distributed processors in non-volatile storage device |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727570B2 (en) * | 2011-06-03 | 2017-08-08 | Apple Inc. | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
KR101824949B1 (ko) * | 2011-11-23 | 2018-02-05 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 |
KR20140106576A (ko) * | 2011-12-14 | 2014-09-03 | 옵티스 셀룰러 테크놀리지, 엘엘씨 | 버퍼 리소스 관리 방법 및 원격통신 장비 |
US9323667B2 (en) * | 2012-04-12 | 2016-04-26 | Violin Memory Inc. | System and method for managing trim operations in a flash memory system using mapping tables and block status tables |
CN103019971A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 快速响应trim命令的方法、SSD控制器及系统 |
CN103927263B (zh) * | 2014-04-01 | 2017-02-15 | 华为技术有限公司 | 垃圾回收方法和装置 |
-
2017
- 2017-06-14 CN CN201710449766.1A patent/CN109086219B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102893266A (zh) * | 2010-04-13 | 2013-01-23 | 苹果公司 | 存储器控制器飞速映射 |
CN103150261A (zh) * | 2013-03-11 | 2013-06-12 | 北京忆恒创源科技有限公司 | 用于同时访问多个固态盘的方法与装置 |
CN106354615A (zh) * | 2015-07-21 | 2017-01-25 | 北京忆恒创源科技有限公司 | 固态硬盘日志生成方法及其装置 |
WO2017091280A1 (en) * | 2015-11-25 | 2017-06-01 | Sandisk Technologies Llc | Multi-level logical to physical address mapping using distributed processors in non-volatile storage device |
Non-Patent Citations (1)
Title |
---|
GFTL:一种基于页组映射的低能耗闪存转换层;白石等;《中国科技论文在线》;20111015(第10期);16-20 * |
Also Published As
Publication number | Publication date |
---|---|
CN109086219A (zh) | 2018-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086219B (zh) | 去分配命令处理方法及其存储设备 | |
CN107797934B (zh) | 处理去分配命令的方法与存储设备 | |
CN106708424B (zh) | 对用户数据执行选择性底层暴露映射的设备和方法 | |
US10437737B2 (en) | Data storage device | |
CN106708423B (zh) | 多模存储管理系统 | |
CN110928807B (zh) | 用于检查存储器系统中的有效数据的设备和方法 | |
CN107797938B (zh) | 加快去分配命令处理的方法与存储设备 | |
US11042305B2 (en) | Memory system and method for controlling nonvolatile memory | |
US20220327049A1 (en) | Method and storage device for parallelly processing the deallocation command | |
EP2441004A2 (en) | Memory system having persistent garbage collection | |
TWI463313B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
EP3346387B1 (en) | Storage system and system garbage collection method | |
CN109558334B (zh) | 垃圾数据回收方法及固态存储设备 | |
US11669461B2 (en) | Logical to physical table fragments | |
CN111104045A (zh) | 一种存储控制方法、装置、设备和计算机存储介质 | |
CN109840048B (zh) | 存储命令处理方法及其存储设备 | |
CN109426436B (zh) | 基于可变长大块的垃圾回收方法与装置 | |
WO2018041258A1 (zh) | 去分配命令处理的方法与存储设备 | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
CN110968527A (zh) | Ftl提供的缓存 | |
CN109840219B (zh) | 大容量固态存储设备的地址转换系统与方法 | |
CN110580228A (zh) | 去分配命令处理方法及其存储设备 | |
CN112099731A (zh) | 数据储存装置与数据处理方法 | |
US11907123B2 (en) | Flash memory garbage collection | |
US11886741B2 (en) | Method and storage device for improving NAND flash memory performance for intensive read workloads |
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 |
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. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |