本发明涉及固态硬盘,特别涉及一种基于固态硬盘的trim命令处理方法及固态硬盘。
背景技术:
1、固态硬盘(ssd,solid state drives)是用固态电子存储芯片制作的存储硬盘,主要由控制器,存储介质和缓存单元组成。连接在主机上,与主机之间进行数据交换。
2、图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)。
3、但是在固态硬盘中,文件删除时仅是删除了指针,而数据文件仍然保留,如图1b,当用户删除文件时只是切断文件与操作系统的关联,但固态硬盘仍然保留着逻辑地址与物理地址的映射,闪存中的数据也被固态硬盘认为有效,后续垃圾回收时这些数据仍然会被搬运。即在图1a中,虽然file 1index指针被删除,而固态硬盘仍然认为数据file 1data为存在于闪存当中的有效数据,后续垃圾回收时仍被搬运,造成写浪费。只有数据file 1data的lba被数据file 3data复写时,被复写的那一部分lba才会被当作真正的垃圾数据。文件系统的这种行为会对固态硬盘造成额外的开销。trim命令(data set managementcommand)被用于解决这一问题。
4、trim命令的用途是告诉固态硬盘哪一段lba空间被系统删除了,而固态硬盘接收到此消息后,便会做出相应的操作(如删除固态硬盘中该段lba所对应的l2p信息),使这段lba空间的数据变为垃圾数据。trim命令提前将无效数据清空以减缓固态硬盘的读写速度的下降,但是目前的固态硬盘中trim命令的执行过程较长,命令处理容易超时。
技术实现思路
1、鉴于上述问题,本发明的目的在于提供一种基于固态硬盘的trim命令处理方法及固态硬盘,以解决现有技术中存在的问题。
2、根据本发明的一方面,提供一种基于固态硬盘的trim命令处理方法,所述固态硬盘包括闪存存储器和控制器,所述控制器包括第一执行单元、第二执行单元和数据缓冲区,所述控制器执行以下trim命令处理方法:
3、接收主机发送的trim命令并存储在所述数据缓冲区中,所述trim命令包括多条地址范围,每条所述地址范围包括第一类地址范围和/或第二类地址范围;
4、由所述第一执行单元将所述数据缓冲区的地址发送至所述第二执行单元;
5、由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理;
6、由所述第一执行单元遍历所述数据缓冲区并提取出多条所述第一类地址范围进行处理;以及
7、在接收到所述多条地址范围均处理完成的反馈信息后,向所述主机返回所述trim命令处理完成的信息,
8、其中,所述第二类地址范围的lba在所述闪存存储器中的映射地址的长度对应物理页中至少一个完整的4kb单元,所述第一类地址范围的lba在所述闪存存储器中的映射地址的长度小于物理页中一个完整的4kb单元。
9、可选地,由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理包括:
10、所述第二执行单元遍历所述数据缓冲区的所有所述地址范围,一次性提取出其中的多条所述第二类地址范围;
11、更新每条所述第二类地址范围对应的l2p映射表;
12、将多条所述第二类地址范围处理完成的信息反馈至所述第一执行单元。
13、可选地,更新每条所述第二类地址范围对应的l2p映射表包括:
14、将每条所述第二类地址范围的l2p映射表中逻辑地址对应的内容设置为null。
15、可选地,由所述第二执行单元遍历所述数据缓冲区并提取出多条所述第二类地址范围进行处理还包括:
16、建立并更新用于存放已更新到所述l2p映射表中的所述第二类地址范围信息的trim映射表。
17、可选地,所述控制器在接收到所述主机下发的写命令时,将所述trim映射表写入所述闪存存储器。
18、可选地,在接收主机发送的trim命令并存储在所述数据缓冲区中的步骤之后还包括:
19、将所述数据缓冲区中所述地址范围包含的lba相邻且连续的所述地址范围合并。
20、根据本发明的另一方面,提供一种用于实现trim命令处理方法的固态硬盘,包括控制器和闪存存储器,所述控制器与主机连接,用于接收所述主机发送的trim命令,所述控制器包括处理器,所述处理器包括:
21、第一执行单元,接收所述trim命令,将其中包含的多条地址范围存储至数据缓冲区,处理所述数据缓冲区中的多条第一类地址范围,并将所述数据缓冲区的地址发送至第二执行单元;
22、第二执行单元,与所述第一执行单元连接,遍历所述数据缓冲区,一次性提取和处理其中的多条第二类地址范围,并向所述第一执行单元反馈所述第二类地址范围处理完成的信息,
23、所述第一执行单元在接收到所述第二类地址范围处理完成的反馈信息和将所述第一类地址范围处理完成后,向所述主机返回所述trim命令处理完成的信息,
24、其中,每条所述地址范围包括第一类地址范围和/或第二类地址范围,所述第二类地址范围的lba在所述闪存存储器中的映射地址的长度对应物理页中至少一个完整的4kb单元,所述第一类地址范围的lba在所述闪存存储器中的映射地址的长度小于物理页中一个完整的4kb单元。
25、可选地,所述控制器还包括sram,所述sram包括:
26、数据缓冲区,用于存放所述trim命令的多条所述地址范围;
27、l2p映射表单元,用于存放l2p映射表,所述第二执行单元在处理所述第二类地址范围时,将多条所述第二类地址范围对应的l2p映射表更新至所述l2p映射表单元中。
28、可选地,所述sram还包括:
29、trim映射表单元,用于存放已更新到所述l2p映射表中的所述第二类地址范围信息的trim映射表。
30、可选地,所述l2p映射表和所述trim映射表在达到所述l2p映射表的刷表条件时,由所述控制器写入所述闪存存储器;所述trim映射表在所述控制器接收到所述主机的写命令时被写入所述闪存存储器。
31、可选地,所述处理器包括两个cpu,则所述第一执行单元和所述第二执行单元分别运行在两个cpu上;
32、所述处理器仅包括一个cpu,则所述第一执行单元和所述第二执行单元运行在同一cpu上,且所述cpu分时执行所述第一执行单元的任务和所述第二执行单元的任务。
33、本技术提供的基于固态硬盘的trim命令处理方法和固态硬盘,接收到主机的trim命令后,将其包含的多条地址范围存储在数据缓冲区中,而地址范围又依据其包含的lba在闪存存储器中映射地址的长度分为两类,映射地址的长度小于物理页的一个完整4kb单元的第一类地址范围和映射地址的长度等于物理页中至少一个完整4kb单元的第二类地址范围,分别由第一执行单元和第二执行单元处理两类地址范围,加快trim命令的处理进程,并且由第二执行单元遍历数据缓冲区,一次性提取和处理其中的多条第二类地址范围,节省了trim命令的处理时间,避免高压力读写环境下的命令处理超时。
34、另外,通过将lba相邻且连续的地址范围合并,增加了第二类地址范围的数量,由第二执行单元统一处理,加快所有地址范围的处理速度,进一步节约trim命令的处理时间。
35、进一步地,第二执行单元处理第二类地址范围时,将其对应的l2p映射表更新,同时维护一份trim映射表,用于记录已更新至l2p映射表中的第二类地址范围的信息,该trim映射表刷写至闪存存储器的频率高于l2p映射表刷写至闪存存储器的频率,从而在异常掉电环境下能够最大限度的减少trim命令丢失的数量。