一种NVME命令处理装置、方法、设备及介质与流程

文档序号:37301692发布日期:2024-03-13 20:49阅读:13来源:国知局
一种NVME命令处理装置、方法、设备及介质与流程

本发明涉及计算机,特别涉及一种nvme命令处理装置、方法、设备及介质。


背景技术:

1、基于pcie(peripheral component interconnect express,高速串行计算机扩展总线标准)接口实现的ssd(solid state disk,固态硬盘)因其具有高性能、低延迟等特点逐渐受到重视。nvme(non-volatile memory express,非易失性存储传输协议)作为新一代的接口传输协议,规定了主机与nvm(non-volatile memory,非易失性存储介质)子系统之间的通信协议。此后,nvme+pcie已经发展成为主流的存储方案。

2、传统的io(input/output,输入/输出)操作流程为:第一阶段,主机在nvme命令中设置好prp(physical region range,物理区域页面);主机写命令到sq队列(submissionqueue,提交队列);主机通过门铃寄存器通知nvme ssd控制器取指令;第二阶段,nvme ssd控制器收到通知后,到sq队列取指令;nvme ssd控制器根据指令执行相应的数据读写搬运操作;nvme ssd控制器执行完后,向cq队列(completion queue,完成队列)写入指令执行结果;nvme ssd控制器中断通知主机去执行cq队列中的反馈信息;第三阶段,主机执行完成后,通知门铃寄存器回复nvme ssd控制器。

3、在上述操作流程中,由主机的cpu(central processing unit,中央处理器)实现nvme命令处理、sq队列管理、cq队列管理以及指针更新等。由于一次nvme命令的执行流程很长,时延消耗大,因此会占用较多的中央处理器资源,从而影响整个系统的性能。

4、为此,上述问题亟待本领域技术人员解决。


技术实现思路

1、有鉴于此,本发明的目的在于提供一种nvme命令处理装置、方法、设备及介质,能够减少cpu的内存开销,其具体方案如下:

2、第一方面,本技术公开了一种nvme命令处理装置,所述nvme命令处理装置通过高速串行计算机扩展总线标准控制器与若干个磁盘进行交互,包括:nvme引擎调度管理模块、若干个nvme引擎调度组件和提交队列条目共享缓存,所述nvme引擎调度组件包括第一任务处理模块、提交队列条目处理模块、完成队列条目处理模块和第二任务处理模块,其中,

3、所述nvme引擎调度管理模块,用于为所述nvme引擎调度组件分配目标任务和所述提交队列条目共享缓存中的第一缓存资源;

4、所述第一任务处理模块,用于对所述nvme引擎调度管理模块分配的所述目标任务进行处理,并将处理结果发送至所述提交队列条目处理模块;

5、所述提交队列条目处理模块,用于将基于所述处理结果生成的提交队列条目信息保存至所述第一缓存资源,并将当前提交队列条目尾指针发送至所述磁盘,以便所述磁盘根据所述提交队列条目信息生成完成队列条目信息,然后将所述完成队列条目信息发送至所述完成队列条目处理模块;

6、所述完成队列条目处理模块,用于根据第一规则判断所述完成队列条目信息的第一字段是否有效,若有效则根据第二规则判断当前是否对所述完成队列条目信息进行处理,并在处理完成后将当前完成队列条目头指针发送至所述磁盘,将处理后所述完成队列条目信息发送至所述第二任务处理模块;

7、所述第二任务处理模块,用于根据处理后所述完成队列条目信息的第二字段确定所述目标任务的完成状态,并对所述完成状态进行上报。

8、可选的,所述提交队列条目处理模块,包括:

9、提交队列条目处理单元,用于将基于所述处理结果生成的提交队列条目信息保存至所述第一缓存资源,并在接收到目标指令后,将所述第一缓存资源中的所述提交队列条目信息发送至所述磁盘内部的提交队列;

10、提交队列条目尾指针管理单元,用于将所述当前提交队列条目尾指针发送至所述磁盘,以便所述磁盘根据所述当前提交队列条目尾指针从所述提交队列中确定出所述提交队列条目信息,并根据所述提交队列条目信息生成所述完成队列条目信息,然后将所述完成队列条目信息发送至所述完成队列条目处理模块。

11、可选的,所述完成队列条目处理模块,包括:

12、完成队列条目处理单元,用于根据所述第一字段与所述磁盘中第一目标寄存器的取值关系,并根据完成队列条目头指针与完成队列条目尾指针的大小关系判断所述第一字段是否有效,若有效则根据所述完成队列条目头指针与所述完成队列条目尾指针是否相等判断当前是否对所述完成队列条目信息进行处理;

13、完成队列条目头指针管理单元,用于在所述完成队列条目处理单元处理完所述完成队列条目信息后,更新当前完成队列条目头指针,并将所述当前完成队列条目头指针发送至所述磁盘。

14、可选的,所述完成队列条目处理单元,具体用于:

15、判断所述第一字段的取值与所述第一目标寄存器的取值是否相同;

16、若所述第一字段的取值与所述第一目标寄存器的取值相同,则判断所述完成队列条目尾指针是否不小于所述完成队列条目头指针;

17、若所述完成队列条目尾指针不小于所述完成队列条目头指针,则判定所述第一字段有效;

18、若所述完成队列条目尾指针小于所述完成队列条目头指针,则判定所述第一字段无效;

19、若所述第一字段的取值与所述第一目标寄存器的取值相反,则判断所述完成队列条目尾指针是否小于所述完成队列条目头指针;

20、若所述完成队列条目尾指针小于所述完成队列条目头指针,则判定所述第一字段有效;

21、若所述完成队列条目尾指针不小于所述完成队列条目头指针,则判定所述第一字段无效。

22、可选的,所述完成队列条目处理单元,具体用于:

23、若判定所述第一字段有效,则判断所述完成队列条目头指针与所述完成队列条目尾指针是否相等;

24、若所述完成队列条目头指针与所述完成队列条目尾指针相等,则对所述完成队列条目信息进行处理;

25、若所述完成队列条目头指针与所述完成队列条目尾指针不相等,则将所述完成队列条目信息保存至所述完成队列条目处理单元中的第二缓存资源,并将与所述第二缓存资源对应的第二目标寄存器的比特位置1。

26、可选的,所述完成队列条目处理单元,具体用于:

27、按照所述第二目标寄存器中的各个所述比特位的顺序读取所述比特位的值;

28、若所述比特位的值为1,则从与所述比特位对应的所述第二缓存资源中获取并处理所述完成队列条目信息,并在处理完成后将所述比特位的值置0。

29、可选的,所述nvme命令处理装置通过高速串行计算机扩展总线标准控制器以及高速串行计算机扩展总线标准控制器交换设备与若干个磁盘进行交互。

30、第二方面,本技术公开了一种nvme命令处理方法,应用于nvme命令处理装置,所述nvme命令处理装置通过高速串行计算机扩展总线标准控制器与若干个磁盘进行交互,包括:nvme引擎调度管理模块、若干个nvme引擎调度组件和提交队列条目共享缓存,所述nvme引擎调度组件包括第一任务处理模块、提交队列条目处理模块、完成队列条目处理模块和第二任务处理模块,所述方法包括:

31、通过所述nvme引擎调度管理模块为所述nvme引擎调度组件分配目标任务和所述提交队列条目共享缓存中的第一缓存资源;

32、利用所述第一任务处理模块对所述nvme引擎调度管理模块分配的所述目标任务进行处理,并将处理结果发送至所述提交队列条目处理模块;

33、利用所述提交队列条目处理模块将基于所述处理结果生成的提交队列条目信息保存至所述第一缓存资源,并将当前提交队列条目尾指针发送至所述磁盘,以便所述磁盘根据所述提交队列条目信息生成完成队列条目信息,然后将所述完成队列条目信息发送至所述完成队列条目处理模块;

34、通过所述完成队列条目处理模块根据第一规则判断所述完成队列条目信息的第一字段是否有效,若有效则根据第二规则判断当前是否对所述完成队列条目信息进行处理,并在处理完成后将当前完成队列条目头指针发送至所述磁盘,将处理后所述完成队列条目信息发送至所述第二任务处理模块;

35、基于所述第二任务处理模块根据处理后所述完成队列条目信息的第二字段确定所述目标任务的完成状态,并对所述完成状态进行上报。

36、第三方面,本技术公开了一种电子设备,包括:

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

38、处理器,用于执行所述计算机程序,以实现前述公开的nvme命令处理方法。

39、第四方面,本技术公开了一种计算机可读存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的nvme命令处理方法。

40、可见,本技术提出一种nvme命令处理装置,所述nvme命令处理装置通过高速串行计算机扩展总线标准控制器与若干个磁盘进行交互,包括:nvme引擎调度管理模块、若干个nvme引擎调度组件和提交队列条目共享缓存,所述nvme引擎调度组件包括第一任务处理模块、提交队列条目处理模块、完成队列条目处理模块和第二任务处理模块,其中,所述nvme引擎调度管理模块,用于为所述nvme引擎调度组件分配目标任务和所述提交队列条目共享缓存中的第一缓存资源;所述第一任务处理模块,用于对所述nvme引擎调度管理模块分配的所述目标任务进行处理,并将处理结果发送至所述提交队列条目处理模块;所述提交队列条目处理模块,用于将基于所述处理结果生成的提交队列条目信息保存至所述第一缓存资源,并将当前提交队列条目尾指针发送至所述磁盘,以便所述磁盘根据所述提交队列条目信息生成完成队列条目信息,然后将所述完成队列条目信息发送至所述完成队列条目处理模块;所述完成队列条目处理模块,用于根据第一规则判断所述完成队列条目信息的第一字段是否有效,若有效则根据第二规则判断当前是否对所述完成队列条目信息进行处理,并在处理完成后将当前完成队列条目头指针发送至所述磁盘,将处理后所述完成队列条目信息发送至所述第二任务处理模块;所述第二任务处理模块,用于根据处理后所述完成队列条目信息的第二字段确定所述目标任务的完成状态,并对所述完成状态进行上报。综上可见,对于主机下发的目标任务,本技术无需再过多占用cpu资源对该目标任务进行后续处理,而是通过所述nvme命令处理装置实现任务的解析、提交队列条目信息的构建和提交队列条目尾指针的管理与更新以及完成队列条目头指针的管理与更新。这样一来,从资源消耗角度分析,对于多nvme引擎调度组件的应用场景,本技术通过nvme引擎调度管理模块将目标任务和缓存资源进行合并统一调度进行分配,有效地减少了硬件面积开销,节约生产成本。从性能角度分析,本技术通过所述nvme命令处理装置,大大地减少了cpu的内存开销,相比软件实现而言,大大地降低了软件的延时和系统层级的延时,对于大规模系统而言,某一部分cpu的开销减少和延时降低会带来更大的性能效益。此外,本技术通过完成队列条目处理模块判断完成队列条目信息的第一字段是否有效以及判断当前是否对完成队列条目信息进行处理,实现对所述完成队列条目信息的重排序,如此一来,保证了提交队列条目尾指针与完成队列条目头指针管理的准确性。

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