实现主机任务异步执行的方法及装置、系统与流程

文档序号:23729310发布日期:2021-01-26 19:30阅读:65来源:国知局
实现主机任务异步执行的方法及装置、系统与流程

[0001]
本申请涉及存储设备领域,具体而言,涉及一种实现主机任务异步执行的方法及装置、系统。


背景技术:

[0002]
cmb(controller memory buffer)是nvme 1.2提出的一种技术,主要目的是:让主机可以把相关数据存放到nvme controller端的buffer(缓存区)中,从而减少nvme controller与主机端的交互开销。
[0003]
图1是一种主机和非易失存储设备交互的示意图,如图1所示,目前的技术方案中,主机端一般是把submission queue/completion queue/prp sgl list放在非易失存储设备缓存区(cmb)中,也有的支持把读写数据放在cmb中。
[0004]
现在的技术方案中,仅仅是利用了controller memory buffer的数据存储特性,将主机端的数据存储到controller一端,但命令的执行还是由主机端发起并处理。这样主机端的负载仍然比较重。
[0005]
针对现有技术中仅仅将主机端的数据存储到非易失存储设备,但命令的执行还是由主机端发起并处理,导致主机端的负载比较重的问题,目前尚未提出有效的解决方案。


技术实现要素:

[0006]
本申请实施例提供了一种实现主机任务异步执行的方法及装置、系统,以至少解决现有技术中仅仅将主机端的数据存储到非易失存储设备,但命令的执行还是由主机端发起并处理,导致主机端的负载比较重的技术问题。
[0007]
根据本申请实施例的一个方面,提供了一种实现主机任务异步执行的方法,包括:将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,并基于执行参数执行任务得到的。
[0008]
可选地,将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区,包括:读取非易失存储设备的第一协议寄存器,得到缓存区所在的地址;读取非易失存储设备的第二协议寄存器,得到缓存区的大小;依据缓存区的大小将需要执行的任务写入缓存区所在的地址。
[0009]
可选地,上述执行结果通过以下方式生成:非易失存储设备的处理器接收到执行参数后,依据处理器当前的资源使用情况和任务的优先级依次执行任务,得到执行结果。
[0010]
可选地,上述方法还包括:向非易失存储设备发送查询指令,查询指令用于查询非易失存储设备的处理器的资源状态,其中,资源状态是处理器执行任务时写入非易失存储设备的状态寄存器的。
[0011]
可选地,从非易失存储设备获取任务的执行结果之后,上述方法还包括:向非易失
存储设备的处理器发送第三指令,第三指令用于指示非易失存储设备的处理器释放全部的资源。
[0012]
根据本申请实施例的另一方面,还提供了另一种实现主机任务异步执行的方法,该方法应用于非易失性存储设备,该易失性存储设备中包括至少一个处理器,该方法包括:处理器从主机发送的指令中获取执行参数,执行参数为执行主机需要执行的任务所需的参数,其中,任务由主机预先存储至与主机连接的非易失存储设备的缓存区;基于执行参数依次执行缓存区中的任务,生成执行结果;将执行结果发送至主机。
[0013]
根据本申请实施例的另一方面,还提供了一种实现主机任务异步执行的系统,包括:主机和非易失存储设备,其中,主机,用于将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,并基于执行参数执行任务得到的;非易失存储设备,与主机连接,用于接收到执行参数后,依据处理器当前的资源使用情况和任务的优先级依次执行任务,得到执行结果。
[0014]
根据本申请实施例的另一方面,还提供了一种实现主机任务异步执行的装置,包括:存储模块,用于将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;第一发送模块,用于向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;第二发送模块,用于向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,并基于执行参数执行任务得到的。
[0015]
根据本申请实施例的再一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行以上的实现主机任务异步执行的方法。
[0016]
根据本申请实施例的再一方面,还提供了一种处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的实现主机任务异步执行的方法。
[0017]
在本申请实施例中,采用将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,并基于执行参数执行任务得到的的方式,通过将主机端的任务迁移到非易失存储设备端进行处理,同时,在非易失存储设备上配置管理主机任务的自适应方法,让非易失存储设备自动管理和执行这些任务,从而实现了极大的降低了主机端的负载的技术效果,进而解决了现有技术中仅仅将主机端的数据存储到非易失存储设备,但命令的执行还是由主机端发起并处理,导致主机端的负载比较重技术问题。
附图说明
[0018]
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0019]
图1是一种主机和非易失存储设备交互的示意图;
[0020]
图2是根据本申请实施例的一种主机和非易失存储设备交互的示意图;
[0021]
图3是根据本申请实施例的一种实现主机任务异步执行的方法的流程图;
[0022]
图4是根据本申请实施例的一种实现主机任务存储的示意图;
[0023]
图5是根据本申请实施例的一种实现管理主机任务的调度和执行的示意图;
[0024]
图6是根据本申请实施例的另一种实现主机任务异步执行的方法的流程图;
[0025]
图7是根据本申请实施例的一种实现主机任务异步执行的系统的结构图;
[0026]
图8是根据本申请实施例的一种实现主机任务异步执行的装置的结构图。
具体实施方式
[0027]
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0028]
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0029]
图2是根据本申请实施例的一种主机和非易失存储设备交互的示意图,如图2所示,从目前nvme controller芯片的实际看,controller端实际上存在运算能力强大的多核心cpu。本发明不仅利用cmb来存储主机端的数据,还充分利用了controller上这些多核心cpu,将主机端的任务迁移到controller上来处理。同时,在controller上配置管理主机任务的自适应方法,让controller自动管理和执行这些任务,从而极大的降低了主机端的负载。下面对上述方法详细说明:
[0030]
根据本申请实施例,提供了一种实现主机任务异步执行的方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0031]
图3是根据本申请实施例的一种实现主机任务异步执行的方法的流程图,如图3所示,该方法包括如下步骤:
[0032]
步骤s302,将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;
[0033]
步骤s304,向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;
[0034]
步骤s306,向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,
并基于执行参数执行任务得到的。
[0035]
通过上述步骤,通过将主机端的任务迁移到非易失存储设备端进行处理,同时,在非易失存储设备上配置管理主机任务的自适应方法,让非易失存储设备自动管理和执行这些任务,从而实现了极大的降低了主机端的负载的技术效果。
[0036]
根据本申请的一个可选的实施例,步骤s302通过以下方法实现:读取非易失存储设备的第一协议寄存器,得到缓存区所在的地址;读取非易失存储设备的第二协议寄存器,得到缓存区的大小;依据缓存区的大小将需要执行的任务写入缓存区所在的地址。
[0037]
图4是根据本申请实施例的一种实现主机任务存储的示意图,如图4所示,主机任务的存储是通过主机和controller之间的cmb来实现的。详述如下:
[0038]
(1)主机通过pcie memory read读取controller标准的协议寄存器0x38,得到cmb所在的地址。
[0039]
(2)主机通过pcie memory read读取controller标准的协议寄存器0x3c,得到cmb的大小。
[0040]
(3)主机根据cmb当前的大小和使用情况,将所有需要执行的任务通过pcie memory write写到cmb所在的地址。
[0041]
在本申请的一些可选的实施例中,上述执行结果通过以下方式生成:非易失存储设备的处理器接收到执行参数后,依据处理器当前的资源使用情况和任务的优先级依次执行任务,得到执行结果。
[0042]
根据本申请的另一个可选的实施例,主机还可以向非易失存储设备发送查询指令,查询指令用于查询非易失存储设备的处理器的资源状态,其中,资源状态是处理器执行任务时写入非易失存储设备的状态寄存器的。
[0043]
可选地,步骤s306执行完成之后,还需要向非易失存储设备的处理器发送第三指令,第三指令用于指示非易失存储设备的处理器释放全部的资源。
[0044]
图5是根据本申请实施例的一种实现管理主机任务的调度和执行的示意图,如图5所示,管理主机任务的调度和执行包括主机和controller协商执行参数,以及controller的任务自适应调度方法。详述如下:
[0045]
(1)主机向controller发送directive send命令,将执行参数打包发送到controller。
[0046]
(2)controller收到主机发来的参数后,启动任务调度,根据controller当前的资源使用情况和任务的优先级,开始执行task,同时将负载和资源状态写入状态寄存器供主机查询。
[0047]
(3)全部任务执行完成,主机向controller发送directive receive命令,将任务执行的结果取回。
[0048]
(4)主机再发送directive send命令给controller,释放所有的资源。
[0049]
本发明的关键点在于充分利用了cmb的存储技术和nvme directive命令的灵活性,在非易失性存储设备端自适应地完成了主机任务的异步执行。通过cmb存储主机所需要执行的任务方便了主机和非易失性存储设备之间共享程序的方式。然后directive命令又非常灵活的实现了任务参数的协商和执行结果的获取。同时,非易失性存储设备全部自动处理主机的任务,极大的降低了主机的负载。
[0050]
图6是根据本申请实施例的另一种实现主机任务异步执行的方法的流程图,如图6所示,该方法应用于非易失性存储设备,该易失性存储设备中包括至少一个处理器,该方法包括以下步骤:
[0051]
步骤s602,处理器从主机发送的指令中获取执行参数,执行参数为执行主机需要执行的任务所需的参数,其中,任务由主机预先存储至与主机连接的非易失存储设备的缓存区;
[0052]
步骤s604,基于执行参数依次执行缓存区中的任务,生成执行结果;
[0053]
步骤s606,将执行结果发送至主机。
[0054]
需要说明的是,图6所示实施例的优选实施方式可以参见图3所示实施例的相关描述,此处不再赘述。
[0055]
图7是根据本申请实施例的一种实现主机任务异步执行的系统的结构图,如图7所示,该系统包括:主机70和非易失存储设备72,其中,
[0056]
主机70,用于将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,并基于执行参数执行任务得到的;
[0057]
非易失存储设备72,与主机72连接,用于接收到执行参数后,依据处理器当前的资源使用情况和任务的优先级依次执行任务,得到执行结果。
[0058]
图8是根据本申请实施例的一种实现主机任务异步执行的装置的结构图,如图8所示,该装置包括:
[0059]
存储模块80,用于将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;
[0060]
第一发送模块82,用于向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;
[0061]
第二发送模块84,用于向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,并基于执行参数执行任务得到的。
[0062]
需要说明的是,图8所示实施例的优选实施方式可以参见图3所示实施例的相关描述,此处不再赘述。
[0063]
本申请实施例还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行以上的实现主机任务异步执行的方法。
[0064]
非易失性存储介质用于存储执行以下功能的程序:将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,并基于执行参数执行任务得到的。
[0065]
本申请实施例还提供了一种处理器,处理器用于运行存储在存储器中的程序,其
中,程序运行时执行以上的实现主机任务异步执行的方法。
[0066]
处理器用于运行执行以下功能的程序:将主机需要执行的任务存储至与主机连接的非易失存储设备的缓存区;向非易失存储设备的处理器发送第一指令,第一指令中包括执行任务所需的执行参数;向非易失存储设备的处理器发送第二指令;以及从非易失性存储设备中接收任务的执行结果,其中,执行结果是非易失存储设备的处理器调用缓存区中的任务,并基于执行参数执行任务得到的。
[0067]
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0068]
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0069]
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0070]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0071]
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0072]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,rebjzskjd-only memory)、随机存取存储器(rbjzskjm,rbjzskjndom bjzskjccess memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0073]
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1