CN116257460B - 基于固态硬盘的Trim命令处理方法及固态硬盘 - Google Patents
基于固态硬盘的Trim命令处理方法及固态硬盘 Download PDFInfo
- Publication number
- CN116257460B CN116257460B CN202111457211.4A CN202111457211A CN116257460B CN 116257460 B CN116257460 B CN 116257460B CN 202111457211 A CN202111457211 A CN 202111457211A CN 116257460 B CN116257460 B CN 116257460B
- Authority
- CN
- China
- Prior art keywords
- execution unit
- trim
- address
- data buffer
- mapping table
- 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
- 239000007787 solid Substances 0.000 title claims abstract description 67
- 238000003672 processing method Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 38
- 230000008569 process Effects 0.000 claims abstract description 32
- 239000000284 extract Substances 0.000 claims abstract description 14
- 238000013507 mapping Methods 0.000 claims description 144
- 238000012005 ligant binding assay Methods 0.000 claims description 16
- 230000000875 corresponding effect Effects 0.000 description 33
- 238000004148 unit process Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000002159 abnormal effect Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了Trim命令处理方法及固态硬盘,固态硬盘包括控制器,控制器包括第一执行单元、第二执行单元和数据缓冲区,控制器执行Trim命令处理方法:接收Trim命令存储在数据缓冲区中,Trim命令包括多条地址范围,每条地址范围包括第一类地址范围和/或第二类地址范围;第一执行单元遍历数据缓冲区提取出多条第一类地址范围进行处理及将数据缓冲区的地址发送至第二执行单元;第二执行单元遍历数据缓冲区提取出多条第二类地址范围进行处理;在多条地址范围均处理完成后返回Trim命令处理完成的信息。该处理方法将Trim命令分为两类地址范围分别执行,且由第二执行单元一次性提取和处理多条第二类地址范围,减少Trim命令的处理时间,避免高压力读写环境下处理超时。
Description
技术领域
本发明涉及固态硬盘技术领域,特别涉及一种基于固态硬盘的Trim命令处理方法及固态硬盘。
背景技术
固态硬盘(SSD,Solid State Drives)是用固态电子存储芯片制作的存储硬盘,主要由控制器,存储介质和缓存单元组成。连接在主机上,与主机之间进行数据交换。
图1a和图1b示出了现有技术中固态硬盘删除文件的操作示意图。如图1a,固态硬盘上的数据由文件系统进行管理,文件系统中存储着指向实际存放数据(File data)的LBA(Logical Block Address,逻辑区块地址)空间的各个文件的指针(File index),二者一一对应(File 1index指向数据File 1data,File 2index指向数据File 2data)。删除文件时删除指针,对应的数据表示被废弃,被废弃的文件空间可以再被其他文件占用(File1index指针被删除,那么数据File 1data所在空间可以被其他数据例如数据File 3data占用,File 3index指针指向数据File 3data)。
但是在固态硬盘中,文件删除时仅是删除了指针,而数据文件仍然保留,如图1b,当用户删除文件时只是切断文件与操作系统的关联,但固态硬盘仍然保留着逻辑地址与物理地址的映射,闪存中的数据也被固态硬盘认为有效,后续垃圾回收时这些数据仍然会被搬运。即在图1a中,虽然File 1index指针被删除,而固态硬盘仍然认为数据File 1data为存在于闪存当中的有效数据,后续垃圾回收时仍被搬运,造成写浪费。只有数据File 1data的LBA被数据File 3data复写时,被复写的那一部分LBA才会被当作真正的垃圾数据。文件系统的这种行为会对固态硬盘造成额外的开销。Trim命令(Data Set ManagementCommand)被用于解决这一问题。
Trim命令的用途是告诉固态硬盘哪一段LBA空间被系统删除了,而固态硬盘接收到此消息后,便会做出相应的操作(如删除固态硬盘中该段LBA所对应的L2P信息),使这段LBA空间的数据变为垃圾数据。Trim命令提前将无效数据清空以减缓固态硬盘的读写速度的下降,但是目前的固态硬盘中Trim命令的执行过程较长,命令处理容易超时。
发明内容
鉴于上述问题,本发明的目的在于提供一种基于固态硬盘的Trim命令处理方法及固态硬盘,以解决现有技术中存在的问题。
根据本发明的一方面,提供一种基于固态硬盘的Trim命令处理方法,所述固态硬盘包括闪存存储器和控制器,所述控制器包括第一执行单元、第二执行单元和数据缓冲区,所述控制器执行以下Trim命令处理方法:
接收主机发送的Trim命令并存储在所述数据缓冲区中,所述Trim命令包括多条地址范围,每条所述地址范围包括第一类地址范围和/或第二类地址范围;
由所述第一执行单元将所述数据缓冲区的地址发送至所述第二执行单元;
由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理;
由所述第一执行单元遍历所述数据缓冲区并提取出多条所述第一类地址范围进行处理;以及
在接收到所述多条地址范围均处理完成的反馈信息后,向所述主机返回所述Trim命令处理完成的信息,
其中,所述第二类地址范围的LBA在所述闪存存储器中的映射地址的长度对应物理页中至少一个完整的4KB单元,所述第一类地址范围的LBA在所述闪存存储器中的映射地址的长度小于物理页中一个完整的4KB单元。
可选地,由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理包括:
所述第二执行单元遍历所述数据缓冲区的所有所述地址范围,一次性提取出其中的多条所述第二类地址范围;
更新每条所述第二类地址范围对应的L2P映射表;
将多条所述第二类地址范围处理完成的信息反馈至所述第一执行单元。
可选地,更新每条所述第二类地址范围对应的L2P映射表包括:
将每条所述第二类地址范围的L2P映射表中逻辑地址对应的内容设置为NULL。
可选地,由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理还包括:
建立并更新用于存放已更新到所述L2P映射表中的所述第二类地址范围信息的Trim映射表。
可选地,所述控制器在接收到所述主机下发的写命令时,将所述Trim映射表写入所述闪存存储器。
可选地,在接收主机发送的Trim命令并存储在所述数据缓冲区中的步骤之后还包括:
将所述数据缓冲区中所述地址范围包含的LBA相邻且连续的所述地址范围合并。
根据本发明的另一方面,提供一种用于实现Trim命令处理方法的固态硬盘,包括控制器和闪存存储器,所述控制器与主机连接,用于接收所述主机发送的Trim命令,所述控制器包括处理器,所述处理器包括:
第一执行单元,接收所述Trim命令,将其中包含的多条地址范围存储至数据缓冲区,处理所述数据缓冲区中的多条第一类地址范围,并将所述数据缓冲区的地址发送至第二执行单元;
第二执行单元,与所述第一执行单元连接,遍历所述数据缓冲区,一次性提取和处理其中的多条第二类地址范围,并向所述第一执行单元反馈所述第二类地址范围处理完成的信息,
所述第一执行单元在接收到所述第二类地址范围处理完成的反馈信息和将所述第一类地址范围处理完成后,向所述主机返回所述Trim命令处理完成的信息,
其中,每条所述地址范围包括第一类地址范围和/或第二类地址范围,所述第二类地址范围的LBA在所述闪存存储器中的映射地址的长度对应物理页中至少一个完整的4KB单元,所述第一类地址范围的LBA在所述闪存存储器中的映射地址的长度小于物理页中一个完整的4KB单元。
可选地,所述控制器还包括SRAM,所述SRAM包括:
数据缓冲区,用于存放所述Trim命令的多条所述地址范围;
L2P映射表单元,用于存放L2P映射表,所述第二执行单元在处理所述第二类地址范围时,将多条所述第二类地址范围对应的L2P映射表更新至所述L2P映射表单元中。
可选地,所述SRAM还包括:
Trim映射表单元,用于存放已更新到所述L2P映射表中的所述第二类地址范围信息的Trim映射表。
可选地,所述L2P映射表和所述Trim映射表在达到所述L2P映射表的刷表条件时,由所述控制器写入所述闪存存储器;所述Trim映射表在所述控制器接收到所述主机的写命令时被写入所述闪存存储器。
可选地,所述处理器包括两个CPU,则所述第一执行单元和所述第二执行单元分别运行在两个CPU上;
所述处理器仅包括一个CPU,则所述第一执行单元和所述第二执行单元运行在同一CPU上,且所述CPU分时执行所述第一执行单元的任务和所述第二执行单元的任务。
本申请提供的基于固态硬盘的Trim命令处理方法和固态硬盘,接收到主机的Trim命令后,将其包含的多条地址范围存储在数据缓冲区中,而地址范围又依据其包含的LBA在闪存存储器中映射地址的长度分为两类,映射地址的长度小于物理页的一个完整4KB单元的第一类地址范围和映射地址的长度等于物理页中至少一个完整4KB单元的第二类地址范围,分别由第一执行单元和第二执行单元处理两类地址范围,加快Trim命令的处理进程,并且由第二执行单元遍历数据缓冲区,一次性提取和处理其中的多条第二类地址范围,节省了Trim命令的处理时间,避免高压力读写环境下的命令处理超时。
另外,通过将LBA相邻且连续的地址范围合并,增加了第二类地址范围的数量,由第二执行单元统一处理,加快所有地址范围的处理速度,进一步节约Trim命令的处理时间。
进一步地,第二执行单元处理第二类地址范围时,将其对应的L2P映射表更新,同时维护一份Trim映射表,用于记录已更新至L2P映射表中的第二类地址范围的信息,该Trim映射表刷写至闪存存储器的频率高于L2P映射表刷写至闪存存储器的频率,从而在异常掉电环境下能够最大限度的减少Trim命令丢失的数量。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1a和图1b示出了现有技术中固态硬盘删除文件的操作示意图;
图2a示出了Trim命令包含的地址信息示意图;
图2b示出了固态硬盘执行Trim命令的简易操作示意图;
图2c示出了固态硬盘的数据缓冲区存储Trim命令的示意图;
图3示出了根据本发明实施例的Trim命令处理方法的流程图;
图4示出了根据本发明实施例的用于实现Trim命令处理方法的固态硬盘的示意性框图。
具体实施方式
以下将参照附图更详细地描述本发明。在各个附图中,相同的元件采用类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。此外,可能未示出某些公知的部分。
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
图2a示出了Trim命令包含的地址信息示意图。
如图2a,根据NVMe Spec协议中的Dataset Manager定义,一条Trim命令最多由256条Range(Range 0-Range 255)组成,每条Range中记录了需要删除数据的字节,起始LBA以及LBA的长度。当固态硬盘处理Trim命令时,其固件需要解析每一条Range的信息,并对之进行处理,只有当所有Range的信息都被处理完成后,这条Trim命令才算真正的完成。在下文中,也将Range称为地址范围,那么,每条Trim命令包括多个地址范围。一条Trim命令中,如果从Range 0开始到Range n的范围就将所需要删除的数据范围全部覆盖,那么Range(n+1)的内容就为全0,即无效。其中,每条Range所覆盖的数据地址范围是由主机决定的。
图2b示出了固态硬盘执行Trim命令的简易操作示意图;图2c示出了固态硬盘的数据缓冲区存储Trim命令的示意图。
如图2b,当主机10删除文件时,由主机10向固态硬盘的控制器20发送Trim命令,控制器20执行Trim命令删除对应的L2P映射表,并将其更新至闪存存储器,例如NAND30中。那么,固态硬盘执行Trim命令时的操作如下:
首先,主机10向控制器20发送Trim命令。该固态硬盘的控制器20包含两个执行单元,第一执行单元21和第二执行单元22,另外,该控制器20还包括数据缓冲区23和L2P映射表单元24。Trim命令主要由第一执行单元21和第二执行单元22进行处理,第一执行单元21又称为Host Trim模块,第二执行单元22又称为FTL Trim模块。在控制器20获取Trim命令后,第一执行单元21执行如下步骤:1、获取主机发送的Trim命令;2、将Trim命令按照命令格式存储于数据缓冲区23当中,一条Trim命令包含多条Range,均存储在数据缓冲区中。
如图2c所示,数据缓冲区的大小为4KB,用于存储一条Trim命令的1-256条Range。Trim命令按照地址范围(Range)逐条存储在数据缓冲区23中,主机10在当前的Trim命令执行完毕之前不会下发新的Trim命令。L2P映射表(Logical To Physical Table,逻辑到物理映射表)的最小映射单元为4KB,即映射表当中每条逻辑地址对应NAND30当中4KB大小的数据。而每条Range中记录了需要删除数据的字节,起始LBA以及LBA的长度,每个LBA在闪存存储器中均对应有相应的映射地址,LBA对应的数据存储在闪存存储器的物理页中,每个物理页包含一至多个4KB单元,LBA的一个区块对应的映射地址长度为512Byte(字节),因此一条地址范围(Range)最小可以删除512Byte(字节)的数据。每条Range包含的LBA在闪存存储器中的映射地址的长度不同,有的Range包含的LBA在闪存存储器中的映射地址的长度小于物理页的一个4KB单元,这类不满足4KB大小的地址范围称为Partial Trim,即非4K对齐的地址范围;而有的Range包含的LBA在闪存存储器中的映射地址的长度正好等于物理页的一个或多个4KB单元,这类恰好满足4KB大小及其倍数的地址范围称为4K对齐的地址范围。一条Trim命令中可能同时存在4K对齐的地址范围与不满足4KB大小的Partial Trim,而一条Range中也可能同时包含4K对齐的部分和非4K对齐的部分,因此,一条Range可能仅包含4K对齐的地址范围或仅包含非4K对齐的地址范围,也可能同时包含4K对齐的地址范围和非4K对齐的地址范围。图2c给出了一条Trim命令中包含多条地址范围的示例,将多条地址范围依次逐条存储在数据缓冲区23中,Range 0例如为4K对齐的地址范围,以*LPAs表示,示例的,Range 0=LBA0-7,那么该条地址范围在闪存存储器中对应的映射地址长度恰好为一个完整的4KB单元。Range 1同时包含4K对齐的地址范围和非4K对齐的地址范围,非4K对齐的地址范围以#LPAs表示,示例的,Range 1=LBA6-16,其中,LBA6-7为非4K对齐的地址范围,LBA8-15为4K对齐的地址范围,LBA16为非4K对齐的地址范围。Range 2例如为非4K对齐的地址范围,以#LPAs表示,示例的,Range 2=LBA1-8,虽然这个LBA长度也能对应4KB的映射地址,但是对应的并不是完整的4KB单元,而是两个相邻的4KB单元中各取一部分,因此,Range2实际上包含两个非4K对齐的地址范围,LBA1-7和LBA8。Range 3例如为4K对齐的地址范围,以*LPAs表示,示例的,Range 0=LBA0-15,那么该条地址范围在闪存存储器中对应的映射地址长度恰好为两个完整的4KB单元。LPAs表示还未存储地址范围的单元。
在存储Trim命令之后,第一执行单元21执行如下步骤:3、发送缓冲区地址给第二执行单元22;4、处理未对齐地址范围。即第一执行单元21遍历数据缓冲区23中的各个Range,将4K对齐的地址范围发送给第二执行单元22处理,而非4K对齐的地址范围交由第一执行单元21来处理。第二执行单元22执行如下操作:5、更新L2P映射表;6、存储L2P映射表;7、对齐地址范围处理完成反馈。即第二执行单元22接收第一执行单元21发送的各条Range的地址信息,处理4K对齐的地址范围,将其对应的L2P映射表更新在L2P映射表单元24中;之后再将更新后的L2P映射表存储在NAND30中。第二执行单元22处理完4K对齐的地址范围之后,向第一执行单元21反馈处理完成结果。
第一执行单元21在接收到第二执行单元22的反馈和处理完非4K对齐的地址范围之后,向主机反馈Trim命令处理完成的结果,Trim命令处理完成。
在上述处理过程中,当第一执行单元21向第二执行单元22发送缓冲区地址时,第二执行单元22一次仅能处理一个由上级下发的Range的地址信息,即逐条接收4K对齐的地址范围并逐条处理,并且,第一执行单元21在遍历数据缓冲区23时,遇到包含4K对齐的地址范围的Range,将其发送至第二执行单元22,当第二执行单元22处理完上级下发的一条Range之后,第一执行单元21才能执行下一条Range的处理,即每条Range串行处理,第一执行单元21和第二执行单元22处理非4K对齐的地址范围和4K对齐的地址范围是串行处理的,处理进程缓慢。这样对于整条Trim命令而言,处理时间较长,在高压力读写环境下Trim命令处理容易超时。另外,当Trim命令处理过程中,若发生异常断电时,此时L2P映射表未完全刷新,Trim命令也容易丢失,主机10不会再次发送Trim命令,命令执行不完整,导致固态硬盘的空间被占用,造成资源浪费。
通过以下实施例对Trim命令的处理方法进行优化,使其能加快Trim命令的处理进程,也能减小异常断电对固态硬盘的影响。图3-图4的实施例示出基于固态硬盘的Trim命令处理方法和固态硬盘,其具备如下特性:快速的解析主机发送的Trim命令;将Trim命令所对应的信息快速地更新至L2P映射表当中;尽可能的防止异常断电情况导致Trim命令的丢失。以下结合图3-图4介绍基于固态硬盘的Trim命令的处理方法。
图3示出了根据本发明实施例的Trim命令处理方法的流程图。
为加快Trim命令的执行,本实施例的第二执行单元能够自主地一次性遍历并处理数据缓冲区的一整条Trim命令中所有4K对齐的地址范围。另外,第二执行单元还独立维护一份Trim映射表,该Trim映射表中同步记录已更新至L2P映射表中的Range信息,以防止异常掉电对Trim命令丢失造成的影响。
本实施例的固态硬盘包括:控制器和存储介质。其采用闪存存储器作为存储介质来存储数据,同时采用控制器执行Trim命令的处理方法,控制器包括第一执行单元、第二执行单元和数据缓冲区,闪存存储器例如为NAND存储器。如图3所示,本实施例的Trim命令处理方法主要包括以下流程:
在步骤S101中,接收主机发送的Trim命令并存储在数据缓冲区中,Trim命令包括多条地址范围,每条地址范围包括第一类地址范围和/或第二类地址范围。
本步骤中,第一执行单元接收主机发送的Trim命令,Trim命令包括多条地址范围(参见图2a-图2c),将多条地址范围依次存储在数据缓冲区,而每条地址范围包括第一类地址范围和/或第二类地址范围,即一条地址范围可能仅包括第一类地址范围或第二类地址范围,也可以同时包含第一类地址范围和第二类地址范围。
在步骤S102中,将数据缓冲区中地址范围包含的LBA相邻且连续的地址范围合并。
在本步骤中,由第一执行单元将数据缓冲区中相邻的地址范围中LBA重叠或者连续的地址范围合并,合并操作是指:若相邻两条Range对应的LBA逻辑区块地址连续或发生重叠时,则对这两条Range的逻辑区块地址进行合并。例如,Range A与Range B是相邻且连续的Range,则将Range A与Range B的Starting LBA(起始逻辑区块地址)以及区间长度(Length)信息合并,并将合并后的数据存放于Range B当中,并将Range A中的数据清空(将其长度设为0)。经过合并操作,两条或多条Range可以被合并为一条处理,且4K对齐的地址范围的数量得到了增加,原先的两条地址范围可能均包含着非4K对齐的地址范围,而合并后,全部成为4K对齐的地址范围,简化处理难度。
在步骤S103中,由第一执行单元将数据缓冲区的地址发送至第二执行单元。
本步骤中,由第一执行单元将数据缓冲区的地址发送至第二执行单元,接下来第二执行单元可以自主遍历数据缓冲区。
在步骤S104中,由第二执行单元遍历数据缓冲区并提取出多条第二类地址范围进行处理。
与图2c一致,将多条地址范围分为两类,第一类地址范围为非4K对齐的地址范围,第二类地址范围为4K对齐的地址范围。本实施例中,由第一执行单元处理多条第一类地址范围,由第二执行单元处理多条第二类地址范围,从而实现地址范围的快速有序处理,加快Trim命令的处理进程。
本步骤中,第二执行单元接收数据缓冲区的地址,自主遍历数据缓冲区,一次性解析提取出其中的多条第二类地址范围并进行处理。即第二执行单元将数据缓冲区中提取出的多条4K对齐的地址范围一并处理,而无需按照图2b中叙述的逐条处理,这样可以极大地节省4K对齐的地址范围的处理时间和响应速度。
由第二执行单元遍历数据缓冲区,一次性提取和处理多条第二类地址范围具体包括:第二执行单元遍历数据缓冲区的所有地址范围,一次性提取出其中的多条第二类地址范围;更新每条第二类地址范围对应的L2P映射表;将多条第二类地址范围处理完成的信息反馈至第一执行单元。而更新每条第二类地址范围对应的L2P映射表则是将每条第二类地址范围的L2P映射表中逻辑地址对应的内容设置为NULL。L2P映射表存储的是主机逻辑地址与闪存存储器物理地址之间的映射关系,将逻辑地址对应的内容设置为NULL,那么该L2P映射表就作废了,其对应物理地址所对应的数据就不会被GC(垃圾回收)当做有效数据进行处理,从而减小了写放大。
本步骤中,第二执行单元可以独立访问数据缓冲区,且能一次性提取出多条第二类地址范围,并对其进行更新L2P映射表的操作,无需根据第一执行单元的指示逐条处理,节省了大量的处理时间,避免高压力读写环境下的命令处理超时问题。
进一步地,由第二执行单元一次性遍历和处理多条第二类地址范围还包括:建立并更新用于存放已更新到L2P映射表中的所述第二类地址范围信息的Trim映射表。控制器在接收到主机下发的写命令时,将Trim映射表写入闪存存储器。第二执行单元除维护L2P映射表之外,还需要维护一份Trim映射表,这份Trim映射表存储着已经更新至L2P映射表(已经更新为NULL的L2P映射表)中的地址范围的信息,两份映射表都会被存储至闪存存储器中,两份表格增加了对Trim命令处理进程的保护程度。而且Trim映射表在主机有些命令下发或者L2P映射表已达到刷表阈值之后都会存入闪存存储器,Trim映射表刷写入闪存存储器的概率大于L2P映射表刷写入闪存存储器的概率,能减少异常掉电情况下Trim命令丢失的数量。
在步骤S105中,由第一执行单元遍历数据缓冲区并提取出多条第一类地址范围进行处理。
本步骤中,由第一执行单元遍历数据缓冲区,解析并提取出其中的所有非4K对齐的地址范围进行处理。本步骤与步骤S104的执行顺序不作要求,二者的顺序可以互换,即第一执行单元将数据缓冲区的地址发送至第二执行单元,然后开始遍历数据缓冲区处理非4K对齐的地址范围,之后由第二执行单元处理4K对齐的地址范围。另外,第一执行单元和第二执行单元还可以并行执行,即同时分别处理非4K对齐的地址范围和4K对齐的地址范围。
进一步地,非4K对齐的地址范围不能直接修改L2P映射表,且下发时间较长,因此,4K对齐的地址范围的处理相较非4K对齐的地址范围的处理较快。对本实施例的Trim命令处理方法,第一执行单元和第二执行单元可以分别运行在固态硬盘的两个CPU上(固态硬盘的处理器为双核CPU,包括CPU0和CPU1),那么,两个执行单元在两个CPU上同时处理地址范围,那么4K对齐的地址范围和非4K对齐的地址范围是并行处理的,且由于合并地址范围后,4K对齐的地址范围变多,非4K对齐的地址范围的下发时间减少,处理速度更快。另外,第一执行单元和第二执行单元可以运行在固态硬盘的同一个CPU上,此时,第一执行单元与第二执行单元可以视为软件模块,CPU分时执行两个执行单元的任务,即第一执行单元或第二执行单元处理完成后,另一个执行单元才开始执行相应动作,例如先由第一执行单元处理非4K对齐的地址范围,全部处理完后,由第二执行单元处理4K对齐的地址范围,由于4K对齐或非4K对齐的地址范围都是一次性处理的,所以本实施例的Trim命令处理时间相较现有技术有很大的缩减。
在步骤S106中,在接收到多条地址范围均处理完成的反馈信息后,向主机返回Trim命令处理完成的信息。
本步骤中,当第一执行单元和第二执行单元分别处理完对应的地址范围后,第二执行单元向第一执行单元反馈第二类地址范围处理完成的信息,由第一执行单元向主机反馈Trim命令处理完成的信息,表示Trim命令执行完毕。
以下结合图4进一步描述用于实现Trim命令的处理方法的固态硬盘。图4示出了根据本发明实施例的用于实现Trim命令处理方法的固态硬盘的示意性框图。
如图4所示,主机200与固态硬盘100相互连接,传输数据。固态硬盘100包括相连接的控制器101和闪存存储器102,采用闪存存储器(Flash Memory)102作为存储介质来存储数据,例如以NAND flash为例的非易失性存储器。控制器101与主机200连接,用于接收主机200发送的Trim命令,控制器101包括处理器110,以及与控制器110分别连接的SRAM(StaticRandom-Access Memory,静态随机存取存储器)120和闪存控制器130,闪存控制器130控制闪存存储器102上的数据传输。本实施例的固态硬盘100的处理器110可以包括两个CPU,第一执行单元和第二执行单元分别运行在两个CPU上,二者共同处理主机200发送的Trim命令;也可以处理器110仅包含一个CPU,第一执行单元和第二执行单元均运行在同一CPU上。处理器110包含两个CPU的情况下,第一执行单元和第二执行单元可以并行处理地址范围,响应速度更快,处理时间更短。SRAM120中例如包含数据缓冲区121,用于临时存放数据。
处理器110中的第一执行单元用于获取主机发送的Trim命令,并将Trim命令按照命令格式存储于数据缓冲区121中,数据缓冲区121为4KB大小的缓存空间,Trim命令包含多条Range(地址范围),每条地址范围包括第一类地址范围和/或第二类地址范围。第一执行单元还用于将数据缓冲区121中相邻的地址范围(Range)进行合并操作,合并操作是指:若相邻两条地址范围是连续的,即相邻两条Range对应的LBA逻辑区块地址连续或发生重叠时,将相邻两条Range合并。具体地,第一执行单元遍历数据缓冲区121中Trim命令中的各条Range,若出现相邻的Range的逻辑区块地址连续或重叠,则对这两条Range的逻辑区块地址进行合并。例如,Range A与Range B是相邻且连续的Range,则将Range A与Range B的Starting LBA(起始逻辑区块地址)以及区间长度(Length)信息合并,并将合并后的数据存放于Range B当中,并将Range A中的数据清空(将其长度设为0)。第一执行单元将合并之后的数据缓冲区121地址发送给第二执行单元,然后第一执行单元遍历数据缓冲区121,将数据缓冲区121中的多条非4K对齐的地址范围提取出来一次性进行处理。
第二执行单元用于处理多条4K对齐的地址范围,删除4K对齐的地址范围的LBA所对应的L2P映射表信息。L2P映射表(Logical To Physical Table,逻辑到物理映射表)是记录主机200逻辑地址到闪存存储器102物理地址的映射关系的映射表,是一份以LBA为索引,PBA为内容的顺序表。删除L2P映射表信息实际上时将其逻辑地址所对应的内容设为NULL,切断逻辑地址和物理地址的联系。因此更新L2P映射表时,只需要将逻辑地址对应位置的地址内容设置为NULL即表示该逻辑地址的映射关系已删除。而当第二执行单元在更新L2P映射表时,其所更新的L2P映射表是一级映射表,存放于SRAM120当中,例如在SRAM120中设置一个L2P映射表单元122用于存放更新的L2P映射表。在第二执行单元更新完L2P映射表之后,还需要通过闪存控制器130将其存储至闪存存储器(NAND)102中。
进一步地,本实施例中,第二执行单元在获取到第一执行单元发送的数据缓冲区121的地址之后,遍历数据缓冲区121中的各个Range,并一次性将4K对齐的地址范围提取出来,更新其LBA对应的L2P映射表。一次性遍历和处理多个4K对齐的地址范围,使得固态硬盘100即使在高压力读写环境下也能保证Trim命令处理不会超时。而且先将连续的地址范围进行合并,合并之后4K对齐的地址范围会增多,由第二执行单元一次性处理会进一步减少处理时间。
由于第二执行单元所更新的L2P映射表是一级映射表,只有当一级映射表更新的数据量达到一定阈值时(即触发了刷表条件),才会将L2P映射表写到NAND当中。那么更新L2P映射表到将更新的L2P映射表写入NAND之间存在一定的时间差,若在此时间段内,固态硬盘100出现异常掉电,则还未写入NAND当中的Trim命令的信息便会丢失。为防止大批量的Trim命令的相关信息丢失,本实施例的第二执行单元除了更新L2P映射表外,还单独维护一份Trim映射表,该Trim映射表存放了已更新到L2P映射表中的地址范围(Range)信息,当L2P映射表达到刷表阈值,需要写入闪存存储器102时,Trim映射表也会写入闪存存储器102中,用以维持数据先后顺序的一致性;且在主机200有写命令下发时也会将此Trim映射表写入闪存存储器(NAND)102中。将第二执行单元更新过的L2P映射表以及其对应的处理过的Range信息均存储在闪存存储器102中,增强了对Trim命令的保护性,使得Trim命令得以更完整的实现。另外,由于主机200下发写命令时也会将Trim映射表写入闪存存储器102中,但此时L2P映射表不一定满足刷表的触发阈值,因此Trim映射表写入闪存存储器102的概率要高于L2P映射表写入闪存存储器102的概率,因此即便异常掉电,也可从Trim映射表中获取到Trim命令对应的已处理Range信息,最大程度的减小数据的丢失。
Trim映射表例如也存储在SRAM120中,例如在SRAM120中设置一个Trim映射表单元123用于存放Trim映射表。在接收到主机200下发的写命令或者达到L2P映射表的刷表条件时,将Trim映射表从Trim映射表单元123中写入闪存存储器102中。
那么,第二执行单元在一次性处理完多个Range之后,更新L2P映射表,更新Trim映射表,然后将命令执行完成的信息返回给第一执行单元。第一执行单元在处理完非4K对齐的地址范围之后,以及接收到第二执行单元发送的4K对齐地址范围处理完成的反馈信息后,将Trim命令处理完成的信息返回主机200。
本实施例的用于实现Trim命令处理方法的固态硬盘100仅包括一个CPU时,第一执行单元和第二执行单元均运行在这一个CPU上,第一执行单元和第二执行单元分时运行,可以先由第二执行单元将所有4K对齐的地址范围进行一次性处理,更新对应的L2P表格,之后再由第一执行单元将所有非4K对齐的地址范围进行处理,由于非4K对齐的地址范围下发耗时较长,在将相邻的地址范围合并后,非4K对齐的地址范围数量减少,非4K对齐的地址范围需要的下发时间减少,使得CPU能更加快速地处理Trim命令,并且4K对齐的地址范围增多,一次性处理多条4K对齐的地址范围可以节省大量的时间,将4K对齐的地址范围和非4K对齐的地址范围分别分批处理,避免了每条地址范围的串行处理,极大地缩减了Trim命令的处理时间和响应速度,提高了固态硬盘的读写性能。单独维护一份用于存储已更新到L2P映射表中的地址范围(Range)的Trim映射表,使Trim映射表刷写至闪存存储器102中的概率高于L2P映射表的刷写概率;而单独设置了Trim映射表,增加Trim命令已处理信息存储在闪存存储器102的概率,在异常掉电环境下能够最大限度的减少Trim命令丢失的数量。
本实施例的用于实现Trim命令处理方法的固态硬盘100包括两个CPU时,第一执行单元和第二执行单元分别运行在两个CPU上,两个CPU分别处理Trim命令中4K对齐的地址范围和非4K对齐的地址范围,且两个CPU可并行处理,具体地,由第一执行单元接收主机200发送的Trim命令,将存储Trim命令的数据缓冲区121的地址发送至第二执行单元,第一执行单元一次性解析提取数据缓冲区121中非4K对齐的地址范围并进行处理;而由第二执行单元遍历数据缓冲区121,一次性提取和处理4K对齐的地址范围,将其对应的L2P映射表更新,并且单独维护一份用于存储已更新到L2P映射表中的地址范围(Range)的Trim映射表,使Trim映射表刷写至闪存存储器102中的概率高于L2P映射表的刷写概率。通过两个CPU分别处理4K对齐和非4K对齐的地址范围,进一步加快Trim命令的处理过程;而且,由第二执行单元一次性遍历和处理4K对齐的地址范围,从而可以加快第二执行单元的处理速度,保证在高压力读写环境下TRIM命令处理不会超时;且单独设置了Trim映射表,增加Trim命令已处理信息存储在闪存存储器102的概率,在异常掉电环境下能够最大限度的减少Trim命令丢失的数量。
综上,本申请实施例提供的基于固态硬盘的Trim命令处理方法和固态硬盘。
依照本发明的实施例如上文所述,这些实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施例。显然,根据以上描述,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地利用本发明以及在本发明基础上的修改使用。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (11)
1.一种基于固态硬盘的Trim命令处理方法,所述固态硬盘包括闪存存储器和控制器,所述控制器包括第一执行单元、第二执行单元和数据缓冲区,所述控制器执行以下Trim命令处理方法:
接收主机发送的Trim命令并存储在所述数据缓冲区中,所述Trim命令包括多条地址范围,每条所述地址范围包括第一类地址范围和/或第二类地址范围;
由所述第一执行单元将所述数据缓冲区的地址发送至所述第二执行单元;
由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理;
由所述第一执行单元遍历所述数据缓冲区并提取出多条所述第一类地址范围进行处理;以及
在接收到所述多条地址范围均处理完成的反馈信息后,向所述主机返回所述Trim命令处理完成的信息,
其中,所述第二类地址范围的LBA在所述闪存存储器中的映射地址的长度对应物理页中至少一个完整的4KB单元,所述第一类地址范围的LBA在所述闪存存储器中的映射地址的长度小于物理页中一个完整的4KB单元。
2.根据权利要求1所述的Trim命令处理方法,其中,由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理包括:
所述第二执行单元遍历所述数据缓冲区的所有所述地址范围,一次性提取出其中的多条所述第二类地址范围;
更新每条所述第二类地址范围对应的L2P映射表;
将多条所述第二类地址范围处理完成的信息反馈至所述第一执行单元。
3.根据权利要求2所述的Trim命令处理方法,其中,更新每条所述第二类地址范围对应的L2P映射表包括:
将每条所述第二类地址范围的L2P映射表中逻辑地址对应的内容设置为NULL。
4.根据权利要求2所述的Trim命令处理方法,其中,由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理还包括:
建立并更新用于存放已更新到所述L2P映射表中的所述第二类地址范围信息的Trim映射表。
5.根据权利要求4所述的Trim命令处理方法,其中,所述控制器在接收到所述主机下发的写命令时,将所述Trim映射表写入所述闪存存储器。
6.根据权利要求1所述的Trim命令处理方法,其中,在接收主机发送的Trim命令并存储在所述数据缓冲区中的步骤之后还包括:
将所述数据缓冲区中所述地址范围包含的LBA相邻且连续的所述地址范围合并。
7.一种用于实现Trim命令处理方法的固态硬盘,包括控制器和闪存存储器,所述控制器与主机连接,用于接收所述主机发送的Trim命令,所述控制器包括处理器,所述处理器包括:
第一执行单元,接收所述Trim命令,将其中包含的多条地址范围存储至数据缓冲区,处理所述数据缓冲区中的多条第一类地址范围,并将所述数据缓冲区的地址发送至第二执行单元;
第二执行单元,与所述第一执行单元连接,遍历所述数据缓冲区,一次性提取和处理其中的多条第二类地址范围,并向所述第一执行单元反馈所述第二类地址范围处理完成的信息,
所述第一执行单元在接收到所述第二类地址范围处理完成的反馈信息和将所述第一类地址范围处理完成后,向所述主机返回所述Trim命令处理完成的信息,
其中,每条所述地址范围包括第一类地址范围和/或第二类地址范围,所述第二类地址范围的LBA在所述闪存存储器中的映射地址的长度对应物理页中至少一个完整的4KB单元,所述第一类地址范围的LBA在所述闪存存储器中的映射地址的长度小于物理页中一个完整的4KB单元。
8.根据权利要求7所述的固态硬盘,其中,所述控制器还包括SRAM,所述SRAM包括:
数据缓冲区,用于存放所述Trim命令的多条所述地址范围;
L2P映射表单元,用于存放L2P映射表,所述第二执行单元在处理所述第二类地址范围时,将多条所述第二类地址范围对应的L2P映射表更新至所述L2P映射表单元中。
9.根据权利要求8所述的固态硬盘,其中,所述SRAM还包括:
Trim映射表单元,用于存放已更新到所述L2P映射表中的所述第二类地址范围信息的Trim映射表。
10.根据权利要求9所述的固态硬盘,其中,所述L2P映射表和所述Trim映射表在达到所述L2P映射表的刷表条件时,由所述控制器写入所述闪存存储器;所述Trim映射表在所述控制器接收到所述主机的写命令时被写入所述闪存存储器。
11.根据权利要求7所述的固态硬盘,其中,所述处理器包括两个CPU,则所述第一执行单元和所述第二执行单元分别运行在两个CPU上;
所述处理器仅包括一个CPU,则所述第一执行单元和所述第二执行单元运行在同一CPU上,且所述CPU分时执行所述第一执行单元的任务和所述第二执行单元的任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111457211.4A CN116257460B (zh) | 2021-12-02 | 2021-12-02 | 基于固态硬盘的Trim命令处理方法及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111457211.4A CN116257460B (zh) | 2021-12-02 | 2021-12-02 | 基于固态硬盘的Trim命令处理方法及固态硬盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116257460A CN116257460A (zh) | 2023-06-13 |
CN116257460B true CN116257460B (zh) | 2023-10-31 |
Family
ID=86686592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111457211.4A Active CN116257460B (zh) | 2021-12-02 | 2021-12-02 | 基于固态硬盘的Trim命令处理方法及固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257460B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116893853B (zh) * | 2023-09-11 | 2023-12-12 | 合肥康芯威存储技术有限公司 | 一种存储设备及擦除指令的处理方法 |
CN117406933B (zh) * | 2023-12-12 | 2024-03-29 | 深圳大普微电子股份有限公司 | 固态硬盘数据处理方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019971A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 快速响应trim命令的方法、SSD控制器及系统 |
CN109840049A (zh) * | 2017-11-24 | 2019-06-04 | 三星电子株式会社 | 数据管理方法和执行其的操作的储存设备 |
CN110399312A (zh) * | 2019-07-30 | 2019-11-01 | 深圳大普微电子科技有限公司 | 提高固态硬盘读性能的方法、固态硬盘及存储介质 |
CN110568998A (zh) * | 2019-09-16 | 2019-12-13 | 深圳忆联信息系统有限公司 | 基于固态硬盘的Trim命令实现方法、装置和计算机设备 |
CN111737051A (zh) * | 2020-06-12 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种SSD固态硬盘的trim数据校验测试方法、装置及系统 |
CN113031866A (zh) * | 2021-03-24 | 2021-06-25 | 山东华芯半导体有限公司 | 一种应用于SSD的Trim管理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160179403A1 (en) * | 2013-07-17 | 2016-06-23 | Hitachi, Ltd. | Storage controller, storage device, storage system, and semiconductor storage device |
US10909030B2 (en) * | 2018-09-11 | 2021-02-02 | Toshiba Memory Corporation | Enhanced trim command support for solid state drives |
-
2021
- 2021-12-02 CN CN202111457211.4A patent/CN116257460B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019971A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 快速响应trim命令的方法、SSD控制器及系统 |
CN109840049A (zh) * | 2017-11-24 | 2019-06-04 | 三星电子株式会社 | 数据管理方法和执行其的操作的储存设备 |
CN110399312A (zh) * | 2019-07-30 | 2019-11-01 | 深圳大普微电子科技有限公司 | 提高固态硬盘读性能的方法、固态硬盘及存储介质 |
CN110568998A (zh) * | 2019-09-16 | 2019-12-13 | 深圳忆联信息系统有限公司 | 基于固态硬盘的Trim命令实现方法、装置和计算机设备 |
CN111737051A (zh) * | 2020-06-12 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种SSD固态硬盘的trim数据校验测试方法、装置及系统 |
CN113031866A (zh) * | 2021-03-24 | 2021-06-25 | 山东华芯半导体有限公司 | 一种应用于SSD的Trim管理方法 |
Non-Patent Citations (1)
Title |
---|
基于eMMC存储系统性能的研究与优化;胡文文;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;I137-32 * |
Also Published As
Publication number | Publication date |
---|---|
CN116257460A (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11243701B2 (en) | Data write method and solid-state drive array | |
US8521949B2 (en) | Data deleting method and apparatus | |
KR102002830B1 (ko) | 세그먼트 클리닝 장치 및 방법 | |
KR102050723B1 (ko) | 컴퓨팅 시스템 및 그 데이터 관리 방법 | |
CN116257460B (zh) | 基于固态硬盘的Trim命令处理方法及固态硬盘 | |
KR102050732B1 (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법 | |
KR20100015506A (ko) | 고상 드라이브 최적화를 위한 리무브-온-딜리트 기법들 | |
US20110093437A1 (en) | Method and system for generating a space-efficient snapshot or snapclone of logical disks | |
KR101779174B1 (ko) | 저널링 파일시스템의 데이터 폐기 방법 및 이를 구현하기 위한 메모리 관리 장치 | |
Lee et al. | iLSM-SSD: An intelligent LSM-tree based key-value SSD for data analytics | |
CN109918352B (zh) | 存储器系统和存储数据的方法 | |
US9658799B2 (en) | Data storage device deferred secure delete | |
CN116225334A (zh) | 一种冷热数据存储方法、装置以及介质 | |
JP2014071904A (ja) | コンピュータシステム及びコンピュータシステムのデータ管理方法 | |
US20210223957A1 (en) | Storage apparatus and storage control method | |
CN112764662B (zh) | 用于存储管理的方法、设备和计算机程序产品 | |
EP4120060A1 (en) | Method and apparatus of storing data,and method and apparatus of reading data | |
JP6215631B2 (ja) | コンピュータシステム及びそのデータ管理方法 | |
US8935488B2 (en) | Storage system and storage control method | |
US20220164146A1 (en) | Storage system and control method for storage system | |
US11698871B2 (en) | Method for PRP/SGL handling for out-of-order NVME controllers | |
US11461225B2 (en) | Storage device, control method of storage device, and storage medium | |
CN109002265B (zh) | 一种数据处理的方法以及相关装置 | |
CN112764671A (zh) | 存储设备的元数据聚合处理方法及存储设备 | |
US20140095558A1 (en) | Computing system and method of managing data thereof |
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 |