掌桥专利:专业的专利平台
掌桥专利
首页

固态驱动器的控制方法、装置及设备

文献发布时间:2023-06-19 11:52:33


固态驱动器的控制方法、装置及设备

技术领域

本申请涉及计算机技术领域,尤其涉及一种固态驱动器的控制方法、装置及设备。

背景技术

随着计算机技术的不断发展,固态驱动器(Solid State Drive,SSD)俗称固态硬盘,其应用越来越广泛。

目前,为了减小固态驱动器的写放大,提出了TRIM命令。具体的,当操作系统需要删除一个文件时,操作系统生成对应的TRIM命令,TRIM命令可以指示删除固态驱动器中的该文件,进一步的,操作系统可以根据该TRIM命令确定该文件对应的逻辑区块。进一步的,针对该逻辑区块,更新闪存翻译层(Flash Translation Layer,FTL)中的相关数据,使得SSD可以根据FTL中的数据提前擦除无效数据,从而减小写放大。并且,为了避免对于FTL中相关数据的访问冲突,在响应TRIM命令的过程中,在对FTL中相关数据进行更新之前需要加锁,并在更新完成之后解锁。

但是,上述方法中存在响应TRIM命令的耗时较长的问题。

发明内容

本申请实施例提供一种固态驱动器的控制方法、装置及设备,用以解决现有技术中响应TRIM命令的耗时较长的问题。

第一方面,本申请实施例提供一种固态驱动器的控制方法,包括:

确定固态驱动器中待擦除的目标逻辑区块,所述目标逻辑区块根据禁用删除通知命令确定,所述禁用删除通知命令用于指示删除所述固态驱动器中存储的目标文件;

根据所述目标逻辑区块,获得闪存翻译层FTL中所述目标文件对应的目标逻辑物理L2P映射表;其中,所述FTL中不同文件对应的L2P映射表不相同;

将所述目标L2P映射表中的物理地址设置为可删除。

第二方面,本申请实施例提供一种固态驱动器的控制方法,包括:

确定闪存翻译层FTL中目标逻辑物理L2P映射表中的物理地址被设置为可删除;其中,所述FTL中不同文件对应的L2P映射表不同,所述目标L2P映射表与禁用删除通知命令指示删除的目标文件对应;

根据所述目标L2P映射表中的逻辑地址,擦除所述固态驱动器中对应存储空间中的数据,以删除所述固态驱动器中所述目标文件。

第三方面,本申请实施例提供一种固态驱动器的控制装置,包括:

确定模块,用于确定固态驱动器中待擦除的目标逻辑区块,所述目标逻辑区块根据禁用删除通知命令确定,所述禁用删除通知命令用于指示删除所述固态驱动器中存储的目标文件;

获得模块,用于根据所述目标逻辑区块,获得闪存翻译层FTL中所述目标文件对应的目标逻辑物理L2P映射表;其中,所述FTL中不同文件对应的L2P映射表不相同;

设置模块,用于将所述目标L2P映射表中的物理地址设置为可删除。

第四方面,本申请实施例提供一种固态驱动器的控制装置,包括:

确定模块,用于确定闪存翻译层FTL中目标逻辑物理L2P映射表中的物理地址被设置为可删除;其中,所述FTL中不同文件对应的L2P映射表不同,所述目标L2P映射表与禁用删除通知命令指示删除的目标文件对应;

擦除模块,用于根据所述目标L2P映射表中的逻辑地址,擦除所述固态驱动器中对应存储空间中的数据,以删除所述固态驱动器中所述目标文件。

第五方面,本申请实施例提供一种计算机设备,包括:存储器、处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如第一方面任一项所述的方法。

第六方面,本申请实施例提供一种固态驱动器,包括:存储器、控制器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述控制器执行时实现如第一方面任一项所述的方法。

第七方面,本申请实施例提供一种固态驱动器,包括:存储器、控制器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述控制器执行时实现如第二方面任一项所述的方法。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由计算机执行,以控制所述计算机执行如第一方面任一项所述的方法。

本申请实施例还提供一种计算机程序,当所述计算机程序被计算机执行时,用于实现如第一方面任一项所述的方法。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由计算机执行,以控制所述计算机执行如第二方面任一项所述的方法。

本申请实施例还提供一种计算机程序,当所述计算机程序被计算机执行时,用于实现如第二方面任一项所述的方法。

本申请实施例提供的固态驱动器的控制方法、装置及设备,通过根据目标文件对应的目标逻辑区块,获得FTL中目标文件对应的目标L2P映射表,将目标L2P映射表中的物理地址设置为可删除,由于FTL中不同文件对应的L2P映射表不相同,因此可以避免对于L2P映射表的冲突访问,因此在TRIM一个文件的过程中,也无需对该文件的L2P映射表加锁解锁操作,减小了由于加锁解锁操作所消耗的时长,从而减小了响应禁用删除通知命令的耗时,即减小了响应TRIM命令的耗时。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例的应用场景示意图;

图2为本申请实施例提供的向SSD写数据的示意图;

图3为本申请实施例提供的L2P映射表的示意图;

图4为本申请实施例提供的VPBM和VPC的示意图;

图5为本申请一实施例提供的固态驱动器的控制方法的流程示意图;

图6为本申请实施例提供的FTL中不同文件对应不同L2P映射表的示意图一;

图7为本申请实施例提供的FTL中不同文件对应不同L2P映射表的示意图二;

图8为本申请另一实施例提供的固态驱动器的控制方法的流程示意图;

图9A-图9B为本申请实施例提供的PC表的示意图;

图10为本申请实施例提供的L2P映射表的示意图;

图11为本申请又一实施例提供的固态驱动器的控制方法的流程示意图;

图12为本申请一实施例提供的固态驱动器的控制装置的结构示意图;

图13为本申请一实施例提供的硬盘驱动器的结构示意图;

图14为本申请一实施例提供的计算机设备的结构示意图;

图15为本申请另一实施例提供的固态驱动器的控制装置的结构示意图;

图16为本申请另一实施例提供的硬盘驱动器的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。

图1为本申请实施例的应用场景示意图,如图1所示,该应用场景可以包括计算机设备11以及固态驱动器12,其中,固态驱动器12可以理解为计算机设备11的外部存储设备,固态驱动器12包括控制器121以及闪存(Flash)122。其中,计算机设备11上可以运行有操作系统,该操作系统可以理解为固态驱动器12的主机(host),操作系统可以向固态驱动器12的控制器121发送写指令,控制器121可以根据写指令向闪存122中写数据,操作系统也可以向控制器121发送读指令,控制器121可以根据读指令从闪存122中读取数据,并将读取到的数据返回给操作系统。需要说明的是,为了便于描述,图1中以计算机设备11的组成部分不包括固态驱动器12为例,可替换的,也可以将固态驱动器12作为计算机设备11的一部分。

其中,当用户在操作系统上删除一个文件时,操作系统并没有真正删掉这个文件的数据,它只是把这些数据占用的地址标记‘空’,即可以覆盖使用,并不真正从硬盘里删除数据,只是在操作系统标记为删除,下次直接覆盖写。由于使用闪存122为存储载体的SSD的读写过程与传统的硬盘驱动器(Hard Disk Drive,HDD)有着本质上的不同,特别是在写入方面,HDD是可以直接对存储在磁片上的数据进行覆盖写入的,而SSD需要先擦除原来的数据再把新的数据写进去。不能直接进行覆写,使得SSD必须先执行擦除的操作,并且SSD的写入单位是页(Page),而擦除单位是区块(Block),会存在写放大的问题。

具体的,如图2所示,假设SSD中闪存122中1个方块对应一个页,8个方块对应一个区块,该区块中所有页均存储有数据,则当需要将新数据写入SSD中旧数据对应的页时,即对旧数据对应的页进行覆盖写时,控制器121需要先将该区块的数据全部复制到SSD的缓存(cache)里,然后在缓存中将旧数据删除替换成新数据得到该区块的待写入数据,擦除闪存122的该区块,并从缓存里把待写入数据写到闪存122的该区块中。可以看出,虽然只需要写入两个页的数据,但是却需要向闪存122写入整个区块的数据,因此存在写放大的问题。

为了使得SSD可以尽早获知已被操作系统删除的数据(以下可以记为无效数据),以提前擦除无效数据,减少覆盖写的发生,提出了禁用删除通知命令(Disable DeleteNotify)。禁用删除通知命令使操作系统得以通知SSD哪些数据块已不再使用,可以擦除,控制器121可以将操作系统通知的那些不再使用的数据块从闪存122中擦除,使得数据不仅仅从文件系统的层次得到清除,从闪存122上也得到擦除,从而实现了更少的写放大,更高的写入吞吐量,也增加了固态驱动器的寿命。

需要说明的是,对于不同的命令集,禁用删除通知命令可以有具体的命令名称。示例性的,在高级技术附件(Advanced Technology Attachment,ATA)命令集中,禁用删除通知命令具体可以称为TRIM命令。示例性的,对于小型计算机系统接口(Small ComputerSystem Interface,SCSI)命令集中,禁用删除通知命令具体可以成为UNMAP命令。

其中,响应于禁用删除通知命令,主要完成更新FTL中的相关数据的处理。对于非开放通道SSD,可以由固态驱动器的控制器121响应禁用删除通知指令,对于开放通道(open-channel)SSD,可以由操作系统响应禁用删除通知命令。其中,开放通道SSD与非开放通道SSD的主要区别在于,开放通道SSD是一种特殊的固态驱动器,它不在驱动器的固件中实现闪存翻译层,而是将物理固态存储的管理任务转交到计算机的操作系统。

示例性的,FTL中的相关数据可以包括逻辑地址(Logical Block Address,LBA)到物理地址(Physical Block Address,PBA)的映射表(以下简称为逻辑物理映射表,即L2P映射表),有效页位图(Valid Page Bit Map,VPBM)和有效页数量(Valid Page Count,VPC)。其中,VPBM可以记录每个区块上哪些页有有效数据,VPC可以记录每个区块上的有效页的个数。其中,L2P映射表可以如图3所示,其中,LBA0至LBA7可以表示8个不同的逻辑地址,PBAa至PBAh可以表示8个不同的物理地址。VPBM以及VPC可以如图4所示,其中,VPBM1和VPBM2中0和1为比特值,当比特值为0时可以表示对应页没有有效数据,当比特值为1时可以表示对应页有有效数据,由于VPBM1中1的个数为7,因此VPC中对应位置的值为7,由于VPBM2中1的个数为11,因此VPC中对应位置的值为11。

通常,响应于禁用通知处理命令通常的处理过程如下:1)清除L2P映射表中对应的物理地址;2)清除VPBM上对应的比特;3)对应更新VPC;循环以上3步直到完成每一个LBA。并且,由于通常情况下FTL中的表是与逻辑区块范围对应的,而一个逻辑区块范围中可以包括多个文件的逻辑区块,因此多个文件可以共用一个FTL表,因此为了避免对于FTL表的访问冲突,在禁用通知命令的处理过程中,需要对相关数据加锁。在图3和图4的基础上,以禁用删除通知命令需要删除图3中LBA0和LBA7两个逻辑地址中的数据,且LBA0对应的物理区块的VPBM为VPBM1,LBA7对应的物理区块的VPBM为VPBM2为例,通常对于禁用删除通知命令的处理过程如下:对L2P表加锁,设置L2P表中LBA0对应的PBAa为可删除,对L2P表解锁;对VPBM1加锁,清除VPBM1中PBAa对应的比特,将该比特由1设置为0,对VPBM1解锁;对VPC加锁,根据更新后的VPBM1更新VPC,对VPC解锁;对L2P表加锁,设置L2P表中LBA7对应的PBAh为可删除,示例性的,可以将LBA7对应的PBA设置为空,对L2P表解锁;对VPBM2加锁,清除VPBM2中PBAh对应的比特,将该比特由1设置为0,对VPBM2解锁;对VPC加锁,根据更新后的VPBM2更新VPC,对VPC解锁。

可以看出,目前响应于禁用删除通知命令的处理过程中,由于FTL中的表是与逻辑区块范围对应的,而一个逻辑区块范围中可以包括多个文件的逻辑区块,因此多个文件可以共用一个FTL表,因此为了避免对于FTL表的访问冲突需要对FTL中相关数据加锁,并且,由于目前是以单个LBA为循环单元对FTL中相关数据进行循环更新,因此需要对FTL中相关数据进行频繁的加锁解锁,由于频繁的加锁解锁消耗了较长时间,从而导致在响应禁用删除通知命令的耗时较长的问题。

本申请实施例中,通过FTL中不同文件对应不同的L2P映射表,避免了对于L2P映射表冲突访问的情况,因此在TRIM一个文件的过程中,也无需对该文件的L2P映射表加锁解锁操作,减小了由于加锁解锁操作所消耗的时长,从而减小了响应禁用删除通知命令的耗时。

下面结合附图,对本申请的一些实施例作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

图5为本申请一实施例提供的固态驱动器的控制方法的流程示意图,本实施例的执行主体可以为图1中计算机设备11的处理器或者固态驱动器12的控制器121。如图5所示,本实施例的方法可以包括:

步骤501,确定固态驱动器中待擦除的目标逻辑区块,所述目标逻辑区块根据禁用删除通知命令确定,所述禁用删除通知命令用于指示删除所述固态驱动器中存储的目标文件。

本步骤中,禁用删除通知命令可以与用户输入的文件删除操作对应。在获取到用户输入的文件删除操作之后,操作系统可以生成对应该文件删除操作的禁用删除通知命令,例如文件删除操作用于删除文件1,则对应的禁用删除命令可以指示删除固态硬盘中所存储的文件1。

示例性的,操作系统可以根据禁用删除通知命令确定目标逻辑区块。示例性的,可以根据目标文件的索引节点(inode)确定目标逻辑区块。需要说明的是,目标逻辑区块的个数可以为多个,该多个目标逻辑区块可以理解为区块范围(block range)。

示例性的,当执行主体为处理器11时,步骤501具体可以为处理器11根据禁用删除通知命令确定固态驱动器中待擦除的目标逻辑区块。当执行主体为固态驱动器12的控制器时,步骤501具体可以为接收处理器11发送的指示信息,该指示信息可以指示固态驱动器中待擦除的目标逻辑区块。

步骤502,根据所述目标逻辑区块,获得FTL中所述目标文件对应的目标L2P映射表。

本步骤中,FTL中是以文件为单位存储L2P映射表的,FTL中不同文件对应的L2P映射表不相同。一个文件可以对应一个或多个L2P映射表。示例性的,文件的一个逻辑区块可以对应一个L2P映射表。

以FTL中包括文件x和文件y,逻辑区块1和逻辑区块2用于存储文件x的数据(即,文件1对应逻辑区块1和逻辑区块2),逻辑区块3和逻辑区块4用于存储文件y的数据,并且一个逻辑区块可以对应一个L2P映射表为例,FTL中文件x和文件y的L2P映射表具体可以如图6所示。需要说明的是,图6中,LBA11-LBA18、LBA21-LBA28、LBA31-LBA38和LBA41-LBA48均表示逻辑地址,PBAa1-PBAh1、PBAa2-PBAh2、PBAa3-PBAh3和PBAa4-PBAh4均表示物理地址。

示例性的,可以通过根据目标逻辑区块,确定用于存储目标L2P映射表的存储空间的首地址的方式,获得目标L2P映射表。

步骤503,将所述目标L2P映射表中的物理地址设置为可删除。

本步骤中,由于L2P映射表中记录了逻辑地址到物理地址的映射关系,因此根据目标L2P映射表可以确定出SSD中用于存储目标文件的存储单元的物理地址,从而进一步可以将该物理地址设置为可删除,以表征SSD中该物理地址存储的数据是无效数据,SSD可以对无效数据进行擦除。其中,可删除也可以称为可回收或可擦除等,当一个物理地址被设置为可删除时,可以表示SSD中该物理地址存储的数据是无效数据,SSD可以对无效数据进行擦除。

需要说明的是,对于将目标L2P映射表中的物理地址设置为可删除的具体方式,本申请可以不做限定,例如可以将物理地址设置为空(zero,Z)。假设目标文件为图6中的文件x,则将目标L2P映射表中的物理地址设置为可删除之后,FTL中的L2P映射表可以如图7所示。

本实施例中,通过根据目标文件对应的目标逻辑区块,获得FTL中目标文件对应的目标L2P映射表,将目标L2P映射表中的物理地址设置为可删除,由于FTL中不同文件对应的L2P映射表不相同,因此可以避免对于L2P映射表的冲突访问,因此在TRIM一个文件的过程中,也无需对该文件的L2P映射表加锁解锁操作,减小了由于加锁解锁操作所消耗的时长,从而减小了响应禁用删除通知命令的耗时。

图8为本申请另一实施例提供的固态驱动器的控制方法的流程示意图,本实施例在图5所示实施例的基础上,主要描述了步骤502的一种可选的实现方式,如图8所示,本实施例的方法可以包括:

步骤801,确定固态驱动器中待擦除的目标逻辑区块,所述目标逻辑区块根据禁用删除通知命令确定,所述禁用删除通知命令用于指示删除所述固态驱动器中存储的目标文件。

需要说明的是,步骤801与步骤501类似,在此不再赘述。

步骤802,确定所述目标逻辑区块中的有效页数量。

示例性的,可以查询VPBM确定所述目标逻辑区块中的有效页数量。

步骤803,根据所述有效页数量,查询所述FTL中的数据获得所述目标逻辑区块的区块位置。

本步骤中,一个逻辑区块的区块位置可以理解为该逻辑区块对应的L2P映射表的首地址,因此,根据一个逻辑区块的区块位置,可以从读取获得该逻辑区块对应的L2P映射表。

为了提高确定区块位置的效率,FTL中可以维护有效页数量(Page Count,PC)表,不同目标文件对应的PC表不相同,PC表可以用于指示对应文件的逻辑区块的区块信息,所述区块信息包括有效页数量和区块位置。所述目标PC表用于指示各目标逻辑区块的区块信息,所述区块信息包括有效页数量和区块位置。以目标文件为图6中的文件x为例,对应的目标PC表可以如图9A所示。需要说明的是,图9A中有效页数量在前,区块位置在后仅为举例。

通过查询PC表可以直接查询得到目标逻辑区块的区块位置,与通常需要查询多个表确定区块位置相比,计算量更小,查询效率更高。

示例性的,所述目标PC表中所述目标逻辑区块的区块信息按照预设排序策略排序,所述预设排序策略包括有效页数量由大至小的顺序排序,或者,有效页数量由小至大的顺序排序。以目标文件为图6中的文件x,逻辑区块1的有效页数量是9,逻辑区块2的有效页数量是10,且预设排序策略为有效页数量由大至小的顺序排为例,对应的目标PC表可以如图9B所示,图9B中,由于有效页数量10大于有效页数量9,因此逻辑区块2对应的区块信息可以排在目标PC表的头部(head),而逻辑区块1对应的区块信息可以排在目标PC表的尾部(tail)。

示例性的,可以根据有效页数量,采用由头部至尾部的搜索方法,查询所述目标PC表,获得目标逻辑区块的区块位置。

示例性的,在目标PC表中所述目标逻辑区块的区块信息按照预设排序策略排序时,可以根据所述有效页数量,采用二分搜索法查询所述目标PC表,获得所述目标逻辑区块的区块位置。通过采用二分搜索法查询可以提高查询效率,缩短查询时长,从而可以进一步减小禁用删除通知命令的时长。

可选的,PC表以链表的形式存储,所述PC表中一个区块信息对应链表的一个节点。由于PC表在向SSD中写入数据的过程中需要不断的增加新的逻辑区块,通过PC表中一个区块信息对应链表的一个节点,在对PC表按照预设排序策略进行排序时,可以只改变指针的指向,不涉及到节点数据的拷贝,因此排序效率非常高,可以降低排序过程中对于计算资源的消耗。

步骤804,根据所述目标逻辑区块的区块位置,读取获得所述目标文件对应的目标L2P映射表。

本步骤中,不同文件可以对应不同的L2P表,示例性的,L2P映射表可以以链表的形式存储,所述L2P映射表中一个逻辑地址到物理地址的映射可以对应链表中的一个节点。如图10所示的L2P映射表,以图6中文件x的逻辑区块1对应的L2P映射表为例,LBA0到PBAa可以作为链表一个节点,LBA1到PBAb可以作为一个节点,……,LBA7到PBAh可以作为一个节点。示例性的,LBA0对应的节点可以位于L2P映射表的头部,LBA7对应的节点可以位于L2P映射表的尾部。

通过L2P映射表中一个逻辑地址到物理地址的映射可以对应链表中的一个节点,在增加L2P映射表中逻辑地址到物理地址的映射时,可以通过插入节点的方式实现,避免了对于整个L2P映射表的拷贝,因此可以进一步降低对于计算资源的消耗。

步骤805,将所述目标L2P映射表中的物理地址设置为可删除。

需要说明的是,步骤805与步骤503类似,在此不再赘述。

需要说明的是,当目标逻辑区块的个数为多个时,可以以逻辑区块为单位,循环执行步骤801至步骤805,例如,对于图6所示的文件x,可以先通过步骤801确定文件x的逻辑区块1,再通过步骤802确定逻辑区块1的有效页数量,然后通过步骤803确定逻辑区块1的区块位置,之后通过步骤804读取获得逻辑区块1的L2P映射表,最后通过步骤805设置逻辑区块1的L2P映射表中物理地址为可删除。进一步的,可以通过步骤801确定文件x的逻辑区块2,再通过步骤802确定逻辑区块2的有效页数量,然后通过步骤803确定逻辑区块2的区块位置,之后通过步骤804读取获得逻辑区块2的L2P映射表,最后通过步骤805设置逻辑区块2的L2P映射表中物理地址为可删除。

本实施例中,通过确定目标逻辑区块中的有效页数量,根据有效页数量,查询FTL中的数据获得目标逻辑区块的区块位置,根据目标逻辑区块的区块位置,读取获得目标文件对应的目标L2P映射表,将目标L2P映射表中的物理地址设置为可删除,由于FTL中不同文件对应的L2P映射表不相同,因此可以避免对于L2P映射表的冲突访问,因此在TRIM一个文件的过程中,也无需对该文件的L2P映射表加锁解锁操作,减小了由于加锁解锁操作所消耗的时长,从而减小了响应禁用删除通知命令的耗时。

在上述实施例的基础上,示例性的,在向固态驱动器写入目标文件的数据时,可以对上述目标L2P映射表进行更新,进一步的还可以对上述目标PC表进行更新。可选的,步骤501之前还可以包括:在向所述固态驱动器写入所述目标文件的数据时,更新所述目标L2P映射表和所述目标PC表。

进一步可选的,所述更新所述目标PC表,包括:更新所述目标PC表中的有效页数据;根据所述目标PC表中更新后的有效页数量,按照预设排序策略对所述目标PC表中的区块信息进行排序。通过在向固态驱动器写入目标文件的数据触发更新PC表时,对PC表按照预设排序策略进行排序,使得在执行步骤803时可以直接根据有效页数量,采用二分搜索法查询目标PC表,避免了在执行步骤803之前对于目标PC表的排序处理,减小了响应禁用删除通知命令的计算量,减少了响应禁用删除通知命令的耗时。

另外,对于以链表形式存储的PC表以及L2P表,可以按照更新后的数据均放在尾部的方式进行更新,可以避免向SSD写入数据触发更新PC表以及L2P表时的冲突问题,使得在向SSD写入数据触发更新PC表以及L2P表时也不需要对PC表和L2P表加锁,提高了更新效率。例如,假设PC表包括4个节点,从头至尾分别为节点1、节点2、节点3和节点4,当需要新增一个逻辑区块对应的区块信息时,可以生成用于存储该区块信息的节点5,并将节点5作为节点4的下一级节点。

在上述方法实施例的基础上,当FTL中包括VPBM时,还可以包括如下步骤:根据所述目标逻辑区块,更新所述FTL中的有效页位图VPBM。示例性的,可以在执行完上述实施例的步骤之后,更新VPBM。通过更新VPBM使得SSD可以根据VPBM确定哪个逻辑区块上的哪个页存储有有效数据。

图11为本申请又一实施例提供的固态驱动器的控制方法的流程示意图,本实施例的执行主体可以为图1中固态驱动器12的控制器121。如图11所示,本实施例的方法可以包括:

步骤111,确定FTL中目标L2P映射表中的物理地址被设置为可删除;其中,所述FTL中不同文件对应的L2P映射表不同,所述目标L2P映射表与禁用删除通知命令指示删除的目标文件对应。

本步骤中,可以通过读取FTL的方式,确定FTL中目标L2P映射表中的物理地址被设置为可删除。

需要说明的是,对于将FTL中目标L2P映射表中的物理地址设置为可删除的具体实现方式,可以参见前述实施例的相关描述,在此不再赘述。

步骤112,根据所述目标L2P映射表中的逻辑地址,擦除所述固态驱动器中对应存储空间中的数据,以删除所述固态驱动器中所述目标文件。

本步骤中,可以先根据目标L2P映射表中的逻辑地址,确定对应的物理地址,并根据物理地址擦除固态驱动器中对应存储空间中的数据。

本实施例中,通过确定FTL中目标L2P映射表中的物理地址被设置为可删除,根据目标L2P映射表中的逻辑地址,擦除固态驱动器中对应存储空间中的数据,以删除固态驱动器中目标文件,实现了在FTL中不同文件对应的L2P映射表不同的情况下,能够根据L2P映射表完成固态驱动器中目标文件的提前删除,使得目标文件的数据不仅仅从文件系统的层次得到清除,从固态驱动器的闪存上也得到擦除,从而实现了更少的写放大,更高的写入吞吐量,也增加了固态驱动器的寿命。

图12为本申请一实施例提供的固态驱动器的控制装置的结构示意图;参考附图12所示,本实施例提供了一种控制装置,该装置可以执行上述图5、图8所示实施例提供的固态驱动器的控制方法,具体的,该控制装置可以包括:

确定模块121,用于确定固态驱动器中待擦除的目标逻辑区块,所述目标逻辑区块根据禁用删除通知命令确定,所述禁用删除通知命令用于指示删除所述固态驱动器中存储的目标文件;

获得模块122,用于根据所述目标逻辑区块,获得闪存翻译层FTL中所述目标文件对应的目标逻辑物理L2P映射表;其中,所述FTL中不同文件对应的L2P映射表不相同;

设置模块123,用于将所述目标L2P映射表中的物理地址设置为可删除。

可选的,获得模块122,具体用于:

确定所述目标逻辑区块中的有效页数量;

根据所述有效页数量,查询所述FTL中的数据获得所述目标逻辑区块的区块位置;

将所述目标逻辑区块的区块位置作为所述FTL中所述目标文件对应的目标L2P映射表的首地址,以获得所述目标L2P映射表。

可选的,获得模块122用于根据所述有效页数量查询所述FTL中的数据获得所述目标逻辑区块的区块位置,具体包括:

根据所述有效页数量,查询所述FTL中所述目标文件对应的目标有效页数量PC表,获得所述目标逻辑区块的区块位置;其中,不同目标文件对应的PC表不相同,所述目标PC表用于指示各目标逻辑区块的区块信息,所述区块信息包括有效页数量和区块位置。

可选的,所述目标PC表中所述目标逻辑区块的区块信息按照预设排序策略排序,所述预设排序策略包括有效页数量由大至小的顺序排序,或者,有效页数量由小至大的顺序排序。

可选的,获得模块122,用于根据所述有效页数量,查询所述FTL中所述目标文件对应的目标PC表,获得所述目标逻辑区块的区块位置,具体包括:

根据所述有效页数量,采用二分搜索法查询所述目标PC表,获得所述目标逻辑区块的区块位置。

可选的,该装置还可以包括:第一更新模块,用于在向所述固态驱动器写入所述目标文件的数据时,更新所述目标L2P映射表和所述目标PC表。

可选的,所述第一更新模块用于更新所述目标PC表,具体包括:

更新所述目标PC表中的有效页数据;

根据所述目标PC表中更新后的有效页数量,按照预设排序策略对所述目标PC表中的区块信息进行排序。

可选的,L2P映射表以链表的形式存储,所述L2P映射表中一个逻辑地址到物理地址的映射对应链表中的一个节点。

可选的,PC表以链表的形式存储,所述PC表中一个区块信息对应链表的一个节点。

可选的,该装置还可以包括:第二更新模块,用于根据所述目标逻辑区块,更新所述FTL中的有效页位图VPBM。

可选的,所述禁用删除通知命令包括TRIM命令或UNMAP命令。

可选的,所述装置应用于所述固态驱动器,或者应用于外部存储设备包括所述固态驱动器的计算机设备。

图12所示装置可以执行图5、图8所示实施例的方法,本实施例未详细描述的部分,可参考对上述图5、图8所示实施例的相关说明。该技术方案的执行过程和技术效果参见上述图5、图8所示实施例中的描述,在此不再赘述。

在一个可能的实现中,图12所示的控制装置的结构可实现为一固态硬盘,该固态硬盘具体可以为非开放通道固态硬盘。如图13所示,该固态硬盘可以包括:控制器131和存储器132。其中,存储器132用于存储支持固态硬盘执行上述图5、图8方法实施例中提供的固态硬盘的控制方法,控制器131被配置为用于执行存储器132中存储的程序。

程序包括一条或多条计算机命令,其中,一条或多条计算机命令被控制器131执行时能够实现如下步骤:

确定固态驱动器中待擦除的目标逻辑区块,所述目标逻辑区块根据禁用删除通知命令确定,所述禁用删除通知命令用于指示删除所述固态驱动器中存储的目标文件;

根据所述目标逻辑区块,获得闪存翻译层FTL中所述目标文件对应的目标逻辑物理L2P映射表;其中,所述FTL中不同文件对应的L2P映射表不相同;

将所述目标L2P映射表中的物理地址设置为可删除。

可选的,控制器131还用于执行前述图5、图8方法实施例中的全部或部分步骤。

其中,固态硬盘的结构中还可以包括通信接口133,用于固态硬盘与其他设备或通信网络通信。

在一个可能的实现中,图12所示的控制装置的结构可实现为一计算机设备,该计算机设备具体可以为外部存储设备包括开放通道固态硬盘的计算机设备。如图14所示,该计算机设备可以包括:处理器141和存储器142。其中,存储器142用于存储支持计算机设备执行上述方法实施例中提供的固态硬盘的控制方法,处理器141被配置为用于执行存储器142中存储的程序。

程序包括一条或多条计算机命令,其中,一条或多条计算机命令被处理器141执行时能够实现如下步骤:

确定固态驱动器中待擦除的目标逻辑区块,所述目标逻辑区块根据禁用删除通知命令确定,所述禁用删除通知命令用于指示删除所述固态驱动器中存储的目标文件;

根据所述目标逻辑区块,获得闪存翻译层FTL中所述目标文件对应的目标逻辑物理L2P映射表;其中,所述FTL中不同文件对应的L2P映射表不相同;

将所述目标L2P映射表中的物理地址设置为可删除。

可选的,处理器141还用于执行前述图5、图8方法实施例中的全部或部分步骤。

其中,计算机设备的结构中还可以包括通信接口143,用于计算机设备与其他设备或通信网络通信。

图15为本申请另一实施例提供的固态驱动器的控制装置的结构示意图;参考附图15所示,本实施例提供了一种控制装置,该装置可以执行上述图11所示的固态驱动器的控制方法,具体的,该控制装置可以包括:

确定模块151,用于确定闪存翻译层FTL中目标逻辑物理L2P映射表中的物理地址被设置为可删除;其中,所述FTL中不同文件对应的L2P映射表不同,所述目标L2P映射表与禁用删除通知命令指示删除的目标文件对应;

擦除模块152,用于根据所述目标L2P映射表中的逻辑地址,擦除所述固态驱动器中对应存储空间中的数据,以删除所述固态驱动器中所述目标文件。

图15所示装置可以执行图11所示实施例的方法,本实施例未详细描述的部分,可参考对上述图11所示实施例的相关说明。该技术方案的执行过程和技术效果参见上述图11所示实施例中的描述,在此不再赘述。

在一个可能的实现中,图15所示的控制装置的结构可实现为一固态硬盘,该固态硬盘具体可以为非开放通道固态硬盘或开放通道固态硬盘。如图16所示,该固态硬盘可以包括:控制器161和存储器162。其中,存储器162用于存储支持固态硬盘执行上述图11方法实施例中提供的固态硬盘的控制方法,控制器161被配置为用于执行存储器162中存储的程序。

程序包括一条或多条计算机命令,其中,一条或多条计算机命令被控制器161执行时能够实现如下步骤:

确定闪存翻译层FTL中目标逻辑物理L2P映射表中的物理地址被设置为可删除;其中,所述FTL中不同文件对应的L2P映射表不同,所述目标L2P映射表与禁用删除通知命令指示删除的目标文件对应;

根据所述目标L2P映射表中的逻辑地址,擦除所述固态驱动器中对应存储空间中的数据,以删除所述固态驱动器中所述目标文件。

可选的,控制器161还用于执行前述图11方法实施例中的全部或部分步骤。

其中,固态硬盘的结构中还可以包括通信接口163,用于固态硬盘与其他设备或通信网络通信。

另外,本申请实施例提供了一种计算机存储介质,用于储存计算机软件命令,其包含用于执行上述方法实施例所涉及的程序。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对传统技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序命令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序命令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的命令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序命令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的命令产生包括命令装置的制造品,该命令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序命令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的命令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读命令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 固态驱动器的控制方法、装置及设备
  • 盘阵列设备、盘控制设备、固态驱动器、盘控制方法和记录介质
技术分类

06120113084125