CN118132009A - 一种主机命令处理方法、装置、电子设备及存储介质 - Google Patents

一种主机命令处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN118132009A
CN118132009A CN202410483358.8A CN202410483358A CN118132009A CN 118132009 A CN118132009 A CN 118132009A CN 202410483358 A CN202410483358 A CN 202410483358A CN 118132009 A CN118132009 A CN 118132009A
Authority
CN
China
Prior art keywords
command
queue
doorbell
nvme
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410483358.8A
Other languages
English (en)
Inventor
邢宗岐
李树青
牛少平
夏湖培
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202410483358.8A priority Critical patent/CN118132009A/zh
Publication of CN118132009A publication Critical patent/CN118132009A/zh
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及计算机技术领域,公开了一种主机命令处理方法、装置、电子设备及存储介质,该方法包括:获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;根据队列门铃寄存器数值和缓存区门铃寄存器数值,判断目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;根据门铃更新标志和NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理。通过结合门铃更新标志所表征的目标提交队列中未搬运命令的存储情况,判断是否进行提交队列切换,避免出现提交队列还有未搬运的请求命令就进行了提交队列切换的情况,保证了提交队列内部请求命令处理的连续性,为提高请求命令处理效率奠定了基础。

Description

一种主机命令处理方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种主机命令处理方法、装置、电子设备及存储介质。
背景技术
非易失性内存主机控制器接口规范(NVM Express,简称:NVMe)用于主机软件与非易失性存储介质之间的通信,主机软件将请求命令写入提交队列,由NVMe加速器从提交队列中搬运请求至队列缓存区,最后发送至命令处理模块,以实现请求命令的响应。
在相关技术中,主机端通常配置有对应的多个提交队列,主机端将属于同一任务的多个请求命令写入同一提交队列。在NVMe加速器中队列缓存区与提交队列一一对应,当一个NVMe加速器支持多个提交队列时,NVMe通常在当前访问的提交队列所对应的队列缓存区为空时,进行提交队列切换操作,以访问下一提交队列。
但是,由于主机端的请求命令的队列写入速率、NVMe加速器的命令搬运效率和后级的命令处理效率可能并不匹配,若仅依据队列缓存区是否为空决定是否进行提交队列切换,可能会出现提交队列还有未搬运的请求命令就进行了提交队列切换的情况,导致提交队列内部请求命令处理不连续,不利于保证请求命令处理效率。
发明内容
本申请提供一种主机命令处理方法、装置、电子设备及存储介质,以解决相关技术会出现提交队列还有未搬运的请求命令就进行了提交队列切换的情况,导致提交队列内部请求命令处理不连续等缺陷。
本申请第一个方面提供一种主机命令处理方法,包括:
获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;其中,当主机向所述目标提交队列写入新命令时所述队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时所述缓存区门铃寄存器数值被更新;
根据所述队列门铃寄存器数值和缓存区门铃寄存器数值,判断所述目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;
根据所述门铃更新标志和所述NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理;
其中,所述NVMe加速器的命令处理信息至少表征所述NVMe加速器的命令搬移情况和所述目标缓存区的命令缓存情况。
在一种可选的实施方式中,所述根据所述队列门铃寄存器数值和缓存区门铃寄存器数值,判断所述目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志,包括:
根据所述队列门铃寄存器数值和缓存区门铃寄存器数值,判断所述队列门铃寄存器数值和缓存区门铃寄存器数值是否相等;
在所述队列门铃寄存器数值和缓存区门铃寄存器数值相等的情况下,确定所述目标提交队列的所有命令均已成功搬移至对应的目标缓存区,生成第一门铃更新标志;
在所述队列门铃寄存器数值和缓存区门铃寄存器数值不相等的情况下,确定所述目标提交队列存在未搬运命令,生成第二门铃更新标志;
其中,第一门铃更新标志为所述第二门铃更新标志的清零结果。
在一种可选的实施方式中,所述根据所述门铃更新标志和所述NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理,包括:
根据所述NVMe加速器的命令处理信息,确定所述目标缓存区当前缓存的命令数量;
判断所述目标缓存区当前缓存的命令数量是否等于1;
在所述目标缓存区当前缓存的命令数量等于1的情况下,根据所述NVMe加速器的命令处理信息,判断所述NVMe加速器发起的命令搬运任务是否全部完成,并生成相应的命令搬移任务执行标志;
在所述命令搬移任务执行标志表征所述NVMe加速器发起的命令搬运任务未全部完成的情况下,等待NVMe加速器执行命令搬运任务,以向所述目标缓存区写入新的待处理命令,并返回至所述判断所述目标缓存区当前缓存的命令数量是否等于1的步骤;
在所述命令搬移任务执行标志表征所述NVMe加速器发起的命令搬运任务已全部完成的情况下,判断所述门铃更新标志是否为第一门铃更新标志;
在所述门铃更新标志为第一门铃更新标志的情况下,确定所述目标提交队列不存在未搬运命令,并从所述目标缓存区中获取待处理命令;
在将从所述目标缓存区中获取的待处理命令发送至命令处理端之后,生成提交队列切换任务,以进行提交队列切换处理。
在一种可选的实施方式中,所述方法还包括:
在所述目标缓存区当前缓存的命令数量不等于1的情况下,从所述目标缓存区中获取的当前待处理命令和下一待处理命令;
在所述当前待处理命令中置位关键字段有效标志,并解析所述下一待处理命令的关键字段,得到下一待处理命令的关键字段信息;
将所述下一待处理命令的关键字段信息添加至所述当前待处理命令的预留字段,得到当前待发送命令,将所述当前待发送命令发送至命令处理端。
在一种可选的实施方式中,在返回至所述判断所述目标缓存区当前缓存的命令数量是否等于1的步骤之前,所述方法还包括:
从所述目标缓存区中获取的当前待处理命令和所述新的待处理命令;
在所述当前待处理命令中置位关键字段有效标志,并解析所述新的待处理命令的关键字段,得到新的待处理命令的关键字段信息;
将所述新的待处理命令的关键字段信息添加至所述当前待处理命令的预留字段,得到当前待发送命令,将所述当前待发送命令发送至命令处理端。
在一种可选的实施方式中,在生成提交队列切换任务之前,还包括:
对从所述目标缓存区中获取的待处理命令进行关键字段有效标志清零处理。
在一种可选的实施方式中,所述方法还包括:
在所述门铃更新标志为第二门铃更新标志的情况下,确定所述目标提交队列存在未搬运命令,执行所述等待NVMe加速器执行命令搬运任务的步骤。
本申请第二个方面提供一种主机命令处理装置,包括:
获取模块,用于获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;其中,当主机向所述目标提交队列写入新命令时所述队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时所述缓存区门铃寄存器数值被更新;
第一判断模块,用于根据所述队列门铃寄存器数值和缓存区门铃寄存器数值,判断所述目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;
处理模块,用于根据所述门铃更新标志和所述NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理;
其中,所述NVMe加速器的命令处理信息至少表征所述NVMe加速器的命令搬移情况和所述目标缓存区的命令缓存情况。
本申请第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请技术方案,具有如下优点:
本申请提供一种主机命令处理方法、装置、电子设备及存储介质,该方法包括:获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;其中,当主机向目标提交队列写入新命令时队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时缓存区门铃寄存器数值被更新;根据队列门铃寄存器数值和缓存区门铃寄存器数值,判断目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;根据门铃更新标志和NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理;其中,NVMe加速器的命令处理信息至少表征NVMe加速器的命令搬移情况和目标缓存区的命令缓存情况。上述方案提供的方法,通过结合门铃更新标志所表征的目标提交队列中未搬运命令的存储情况,判断是否进行提交队列切换,避免出现提交队列还有未搬运的请求命令就进行了提交队列切换的情况,保证了提交队列内部请求命令处理的连续性,为提高请求命令处理效率奠定了基础。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为多核CPU的NVMe工作流程示意图;
图2为传统NVMe加速器的主机命令处理系统的结构示意图;
图3为本申请实施例基于的主机命令处理系统的结构示意图;
图4为本申请实施例提供的主机命令处理方法的流程示意图;
图5为本申请实施例提供的主机命令处理方法的整体流程示意图;
图6为本申请实施例提供的示例性的主机命令处理系统的结构示意图;
图7为本申请实施例提供的主机命令处理装置的结构示意图;
图8为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
随着物联网、5G、人工智能等技术的进步,人们在工作与生活中产生的数据越来越多。对于这些数据,很多需要存储到云端,进行挖掘,使其产生价值。这就需要容量更大、性能更好、读取速度更快的存储系统来实现。SSD作为一种低成本、低功耗、高性能的存储介质,在各类电子产品中得到了广泛的使用。NVMe是一种高性能、可扩展的协议规范,用于主机软件与非易失性存储介质之间的通信。同时,NVMe可以提供更低的延时,更高的性能,更大的吞吐率。凭借这些优异性能,NVMe在多个领域得到使用,例如固态硬盘、加速板卡、数据中心等。在这些主流市场中,软件厂商和产品供应商提供了较为完善的支持,因此,对于NVMe协议的应用、发展与完善一直以来是广大工程师最关心的课题之一。
NVMe包含提交队列和完成队列两类队列,主机将指令写入提交队列,更新固态硬盘(Solid State Disk,简称:SSD)等NVM子系统或设备端的门铃寄存器,SSD等NVM子系统或设备检查门铃寄存器更新,并从双倍速率存储器(Double Data Rate SDRAM,简称:DDR)中获取提交队列中的指令,依次解析并执行获取的指令,执行完成后将指令执行的结果信息写入完成队列,并发送中断信号通知主机执行完成,主机接收到完成队列的完成信息并检查,更新完成队列的门铃寄存器,结束当前任务的执行。
如图1所示,为多核CPU的NVMe工作流程示意图,多核CPU的主机可以将NVMe中多组I/O队列(提交队列)分配给不同的CPU核使用,不同I/O队列可以处理不同类型甚至不同大小的I/O,这样可以让分属于不同的进程/线程独立使用一个队列资源,避免使用互斥机制引入的消耗。
NVMe加速器多由硬件实现,由于其实现难度,定制化程度非常高,对于大多数传统的I/O队列输出提交队列命令(Submission Queue Entry,简称:SQE)是通过判断每个队列的缓存区是否还存在有效SQE数据进行切换,具体结构如图2所示,图2为传统NVMe加速器的主机命令处理系统的结构示意图,Admin提交队列简称ASQ,Admin完成队列简称ACQ,I/O提交队列简称为IOSQ,I/O完成队列简称IOCQ,其并不关心I/O命令本身内容,且队列是否切换还需要后级解析一个完整的I/O命令才能获取,对于单一队列而言,依据队列的缓存区切换队列,I/O的处理效率不会受到影响,但当多核CPU同时调用多个队列工作时,仅依据用于存储DMA搬移的SQE缓存区(队列缓存区)是否为空去切换队列,很大程度上会导致队列内部I/O处理不连续,尤其在某个队列进行大I/O写处理时,频繁的切换队列导致I/O处理效率急剧下降。
针对上述问题,本申请实施例提供一种主机命令处理方法、装置、电子设备及存储介质,该方法包括:获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;其中,当主机向目标提交队列写入新命令时队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时缓存区门铃寄存器数值被更新;根据队列门铃寄存器数值和缓存区门铃寄存器数值,判断目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;根据门铃更新标志和NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理;其中,NVMe加速器的命令处理信息至少表征NVMe加速器的命令搬移情况和目标缓存区的命令缓存情况。上述方案提供的方法,通过结合门铃更新标志所表征的目标提交队列中未搬运命令的存储情况,判断是否进行提交队列切换,避免出现提交队列还有未搬运的请求命令就进行了提交队列切换的情况,保证了提交队列内部请求命令处理的连续性,为提高请求命令处理效率奠定了基础。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
首先,对本申请所基于的主机命令处理系统的结构进行说明:
本申请实施例提供的主机命令处理方法、装置、电子设备及存储介质,适用于在NVMe加速器进行主机命令处理过程中进行提交队列的切换处理。如图3所示,为本申请实施例基于的主机命令处理系统的结构示意图,主要包括主机端的多个提交队列、NVMe加速器和命令处理器。NVMe加速器用于将提交队列中的请求命令发送至后级的命令处理器,以使后级的命令处理器处理主机的请求命令,NVMe在进行请求命令发送的同时,根据当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值等信息,判断是否进行提交队列切换处理。
本申请实施例提供了一种主机命令处理方法,用于在NVMe加速器进行主机命令处理过程中进行提交队列的切换处理。本申请实施例的执行主体为电子设备,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于进行主机命令处理的电子设备。
如图4所示,为本申请实施例提供的主机命令处理方法的流程示意图,该方法包括:
步骤401,获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值。
其中,当主机向目标提交队列写入新命令时队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时缓存区门铃寄存器数值被更新。
步骤402,根据队列门铃寄存器数值和缓存区门铃寄存器数值,判断目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志。
具体地,监测Doorbell门铃寄存器,对于每个I/O队列(提交队列)均设置缓存区门铃寄存器DB_OLD[x](上一次更新Doorbell的值)用于存储上一次更新Doorbell的值,设置队列门铃寄存器DB_NEW[x](当前更新Doorbell的值)用于存储当前更新Doorbell的值,当NVMe加速器基于直接存储器访问程序(Direct Memory Access,简称:DMA)成功从目标提交队列搬移1个SQE命令至对应的目标缓存区时,缓存区门铃寄存器DB_OLD[x]值累加1,并成为新的DB_OLD[x],只有主机向目标请求队列写入新命令时,更新Doorbell寄存器时,队列门铃寄存器DB_NEW[x]才会被更新。
具体地,在一实施例中,根据队列门铃寄存器数值和缓存区门铃寄存器数值,判断队列门铃寄存器数值和缓存区门铃寄存器数值是否相等在队列门铃寄存器数值和缓存区门铃寄存器数值相等的情况下,确定目标提交队列的所有命令均已成功搬移至对应的缓存区,生成第一门铃更新标志;在队列门铃寄存器数值和缓存区门铃寄存器数值不相等的情况下,确定目标提交队列存在未搬运命令,生成第二门铃更新标志。
其中,第一门铃更新标志为第二门铃更新标志的清零结果。
具体地,可以实时监测DB_OLD[x]和DB_NEW[x],当DB_OLD[x]不等于DB_NEW[x]时,门铃更新标志置位,即生成第二门铃更新标志,表征目标提交队列中存在未搬移命令。当DB_OLD[x]等于DB_NEW[x]时表征目标提交队列中不存在未搬移命令,门铃更新标志清零,即生成第一门铃更新标志。
步骤403,根据门铃更新标志和NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理。
其中,NVMe加速器的命令处理信息至少表征NVMe加速器的命令搬移情况和目标缓存区的命令缓存情况。
具体地,可以根据门铃更新标志,判断目标提交队列中是否存在未搬移命令,结合该判断结果和NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理,以避免出现提交队列还有未搬运的请求命令就进行了提交队列切换的情况。
在上述实施例的基础上,为了进一步提高提交队列切换判断结果的可靠性,避免出现不合理的队列切换,作为一种可实施的方式,在一实施例中,根据门铃更新标志和NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理,包括:
步骤4031,根据NVMe加速器的命令处理信息,确定目标缓存区当前缓存的命令数量;
步骤4032,判断目标缓存区当前缓存的命令数量是否等于1;
步骤4033,在目标缓存区当前缓存的命令数量等于1的情况下,根据NVMe加速器的命令处理信息,判断NVMe加速器发起的命令搬运任务是否全部完成,并生成相应的命令搬移任务执行标志;
步骤4034,在命令搬移任务执行标志表征NVMe加速器发起的命令搬运任务未全部完成的情况下,等待NVMe加速器执行命令搬运任务,以向目标缓存区写入新的待处理命令,并返回至判断目标缓存区当前缓存的命令数量是否等于1的步骤;
步骤4035,在命令搬移任务执行标志表征NVMe加速器发起的命令搬运任务已全部完成的情况下,判断门铃更新标志是否为第一门铃更新标志;
步骤4036,在门铃更新标志为第一门铃更新标志的情况下,确定目标提交队列不存在未搬运命令,并从目标缓存区中获取待处理命令;
步骤4037,在将从目标缓存区中获取的待处理命令发送至命令处理端之后,生成提交队列切换任务,以进行提交队列切换处理。
具体地,可以监测NVMe加速器的DMA搬运任务,为每个I/O队列均设置一个SQE计数器SQ_CNT[x](SQE计数器),用于统计NVMe加速器发起的命令搬运任务的数量,即每成功发起一次该队列的DMA请求(命令搬运任务)SQE计数器SQ_CNT[x]加1,SQE计数器SQ_CNT[x]累加本次DMA发起的搬移SQE(命令搬运任务)的个数,每成功搬运一个SQE到至目标缓存区,SQE计数器SQ_CNT[x]减1,若SQE计数器SQ_CNT[x]不等于0,则确定NVMe加速器有已发起但未完成的命令搬运任务,则相应队列的DMA任务执行标志置位,若SQE计数器SQ_CNT[x]等于0,则确定NVMe加速器已发起的命令搬运任务已全部完成,则相应队列的DMA任务执行标志置清零。
具体地,如图5所示,为本申请实施例提供的主机命令处理方法的整体流程示意图。首先监测每个队列存储DMA搬移SQE的缓存区中有效的SQE数据(待处理命令)个数,当队列SQE缓存区非空时,将相应队列的缓存区非空标志置位,当队列SQE缓存区空时,将相应队列的缓存区非空标志清零。当队列的SQE缓存区非空标志为1,确定该SQE缓存区非空,发起队列输出仲裁请求,在获得仲裁权后,向后级命令处理器(命令处理模块)发送即将切换队列的标志和切换后队列的序号,并开始将该SQE缓存区(目标缓存区)中的待处理命令往命令处理端发送,同时实时监测目标缓存区当前缓存的命令数量,并判断目标缓存区当前缓存的命令数量是否等于1,即判断队列SQE缓存区数据个数是否等于1。在目标缓存区当前缓存的命令数量等于1的情况下,根据NVMe加速器的命令处理信息,确定DMA任务执行标志,若DMA任务执行标志为1,则表征NVMe加速器发起的命令搬运任务未全部完成,反之,则表征NVMe加速器发起的命令搬运任务已全部完成。在DMA任务执行标志不为1,判断门铃更新标志是否为第一门铃更新标志,即判断门铃更新标志是否为1;在门铃更新标志为第一门铃更新标志(不为1)的情况下,确定目标提交队列不存在未搬运命令,并从目标缓存区中获取待处理命令;在将从目标缓存区中获取的待处理命令发送至命令处理端之后,生成提交队列切换任务,以进行提交队列切换处理。
具体地,在一实施例中,在目标缓存区当前缓存的命令数量不等于1的情况下,从目标缓存区中获取的当前待处理命令和下一待处理命令;在当前待处理命令中置位关键字段有效标志,并解析下一待处理命令的关键字段,得到下一待处理命令的关键字段信息;将下一待处理命令的关键字段信息添加至当前待处理命令的预留字段,得到当前待发送命令,将当前待发送命令发送至命令处理端。
其中,关键字段信息至少包括存储空间ID(Namespace ID,简称:NSID)、操作指令码(Operation Code,简称:OPCode)和逻辑块起始地址(Start Logic Block Address,简称:SLBA)。
具体地,后级的命令处理模块在接收到当前待发送命令后,可以根据其预留字段所添加的关键字段信息,提前获知I/O队列切换信息以及下一个SQE(下一待处理命令)的关键字段信息,尤其对于写命令I/O,关键字段可以辅助判断I/O是否连续,有助于提升I/O聚合效率,降低I/O处理延时,提升I/O处理效率。
具体地,如图6所示,为本申请实施例提供的示例性的主机命令处理系统的结构示意图,在传统方式的基础上增加了标志位检测和提交队列切换控制的功能,不仅用以实现多个I/O队列切换控制,还会在输出SQE时对新SQE的部分字段进行预解析,包含SLBA、NSID、OPcode字段,并将这些字段通过当前SQE的预留字段进行传递,加速器会将这些字段信息提前告知后级命令处理模块(命令处理器),后级命令处理模块在进行队列SQE命令处理时可以提前获知这些信息,并对I/O是否连续做出判断,可以作为I/O聚合的重要依据,有助于提升I/O聚合效率,降低I/O处理延时,提升I/O处理效率。同时对于只使用一个队列的单核CPU而言,只在当前队列输出,所使用的队列享有绝对仲裁权,不会向其他队列切换输出通道,因此不会降低只使用一个队列的单核CPU场景性能。
具体地,在一实施例中,可以在返回至判断目标缓存区当前缓存的命令数量是否等于1的步骤之前,从目标缓存区中获取的当前待处理命令和新的待处理命令;在当前待处理命令中置位关键字段有效标志,并解析新的待处理命令的关键字段,得到新的待处理命令的关键字段信息;将新的待处理命令的关键字段信息添加至当前待处理命令的预留字段,得到当前待发送命令,将当前待发送命令发送至命令处理端。
具体地,在得到新的待处理命令后,通过在输出当前待发送命令之后,再判断目标缓存区当前缓存的命令数量是否等于1,可以减少目标缓存区当前缓存的命令数量是否等于1的判断次数。新的待处理命令的关键字段信息与上述下一待处理命令的关键字段的解析过程相同,不再赘述。在图5中,新的待处理命令和下一待处理命令均称为新SQE,图5中所输出的当前SQE即为当前待发送命令。
具体地,在一实施例中,如图5所示,在生成提交队列切换任务之前,对从目标缓存区中获取的待处理命令进行关键字段有效标志清零处理。
需要说明的是,待处理命令的关键字段有效标志置位,则表征即下一个待发送至命令处理模块的待处理命令与该待处理命令是来自同一提交队列的两个连续的命令,待处理命令的关键字段有效标志清零,则表征下一个待发送至命令处理模块的待处理命令与该待处理命令是来自不同提交队列的两个连续的命令,因此在进行队列切换之前,对从目标缓存区中获取的待处理命令进行关键字段有效标志清零处理。
具体地,在一实施例中,在门铃更新标志为第二门铃更新标志的情况下,确定目标提交队列存在未搬运命令,执行等待NVMe加速器执行命令搬运任务的步骤。
具体地,在门铃更新标志为第二门铃更新标志(门铃更新标志等于1)的情况下,确定目标提交队列存在未搬运命令,则等待NVMe加速器执行命令搬运任务。
其中,由于DMA搬移SQE的时间并不确定,在满足不切换提交队列的条件时,尤其是DMA搬移时间较长时,等待DMA搬移SQE的时长此时也会变长,容易造成一些处理时间上的浪费,因此在开始执行等待NVMe加速器执行命令搬运任务的步骤时,基于预设等待时长计时器开始计时,当预设等待时长计时器达到预设阈值时,表征等待NVMe加速器执行命令搬运任务的时间过长,此时可以生成报警信息,以提示NVMe加速器命令搬运任务执行异常。或者直接跳转至从目标缓存区中获取的待处理命令,并对该待处理命令进行关键字段有效标志清零处理的步骤,并进一步生成提交队列切换任务,以强制进行提交队列切换处理。
本申请实施例提供的主机命令处理方法,通过获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;其中,当主机向目标提交队列写入新命令时队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时缓存区门铃寄存器数值被更新;根据队列门铃寄存器数值和缓存区门铃寄存器数值,判断目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;根据门铃更新标志和NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理;其中,NVMe加速器的命令处理信息至少表征NVMe加速器的命令搬移情况和目标缓存区的命令缓存情况。上述方案提供的方法,通过结合门铃更新标志所表征的目标提交队列中未搬运命令的存储情况,判断是否进行提交队列切换,避免出现提交队列还有未搬运的请求命令就进行了提交队列切换的情况,保证了提交队列内部请求命令处理的连续性,且能够在多核CPU调用多队列同时工作时,尤其是其中某个队列进行大I/O处理场景,平衡多I/O队列切换输出次数,实现多个I/O队列SQE输出的高效切换,为提高请求命令处理效率奠定了基础。并且,通过使后级命令处理器获知新SQE携带信息和I/O队列切换信息,尤其对于写命令I/O而言,有助于提升I/O聚合效率,降低I/O处理延时,提升I/O处理效率。
本申请实施例提供了一种主机命令处理装置,用于执行上述实施例提供的主机命令处理方法。
如图7所示,为本申请实施例提供的主机命令处理装置的结构示意图。该主机命令处理装置70包括:获取模块701、第一判断模块702和处理模块703。
其中,获取模块,用于获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;其中,当主机向目标提交队列写入新命令时队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时缓存区门铃寄存器数值被更新;第一判断模块,用于根据队列门铃寄存器数值和缓存区门铃寄存器数值,判断目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;处理模块,用于根据门铃更新标志和NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理。
其中,NVMe加速器的命令处理信息至少表征NVMe加速器的命令搬移情况和目标缓存区的命令缓存情况。
关于本实施例中的主机命令处理装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供的主机命令处理装置,用于执行上述实施例提供的主机命令处理方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种电子设备,用于执行上述实施例提供的主机命令处理方法。
如图8所示,为本申请实施例提供的电子设备的结构示意图。该电子设备80包括:至少一个处理器81和存储器82。
存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的主机命令处理方法。
本申请实施例提供的电子设备,用于执行上述实施例提供的主机命令处理方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的主机命令处理方法。
本申请实施例提供的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的主机命令处理方法的计算机执行指令,其实现方式与原理相同,不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种主机命令处理方法,其特征在于,包括:
获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;其中,当主机向所述目标提交队列写入新命令时所述队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时所述缓存区门铃寄存器数值被更新;
根据所述队列门铃寄存器数值和缓存区门铃寄存器数值,判断所述目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;
根据所述门铃更新标志和所述NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理;
其中,所述NVMe加速器的命令处理信息至少表征所述NVMe加速器的命令搬移情况和所述目标缓存区的命令缓存情况。
2.根据权利要求1所述的方法,其特征在于,所述根据所述队列门铃寄存器数值和缓存区门铃寄存器数值,判断所述目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志,包括:
根据所述队列门铃寄存器数值和缓存区门铃寄存器数值,判断所述队列门铃寄存器数值和缓存区门铃寄存器数值是否相等;
在所述队列门铃寄存器数值和缓存区门铃寄存器数值相等的情况下,确定所述目标提交队列的所有命令均已成功搬移至对应的目标缓存区,生成第一门铃更新标志;
在所述队列门铃寄存器数值和缓存区门铃寄存器数值不相等的情况下,确定所述目标提交队列存在未搬运命令,生成第二门铃更新标志;
其中,第一门铃更新标志为所述第二门铃更新标志的清零结果。
3.根据权利要求1所述的方法,其特征在于,所述根据所述门铃更新标志和所述NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理,包括:
根据所述NVMe加速器的命令处理信息,确定所述目标缓存区当前缓存的命令数量;
判断所述目标缓存区当前缓存的命令数量是否等于1;
在所述目标缓存区当前缓存的命令数量等于1的情况下,根据所述NVMe加速器的命令处理信息,判断所述NVMe加速器发起的命令搬运任务是否全部完成,并生成相应的命令搬移任务执行标志;
在所述命令搬移任务执行标志表征所述NVMe加速器发起的命令搬运任务未全部完成的情况下,等待NVMe加速器执行命令搬运任务,以向所述目标缓存区写入新的待处理命令,并返回至所述判断所述目标缓存区当前缓存的命令数量是否等于1的步骤;
在所述命令搬移任务执行标志表征所述NVMe加速器发起的命令搬运任务已全部完成的情况下,判断所述门铃更新标志是否为第一门铃更新标志;
在所述门铃更新标志为第一门铃更新标志的情况下,确定所述目标提交队列不存在未搬运命令,并从所述目标缓存区中获取待处理命令;
在将从所述目标缓存区中获取的待处理命令发送至命令处理端之后,生成提交队列切换任务,以进行提交队列切换处理。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述目标缓存区当前缓存的命令数量不等于1的情况下,从所述目标缓存区中获取的当前待处理命令和下一待处理命令;
在所述当前待处理命令中置位关键字段有效标志,并解析所述下一待处理命令的关键字段,得到下一待处理命令的关键字段信息;
将所述下一待处理命令的关键字段信息添加至所述当前待处理命令的预留字段,得到当前待发送命令,将所述当前待发送命令发送至命令处理端。
5.根据权利要求3所述的方法,其特征在于,在返回至所述判断所述目标缓存区当前缓存的命令数量是否等于1的步骤之前,所述方法还包括:
从所述目标缓存区中获取的当前待处理命令和所述新的待处理命令;
在所述当前待处理命令中置位关键字段有效标志,并解析所述新的待处理命令的关键字段,得到新的待处理命令的关键字段信息;
将所述新的待处理命令的关键字段信息添加至所述当前待处理命令的预留字段,得到当前待发送命令,将所述当前待发送命令发送至命令处理端。
6.根据权利要求3所述的方法,其特征在于,在生成提交队列切换任务之前,还包括:
对从所述目标缓存区中获取的待处理命令进行关键字段有效标志清零处理。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述门铃更新标志为第二门铃更新标志的情况下,确定所述目标提交队列存在未搬运命令,执行所述等待NVMe加速器执行命令搬运任务的步骤。
8.一种主机命令处理装置,其特征在于,包括:
获取模块,用于获取NVMe加速器当前访问的目标提交队列所对应的队列门铃寄存器数值和缓存区门铃寄存器数值;其中,当主机向所述目标提交队列写入新命令时所述队列门铃寄存器数值被更新,当NVMe加速器成功将目标提交队列中的命令搬移至对应的目标缓存区时所述缓存区门铃寄存器数值被更新;
第一判断模块,用于根据所述队列门铃寄存器数值和缓存区门铃寄存器数值,判断所述目标提交队列是否存在未搬运命令,并生成相应的门铃更新标志;
处理模块,用于根据所述门铃更新标志和所述NVMe加速器的命令处理信息,判断当前是否进行提交队列切换处理;
其中,所述NVMe加速器的命令处理信息至少表征所述NVMe加速器的命令搬移情况和所述目标缓存区的命令缓存情况。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的方法。
CN202410483358.8A 2024-04-19 2024-04-19 一种主机命令处理方法、装置、电子设备及存储介质 Pending CN118132009A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410483358.8A CN118132009A (zh) 2024-04-19 2024-04-19 一种主机命令处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410483358.8A CN118132009A (zh) 2024-04-19 2024-04-19 一种主机命令处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN118132009A true CN118132009A (zh) 2024-06-04

Family

ID=91231936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410483358.8A Pending CN118132009A (zh) 2024-04-19 2024-04-19 一种主机命令处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN118132009A (zh)

Similar Documents

Publication Publication Date Title
US10698833B2 (en) Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US8924624B2 (en) Information processing device
CN110647480A (zh) 数据处理方法、远程直接访存网卡和设备
EP2798461B1 (en) Low latency cluster computing
WO2017041570A1 (zh) 向缓存写入数据的方法及装置
US5371857A (en) Input/output interruption control system for a virtual machine
CN114860329A (zh) 动态一致性偏置配置引擎及方法
US20200310690A1 (en) Dynamic near-data processing control mechanism based on computer resource availability on solid-state disk platforms
CN112416250A (zh) 基于NVMe的固态硬盘的命令处理方法及相关设备
CN108369624B (zh) 用于以最小性能降级检测恶意软件的技术
EP3872629B1 (en) Method and apparatus for executing instructions, device, and computer readable storage medium
JPH08115289A (ja) 強制順序で行う要求毎ライト・スルー・キャッシュを有するデータ処理システム
WO2024109068A1 (zh) 程序监控方法、装置、电子设备和存储介质
CN116467235B (zh) 一种基于dma的数据处理方法、装置、电子设备及介质
WO2020177567A1 (zh) 一种迁移数据的方法、装置及系统
CN118132009A (zh) 一种主机命令处理方法、装置、电子设备及存储介质
CN115840654A (zh) 消息的处理方法、系统、计算设备及可读存储介质
CN115549858A (zh) 数据传输方法以及装置
CN115174673A (zh) 具备低延迟处理器的数据处理装置、数据处理方法及设备
US10942672B2 (en) Data transfer method and apparatus for differential data granularities
CN116601616A (zh) 一种数据处理装置、方法及相关设备
US6397304B1 (en) Method and apparatus for improving system performance in multiprocessor systems
WO2022126534A1 (zh) 数据处理方法及相关设备
WO2024055679A1 (zh) 数据存储方法、装置、系统、芯片及加速设备
CN112000596B (zh) 一种消息信号中断处理的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination