一种固态硬盘写数据的方法、装置、设备及存储介质

文档序号:1686963 发布日期:2020-01-03 浏览:13次 >En<

阅读说明:本技术 一种固态硬盘写数据的方法、装置、设备及存储介质 (Method, device and equipment for writing data in solid state disk and storage medium ) 是由 李子锋 于 2019-09-29 设计创作,主要内容包括:本发明公开了一种固态硬盘写数据的方法、装置、设备及存储介质,其中,该方法包括:接收写数据请求,将所述写数据请求对应的写数据写入至DDR中;在本地内存中为所述写数据请求申请缓存单元,如果申请成功,则确定申请到的缓存单元为目的单元,并将所述写数据请求对应的LBA写入至所述目的单元中;如果申请失败,则将所述写数据请求挂载至待处理列表中,并返回执行为所述写数据请求申请缓存单元的步骤,直至申请成功为止;当所述目的单元中的LBA达到预设搬移量时,将所述目的单元中预设搬移量的LBA搬移至所述DDR中,将所述写数据及对应LBA写入固态硬盘中。本申请减少了LBA的搬移次数,提升了固态硬盘的性能。(The invention discloses a method, a device, equipment and a storage medium for writing data in a solid state disk, wherein the method comprises the following steps: receiving a write data request, and writing write data corresponding to the write data request into the DDR; applying for a cache unit for the write data request in a local memory, if the application is successful, determining the applied cache unit as a target unit, and writing the LBA corresponding to the write data request into the target unit; if the application fails, mounting the write data request into a list to be processed, and returning to execute the step of applying for the cache unit for the write data request until the application is successful; and when the LBA in the target unit reaches a preset moving amount, moving the LBA of the preset moving amount in the target unit to the DDR, and writing the write data and the corresponding LBA into a solid state disk. The method and the device reduce the moving times of the LBA and improve the performance of the solid state disk.)

一种固态硬盘写数据的方法、装置、设备及存储介质

技术领域

本发明涉及固态硬盘技术领域,更具体地说,涉及一种固态硬盘写数据的方法、装置、设备及存储介质。

背景技术

在向固态硬盘(SSD)写数据的过程中,写数据的性能和写的数据的正确性都是固态硬盘的重要特性,因此通常需要写数据的过程具有较好的性能。

在实现固态硬盘写数据的技术方案中,不仅需要对用户数据进行操作,还需要对固态硬盘现有的内部管理数据进行支撑,具体来说,在接收到写数据请求后,利用DMA控制器(直接内存访问控制器,以下简称为DMA)将数据搬移到DDR存储器(双倍速率存储器,以下简称为DDR),增加对应的反向表数据,然后将DDR中的数据落nand。而为了实现垃圾回收等操作,不仅需要维护L2P表,还需要维护对应的反向表,其中,L2P表示和LBA(逻辑块地址)对应的PBA(物理块地址)的映射,而反向表则表示和PBA对应的LBA的映射,因此不仅需要将写数据请求对应的数据搬移到DDR中,还需要将数据对应的LBA搬移到DDR中,现有的技术方案中,通常是每搬移一个数据块到DDR中,则将对应的LBA也搬移到DDR中,相当于使用一次搬移单元(DATANETWORK硬件功能单元,与现有技术中对应概念的含义相同)的操作只能够搬移一个LBA,消耗一次搬移时间,这会导致需要频繁进行搬移操作,进而对固态硬盘的性能产生消极影响。

发明内容

本发明的目的是提供一种固态硬盘写数据的方法、装置、设备及存储介质,能够减少LBA的搬移次数,提升固态硬盘写数据的性能。

为了实现上述目的,本发明提供如下技术方案:

一种固态硬盘写数据的方法,包括:

接收写数据请求,将所述写数据请求对应的写数据写入至DDR中;

在本地内存中为所述写数据请求申请缓存单元,如果申请成功,则确定申请到的缓存单元为目的单元,并将所述写数据请求对应的LBA写入至所述目的单元中;如果申请失败,则将所述写数据请求挂载至待处理列表中,并返回执行为所述写数据请求申请缓存单元的步骤,直至申请成功为止;

当所述目的单元中的LBA达到预设搬移量时,将所述目的单元中预设搬移量的LBA搬移至所述DDR中,将所述写数据及对应LBA写入固态硬盘中。

优选的,在本地内存中为所述写数据请求申请缓存单元,包括:

检测本地内存中是否存在空闲的缓存单元,如果存在,则确定申请成功,否则,则确定申请失败;其中,所述本地内存中设置有多个缓存单元;

对应的,确定申请到的缓存单元为目的单元,包括:

如果空闲的缓存单元的总存储空间大于所述写请求对应的LBA需占用的存储空间,则确定总存储空间等于所述写请求对应LBA需占用的存储空间的个数的缓存单元为目的单元,否则,则确定空闲的缓存单元均为目的单元。

优选的,判断所述目的单元中的LBA是否达到预设搬移量,包括:

如果任一所述目的单元中的LBA占满该任一目的单元的存储空间,则确定该任一目的单元中的LBA达到预设搬移量,否则,则确定该任一目的单元中的LBA未达到预设搬移量。

优选的,将所述目的单元中预设搬移量的LBA搬移至所述DDR中,包括:

利用搬移单元将所述目的单元中预设搬移量的LBA搬移至所述DDR中;其中,所述预设搬移量等于所述搬移单元单次能够搬移的LBA的最大量。

优选的,将所述写数据及对应LBA写入固态硬盘中之前,还包括:

检测存储在所述DDR中的写数据的数据量是否达到单个条带需存储的数据的数据量,如果是,则将所述写数据及对应LBA写入至所述固态硬盘中;否则,则返回执行检测存储在所述DDR中的写数据的数据量是否达到单个条带需存储的数据的数据量的步骤,直至检测结果为是为止。

优选的,将所述写数据请求对应的写数据写入至DDR中之前,还包括:

在所述DDR中为所述写数据请求申请对应的写缓存,如果申请成功,则执行将所述写数据请求对应的写数据写入至DDR的步骤,如果申请失败,则返回执行在所述DDR中为所述写数据请求申请对应的写缓存的步骤,直至申请成功为止。

优选的,还包括:

如果申请所述写缓存或者申请所述缓存单元的次数达到预设次数且申请结果为申请失败,则停止继续申请,并输出相应的提示信息。

一种固态硬盘写数据的装置,包括:

接收模块,用于:接收写数据请求,将所述写数据请求对应的写数据写入至DDR中;

申请模块,用于:在本地内存中为所述写数据请求申请缓存单元,如果申请成功,则确定申请到的缓存单元为目的单元,并将所述写数据请求对应的LBA写入至所述目的单元中;如果申请失败,则将所述写数据请求挂载至待处理列表中,并返回执行为所述写数据请求申请缓存单元的步骤,直至申请成功为止;

搬移模块,用于:当所述目的单元中的LBA达到预设搬移量时,将所述目的单元中预设搬移量的LBA搬移至所述DDR中,将所述写数据及对应LBA写入固态硬盘中。

一种固态硬盘写数据的设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上任一项所述固态硬盘写数据的方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述固态硬盘写数据的方法的步骤。

本发明提供了一种固态硬盘写数据的方法、装置、设备及存储介质,其中,该方法包括:接收写数据请求,将所述写数据请求对应的写数据写入至DDR中;在本地内存中为所述写数据请求申请缓存单元,如果申请成功,则确定申请到的缓存单元为目的单元,并将所述写数据请求对应的LBA写入至所述目的单元中;如果申请失败,则将所述写数据请求挂载至待处理列表中,并返回执行为所述写数据请求申请缓存单元的步骤,直至申请成功为止;当所述目的单元中的LBA达到预设搬移量时,将所述目的单元中预设搬移量的LBA搬移至所述DDR中,将所述写数据及对应LBA写入固态硬盘中。本申请公开的技术特征中,在将LBA这一反向表数据向DDR中进行搬移时,首先在内存中为其申请对应的缓存单元,以将其先缓存至缓存单元中,并在缓存单元中的LBA达到一定搬移量时才将这一定搬移量的LBA一次性搬移至DDR中,从而区别于现有技术中每次仅搬移一个LBA,而是实现LBA的集中搬移,减少了LBA的搬移次数,提升了固态硬盘的性能。

附图说明

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

图1为本发明实施例提供的一种固态硬盘写数据的方法的流程图;

图2为本发明实施例提供的一种固态硬盘写数据的装置的结构示意图。

具体实施方式

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

请参阅图其1,其示出了本发明实施例提供的一种固态硬盘写数据的方法的流程图,可以包括:

S11:接收写数据请求,将写数据请求对应的写数据写入至DDR中。

其中,本发明实施例提供的一种固态硬盘写数据的方法的执行主体可以为对应的装置,而该装置可以设置于处理器内,因此该方法的执行主体可以为处理器。具体来说,写数据请求为向固态硬盘中写入对应数据的请求,在接收到写数据请求后,可以确定写数据请求对应的数据为写数据,进而将写数据存储至DDR中,具体可以是使用DMA将写数据搬移至DDR中,以实现对写数据的缓存。

S12:在本地内存中为写数据请求申请缓存单元,如果申请成功,则确定申请到的缓存单元为目的单元,并将写数据请求对应的LBA写入至目的单元中;如果申请失败,则将写数据请求挂载至待处理列表中,并返回执行为写数据请求申请缓存单元的步骤,直至申请成功为止。

可以预先在本地内存中设置反向表local buffer,或者可以称为缓存单元,该缓存单元用于存储LBA,进而将缓存单元中存储的LBA落nand。具体来说,如果申请缓存单元成功,则可以将写数据请求对应LBA写入至申请到的缓存单元中,否则,则可以将写数据请求挂载到预先设置的待处理列表(pending list)中,并且直接返回执行或者经过根据实际需要设置的预设时间间隔后返回执行将写数据请求挂载至待处理列表中,并返回执行为写数据请求申请缓存单元的步骤,以通过这种方式确保正常情况下可以申请到用于存储LBA的缓存单元。

S13:当目的单元中的LBA达到预设搬移量时,将目的单元中预设搬移量的LBA搬移至DDR中,将写数据及对应LBA写入固态硬盘中。

需要说明的是,不同于现有技术中实现LBA向DDR的搬移时,是搬移至DDR中一个写数据的数据块,则将对应的LBA搬移至DDR中;本实施例中需要根据实际需要设定预设搬移量,该预设搬移量大于单个数据块对应的LBA,也即本实施例中是在目的单元中的LBA达到一定数量后,才将这一定数量的LBA一次性搬移至DDR中,从而减少了LBA的搬移次数,提升固态硬盘的性能。

本申请公开的技术特征中,在将LBA这一反向表数据向DDR中进行搬移时,首先在内存中为其申请对应的缓存单元,以将其先缓存至缓存单元中,并在缓存单元中的LBA达到一定搬移量时才将这一定搬移量的LBA一次性搬移至DDR中,从而区别于现有技术中每次仅搬移一个LBA,而是实现LBA的集中搬移,减少了LBA的搬移次数,提升了固态硬盘的性能。

本发明实施例提供的一种固态硬盘写数据的方法,在本地内存中为写数据请求申请缓存单元,可以包括:

检测本地内存中是否存在空闲的缓存单元,如果存在,则确定申请成功,否则,则确定申请失败;其中,本地内存中设置有多个缓存单元;

对应的,确定申请到的缓存单元为目的单元,可以包括:

如果空闲的缓存单元的总存储空间大于写请求对应的LBA需占用的存储空间,则确定总存储空间等于写请求对应LBA需占用的存储空间的个数的缓存单元为目的单元,否则,则确定空闲的缓存单元均为目的单元。

需要说明的是,本实施例中可以设置多个缓存单元,每个缓存单元可以进行复用,具体来说,在本地内存中申请缓存单元,即为检测本地内存中是否存在空闲的缓存单元(空闲的缓存单元即为未存储任何数据的、空白的缓存单元),如果有,则可以直接用空闲的缓存单元实现LBA的存储,否则,则需要等待直至有空闲的缓存单元再利用空闲的缓存单元实现LBA的存储。从而能够通过多个缓存单元的设置及复用,便于实现针对多个写数据请求对应LBA的缓存。另外,考虑到处理器内存容量有限,本实施例中可以设置4个缓存单元,每个缓存单元可以容纳64个LBA,而单个条带(super page)包含384个LBA,因此4个缓存单元可以存储单个条带对应的全部的LBA,并且在必要时进行复用。

需要说明的是,在确定目的单元时还需要考虑到写请求对应的LBA需占用的存储空间,如果空闲的缓存单元的存储空间的总和不大于写请求对应的LBA需占用的存储空间,则说明需要利用全部空闲的缓存单元进行LBA的缓存,此时确定全部空闲的缓存单元均为目的单元,否则,则说明缓存单元存在多余的存储空间,此时只需确定存储空间的总和等于写请求需占用存储空间的个数的缓存单元为目的单元即可,从而避免了申请多余缓存单元后导致的空间浪潮。而如果空闲的缓存单元的存储空间的综合小于写请求对应的LBA需占用的存储空间,则可以先利用全部空闲的缓存单元实现写请求对应LBA的缓存,剩余的写请求对应的LBA等待至有新的空闲的缓存单元后再利用新的空闲的缓存单元进行缓存,实现缓存单元的复用的同时,保证写请求对应全部LBA的顺利缓存。

另外,在缓存单元存在多个的情况下,在本地内存中为写数据请求申请缓存单元失败并将写数据请求挂载至待处理列表中之后,还可以实时检测是否有空闲的缓存单元,从而在检测到有空闲的缓存单元后,处理待处理列表中的写数据请求,也即将空闲的缓存单元分配给写数据请求缓存对应的LBA。

本发明实施例提供的一种固态硬盘写数据的方法,判断目的单元中的LBA是否达到预设搬移量,可以包括:

如果任一目的单元中的LBA占满该任一目的单元的存储空间,则确定该任一目的单元中的LBA达到预设搬移量,否则,则确定该任一目的单元中的LBA未达到预设搬移量。

需要说明的是,本实施例中可以设置为每个缓存单元的存储空间等于预设搬移量,从而使得只要目的单元被占满,则确定该目的单元中的LBA达到预设搬移量,进而对其中的LBA实现数据搬移,方便了缓存单元内LBA是否能够实现搬移这一步骤的快速实现。并且,在一个缓存单元被占满后则立即将其存储的LBA搬移至DDR,并在搬移的过程中即可使用下一个空闲的缓存单元,从而掩盖等待时间,进一步提高了LBA的搬移效率。

本发明实施例提供的一种固态硬盘写数据的方法,将目的单元中预设搬移量的LBA搬移至DDR中,可以包括:

利用搬移单元将目的单元中预设搬移量的LBA搬移至DDR中;其中,预设搬移量等于搬移单元单次能够搬移的LBA的最大量。

需要说明的是,本实施例中可以将预设搬移量设置为搬移单元能够搬移的LBA的最大量,从而使得每次搬移单元均能够搬移最多的LBA,从而实现了LBA搬移时对搬移单元的充分利用,有利于提高固态硬盘写数据的性能。

本发明实施例提供的一种固态硬盘写数据的方法,将写数据及对应LBA写入固态硬盘中之前,还可以包括:

检测存储在DDR中的写数据的数据量是否达到单个条带需存储的数据的数据量,如果是,则将写数据及对应LBA写入至固态硬盘中;否则,则返回执行检测存储在DDR中的写数据的数据量是否达到单个条带需存储的数据的数据量的步骤,直至检测结果为是为止。

条带为固态硬盘中的存储单元,在检测到存储在DDR中的写数据的数据量达到单个条带需存储的数据的数据量时,则将写数据及对应LBA写入至固态硬盘中,从而能够在写数据时实现整个条带的数据写入,区别于同一条带的多次写入,大大提高了写数据的效率。另外,在接收到写数据请求后,则可以在DDR中为其分配对应的地址,进而将写数据及对应LBA写入到分配的地址即可。

本发明实施例提供的一种固态硬盘写数据的方法,将写数据请求对应的写数据写入至DDR中之前,还可以包括:

在DDR中为写数据请求申请对应的写缓存,如果申请成功,则执行将写数据请求对应的写数据写入至DDR的步骤,如果申请失败,则返回执行在DDR中为写数据请求申请对应的写缓存的步骤,直至申请成功为止。

如果写缓存中存在能否供写数据存储的足够的空闲的存储空间,则能够申请成功,否则,则需要将写数据中部分数据先缓存至DDR中,待有释放的存储空间后再将写数据中剩余的部分数据缓存至释放的存储空间中,从而通过多次循环将全部写数据缓存至DDR中,从而能够以最快速度将写数据全部存储至DDR中。另外,为了避免出现数据混乱缓存的情况,本实施例中还可以在写缓存中不存在能够供写数据存储的足够的空闲的存储空间时,等待直至存在能够供写数据存储的足够的空闲的存储空间时再将写数据缓存至DDR中,具体可以根据实际需要进行设置,均在本发明的保护范围之内。

本发明实施例提供的一种固态硬盘写数据的方法,还可以包括:

如果申请写缓存或者申请缓存单元的次数达到预设次数且申请结果为申请失败,则停止继续申请,并输出相应的提示信息。

其中,预设次数可以根据实际需要进行设定,在申请写缓存或者申请缓存单元的次数达到预设次数但还未申请成功,则可能存在其他异常情况,此时不再返回执行相应的申请步骤,而是输出提示信息,以告知工作人员这种异常情况并由其进行处理。

本申请公开的技术特征中,采用双缓存机制,在DDR中设置写缓存实现写数据请求对应写数据的缓存,在本地内存中设置缓存单元实现写数据请求对应LBA的缓存,当缓存单元中的LBA个数达到预设搬移量时才对其进行搬移,不同于现有技术中LBA的单个搬移,从而大大降低了LBA搬移的次数和频率。

本发明实施例还提供了一种固态硬盘写数据的装置,如图2所示,可以包括:

接收模块11,用于:接收写数据请求,将写数据请求对应的写数据写入至DDR中;

申请模块12,用于:在本地内存中为写数据请求申请缓存单元,如果申请成功,则确定申请到的缓存单元为目的单元,并将写数据请求对应的LBA写入至目的单元中;如果申请失败,则将写数据请求挂载至待处理列表中,并返回执行为写数据请求申请缓存单元的步骤,直至申请成功为止;

搬移模块13,用于:当目的单元中的LBA达到预设搬移量时,将目的单元中预设搬移量的LBA搬移至DDR中,将写数据及对应LBA写入固态硬盘中。

本发明实施例提供的一种固态硬盘写数据的装置,申请模块可以包括:

检测单元,用于:检测本地内存中是否存在空闲的缓存单元,如果存在,则确定申请成功,否则,则确定申请失败;其中,本地内存中设置有多个缓存单元;

确定单元,用于:如果空闲的缓存单元的总存储空间大于写请求对应的LBA需占用的存储空间,则确定总存储空间等于写请求对应LBA需占用的存储空间的个数的缓存单元为目的单元,否则,则确定空闲的缓存单元均为目的单元。

本发明实施例提供的一种固态硬盘写数据的装置,搬移模块可以包括:

判断单元,用于:如果任一目的单元中的LBA占满该任一目的单元的存储空间,则确定该任一目的单元中的LBA达到预设搬移量,否则,则确定该任一目的单元中的LBA未达到预设搬移量。

本发明实施例提供的一种固态硬盘写数据的装置,搬移模块可以包括:

搬移单元,用于:利用搬移单元将目的单元中预设搬移量的LBA搬移至DDR中;其中,预设搬移量等于搬移单元单次能够搬移的LBA的最大量。

本发明实施例提供的一种固态硬盘写数据的装置,还可以包括:

检测模块,用于:将写数据及对应LBA写入固态硬盘中之前,检测存储在DDR中的写数据的数据量是否达到单个条带需存储的数据的数据量,如果是,则将写数据及对应LBA写入至固态硬盘中;否则,则返回执行检测存储在DDR中的写数据的数据量是否达到单个条带需存储的数据的数据量的步骤,直至检测结果为是为止。

本发明实施例提供的一种固态硬盘写数据的装置,还可以包括:

数据缓存模块,用于:将写数据请求对应的写数据写入至DDR中之前,在DDR中为写数据请求申请对应的写缓存,如果申请成功,则执行将写数据请求对应的写数据写入至DDR的步骤,如果申请失败,则返回执行在DDR中为写数据请求申请对应的写缓存的步骤,直至申请成功为止。

本发明实施例提供的一种固态硬盘写数据的装置,还可以包括:

提示模块,用于:如果申请写缓存或者申请缓存单元的次数达到预设次数且申请结果为申请失败,则停止继续申请,并输出相应的提示信息。

本发明实施例还提供了一种固态硬盘写数据的设备,可以包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上任一项固态硬盘写数据的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上任一项固态硬盘写数据的方法的步骤。

需要说明的是,本发明实施例提供的一种固态硬盘写数据的装置、设备及存储介质中相关部分的说明请参见本发明实施例提供的一种固态硬盘写数据的方法中对应部分的详细说明,在此不再赘述。另外本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据缓存方法、装置、终端以及计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类