一种固态硬盘工作方法、系统、电子设备和存储介质与流程

文档序号:18898957发布日期:2019-10-18 21:40阅读:191来源:国知局
一种固态硬盘工作方法、系统、电子设备和存储介质与流程

本发明涉及固态硬盘技术领域,尤其涉及一种固态硬盘工作方法、系统、电子设备和存储介质。



背景技术:

一般而言,固态硬盘都会有类似的结构,其目的是将命令转成闪存的存取动作,每道命令是对应相应的闪存才可以读取或写入相应的数据,所以每道命令均会发送到相对应的闪存中。

在消息队列中,消息是按照先进先出的原则通过控制器发送到对应的闪存中,但是当一个闪存正在根据读写消息进行工作时,若消息队列中又一次出现针对该闪存的消息时,该消息会在消息队列中堵塞,导致闪存控制器暂停从消息队列中获取消息,直至闪存将在先的消息处理完成后,才会再次获取消息队列中的消息,由于消息在队列中的堵塞,造成大量的闪存闲置,导致固态硬盘的数据处理效率变慢。



技术实现要素:

为了解决现有技术存在的问题,本发明的至少一个实施例提供了一种固态硬盘工作方法、系统、电子设备和存储介质。

第一方面,本发明实施例提供了一种固态硬盘工作方法,所述工作方法包括:

确定对消息队列中的每条待读写消息进行处理的闪存;

获取所述待读写消息即将被处理时对应的闪存的工作状态;

根据所述工作状态确定所述闪存是否处于空闲状态;

若所述闪存未处于空闲状态,将所述待读写消息作为延迟待读写消息;并确定是否存在其他闪存处于空闲状态;

若存在其他闪存处于空闲状态,将处于空闲状态的闪存作为空闲闪存,将空闲闪存对应的未被处理的待读写消息发送到对应的空闲闪存中。

基于上述技术方案,本发明实施例还可以做出如下改进。

结合第一方面,在第一方面的第一种实施例中,所述固态硬盘工作方法还包括:

获取消息队列中所述待读写消息的处理顺序;

根据待读写消息的处理顺序确定是否存在相邻两条所述待读写消息被同一所述闪存进行处理;

若存在相邻两条所述待读写消息被同一所述闪存进行处理,对应每个其他闪存获取一条相应的待读写消息,作为调整待读写消息;

将所述调整待读写消息的处理顺序调整至被同一所述闪存进行处理的相邻两条所述待读写消息之间。

结合第一方面,在第一方面的第二种实施例中,所述固态硬盘工作方法还包括:

将所有所述待读写消息按对应的闪存进行分组,得到多组待读写消息组;

对所述待读写消息组进行排序;

执行循环标记步骤;所述循环标记步骤包括:按所述待读写消息组的顺序,依次从所述待读写消息组中每次获取一个所述待读写消息,并添加标记,直至对所有待读写消息组中所有的所述待读写消息添加标记;

将所述待读写消息被添加标记的顺序作为所述待读写消息的处理顺序。

结合第一方面或第一方面的第一或第二种实施例,在第一方面的第三种实施例中,所述将空闲闪存对应的未被处理的待读写消息发送到对应的空闲闪存中,包括:

获取所述延迟待读写消息被处理的时刻;

获取在所述延迟待读写消息之后,每个所述空闲闪存下一次接收到待读写消息的时刻;

根据所述延迟待读写消息被处理的时刻和所述每个空闲闪存下一次接收到待读写消息的时刻,分别计算得到每个空闲闪存的处理时间差;

按从大至小的顺序对所述处理时间差进行排序,按所述处理时间差的顺序,将空闲闪存对应的未被处理的待读写消息发送到对应的空闲闪存中。

第二方面,本发明实施例提供了一种固态硬盘系统,所述固态硬盘系统包括:

确定单元,用于确定对消息队列中每条待读写消息进行处理的闪存;

第一获取单元,用于获取所述待读写消息即将被处理时对应的闪存的工作状态;

第一判断单元,用于根据所述工作状态确定所述闪存是否处于空闲状态;

第一处理单元,用于若所述闪存未处于空闲状态,将所述待读写消息作为延迟待读写消息;并确定是否存在其他闪存处于空闲状态;

第二处理单元,用于若存在其他闪存处于空闲状态,将处于空闲状态的闪存作为空闲闪存,将空闲闪存对应的未被处理的待读写消息发送到对应的空闲闪存中。

结合第二方面,在第二方面的第一种实施例中,所述固态硬盘工作还包括:

第二获取单元,用于获取消息队列中所述待读写消息的处理顺序;

第二判断单元,用于根据待读写消息的处理顺序确定是否存在相邻两条所述待读写消息被同一所述闪存进行处理;

第三处理单元,用于若存在相邻两条所述待读写消息被同一所述闪存进行处理,对应每个其他闪存获取一条相应的待读写消息,作为调整待读写消息;

第四处理单元,用于将所述调整待读写消息的处理顺序调整至被同一所述闪存进行处理的相邻两条所述待读写消息之间。

结合第二方面,在第二方面的第二种实施例中,所述固态硬盘系统还包括:

第五处理单元,用于将所有所述待读写消息按对应的闪存进行分组,得到多组待读写消息组;

排序单元,用于对所述待读写消息组进行排序;

标记单元,用于执行循环标记步骤;所述循环标记步骤包括:按所述待读写消息组的顺序,依次从所述待读写消息组拿取一个所述待读写消息添加标记,直至对所有待读写消息组中所有的所述待读写消息添加标记;

第六处理单元,用于将所述待读写消息被添加标记的顺序作为所述待读写消息的处理顺序。

结合第二方面或第二方面的第一或第二种实施例,在第二方面的第三种实施例中,所述第二处理单元包括:

第三获取单元,用于获取所述延迟待读写消息被处理的时刻;

第四获取单元,用于获取在所述延迟待读写消息之后,每个所述空闲闪存下一次接收到待读写消息的时刻;

计算单元,用于根据所述延迟待读写消息被处理的时刻和所述每个空闲闪存下一次接收到待读写消息的时刻,分别计算得到每个空闲闪存的处理时间差;

第七处理单元,用于按从大至小的顺序对所述处理时间差进行排序,按所述处理时间差的顺序,将空闲闪存对应的未被处理的待读写消息发送到对应的空闲闪存中。

第三方面,本发明实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面中任一项实施例所述工作方法的步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项实施例所述的工作方法的步骤。

本发明的上述技术方案与现有技术相比具有如下优点:本发明实施例通过确定待读写消息即将被处理时对应的闪存的工作状态,确定该闪存是否处于空闲状态,若闪存未处于空闲状态,则说明该闪存正在工作,实时获取是否存在其他闪存处于空闲状态,若其他闪存均处于空闲状态,则从消息队列中获取空闲闪存对应的待读写消息发送到对应的空闲闪存,保证闪存均在工作,以提升固态硬盘的工作效率,避免因为队列消息阻塞导致的固态硬盘工作效率下降的问题。

附图说明

图1是本发明实施例提供的一种固态硬盘工作方法的应用环境图;

图2是本发明另一实施例提供的一种固态硬盘工作方法流程示意图;

图3是本发明又一实施例提供的一种固态硬盘工作方法流程示意图其一;

图4是本发明又一实施例提供的一种固态硬盘工作方法流程示意图其二;

图5是本发明又一实施例提供的一种固态硬盘工作方法流程示意图其三;

图6是本发明又一实施例提供的一种固态硬盘系统结构示意图;

图7本发明又一实施例提供的一种计算机设备的内部结构图。

具体实施方式

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

图1为一个实施例中固态硬盘工作方法的应用环境图。参照图1,该固态硬盘工作方法应用于固态硬盘系统。该固态硬盘系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

如图2所示,在一个实施例中,提供了一种固态硬盘工作方法。本实施例主要以该方法应用于上述图1中的终端110(或服务器120)来举例说明。参照图2,该固态硬盘工作方法具体包括如下步骤:

s11、确定对消息队列中的每条待读写消息进行处理的闪存。

在本实施例中,消息队列中存储有即将被处理的控制指令,闪存根据该控制指令进行数据读操作或者数据写操作,即本方案中的待读写消息,闪存控制器获取消息队列中的控制指令发送到相应的闪存进行数据读写操作,由于数据存储的位置不同,所以每条控制指令均只能发送到对应的闪存进行处理,当某条控制指令即将通过闪存控制器发送到闪存时,若该闪存处于忙碌状态,即该闪存正在进行读写操作时,闪存控制器无法将该控制指令发送到该闪存,则会造成后续的控制指令堵塞,在本步骤中,确定消息队列中每条待读写消息对应的闪存,可以在待读写消息进入消息队列前获取待读写消息对应的闪存,还可以将消息队列中的待读写消息转移到另一消息队列,并在转移过程中获取每条待读写消息对应的闪存,通过上述方式均可确定将对消息队列中的待读写消息进行处理的闪存,在本实施例中不再赘述。

s12、获取待读写消息即将被处理时对应的闪存的工作状态。

在本实施例中,获取待读写消息即将被处理时,与该待读写消息对应的闪存的工作状态,即确认根据该待读写消息进行数据读操作和数据写操作的闪存的工作状态,若该闪存处于忙碌状态,则本步骤中即将被处理的待读写消息也会由于堵塞而停止被获取,若该闪存处于空闲状态,则待读写消息可以直接被闪存控制器获取,并发送到对应的闪存中。

在本实施例中,获取待读写消息即将被处理时对应的闪存的工作状态可以是待读写消息在预设间隔时间内被处理时对应的闪存的工作状态。

s13、根据工作状态确定闪存是否处于空闲状态。

在本实施例中,通过上述步骤得到的关于闪存的工作状态信息确认闪存是否处于空闲状态,比如,获取闪存的数据读写操作信息确认闪存是否处于空闲状态,即根据闪存是否进行数据读写操作来确认闪存是否处于空闲状态,还可以根据闪存是否从闪存控制器接收数据来确认闪存是否处于空闲状态。

s14、若闪存未处于空闲状态,将待读写消息作为延迟待读写消息;并确定是否存在其他闪存处于空闲状态。

在本实施例中,若闪存未处于空闲状态,则可以将待读写消息发送到闪存中进行相应的数据读取或数据存储操作,若闪存未处于空闲状态,此时可以对待读写消息进行标记,如本步骤中,将待读写消息标记为延迟待读写消息,以对该延迟待读写消息与其他待读写消息加以区分,还可以与上述步骤中同样的方式确认其他的闪存的工作状态,确认是否存在其他闪存处于空闲状态,若存在其他闪存还处于空闲状态,说明此时由于延迟待读写消息导致消息队列堵塞,其他待读写消息无法及时发送到其他对应的闪存中。

s15、若存在其他闪存处于空闲状态,将处于空闲状态的闪存作为空闲闪存,将空闲闪存对应的未被处理的待读写消息发送到对应的空闲闪存中。

在本实施例中,若存在其他闪存处于空闲状态,将处于空闲状态的闪存标记为空闲闪存,并将消息队列中出延迟待读写消息之外未被处理的待读写消息发送到对应的空闲闪存中,即从消息队列中获取延迟待读写消息之后的待读写消息发送到对应的空闲闪存中,比如,确定空闲闪存对应的待读写消息,从消息队列中获取每个空闲闪存对应的一条待读写消息,并发送到对应的空闲闪存中,使得所有的空闲闪存均可对应处理相应的一条待读写消息,当然也有可能出现消息队列中不存在空闲闪存对应的待读写消息的情况,这种情况下说明该空闲闪存已处理完所有对应的待读写消息。

其中,从消息队列中获取延迟待读写消息之后的待读写消息,可以按就近原则,获取对应空闲闪存的一条待读写消息,也可以根据每条待读写消息的紧急程度,获取对应空闲闪存的待读写消息,其中待读写消息的紧急程度,可以在待读写消息输入消息队列之前由用户进行设置,比如,用户针对某项读写操作设置紧急程度数值,在读写操作转换为读写指令后,在读写指令中添加标记,标记对应该紧急程度数值,在闪存发生堵塞时,根据每个空闲闪存对应的所有待读写消息的紧急程度数值来获取每个空闲闪存对应的一条待读写消息,实现快速处理紧急指令的功能。

比如,如图3所示,在本实施例中,将空闲闪存对应的未被处理的待读写消息发送到对应的空闲闪存中,可以包括如下步骤:

s21、获取延迟待读写消息被处理的时刻。

在本实施例中,获取延迟待读写消息被处理的时刻,但是由于延迟待读写消息被在先的待读写消息阻塞,所以延迟待读写消息被延迟,在本步骤中仅获取其被处理的时刻。

s22、获取在延迟待读写消息之后,每个空闲闪存下一次接收到待读写消息的时刻。

在本实施例中,在确定延迟待读写消息之后,确定每个空闲闪存在下一次接收待读写消息的时刻,即若不存在延迟待读写消息,队列消息中对应空闲闪存的待读写消息发送到相应的空闲闪存的时刻。

s23、根据延迟待读写消息被处理的时刻和每个空闲闪存下一次接收到待读写消息的时刻,分别计算得到每个空闲闪存的处理时间差。

在本实施例中,通过延迟待读写消息被处理的时刻和空闲闪存下一次接收到待读写消息的时刻,计算得到相应的时间差,即可得到每个空闲闪存下一次处理待读写消息距当前时刻的时间差,时间差越大,说明该空闲闪存被空闲的时间越长。

s24、按从大至小的顺序对处理时间差进行排序,按处理时间差的顺序,将空闲闪存对应的未被处理的待读写消息发送到对应的空闲闪存中。

在本实施例中,按时间差的大小顺序,将闪存对应的未被处理的待读写消息发送到对应的空闲闪存中。

如图4所示,在一个实施例中,提供了一种固态硬盘工作方法。参照图4,与图2所示固态硬盘工作方法相比,区别在于,该固态硬盘工作方法还包括如下步骤:

s31、获取消息队列中待读写消息的处理顺序。

在本实施例中,获取消息队列中的待读写消息的处理顺序,可以通过在待读写消息进入消息队列前对待读写消息进行标记,根据队列先进先出的原则,确认待读写消息的顺序,还可以将消息队列中的待读写消息转移到另一消息队列,并在转移过程中获取每条待读写消息的顺序。

s32、根据待读写消息的处理顺序确定是否存在相邻两条待读写消息被同一闪存进行处理。

在本实施例中,根据待读写消息的处理顺序确认,是否有两条对应同一闪存的待读写消息相邻,若存在相邻的两条被同一闪存进行处理,则会因为在前的待读写消息刚发送至闪存中,闪存无法再次处理新的待读写消息,此时,十分容易造成堵塞。

s33、若存在相邻两条待读写消息被同一闪存进行处理,对应每个其他闪存获取一条相应的待读写消息,作为调整待读写消息。

在本实施例中,若存在相邻两条待读写消息被同一闪存进行处理,此时对应除该闪存之外的每个闪存均获取一条相应的待读写消息,将这些待读写消息作为调整待读写消息。

s34、将调整待读写消息的处理顺序调整至被同一闪存进行处理的相邻两条待读写消息之间。

在本实施例中,在相邻两条被同一闪存进行处理的待读写消息之间添加上述步骤中获取的调整待读写消息,即在被同一闪存处理的待读写消息之间添加上其他闪存对应的一条待读写消息,实现对待读写消息的处理顺序的调整,本方案可以在队列消息被处理之前进行,以调整所有的待读写消息的处理顺序,在起始阶段就避免读写消息堵塞导致待读写消息拥堵,实现快速处理读写消息,但是由于不同的读写消息的处理速度不一致,所以,后期还是有可能出现阻塞的情况,所以,上述实施例中在出现阻塞的情况时,调整待读写消息的发送情况,以再次提高处理效率,本方案中可以提高消息队列初期的处理效率。

如图5所示,在一个实施例中,提供了一种固态硬盘工作方法。参照图5,与图2所示固态硬盘工作方法相比,区别在于,该固态硬盘工作方法还包括如下步骤:

s41、将所有待读写消息按对应的闪存进行分组,得到多组待读写消息组。

在本实施例中,将所有待读写消息按对应的闪存进行分组,每组待读写消息组中的待读写消息均对应同一闪存。

s42、对待读写消息组进行排序。

在本实施例中,仅对待读写消息组进行排序,可以按照闪存的排布顺序,对待读写消息组进行排序,也可以按照任意顺序对待读写消息组依次进行标记,将标记的顺序作为待读写消息组的顺序。

s43、执行循环标记步骤;循环标记步骤包括:按待读写消息组的顺序,依次从待读写消息组中每次获取一个待读写消息,并添加标记,直至对所有待读写消息组中所有的待读写消息添加标记。

在本实施例中,执行循环标记,按待读写消息组的顺序,依次从待读写消息组中每次获取一个待读写消息,并在获取到待读写消息时添加标记,对所有待读写消息组中的所有待读写消息添加标记。

s44、将待读写消息被添加标记的顺序作为待读写消息的处理顺序。

在本实施例中,将待读写消息添加标记的顺序作为待读写消息的处理顺序,按该处理顺序重新生成消息队列,以提高消息队列初期的处理效率。

如图6所示,本发明实施例提供了一种固态硬盘系统,固态硬盘系统包括:确定单元、第一获取单元、第一判断单元、第一处理单元和第二处理单元。

在本实施例中,确定单元,用于确定对消息队列中每条待读写消息进行处理的闪存。

在本实施例中,消息队列中存储有即将被处理的控制指令,闪存根据该控制指令进行数据读操作或者数据写操作,即本方案中的待读写消息,闪存控制器获取消息队列中的控制指令发送到相应的闪存进行数据读写操作,由于数据存储的位置不同,所以每条控制指令均只能发送到对应的闪存进行处理,当某条控制指令即将通过闪存控制器发送到闪存时,若该闪存处于忙碌状态,即该闪存正在进行读写操作时,闪存控制器无法将该控制指令发送到该闪存,则会造成后续的控制指令堵塞,在本步骤中,确定消息队列中每条待读写消息对应的闪存,可以在待读写消息进入消息队列前获取待读写消息对应的闪存,还可以将消息队列中的待读写消息转移到另一消息队列,并在转移过程中获取每条待读写消息对应的闪存,通过上述方式均可确定将对消息队列中的待读写消息进行处理的闪存,在本实施例中不再赘述。

在本实施例中,第一获取单元,用于获取待读写消息即将被处理时对应的闪存的工作状态。

在本实施例中,获取待读写消息即将被处理时,与该待读写消息对应的闪存的工作状态,即确认根据该待读写消息进行数据读操作和数据写操作的闪存的工作状态,若该闪存处于忙碌状态,则本步骤中即将被处理的待读写消息也会由于堵塞而停止被获取,若该闪存处于空闲状态,则待读写消息可以直接被闪存控制器获取,并发送到对应的闪存中。

在本实施例中,第一判断单元,用于根据工作状态确定闪存是否处于空闲状态。

在本实施例中,通过上述步骤得到的关于闪存的工作状态信息确认闪存是否处于空闲状态,比如,获取闪存的数据读写操作信息确认闪存是否处于空闲状态,即根据闪存是否进行数据读写操作来确认闪存是否处于空闲状态,还可以根据闪存是否从闪存控制器接收数据来确认闪存是否处于空闲状态。

在本实施例中,第一处理单元,用于若闪存未处于空闲状态,将待读写消息作为延迟待读写消息;并确定是否存在其他闪存处于空闲状态。

在本实施例中,若闪存未处于空闲状态,则可以将待读写消息发送到闪存中进行相应的数据读取或数据存储操作,若闪存未处于空闲状态,此时可以对待读写消息进行标记,如本步骤中,将待读写消息标记为延迟待读写消息,以对该延迟待读写消息与其他待读写消息加以区分,还可以与上述步骤中同样的方式确认其他的闪存的工作状态,确认是否存在其他闪存处于空闲状态,若存在其他闪存还处于空闲状态,说明此时由于延迟待读写消息导致消息队列堵塞,其他待读写消息无法及时发送到其他对应的闪存中。

在本实施例中,第二处理单元,用于若存在其他闪存处于空闲状态,将处于空闲状态的闪存作为空闲闪存,将除延迟待读写消息之外未被处理的待读写消息发送到对应的空闲闪存中。

在本实施例中,若存在其他闪存处于空闲状态,将处于空闲状态的闪存标记为空闲闪存,并将消息队列中出延迟待读写消息之外未被处理的待读写消息发送到对应的空闲闪存中,即从消息队列中获取延迟待读写消息之后的待读写消息发送到对应的空闲闪存中,比如,确定空闲闪存对应的待读写消息,从消息队列中获取每个空闲闪存对应的一条待读写消息,并发送到对应的空闲闪存中,使得所有的空闲闪存均可对应处理相应的一条待读写消息,当然也有可能出现消息队列中不存在空闲闪存对应的待读写消息的情况,这种情况下说明该空闲闪存已处理完所有对应的待读写消息。

其中,从消息队列中获取延迟待读写消息之后的待读写消息,可以按就近原则,获取对应空闲闪存的一条待读写消息,也可以根据每条待读写消息的紧急程度,获取对应空闲闪存的待读写消息,其中待读写消息的紧急程度,可以在待读写消息输入消息队列之前由用户进行设置,比如,用户针对某项读写操作设置紧急程度数值,在读写操作转换为读写指令后,在读写指令中添加标记,标记对应该紧急程度数值,在闪存发生堵塞时,根据每个空闲闪存对应的所有待读写消息的紧急程度数值来获取每个空闲闪存对应的一条待读写消息,实现快速处理紧急指令的功能。

比如,在本实施例中,第二处理单元可以包括:第三获取单元,用于获取在延迟待读写消息之后,每个空闲闪存下一次接收到待读写消息的时刻;在本实施例中,获取延迟待读写消息被处理的时刻,但是由于延迟待读写消息被在先的待读写消息阻塞,所以延迟待读写消息被延迟,在本步骤中仅获取其被处理的时刻。

在本实施例中,第二处理单元可以包括:第四获取单元,用于获取延迟待读写消息被处理的时刻;在本实施例中,在确定延迟待读写消息之后,确定每个空闲闪存在下一次接收待读写消息的时刻,即若不存在延迟待读写消息,队列消息中对应空闲闪存的待读写消息发送到相应的空闲闪存的时刻。

在本实施例中,第二处理单元可以包括:计算单元,用于根据延迟待读写消息被处理的时刻和每个空闲闪存下一次接收到待读写消息的时刻,分别计算得到每个空闲闪存的处理时间差;在本实施例中,通过延迟待读写消息被处理的时刻和空闲闪存下一次接收到待读写消息的时刻,计算得到相应的时间差,即可得到每个空闲闪存下一次处理待读写消息距当前时刻的时间差,时间差越大,说明该空闲闪存被空闲的时间越长。

在本实施例中,第二处理单元可以包括:第七处理单元,用于按从大至小的顺序对处理时间差进行排序,按处理时间差的顺序,将除延迟待读写消息之外未被处理的待读写消息发送到对应的空闲闪存中;在本实施例中,按时间差的大小顺序,将闪存对应的未被处理的待读写消息发送到对应的空闲闪存中。

本发明实施例提供了一种固态硬盘系统,与图6所示固态硬盘系统相比,区别在于,

固态硬盘工作还包括:第二获取单元,用于获取消息队列中待读写消息的处理顺序;获取消息队列中的待读写消息的处理顺序,可以通过在待读写消息进入消息队列前对待读写消息进行标记,根据队列先进先出的原则,确认待读写消息的顺序,还可以将消息队列中的待读写消息转移到另一消息队列,并在转移过程中获取每条待读写消息的顺序。

固态硬盘工作还包括:第二判断单元,用于根据待读写消息的处理顺序确定是否存在相邻两条待读写消息被同一闪存进行处理;根据待读写消息的处理顺序确认,是否有两条对应同一闪存的待读写消息相邻,若存在相邻的两条被同一闪存进行处理,则会因为在前的待读写消息刚发送至闪存中,闪存无法再次处理新的待读写消息,此时,十分容易造成堵塞。

固态硬盘工作还包括:第三处理单元,用于若存在相邻两条待读写消息被同一闪存进行处理,对应每个其他闪存获取一条相应的待读写消息,作为调整待读写消息;若存在相邻两条待读写消息被同一闪存进行处理,此时对应除该闪存之外的每个闪存均获取一条相应的待读写消息,将这些待读写消息作为调整待读写消息。

固态硬盘工作还包括:第四处理单元,用于将调整待读写消息的处理顺序调整至被同一闪存进行处理的相邻两条待读写消息之间;在相邻两条被同一闪存进行处理的待读写消息之间添加上述步骤中获取的调整待读写消息,即在被同一闪存处理的待读写消息之间添加上其他闪存对应的一条待读写消息,实现对待读写消息的处理顺序的调整,本方案可以在队列消息被处理之前进行,以调整所有的待读写消息的处理顺序,在起始阶段就避免读写消息堵塞导致待读写消息拥堵,实现快速处理读写消息,但是由于不同的读写消息的处理速度不一致,所以,后期还是有可能出现阻塞的情况,所以,上述实施例中在出现阻塞的情况时,调整待读写消息的发送情况,以再次提高处理效率,本方案中可以提高消息队列初期的处理效率。

本发明实施例提供了一种固态硬盘系统,与图6所示固态硬盘系统相比,区别在于,

固态硬盘系统还包括:第五处理单元,用于将所有待读写消息按对应的闪存进行分组,得到多组待读写消息组;将所有待读写消息按对应的闪存进行分组,每组待读写消息组中的待读写消息均对应同一闪存。

固态硬盘系统还包括:排序单元,用于对待读写消息组进行排序;仅对待读写消息组进行排序,可以按照闪存的排布顺序,对待读写消息组进行排序,也可以按照任意顺序对待读写消息组依次进行标记,将标记的顺序作为待读写消息组的顺序。

固态硬盘系统还包括:标记单元,用于执行循环标记步骤;循环标记步骤包括:按待读写消息组的顺序,依次从待读写消息组拿取一个待读写消息添加标记,直至对所有待读写消息组中所有的待读写消息添加标记;执行循环标记,按待读写消息组的顺序,依次从待读写消息组中每次获取一个待读写消息,并在获取到待读写消息时添加标记,对所有待读写消息组中的所有待读写消息添加标记。

固态硬盘系统还包括:第六处理单元,用于将待读写消息被添加标记的顺序作为待读写消息的处理顺序;将待读写消息添加标记的顺序作为待读写消息的处理顺序,按该处理顺序重新生成消息队列,以提高消息队列初期的处理效率。

图7示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110(或服务器120)。如图7所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现固态硬盘工作方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行固态硬盘工作方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的固态硬盘系统可以实现为一种计算机程序的形式,计算机程序可在如图7所示的计算机设备上运行。计算机设备的存储器中可存储组成该固态硬盘系统的各个程序模块,比如,图6所示的确定单元、第一获取单元、第一判断单元、第一处理单元和第二处理单元。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的固态硬盘工作方法中的步骤。

例如,图7所示的计算机设备可以通过如图6所示的固态硬盘系统中的确定单元执行步骤s11,计算机设备可通过第一获取单元执行步骤s12。

本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

确定对消息队列中的每条待读写消息进行处理的闪存;

获取待读写消息即将被处理时对应的闪存的工作状态;

根据工作状态确定闪存是否处于空闲状态;

若闪存未处于空闲状态,将待读写消息作为延迟待读写消息;并确定是否存在其他闪存处于空闲状态;

若存在其他闪存处于空闲状态,将处于空闲状态的闪存作为空闲闪存,将除延迟待读写消息之外未被处理的待读写消息发送到对应的空闲闪存中。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1