CN113076138A - 一种NVMe命令处理方法、设备及介质 - Google Patents
一种NVMe命令处理方法、设备及介质 Download PDFInfo
- Publication number
- CN113076138A CN113076138A CN202110460983.7A CN202110460983A CN113076138A CN 113076138 A CN113076138 A CN 113076138A CN 202110460983 A CN202110460983 A CN 202110460983A CN 113076138 A CN113076138 A CN 113076138A
- Authority
- CN
- China
- Prior art keywords
- command
- interactive
- host
- interaction
- nvme
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims description 23
- 230000002452 interceptive effect Effects 0.000 claims abstract description 147
- 230000003993 interaction Effects 0.000 claims abstract description 117
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000008569 process Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 11
- 230000009191 jumping Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000034184 interaction with host Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Bus Control (AREA)
Abstract
本申请公开了一种NVMe命令处理方法、设备及介质,该方法包括:从提交队列中获取待处理IO命令;对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令;通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令;并且,当存在需要利用数据交互通道与所述DEVICE端进行数据交互的多个命令执行任务时,则对所述多个命令执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。本申请通过上述方案,能够在有限资源条件下提高NVMe命令的处理效率。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种NVMe命令处理方法、设备及介质。
背景技术
NVMe(即Non-Volatile Memory express,非易失性内存主机控制器接口规范),是一种与AHCI(即Advanced Host Controller Interface,高级主机控制器接口)类似的、基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过PCIe总线(PCIe,即Peripheral Component Interconnect express,高速串行计算机扩展总线标准)附加的非易失性内存介质。NVMe的用途在于能够充分利用PCIe通道的低延时和并行性,以及处理器、平台与应用的并行性。在可控制的存储成本下,能够极大地提升固态硬盘的读写性能,降低由于AHCI接口带来的高延时,彻底解放SATA时代固态硬盘的极致性能。
NVMe具有一组Admin队列(即Admin Queue)与64k组IO队列(即IO Queue),每一组队列的深度为64k。DEVICE端(即设备端)通过PCIe从队列中获取命令,然后解析命令信息,通过PCIe将HOST端(即主机端)的存储体与DEVICE端的存储体中的数据进行交互。由于设备端PCIe可以直接与主机端PCIe进行通信,而主机端PCIe可以与主机端CPU(此处的CPU确切的说应该是Root Complex)进行通信,同时鉴于NVMe的特性,因此PCIe与NVMe的组合具有高速、低延迟的优势。
然而,尽管NVMe能够提供如此多的命令通道并且能够利用PCIe,但是如何在有限资源条件下充分协调好获取命令过程与执行命令过程,以提高NVMe命令的处理效率一直都是有待攻克的问题。
发明内容
有鉴于此,本发明的目的在于提供一种NVMe命令处理方法、设备及介质,在有限资源条件下提高NVMe命令的处理效率。其具体方案如下:
第一方面,本申请公开了一种NVMe命令处理方法,包括:
从提交队列中获取待处理IO命令;
对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令;
通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令;
并且,当存在需要利用数据交互通道与所述DEVICE端进行数据交互的多个命令执行任务时,则对所述多个命令执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。
可选的,所述从提交队列中获取待处理IO命令,包括:
利用基于NVMe协议创建的多个命令获取单元,从不同的提交队列中获取待处理IO命令,并根据所述待处理IO命令的优先级确定当前待处理的IO命令。
可选的,所述对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令之后,还包括:
将所述HOST端交互命令和所述DEVICE端交互命令分别写入不同的命令存储RAM,然后将所述HOST端交互命令和所述DEVICE端交互命令各自对应的命令存储地址传输至命令协调触发组件,以通过所述命令协调触发组件启动处理所述HOST端交互命令和所述DEVICE端交互命令对应的命令执行任务。
可选的,所述通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令之后,还包括:
对所述HOST端中相应的DMA进行释放,并释放相应的所述HOST端交互命令和所述DEVICE端交互命令各自对应的所述命令存储RAM中的所述命令存储地址。
可选的,所述通过HOST端的第一交互命令执行组件执行所述HOST端交互命令之后,还包括:
对所述第一交互命令执行组件进行释放;
利用释放后的所述第一交互命令执行组件执行新的所述HOST端交互命令,然后再次跳转至所述对所述第一交互命令执行组件进行释放的步骤,直到满足预设的循环结束条件。
可选的,所述通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令之前,还包括:
基于实际应用需求信息以及系统架构性能瓶颈信息,创建相应数量的所述第一交互命令执行组件和所述第二交互命令执行组件。
可选的,所述将所述DEVICE端交互命令传输至DEVICE端的第二交互命令执行组件进行处理之前,还包括:
在所述第二交互命令执行组件中设置读写缓存RAM,以便通过所述读写缓存RAM直接与所述HOST端的DMA和所述DEVICE端的DMA进行数据交互。
可选的,所述对所述多个命令执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令,包括:
在每个所述命令执行任务对应的命令执行过程之前以及命令执行过程中均进行命令执行条件的判断和仲裁,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。
第二方面,本申请公开了一种NVMe命令处理系统,包括:
命令获取组件,用于从提交队列中获取待处理IO命令;
分离命令生成组件,用于对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令;
交互命令执行组件,用于通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令;并且,当存在需要利用数据交互通道与所述DEVICE端进行数据交互的多个命令执行任务时,则对所述多个命令执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。
第三方面,本申请公开了一种电子设备,包括处理器和存储器,所述处理器用于执行所述存储器中保存的计算机程序以实现前述的NVMe命令处理方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中计算机程序被处理器执行时实现前述的NVMe命令处理方法。
可见,本申请通过命令拆分的方式,将待处理的NVMe命令拆分为与HOST端交互的命令以及与DEVICE端交互的命令,然后分别交由HOST端上的交互命令执行组件和DEVICE端中的交互命令执行组件来执行,如此一来,可以在节省各自接收命令时的BUS接口数量的同时,提高命令执行的灵活度,并且在多个命令执行任务需要使用数据交互通道的时候对各个命令执行任务进行协调,以利用数据交互通道执行当前HOST端交互命令和DEVICE端交互命令中优先级最高的交互命令,这样既不影响每个命令执行任务的正常运行,并且还可以充分利用数据交互通道,实现对数据交互通道的无缝连接使用,从而可以在极大限度上提高了NVMe的性能。由上可见,本申请通过上述技术方案,能够在有限资源条件下提高NVMe命令的处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种NVMe命令处理方法流程图;
图2为本申请公开的一种具体的NVMe命令处理方法流程图;
图3为本申请公开的一种NVMe命令处理系统结构示意图;
图4为本申请公开的一种具体的NVMe命令处理系统结构示意图;
图5为本申请公开的一种NVMe命令执行操作子流程示意图;
图6为本申请公开的一种NVMe命令执行操作子流程示意图;
图7为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前,DEVICE端通过PCIe从队列中获取命令,然后解析命令信息,通过PCIe将HOST端的存储体与DEVICE端的存储体中的数据进行交互。由于设备端PCIe可以直接与主机端PCIe进行通信,而主机端PCIe可以与主机端CPU进行通信,同时鉴于NVMe的特性,因此PCIe与NVMe的组合具有高速、低延迟的优势。然而,尽管NVMe能够提供如此多的命令通道并且能够利用PCIe,但是如何在有限资源条件下充分协调好获取命令过程与执行命令过程,以提高NVMe命令的处理效率一直都是有待攻克的问题。为此,本申请提供了一种NVMe命令处理方案,能够在有限资源条件下提高NVMe命令的处理效率。
参见图1所示,本发明实施例公开了一种NVMe命令处理方法,包括:
步骤S11:从提交队列中获取待处理IO命令。
本实施例中,通过SQ(即Submission Queue,提交队列),可以获取到等待处理的NVMe IO命令。在一个具体实施方式中,为了提升命令处理效率,可以为不同的SQ提交队列设定不同的优先级权重,不同的SQ提交队列可以同时发起获取NVMe IO命令的请求,并经过加权轮循仲裁器仲裁以读取命令。在另一个具体实施方式中,也可以预先确定出一个特定的提交队列,然后专门从这个特定的提交队列中获取出待处理IO命令来进行处理。
步骤S12:对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令。
在原始IO命令中,与HOST端进行交互所需的命令内容以及与DEVICE端进行交互所需的命令内容是不同的,并且方向也存在差异,在这种情况下可以对原始IO命令进行拆分,以得到与HOST端进行交互的命令以及与DEVICE端进行交互的命令,这样一来,可以减少BUS(即总线)接口数量,并且可以使命令的执行更加自由灵活。
需要指出的是,本申请中,DEVICE端即为存储设备,如SSD等,与HOST端构成数据处理系统。HOST端即为主机端,包括PC(Personal Computer,个人计算机)、服务器等,从严格意义上来说,本技术方案中的HOST端具体是指HOST端中的DMA(即Direct Memory Access,直接存储器访问),而并非是指主设备本身。另外需要指出的是,本技术方案中的DEVICE端交互命令和HOST端交互命令实质上都是DMA命令,也即,本技术方案中的DEVICE端交互命令和HOST端交互命令具体是指本方案中DEVICE端的DMA命令以及HOST端的DMA命令。
本实施例中,HOST端DMA和DEVICE端DMA都在NVMe控制器里面,是NVMe控制器分别面向HOST端的DMA和面向DEVICE端的DMA。
步骤S13:通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令;并且,当存在需要利用数据交互通道与所述DEVICE端进行数据交互的多个命令执行任务时,则对所述多个命令执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。
本实施例中,分别在HOST端和DEVICE端中设置了相应的交互命令执行组件,得到上述第一交互命令执行组件和第二交互命令执行组件。本实施例中,可以根据实际应用需求,设置不同数量的命令交互组件。可以理解的是,命令交互组件的数量越多,可同时触发的命令也越多,但达到一定数量之后性能会达到瓶颈。为此,本实施例中,通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令之前,还可以具体基于实际应用需求信息以及系统架构性能瓶颈信息,创建相应数量的所述第一交互命令执行组件和所述第二交互命令执行组件,使得最终创建的交互命令执行组件的数量既能够尽量贴合用户的实际应用需要,并且也能够兼顾系统的性能瓶颈特点。
另外,本实施例中,将所述DEVICE端交互命令传输至DEVICE端的第二交互命令执行组件进行处理之前,还可以进一步包括:在所述第二交互命令执行组件中设置读写缓存RAM,以便通过所述读写缓存RAM直接与所述HOST端的DMA和所述DEVICE端的DMA进行数据交互。这样一来,能够更好地将两端的DMA分离,两端的DMA只与上述读写缓存RAM进行操作,而不必通过任何协议进行数据通讯,从而可以将命令分离执行的优点最大化。
进一步的,本实施例中,为了提升待处理IO命令的处理效率,所述通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令之后,还可以进一步包括:对所述HOST端中相应的DMA进行释放,并释放相应的所述HOST端交互命令和所述DEVICE端交互命令各自对应的所述命令存储RAM中的所述命令存储地址。为了进一步提升待处理IO命令的处理效率,通过HOST端的第一交互命令执行组件执行所述HOST端交互命令之后,还可以包括:对所述第一交互命令执行组件进行释放,利用释放后的所述第一交互命令执行组件执行新的所述HOST端交互命令,然后再次跳转至所述对所述第一交互命令执行组件进行释放的步骤,直到满足预设的循环结束条件。也即,本实施例中,每完成一个读写命令后,相应的HOST端的交互命令执行组件将会被释放,接下来将会循环往复地执行新的命令,与此同时会对所述命令存储RAM中存储HOST端交互命令和所述DEVICE端交互命令的命令存储地址进行释放,以便于利用释放后的命令存储地址保存新的HOST端交互命令和DEVICE端交互命令,从而提升本地资源的利用率。可以理解的是,本实施例具体可以将预设时间段内没有新的所述HOST端交互命令作为所述循环结束条件,其中,上述预设时间段可以基于实际需要进行灵活设置。
本实施例中,对待处理IO命令进行拆分后所得到的HOST端交互命令和DEVICE端交互命令,分别交由HOST端的第一交互命令执行组件和DEVICE端的第二交互命令执行组件进行处理。本实施例可以为上述两个交互命令执行组件设置相应的命令执行启动条件,等待条件满足之后利用上述两个交互命令执行组件分别执行其各自对应的命令。本实施例中,在同时触发了多个命令需要等待执行的情况下,由于只有一个数据交互通道能够与DEVICE端进行数据交互,因此可以对上述多个命令对应的执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令,避免由于发生混乱和资源抢夺事件而引起降低系统性能的问题。
可见,本申请实施例通过命令拆分的方式,将待处理的NVMe命令拆分为与HOST端交互的命令以及与DEVICE端交互的命令,然后分别交由HOST端上的交互命令执行组件和DEVICE端中的交互命令执行组件来执行,如此一来,可以在节省各自接收命令时的BUS接口数量的同时,提高命令执行的灵活度,并且在多个命令执行任务需要使用数据交互通道的时候对各个命令执行任务进行协调,以利用数据交互通道执行当前HOST端交互命令和DEVICE端交互命令中优先级最高的交互命令,这样既不影响每个命令执行任务的正常运行,并且还可以充分利用数据交互通道,实现对数据交互通道的无缝连接使用,从而可以在极大限度上提高了NVMe的性能。由上可见,本申请实施例通过上述技术方案,能够在有限资源条件下提高NVMe命令的处理效率。
参见图2所示,本申请实施例公开了一种具体的NVMe命令处理方法,包括:
步骤S21:利用基于NVMe协议创建的多个命令获取单元,从不同的提交队列中获取待处理IO命令,并根据所述待处理IO命令的优先级确定当前待处理的IO命令。
本实施例中,可以基于NVMe协议创建多个命令获取单元,不同的命令获取单元通过PCIe从HOST端的不同的提交队列中获取待处理IO命令。在获取到多个不同的待处理IO命令之后,为了保证命令执行的有序性,避免引起混乱,本实施例可以根据所述待处理IO命令的优先级确定当前待处理的IO命令,由此实现对不同IO命令之间的协调管理。
步骤S22:对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令。
本实施例中,在获取到任意待处理IO命令后,通过结合相关的命令信息对获取到的待处理IO命令进行拆分,然后重组得到与HOST端进行交互的命令以及与DEVICE端进行交互的命令。
步骤S23:将所述HOST端交互命令和所述DEVICE端交互命令分别写入不同的命令存储RAM,然后将所述HOST端交互命令和所述DEVICE端交互命令各自对应的命令存储地址传输至命令协调触发组件,以通过所述命令协调触发组件启动处理所述HOST端交互命令和所述DEVICE端交互命令对应的命令执行任务。
本实施例中,预先为HOST端和DEVICE端设置相应的用于保存各自交互命令的RAM,然后将上述拆分后得到的HOST端交互命令和DEVICE端交互命令保存至上述相应的RAM中,并将相应的RAM地址传输给命令协调触发组件,以便命令协调触发组件启动处理相应的命令执行任务。
本实施例中,命令协调触发组件能够根据交互命令执行组件的空闲状态信息触发不同的交互命令执行组件执行不同的交互命令,以启动处理相应的命令执行任务。
步骤S24:通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令;并且,当存在需要利用数据交互通道与所述DEVICE端进行数据交互的多个命令执行任务时,则在每个所述命令执行任务对应的命令执行过程之前以及命令执行过程中均进行命令执行条件的判断和仲裁,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。
本实施例中,在同时触发了多个命令需要等待执行的情况下,由于只有一个数据交互通道能够与DEVICE端进行数据交互,因此可以在每个所述命令执行任务对应的命令执行过程之前以及命令执行过程中均进行命令执行条件的判断和仲裁,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令,从而使得不同的命令执行任务能够有序地使用到上述数据交互通道,避免由于发生混乱和资源抢夺事件而引起降低系统性能的问题。
参见图3所示,本申请实施例还相应的公开了一种NVMe命令处理系统,包括:
命令获取组件11,用于从提交队列中获取待处理IO命令;
分离命令生成组件12,用于对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令;
交互命令执行组件13,用于通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令;并且,当存在需要利用数据交互通道与所述DEVICE端进行数据交互的多个命令执行任务时,则对所述多个命令执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。
可见,本申请实施例通过命令拆分的方式,将待处理的NVMe命令拆分为与HOST端交互的命令以及与DEVICE端交互的命令,然后分别交由HOST端上的交互命令执行组件和DEVICE端中的交互命令执行组件来执行,如此一来,可以在节省各自接收命令时的BUS接口数量的同时,提高命令执行的灵活度,并且在多个命令执行任务需要使用数据交互通道的时候对各个命令执行任务进行协调,以利用数据交互通道执行当前HOST端交互命令和DEVICE端交互命令中优先级最高的交互命令,这样既不影响每个命令执行任务的正常运行,并且还可以充分利用数据交互通道,实现对数据交互通道的无缝连接使用,从而可以在极大限度上提高了NVMe的性能。由上可见,本申请实施例通过上述技术方案,能够在有限资源条件下提高NVMe命令的处理效率。
参见图4所示,为了对上述命令处理系统进行更具体的说明,结合命令执行流程详细介绍系统中相关主要组件的功能及分离命令执行架构的优点。
首先固件控制组件(FW,即firmware)触发命令获取组件通过PCIe从HOST的SQ中获取命令。这里可以根据NVMe协议创建多个命令获取单元,分别对应不同的SQ,根据优先级的不同进行仲裁从而实现不同SQ命令之间的协调管理。随后将获取到的原始命令传给firmware,利用firmware对每条命令进行宏观调控。
firmware解析原始命令并决定该条命令由firmware触发执行还是由NFC(即NANDFLASH CONTROL)触发执行,同时将解析后的命令传入分离命令生成组件,准备对命令进行分解与重组。
本实施例中,分离命令生成组件结合其他命令信息将原有命令进行拆分与重组,由此分别生成执行与HOST交互的命令及DEVICE内部交互的命令。本实施例可以将上述分离后得到的两个命令分别称为hrd(即host region descriptor,主机区域描述符)与prd(即physical region descriptor物理区域描述符)。本申请之所以这样做的目的主要有两个:(1)由于HOST交互与DEVICE内部交互需要的命令内容不同,且方向不同,因此完全可以分开执行,这样不仅可以节省各自接收命令时BUS接口数量,还可以使命令的执行更加自由灵活;(2)这样可以释放多个命令,由于每一条命令的hrd与prd都是一一对应的,因此尽管数据交互的通道只有一条,但是可以通过对命令的协调充分利用数据通道,这样就可以最大限度的提高NVMe的性能;将生成的description与prd分别放入对应的命令存储RAM中,并将对应的命令存储地址传入命令协调触发组件供后续管理。
本实施例中,命令协调触发组件能够根据HOST交互命令执行组件的空闲状态触发不同的命令给相应的命令执行组件,从而开始命令的执行。这里可以根据自身需求设计不同数量的命令的执行组件,数量越多可同时触发的命令越多,但到达一定数量后性能将达到瓶颈,因此设计多少命令执行组件使性能最大化需要由自身架构而定。
本实施例中,HOST交互命令提取组件提取命令给HOST交互命令执行组件,同时DEVICE端命令执行组件也获取对应的命令,等待条件满足两个命令执行组件分别执行其各自的命令。由于同时触发多个命令但只有一个通道能够与DEVICE端进行数据交互,因此需要在命令执行前与执行过程中对两端进行命令执行条件判断与仲裁(ARB,即arbitration),这样不仅不影响每个命令执行组件的工作,而且能够无缝连接数据通道的使用,使数据交互性能最大化。参见图5所示,本申请在每一次命令执行前以及当前命令将要执行结束前都会进行一次条件的判断及仲裁,用以选择下一个命令将执行来自哪个HOST命令执行组件,此过程与当前命令的执行是并行的,因此不会影响当前命令的操作。
另外,本申请实施例在DEVICE命令执行组件中加入读写缓存RAM,便于更好的将两端DMA分离,两端DMA只与读写缓存RAM进行操作,而不通过任何协议进行数据通讯,这样可以将命令分离执行的优点最大化。
本实施例中,HOST端命令执行组件通过DEVICE端命令执行组件完成对本地数据的读写,再利用PCIe最终实现与HOST之间的数据交互。
进一步的,本实施例在完成一个读写命令后相应的HOST命令执行组件将会释放,接下来将会执行新的命令,如此循环往复。与此同时存放hrd与prd的命令存储地址将会释放,用于存放新的hrd与prd,这样可以使本地资源利用最大化;
而相关的软件操作流程细节具体如图6所示,分为以下几个步骤:FW获取SQdoorbell寄存器的head与tail,然后下发给hardware;Hardware通过head与tail判断SQ的更新,触发命令的获取,具体的,Hardware通过判断SQ doorbell的tail与head是否相等判断是否有新命令存入到提交队列。FW配置SQ的地址,并且配置多SQ仲裁方式;Hardware将获取的原始命令发给FW,FW对命令进行解析与预处理;FW根据需求触发命令给hardware;待hardware执行完命令,FW根据执行结果释放相应HSOT_DMA。
进一步的,本申请实施例还提供了一种电子设备。图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能被认为是对本申请的使用范围的任何限制。
图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的NVMe命令处理方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,其存储方式可以包括但不限于只读存储、随机存储等,其上所存储的资源包括计算机程序221及包括在NVMe命令处理过程中所需数据信息在内的数据222等。
进一步的,本申请实施例还公开了一种存储介质,用于存储计算机程序;其中计算机程序被处理器执行时实现前述实施例中公开的NVMe命令处理方法。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种NVMe命令处理方法、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种NVMe命令处理方法,其特征在于,包括:
从提交队列中获取待处理IO命令;
对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令;
通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令;
并且,当存在需要利用数据交互通道与所述DEVICE端进行数据交互的多个命令执行任务时,则对所述多个命令执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。
2.根据权利要求1所述的NVMe命令处理方法,其特征在于,所述从提交队列中获取待处理IO命令,包括:
利用基于NVMe协议创建的多个命令获取单元,从不同的提交队列中获取待处理IO命令,并根据所述待处理IO命令的优先级确定当前待处理的IO命令。
3.根据权利要求1所述的NVMe命令处理方法,其特征在于,所述对所述待处理IO命令进行拆分以得到HOST端交互命令和DEVICE端交互命令之后,还包括:
将所述HOST端交互命令和所述DEVICE端交互命令分别写入不同的命令存储RAM,然后将所述HOST端交互命令和所述DEVICE端交互命令各自对应的命令存储地址传输至命令协调触发组件,以通过所述命令协调触发组件启动处理所述HOST端交互命令和所述DEVICE端交互命令对应的命令执行任务。
4.根据权利要求3所述的NVMe命令处理方法,其特征在于,所述通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令之后,还包括:
对所述HOST端中相应的DMA进行释放,并释放相应的所述HOST端交互命令和所述DEVICE端交互命令各自对应的所述命令存储RAM中的所述命令存储地址。
5.根据权利要求3所述的NVMe命令处理方法,其特征在于,所述通过HOST端的第一交互命令执行组件执行所述HOST端交互命令之后,还包括:
对所述第一交互命令执行组件进行释放;
利用释放后的所述第一交互命令执行组件执行新的所述HOST端交互命令,然后再次跳转至所述对所述第一交互命令执行组件进行释放的步骤,直到满足预设的循环结束条件。
6.根据权利要求1至5任一项所述的NVMe命令处理方法,其特征在于,所述通过HOST端的第一交互命令执行组件执行所述HOST端交互命令以及通过DEVICE端的第二交互命令执行组件执行所述DEVICE端交互命令之前,还包括:
基于实际应用需求信息以及系统架构性能瓶颈信息,创建相应数量的所述第一交互命令执行组件和所述第二交互命令执行组件。
7.根据权利要求1至5任一项所述的NVMe命令处理方法,其特征在于,所述将所述DEVICE端交互命令传输至DEVICE端的第二交互命令执行组件进行处理之前,还包括:
在所述第二交互命令执行组件中设置读写缓存RAM,以便通过所述读写缓存RAM直接与所述HOST端的DMA和所述DEVICE端的DMA进行数据交互。
8.根据权利要求1至5任一项所述的NVMe命令处理方法,其特征在于,所述对所述多个命令执行任务进行协调,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令,包括:
在每个所述命令执行任务对应的命令执行过程之前以及命令执行过程中均进行命令执行条件的判断和仲裁,以利用所述数据交互通道执行当前所述HOST端交互命令和所述DEVICE端交互命令中优先级最高的交互命令。
9.一种电子设备,其特征在于,包括处理器和存储器,所述处理器用于执行所述存储器中保存的计算机程序以实现如权利要求1至8任一项所述的NVMe命令处理方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中计算机程序被处理器执行时实现如权利要求1至8任一项所述的NVMe命令处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110460983.7A CN113076138B (zh) | 2021-04-27 | 2021-04-27 | 一种NVMe命令处理方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110460983.7A CN113076138B (zh) | 2021-04-27 | 2021-04-27 | 一种NVMe命令处理方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113076138A true CN113076138A (zh) | 2021-07-06 |
CN113076138B CN113076138B (zh) | 2022-12-09 |
Family
ID=76618855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110460983.7A Active CN113076138B (zh) | 2021-04-27 | 2021-04-27 | 一种NVMe命令处理方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076138B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783784A (zh) * | 2016-08-24 | 2018-03-09 | 衡宇科技股份有限公司 | 由主机到设备控制器传输命令的方法及使用其的系统 |
US20190163651A1 (en) * | 2017-11-27 | 2019-05-30 | Seagate Technology Llc | Command splitting for high-cost data access operations |
US20190278523A1 (en) * | 2015-09-28 | 2019-09-12 | Sandisk Technologies Llc | Managed fetching and execution of commands from submission queues |
US20200310816A1 (en) * | 2019-03-27 | 2020-10-01 | Alibaba Group Holding Limited | Processor, device, and method for executing instructions |
CN112256601A (zh) * | 2020-10-19 | 2021-01-22 | 凌云光技术股份有限公司 | 数据存取控制方法、嵌入式存储系统及嵌入式设备 |
CN112416250A (zh) * | 2020-11-19 | 2021-02-26 | 深圳电器公司 | 基于NVMe的固态硬盘的命令处理方法及相关设备 |
-
2021
- 2021-04-27 CN CN202110460983.7A patent/CN113076138B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190278523A1 (en) * | 2015-09-28 | 2019-09-12 | Sandisk Technologies Llc | Managed fetching and execution of commands from submission queues |
CN107783784A (zh) * | 2016-08-24 | 2018-03-09 | 衡宇科技股份有限公司 | 由主机到设备控制器传输命令的方法及使用其的系统 |
US20190163651A1 (en) * | 2017-11-27 | 2019-05-30 | Seagate Technology Llc | Command splitting for high-cost data access operations |
US20200310816A1 (en) * | 2019-03-27 | 2020-10-01 | Alibaba Group Holding Limited | Processor, device, and method for executing instructions |
CN112256601A (zh) * | 2020-10-19 | 2021-01-22 | 凌云光技术股份有限公司 | 数据存取控制方法、嵌入式存储系统及嵌入式设备 |
CN112416250A (zh) * | 2020-11-19 | 2021-02-26 | 深圳电器公司 | 基于NVMe的固态硬盘的命令处理方法及相关设备 |
Non-Patent Citations (1)
Title |
---|
邓玉辉等: "基于流媒体的网络磁盘阵列中的并行流水策略研究", 《小型微型计算机系统》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113076138B (zh) | 2022-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018103685A1 (zh) | 一种nand闪存设备的操作指令调度方法及装置 | |
US20180121366A1 (en) | Read/write request processing method and apparatus | |
US20190034230A1 (en) | Task scheduling method and apparatus | |
US8413158B2 (en) | Processor thread load balancing manager | |
WO2017070900A1 (zh) | 多核数字信号处理系统中处理任务的方法和装置 | |
US20180173461A1 (en) | Technologies for prioritizing execution of storage commands | |
CN113918101B (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
CN110678847A (zh) | 用于gpu任务调度的连续分析任务 | |
US9218201B2 (en) | Multicore system and activating method | |
US9418181B2 (en) | Simulated input/output devices | |
WO2019028682A1 (zh) | 一种多系统共享内存的管理方法及装置 | |
US20180129770A1 (en) | Technologies for providing fpga infrastructure-as-a-service computing capabilities | |
WO2022227614A1 (zh) | 用于命令分发的装置、方法、芯片、计算机设备及存储介质 | |
US20180225065A1 (en) | Method and system for handling an asynchronous event request command in a solid-state drive | |
US20240143392A1 (en) | Task scheduling method, chip, and electronic device | |
WO2022227693A1 (zh) | 用于命令分发的装置、方法、芯片、计算机设备及介质 | |
CN114546606A (zh) | 非易失性存储器存储模块及其操作方法 | |
KR20200001208A (ko) | 융합형 반도체 장치 및 동작 방법, 이를 포함하는 적층형 메모리 장치 | |
WO2022042127A1 (zh) | 一种协程切换的方法、装置及设备 | |
CN110716805A (zh) | 图形处理器的任务分配方法、装置、电子设备及存储介质 | |
US20220100562A1 (en) | Command management using allocated command identifier pools | |
CN113076138B (zh) | 一种NVMe命令处理方法、设备及介质 | |
CN116225991A (zh) | 固态硬盘控制器、命令调度方法、固态硬盘及存储介质 | |
CN115878333A (zh) | 进程组间的一致性判断方法、装置及设备 | |
US11281482B2 (en) | I/O emulation with abortion in virtualized environments including transfer of portions of non-real time I/O emulation to work threads prior to switching contexts |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |