发明内容
有鉴于此,本发明提供了一种信息更新方法及电子设备,通过在控制器更新提交队列的提取状态后及时反馈给主机,以使主机继续更新该提交队列的提交状态,无需等待控制器更新完成队列的命令完成状态,大大提高了控制器的工作效率及其并行处理性能。
为了实现上述目的,本申请提供了以下技术方案:
一种信息更新方法,所述方法包括:
在检测到主机更新提交队列的提交状态时,从所述提交队列提取至少一条命令信息,所述提交状态表明所述提交队列添加了新的命令信息;
更新所述提交队列的提取状态并反馈至所述主机,以使所述主机继续更新所述提交队列的提交状态,所述提取状态表明从所述提交队列中提取了命令信息;
当检测到完成的命令信息满足预设要求时,更新完成队列的命令完成状态并反馈至所述主机。
优选的,所述方法还包括:
将从所述提交队列提取的命令信息保存到存储器。
优选的,所述方法还包括:
将提取的所述至少一条命令信息写入执行队列;
从所述执行队列获取命令信息并执行。
优选的,所述当检测到完成的命令信息满足预设要求时,更新完成队列的命令完成状态并反馈至所述主机具体为:
当检测到所述执行队列内命令信息的当前条数达到预设值时,更新完成队列的命令完成状态并反馈至所述主机,以使所述主机继续更新所述提交队列的提交状态。
优选的,在所述从所述提交队列提取至少一条命令信息之后,所述方法还包括:
按照预设规则执行提取的至少一条命令信息。
一种电子设备,所述电子设备包括:
主机,用于在检测到提交队列的提取状态更新后,向所述提交队列添加至少一条命令信息,并更新所述提交队列的提交状态,所述提交状态表明所述提交队列添加了新的命令信息,所述提取状态表明从所述提交队列中提取了命令信息;
控制器,用于在检测到所述主机更新提交队列的提交状态时,从所述提交队列提取至少一条命令信息,并更新所述提交队列的提取状态;当检测到完成的命令信息满足预设要求时,更新完成队列的命令完成状态并反馈至所述主机。
优选的,所述电子设备还包括:
存储器,用于存储所述控制器从所述提交队列提取的命令信息。
优选的,所述控制器还用于将提取的所述至少一条命令信息写入执行队列,以便从所述执行队列获取命名信息并执行。
优选的,所述控制器具体用于在检测到所述执行队列内命令信息的当前条数达到预设值时,更新完成队列的命令完成状态并反馈至所述主机,以使所述主机继续更新所述提交队列的提交状态。
,所述控制器还用于按照预设规则执行提取的至少一条命令信息。
由此可见,与现有技术相比,本申请提供了一种状态更新方法和电子设备,当检测到主机更新提交队列的提交状态时,说明此时主机向该提交队列添加了命令信息,此时控制器可提取至少一条命令信息,且在控制器提取了该提交队列中的命令信息后,将直接更新所述提交队列的提取状态并反馈至所述主机,从而使该主机继续向该提交队列继续添加新的命令信息,更新该提交队列的提交状态后,使得控制器能够继续提取至少一条命令信息,无需等待控制器更新完成队列的命令完成状态,大大提高了控制器的工作效率及其并行处理性能。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供了一种状态更新方法和电子设备,当检测到主机更新提交队列的提交状态时,说明此时主机向该提交队列添加了命令信息,此时控制器可提取至少一条命令信息,且在控制器提取了该提交队列中的命令信息后,将直接更新所述提交队列的提取状态并反馈至所述主机,从而使该主机继续向该提交队列继续添加新的命令信息,更新该提交队列的提交状态后,使得控制器能够继续提取至少一条命令信息,无需等待控制器更新完成队列的命令完成状态,大大提高了控制器的工作效率及其并行处理性能。
为了使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,为本申请提供的一种信息更新方法实施例的流程图,该方法可以包括:
步骤S11:在检测到主机更新提交队列的提交状态时,从该提交队列提取至少一条命令信息。
在实际应用中,在NVMe(Non-Volatile Memory Express,非易失性存储器标准)协议的要求下,为了提高固态硬盘的的性能,可以采用并行处理方式对主机发送的命令信息进行,目前通常会采用命令队列来实现固态硬盘内存(如Nand-flash)的并行性,实现对主机输出的命令信息的处理。
更具体地说,由于主机和控制器(如固态硬盘内的控制)的硬件资源有限,所以,用来对主机输出的命令信息进行处理的队列个数和深度也是有限的,如16x16,4x64等,但并不局限于此。
基于此,对于主机与控制器之间的信息处理,可以通过更新提交队列和完成队列的头尾指针来生产或消费队列内容,维护队列状态,也就是说,当主机向控制器发送命令信息进行相应处理时,主机通常会将该命名信息发送至提交队列,并更新该提交队列的提交状态,以告知控制器此时提交队列存在有主机更新的命令信息。
由此可见,本实施例上述提交状态可以表明该提交队列添加了新的命令信息,以便控制器通过监测该提交队列的状态变化情况,及时得知主机是否在提交队列添加了命令信息。
可选的,对于提交队列的提交状态的更新可以是通过更新提交队列的头尾指针来实现,具体根据队列的特性,主机向该提交队列添加命令信息后,可以更新该提交队列的尾指针,当控制器检测到该提交队列的尾指针更新后,可以从该提交队列的对头提取至少一个命令信息,从而为该提交队列留出更多空间,使主机继续从该提交队列的队尾添加命令信息。
需要说明的是,关于对提交队列的提交状态的检测方式并不局限于上述方式。
步骤S12:更新该提交队列的提取状态并反馈至主机,以使主机继续更新该提交队列的提交状态。
继上文所述,当控制器从提交队列提取至少一条命令信息后,将会及时更新该提交队列的提取状态,并将这一情况反馈给主机,以使主机能够及时得知控制器从该提交队列中提取了命令信息,从而继续向该提交队列添加命令信息,不需要等待控制器将提取的命令信息执行完后,再将该提交队列的提取状态与完成队列的命令完成状态的更新情况一起反馈给主机。
其中,上述提交队列的提取状态表明控制器从该提交队列中提取了命令信息,以便主机通过检测到该提取状态的更新情况,及时掌握控制器对提交队列中命令信息的提取情况。
可选的,控制器更新提交队列的提取状态后,可以采用向主机发送中断的方式告知主机控制器已经将其添加至提交队列的命令信息提取了,主机可以继续向该提交队列添加命令信息,本申请对控制器通知其更新提交队列的提取状态的方式不作限定。
另外,在实际应用中,控制器从提交队列提取了命令信息之后,可以按照预设规则执行提取的至少一条命令信息,该预设规则可以根据主机向提交队列添加的命令信息的具体内容确定,本申请对此不作限定。
步骤S13:当检测到完成的命令信息满足预设要求时,更新完成队列的命令完成状态并反馈至主机。
其中,在本实施例中,该预设要求可以根据实际情况确定,如完成的命令信息的条数等,本申请该预设要求的具体含义不作限定。
可选的,以上述预设要求为执行预设条数的命令信息,即可更新完成队列的状态为了进行说明,此时,上述步骤S13具体可以是当检测到执行队列内命令信息的当前条数达到预设值时,更新完成队列的命令完成状态并反馈至主机,以使主机继续更新提交队列的提交状态。
需要说明的是,本申请对上述预设值的具体数值不作限定,可以是当前执行队列存放的所有命令信息的条数,也可以小于该所有命令信息的条数,具体可以根据实际需要设定。
结合上述描述可知,本实施例将控制器对提交队列的提取状态与对完成队列的命令完成状态的更新分开来执行,也就是说,当控制器从提交队列中提取了至少一条命令信息后,就可以更新提交队列的提取状态,以使主机据此继续向提交队列添加命令信息,很明显,这比现有技术中控制器将提取的所有命令信息执行完毕后,更新完成队列的命令完成状态后,才通知主机继续向提交队列添加命令信息的方式相比,本实施例重复利用了控制器的并行性能,提高了工作效率。
由此可见,在本实施例实际应用中,无论是控制器从提交队列中提取了命令信息,还是完成其提取的所有命令信息,都会采用更新相应状态的方式通知主机,以使主机继续向提交队列添加命令信息,并更新该提交队列的提交状态,从而使控制器继续提取该提交队列的命令信息,如此循环,达到提高控制器性能及其工作效率的目的。
作为本申请另一实施例,在控制器的实现中,通常可以设置提交队列、执行队列和完成队列,但并不局限于此。在实际应用中,主机输出的命令信息可以先存放到提交队列中供控制器提取,之后,控制器可以将提取的至少一条命令信息直接写入该执行队列等待依次执行,对于执行的命令信息,可以相应更新完成队列的命令完成状态。
按照上述本申请信息更新方案,由于本实施例中控制器从提交队列提取了命令信息后,就会告知主机向该提交队列继续添加命令信息,进而使控制器检测到主机更新了提交队列的提交信息后,将继续从该提交队列提取命令信息,如此循环,往往会使控制器提取的命令信息速度大于其对命令信息的执行速度,所以,本实施例可以对用于存放控制器提取的命令信息的执行队列进行扩展,从而增强主机与控制器之间并行执行命令信息的条数,即提高信息的并列处理性能,进而提高工作效率。
举例说明:如图2(a)所示的现有信息更新方法的时序图现有技术中,通常是在控制器完成对提取的4条命令信息(本实施例以及4条命令信息为例进行说明,但并局限于此)后才会更新命令完成状态以及提交队列的提取状态,之后,主机继续向该提交队列添加命令信息,并更新该提交队列的提交状态,如此循环,可见,现有技术只能实现4条命令信息的并行执行。
而采用本申请上述描述的信息更新费方案,如图2(b)所示的本申请信息更新方法的时序图,由于控制器每次从提交队列提取4条命令信息后,都将更新提交队列的提取状态,从而使主机继续向提交队列添加命令信息,更新提交队列提交状态,进而使控制器继续提取4条命令信息,如此循环,直至完成所提取的命令信息,再更新命令完成状态,可见,本申请技术方案实现了4*n条命令信息的并行执行,n>1,也就是说,相对于现有技术,本申请实现了成倍的命令信息并行执行,大大提高了控制器对信息并行处理能力。
其中,在本实施例实际应用中,控制器从提交队列提取命令信息并更新提交队列状态后,就可以执行该命令信息,由于并不限定其再次检测到主机更新提交队列的提交状态是在其执行完该命令信息之前,还是执行完该命令信息之后,所以,在图2(b)中并没有表示何时执行提取的命令信息,但该执行过程是存在的,且当执行的命令信息条数满足一定数量,如执行完提取的所有命令信息,才会更新命令完成状态并反馈至主机。
另外,需要说明的是,对于控制器从提交队列提取的命令信息,并不局限于直接发送至执行队列这种方式,还可以将从提交队列提取的命令信息直接保存到存储器中,以供后续按照预设要求从该存储器中调取并执行等,本申请在此不再一一列举。
可选的,该存储器可以是DDR(Double Data Rate,双倍速率同步动态随机存储器),由于DDR的存储容量很大,使其能够存储多于提交队列能够容纳的命令信息,进一步提高控制器的并行处理能力,当并不局限于DDR这一种类型的存储器。
如图3所示,为本申请提供的一种电子设备实施例的结构示意图,该电子设备可以包括:主机31和控制器32,其中:
主机31,可以用于在检测到提交队列的提取状态更新后,向该提交队列添加至少一条命令信息,并更新该提交队列的提交状态。
其中,该提交状态可以表明该提交队列添加了新的命令信息,而该提取状态可以表明控制器从该提交队列中提取了命令信息。
控制器32,用于在检测到主机31更新提交队列的提交状态时,从该提交队列提取至少一条命令信息,并更新该提交队列的提取状态;当检测到完成的命令信息满足预设要求时,更新完成队列的命令完成状态并反馈至主机31。
在本实施实际应用中,主机31向提交队列添加命令信息后,将会同时更新该提交队列的提交状态,当控制器32检测到提交队列的提交状态更新后,可以直接从该提交队列中提取至少一条命令信息进行执行,并且,控制器在从提交队列提取了命令信息时,可以立刻更新该提交队列的提取状态,并向主机发送中断来告知主机控制器已将提交队列中的命令信息提取了,从而使主机可以继续向该提交队列存放命令信息,不需要扩展该提交队列。
由此可见,本实施例通过将提交队列的提取状态与对完成队列的命令完成状态的更新步骤分开来执行,从而使控制器每次从提交队列中提取了命令信息,都将立刻通知主机向提交队列添加命令信息,进而使控制器继续从提交队列提取命令信息,无需等待控制执行完提取的命令信息并更新命令完成状态后再通知主机向提交队列添加命令信息,大大提高了控制器的并行性能,提高了信息处理效率。
其中,本实施例为了达到上述目的,只需要对用来对控制器提取的命令信息进行处理的执行队列进行扩展,并不需要同时扩展提交队列和完成队列,简化了控制器扩展步骤,需要说明的是,本申请对执行队列的扩展方式不作限定。
可选的,在上述实施例的基础上,如图4所示,电子设备还可以包括:
存储器33,可以用于存储控制器32从提交队列提取的命令信息,如DDR存储器,但并局限于此,由于存储器的存储容量通常比较大,其能够存储的命令信息要比提交队列容纳的命令信息多,进一步提高了控制器的信息并行处理能力。
当然,对于控制器32从提交队列提取的命令信息,除了储存到存储器33中外,还可以存储直接写入执行队列,之后,控制器可以直接从该执行队列获取命令信息,并按照预设规则执行提取的至少一条命令信息。需要说明的是,关于控制器从提交队列提取的命令信息的执行方式并不局限于上文描述的两种方式,且本申请对执行命令信息的预设规则的具体内容也不作限定,可根据提取的命令信息的具体内容确定,本申请在此不再详述。
作为本申请另一实施例,在控制器执行提取的命令信息过程中,其可以检测执行队列内命令信息的当前条数是否达到预设值,若达到预设值,说明控制器当前执行完的命令信息达到的一定数量,此时可以更新完成队列的命令完成状态并反馈至主机,从而使主机继续更新提交队列的提交状态。
其中,当控制器更新了完成队列的命令完成状态时,可以向主机发送中断使主机继续更新提交队列的提交状态,也可以向主机发送能够表明这一情况的消息,来通知主机可以继续更新提交队列的提交状态,本申请对此不作具体限定。
综上所述,在本实施例中,当检测到主机更新提交队列的提交状态,控制器从该提交队列提取了至少一条命令信息后,将会把控制器更新该提交队列的提取状态这一情况反馈至主机,从而使该主机继续向该提交队列继续添加新的命令信息,并更新该提交队列的提交状态,从而使控制器继续从该提交队列提取至少一条命令信息,无需等待控制器更新命令完成状态后再通知主机向提交队列添加命令信息,来更新提交队列的提交状态,大大提高了控制器并行处理性能,从而提高了其工作效率。
最后,需要说明的是,关于上述各实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者系统中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的电子设备而言,由于其与实施例公开的方法对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。