存储设备指令聚合方法、装置、计算机设备及存储介质与流程

文档序号:36248178发布日期:2023-12-02 15:02阅读:33来源:国知局
存储设备指令聚合方法与流程

本发明涉及存储硬件,具体涉及一种存储设备指令聚合方法、装置、计算机设备及存储介质。


背景技术:

1、linux(一种开源操作系统)主机和基于nvme(non volatile memory express,非易失性内存主机控制器接口规范)协议的存储设备通信,必须通过位于主机内存的指令队列和设备完成交互,指令队列包括提交队列和完成队列。

2、当前,linux主机和基于nvme协议的存储设备的通信过程为:主机需要将存储设备执行的sqe(submission queue entry,提交队列条目)指令放入提交队列中,然后通知存储设备从提交队列里面读取sqe指令,存储设备内部的控制器通过pcie(peripheralcomponent interconnect express,高速串行计算机扩展总线标准)消息从主机内存的提交队列中读取sqe指令,并在存储设备内部执行该指令,最后将执行完成的指令结果cqe(completion queue entry,完成队列条目)通过pcie消息返回至主机的完成队列中,并通知主机完成一次io(input/output,输入输出)交互。上述过程中存储设备的cqe指令逐个返回主机,通信链路的吞吐率较低,导致主机的io处理速度低,内存开销大。

3、因此,现有技术存在存储设备的cqe指令逐个返回主机,导致通信链路的吞吐率较低的问题。


技术实现思路

1、有鉴于此,本发明提供了一种存储设备指令聚合方法、装置、计算机设备及存储介质,以解决存储设备的cqe指令逐个返回主机,导致通信链路的吞吐率较低的问题。

2、第一方面,本发明提供了一种存储设备指令聚合方法,该方法应用于存储设备端,该方法包括:

3、获取第一数量个提交指令和提交指令的排列顺序;

4、执行提交指令,得到每个提交指令的执行结果,并生成第一数量个完成指令;

5、在执行结果均为执行成功的情况下,则将第一数量个完成指令组合为目标完成指令,并将目标完成指令发送至主机端;

6、在执行结果不均为执行成功的情况下,按照排列顺序获取第一个执行出错时的执行结果位于排列顺序内的目标位置,根据目标位置确定目标完成指令和失败指令,并将目标完成指令和失败指令发送至主机端或者将失败指令发送至主机端。

7、本实施例提供的存储设备指令聚合方法,主机端可以连续向执行队列加入执行指令,存储设备端从执行队列获取第一数量个执行指令并执行,如果均执行成功,则将多个执行指令对应的完成指令合并后发送至主机端,如果存在失败指令,则将目标完成指令和失败指令发送至主机端或者将失败指令发送至主机端。有效减少pcie链路上传输的nvme控制指令,显著提高链路的吞吐率,同时提升主机的处理速度,降低主机的内存开销的技术效果。解决了相关技术中存储设备的cqe指令逐个返回主机,导致通信链路的吞吐率较低的问题。

8、在一种可选的实施方式中,按照排列顺序获取第一个执行出错时的执行结果位于排列顺序内的目标位置,根据目标位置确定目标完成指令和失败指令,并将目标完成指令和失败指令发送至主机端或者将失败指令发送至主机端,包括:

9、如果失败指令位于第一目标位置,则失败指令之前存在的完成指令的数量大于第一预设值,将失败指令之前存在的完成指令组合为目标完成指令,并将目标完成指令和失败指令发送至主机端;

10、如果失败指令位于第二目标位置,则失败指令之前存在的完成指令的数量等于第一预设值,则将失败指令之前存在的完成指令作为目标完成指令,并将目标完成指令和失败指令发送至主机端;

11、如果失败指令位于第三目标位置,则失败指令之前存在的完成指令的数量小于第一预设值,则将失败指令发送至主机端。

12、在本实施方式中,根据失败指令所处的目标位置,确定失败指令之前存在的完成指令的数量,在数量大于第一预设值的情况下,将完成指令合并为目标完成指令。提高主机端对完成指令的利用率,提高了主机端下发执行指令的速率,同时提升主机的处理速度,降低主机的内存开销。

13、在一种可选的实施方式中,将第一数量个完成指令组合为目标完成指令,包括:

14、获取合并完成指令的时间间隔和数量阈值,其中,时间间隔和数量阈值用于合并完成指令得到目标完成指令;

15、在第一数量个完成指令为时间间隔之内的所有完成指令,且第一数量小于或等于数量阈值的情况下,根据排列顺序,确定第一数量个完成指令中第一起始完成指令和第一结束完成指令;

16、获取第一起始完成指令的第一命令标识符和第一结束完成指令的第二命令标识符;

17、将预设完成指令的命令标识符修改为第二预设值,并根据第一命令标识符和第二命令标识符修改预设完成指令,得到目标完成指令;

18、在第一数量个完成指令为时间间隔之内的所有完成指令,且第一数量大于数量阈值的情况下,从第一数量个完成指令中获取前第二数量个完成指令,其中,第二数量等于数量阈值;

19、根据排列顺序,确定第二数量个完成指令中第二起始完成指令和第二结束完成指令;

20、获取第二起始完成指令的第三命令标识符和第二结束完成指令的第四命令标识符;

21、将预设完成指令的命令标识符修改为第二预设值,并根据第三命令标识符和第四命令标识符修改预设完成指令,得到目标完成指令。

22、在本实施方式中,基于合并完成指令的时间间隔和数量阈值,将完成指令合并为目标完成指令。可以在通信链路上有效减少完成指令的传输次数。主机在收到目标完成指令后,可以一次释放多个执行指令,为后续io的高速下发提供了资源的保障,提高了单位时间内主机资源的利用率,同时由于完成指令可以合并,主机可以缩小每个完成队列的深度,减少了主机端的内存占用。

23、在一种可选的实施方式中,将失败指令之前存在的完成指令组合为目标完成指令,包括:

24、根据排列顺序,确定失败指令之前存在的完成指令中第三起始完成指令和第三结束完成指令;

25、获取第三起始完成指令的第五命令标识符和第三结束完成指令的第六命令标识符;

26、将预设完成指令的命令标识符修改为第二预设值,根据第五命令标识符和第六命令标识符修改预设完成指令,得到目标完成指令。

27、在本实施方式中,将失败指令之前存在的完成指令组合为目标完成指令,并单独将错误指令返回主机端。使得主机端可以通过目标完成指令及时释放对应的执行指令资源,为后续io的高速下发提供了资源的保障。同时,通过错误指令确定执行出错的执行指令,便于后续进一步处理。

28、第二方面,本发明提供了一种存储设备指令聚合方法,该方法应用于主机端,该方法包括:

29、生成提交指令,其中,提交指令包含唯一标识;

30、将提交指令放入提交队列;

31、将提交队列中的第一数量个提交指令和提交指令的排列顺序发送至存储设备端;

32、从存储设备端获取目标完成指令和/或失败指令,并将目标完成指令和/或失败指令放入完成队列;

33、根据目标完成指令确定第三数量个目标提交指令,并释放目标提交指令包含的唯一标识。

34、本实施例提供的存储设备指令聚合方法,主机端可以连续向执行队列加入执行指令,存储设备端从执行队列获取第一数量个执行指令并执行,如果均执行成功,则将多个执行指令对应的完成指令合并后发送至主机端,如果存在失败指令,则将目标完成指令和失败指令发送至主机端或者将失败指令发送至主机端。有效减少pcie链路上传输的nvme控制指令,显著提高链路的吞吐率,同时提升主机的处理速度,降低主机的内存开销的技术效果。解决了相关技术中存储设备的cqe指令逐个返回主机,导致通信链路的吞吐率较低的问题。

35、在一种可选的实施方式中,在生成提交指令之前,方法还包括:

36、判断存储设备端能否合并完成指令;

37、如果存储设备端能合并完成指令,获取合并完成指令的时间间隔和数量阈值,其中,时间间隔和数量阈值用于合并完成指令得到目标完成指令;

38、将时间间隔和数量阈值发送至存储设备。

39、在本实施方式中,主机端在确定存储设备端能合并完成指令的情况下,设置存储设备端合并完成指令的时间间隔和数量阈值,控制存储设备端对完成指令进行合并。

40、在一种可选的实施方式中,生成提交指令,包括:

41、向资源池申请初始提交指令,其中,资源池包括第一数量个初始提交指令,初始提交指令包含唯一标识;

42、调整初始提交指令,得到提交指令,其中,提交指令的唯一标识与初始提交指令的唯一标识相同。

43、在本实施方式中,向资源池申请初始提交指令,调整初始提交指令,得到提交指令。保证提交指令的唯一标识与初始提交指令的唯一标识相同,避免在同一个提交队列中出现标识相同的提交指令。

44、在一种可选的实施方式中,调整初始提交指令,包括:

45、将初始提交指令中的预设字段修改为第三预设值,其中,第三预设值用于确定提交指令对应的完成指令可以合并。

46、在本实施方式中,通过将初始提交指令中的预设字段修改为第三预设值,通知存储设备该提交指令对应的完成指令可以合并,为后续存储设备合并cqe指令提供基础。

47、第三方面,本发明提供了一种存储设备指令聚合装置,该装置部署在存储设备端,该方法包括:

48、第一获取模块,用于获取第一数量个提交指令和提交指令的排列顺序;

49、执行模块,用于执行提交指令,得到每个提交指令的执行结果,并生成第一数量个完成指令;

50、第一发送模块,用于在执行结果均为执行成功的情况下,则将第一数量个完成指令组合为目标完成指令,并将目标完成指令发送至主机端;

51、第二发送模块,用于在执行结果不均为执行成功的情况下,按照排列顺序获取第一个执行出错时的执行结果位于排列顺序内的目标位置,根据目标位置确定目标完成指令和失败指令,并将目标完成指令和失败指令发送至主机端或者将失败指令发送至主机端。

52、第四方面,本发明提供了一种存储设备指令聚合方法,该装置部署在主机端,该方法包括:

53、生成模块,用于生成提交指令,其中,提交指令包含唯一标识;

54、放入模块,用于将提交指令放入提交队列;

55、第三发送模块,用于将提交队列中的第一数量个提交指令和提交指令的排列顺序发送至存储设备端;

56、第二获取模块,用于从存储设备端获取目标完成指令和/或失败指令,并将目标完成指令和/或失败指令放入完成队列;

57、释放模块,用于根据目标完成指令确定第三数量个目标提交指令,并释放目标提交指令包含的唯一标识。

58、第五方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的存储设备指令聚合方法。

59、第六方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的存储设备指令聚合方法。

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