CN117075819A - 命令处理方法、装置、存储介质及存储设备 - Google Patents
命令处理方法、装置、存储介质及存储设备 Download PDFInfo
- Publication number
- CN117075819A CN117075819A CN202311118941.0A CN202311118941A CN117075819A CN 117075819 A CN117075819 A CN 117075819A CN 202311118941 A CN202311118941 A CN 202311118941A CN 117075819 A CN117075819 A CN 117075819A
- Authority
- CN
- China
- Prior art keywords
- memory space
- target
- command
- processor core
- operation command
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 230000015654 memory Effects 0.000 claims abstract description 478
- 238000000034 method Methods 0.000 claims abstract description 72
- 238000012545 processing Methods 0.000 claims abstract description 65
- 230000008569 process Effects 0.000 claims abstract description 45
- 238000004891 communication Methods 0.000 claims description 5
- 238000009825 accumulation Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及存储设备技术领域,公开了命令处理方法、装置、存储介质及存储设备,该方法包括:获取主机端发送的操作命令,操作命令为NVMe命令;将操作命令存储至目标处理器核所对应的目标内存空间;存储设备还包括多核处理器,目标处理器核为多核处理器中的一个处理器核,且多核处理器的处理器核分配有相应的内存空间;为目标内存空间设置用于表示存在待处理命令的标记。本发明并行处理操作命令,能够充分利用多个处理器核的计算资源,可以实现多处理器核协同配合,能够减少操作命令的排队等待时间,及时处理操作命令,提高操作命令处理效率和吞吐量,可以有效防止出现命令堆积或命令延迟的情况。
Description
技术领域
本发明涉及存储设备技术领域,具体涉及命令处理方法、装置、存储介质及存储设备。
背景技术
NVMe(Non-Volatile Memory Express,非易失性存储器快速访问接口)是一种高性能、低延迟的存储设备交互协议,在计算系统和存储设备(例如,固态硬盘)之间提供高效、可靠的通信和数据传输。相比于传统的SATA(Serial Advanced TechnologyAttachment,串行高级技术附件)接口标准,NVMe可实现更高带宽,具有更低延迟,可实现并发操作,支持更高的扩展性和更低的功耗。在NVMe中命令处理是关键的环节,以往的存储接口,如SATA,通常采用单线程方式处理命令,即一次只能执行一个命令。而NVMe通过多队列和多DMA(Direct Memory Access,直接内存访问)处理的机制,极大地提升了命令处理的效率。
在支持NVMe的存储设备中,其NVMe控制器虽然可以实现与计算系统的主机端并行快速交互,但NVMe控制器与自身的处理器之间仍然采用单线程处理方式。在密集访问下,例如主机端NVMe命令高并发时,容易出现单线程处理的速度跟不上NVMe命令的到达速度,导致出现命令堆积或命令延迟的问题。
发明内容
有鉴于此,本发明提供了一种命令处理方法、装置、存储介质及存储设备,以解决存储设备容易命令堆积或命令延迟的问题。
第一方面,本发明提供了一种命令处理方法,应用于存储设备的NVMe控制器,所述方法包括:
获取主机端发送的操作命令,所述操作命令为NVMe命令;
将所述操作命令存储至目标处理器核所对应的目标内存空间;所述存储设备还包括多核处理器,所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
为所述目标内存空间设置用于表示存在待处理命令的标记。
该命令处理方法,为多核处理器的处理器核分配相应的内存空间,NVMe控制器接收到操作命令后,可以向多个内存空间调度分配操作命令,并为存在待处理命令的内存空间设置标记,使得每个处理器核均可读取各自对应的内存空间,提取出其中待处理的操作命令,并处理,使得多个处理器核能够并行处理多个操作命令,实现对操作命令的多线程并行执行。该方法并行处理操作命令,能够充分利用多个处理器核的计算资源,可以实现多处理器核协同配合,能够减少操作命令的排队等待时间,及时处理操作命令,提高操作命令处理效率和吞吐量,可以有效防止出现命令堆积或命令延迟的情况。
在一些可选的实施方式中,所述内存空间包括用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间;所述紧急内存空间中的命令优先被相应的处理器核处理。所述将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:在所述操作命令为紧急命令的情况下,将所述操作命令存储至目标处理器核所对应的目标紧急内存空间;在所述操作命令为非紧急命令的情况下,将所述操作命令存储至目标处理器核所对应的目标非紧急内存空间。NVMe控制器将紧急的操作命令存储至目标紧急内存空间,将非紧急的操作命令存储至目标非紧急内存空间,可以有效保证紧急的操作命令能够被目标处理器核优先执行,使得紧急的操作命令能够被及时处理。
在一些可选的实施方式中,所述为所述目标内存空间设置用于表示存在待处理命令的标记,包括:在所述操作命令为紧急命令的情况下,对所述目标紧急内存空间的尾指针执行加一处理;或者,向所述目标处理器核发送中断请求;所述目标处理器核为当前未处理中断请求的处理器核;在所述操作命令为非紧急命令的情况下,对所述目标非紧急内存空间的尾指针执行加一处理。紧急内存空间采取中断管理,非紧急内存空间采取指针队列管理,可以实现对不同命令个性化管理,且触发中断后目标处理器核能够及时处理紧急命令,保证紧急命令被处理的时效性。
在一些可选的实施方式中,所述将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:根据所述内存空间的优先级,选取目标内存空间;所述内存空间的优先级越高,所述内存空间被选取的概率越大;将所述操作命令存储至所述目标内存空间。通过为内存空间设置优先级,且NVMe控制器更可能将操作命令存储至优先级较高的内存空间,可以实现对操作命令的均衡分配,内存空间中操作命令的数量与处理器核的处理能力和处理速度相匹配,能够灵活分配多核处理器的处理资源。
在一些可选的实施方式中,所述将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:在至少部分处理器核的内存空间未满的情况下,将内存空间未满的一个处理器核作为目标处理器核,并将所述操作命令存储至所述目标处理器核所对应的目标内存空间;在所有处理器核的内存空间均已满的情况下,停止传输所述操作命令。
第二方面,本发明提供了一种命令处理方法,应用于存储设备的多核处理器,所述方法包括:在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,所述操作命令为NVMe命令;所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;所述目标处理器核执行所述操作命令,并为所述目标内存空间设置用于表示已取走所述操作命令的标记。
在一些可选的实施方式中,所述内存空间包括用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间;所述紧急内存空间中的命令优先被相应的处理器核处理;所述在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,包括:在所述目标处理器核接收到中断请求的情况下,确定所述目标处理器核所对应的目标紧急内存空间设有用于表示存在待处理命令的标记,并触发所述目标处理器核的中断;以及,所述目标处理器核读取所述目标紧急内存空间中存储的操作命令。
所述为所述目标内存空间设置用于表示已取走所述操作命令的标记,包括:在所述目标处理器核执行所述操作命令完毕后,清除所述目标处理器核的中断。
在一些可选的实施方式中,所述在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,包括:在所述目标处理器核所对应的目标内存空间的尾指针被更新的情况下,确定所述目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记;以及,所述目标处理器核读取所述目标内存空间中存储的操作命令。
所述为所述目标内存空间设置用于表示已取走所述操作命令的标记,包括:对所述目标内存空间的头指针执行加一处理。
第三方面,本发明提供了一种命令处理装置,应用于存储设备的NVMe控制器,所述装置包括:
获取模块,用于获取主机端发送的操作命令,所述操作命令为NVMe命令;
存储模块,用于将所述操作命令存储至目标处理器核所对应的目标内存空间;所述存储设备还包括多核处理器,所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
标记模块,用于为所述目标内存空间设置用于表示存在待处理命令的标记。
第四方面,本发明提供了一种命令处理装置,应用于存储设备的多核处理器,所述装置包括:
读取模块,用于在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,所述操作命令为NVMe命令;所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
处理模块,用于执行所述操作命令,并为所述目标内存空间设置用于表示已取走所述操作命令的标记。
第五方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面、第二方面或其对应的任一实施方式的命令处理方法。
第六方面,本发明提供了一种存储设备,包括:NVMe控制器和多核处理器;所述NVMe控制器和所述多核处理器之间互相通信连接;
所述NVMe控制器的存储器中存储有第一计算机指令,所述NVMe控制器通过执行所述第一计算机指令,从而执行上述第一方面或其对应的任一实施方式的命令处理方法;
所述多核处理器的存储器中存储有第二计算机指令,所述多核处理器通过执行所述第二计算机指令,从而执行上述第二方面或其对应的任一实施方式的命令处理方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是存储设备的一种应用场景示意图;
图2是根据本发明实施例的命令处理方法的流程示意图;
图3是本发明实施例提供的存储设备的一种结构示意图;
图4是根据本发明实施例的另一命令处理方法的流程示意图;
图5是本发明实施例提供的存储设备的另一种结构示意图;
图6是根据本发明实施例的又一命令处理方法的流程示意图;
图7是根据本发明实施例的再一命令处理方法的流程示意图
图8是根据本发明实施例NMVe控制器侧的命令处理装置的结构框图;
图9是根据本发明实施例多核处理器侧的命令处理装置的结构框图;
图10是本发明实施例的存储设备的一种硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了存储设备的一种应用场景示意图。计算系统的主机端101与存储设备102进行交互时,主机端101可以向存储设备102发送相应的操作命令,该操作命令例如可以是存储命令等。其中,存储设备102支持NVMe,例如,该存储设备102为固态硬盘(SSD,SolidState Disk);存储设备102包括NVMe控制器1021和处理器1022;相应地,该操作命令可以为NVMe命令。NVMe控制器1021从主机端101读取到该操作命令后,即可将该操作命令发送至处理器1022,供处理器1022处理该操作命令。目前,NVMe控制器1021和处理器1022之间一般采用单线程处理方式,导致容易出现命令堆积或命令延迟的问题。
目前普遍使用的处理器往往采用多核架构,例如,该处理器1022可以是多核处理器。本发明实施例提供了一种命令处理方法,对于采用多核处理器的存储设备,通过为多核处理器中的每个处理器核分别设置存储操作命令的内存空间,实现多线程并行执行命令,以提高命令的处理速度。
根据本发明实施例,提供了一种命令处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种命令处理方法,可用于上述的存储设备的NVMe控制器,图2是根据本发明实施例的命令处理方法的流程图,如图2所示,该流程包括以下步骤。
步骤S201,获取主机端发送的操作命令,操作命令为NVMe命令。
本实施例中,存储设备与主机端进行交互的过程中,主机端可以向存储设备发送相应的操作命令。本实施例中,该存储设备支持NVMe协议,其设有NVMe控制器;主控端向NVMe控制器所发送的操作命令也符合NVMe协议,该操作命令为NVMe命令。
步骤S202,将操作命令存储至目标处理器核所对应的目标内存空间;存储设备还包括多核处理器,目标处理器核为多核处理器中的一个处理器核,且多核处理器的处理器核分配有相应的内存空间。
本实施例中,该存储设备包括NVMe控制器和多核处理器,顾名思义,多核处理器包括多个处理器核(Core)。其中,每个处理器核分配有相应的内存空间,该内存空间用于存储NVMe控制器所发送的操作命令。一般情况下,该内存空间可容纳多个操作命令。
NVMe控制器接收到操作命令后,将多核处理器的一个处理器核作为目标处理器核,该目标处理器核所对应的内存空间即为目标内存空间;或者,将多个内存空间中的一个内存空间作为目标内存空间,该目标内存空间所对应的处理器核即为目标处理器核。之后,NVMe控制器即可将操作命令存储至该目标内存空间中,供目标处理器核读取该操作命令。
图3示出了本实施例中存储设备的一种结构示意图。如图3所示,存储设备包括NVMe控制器301和多核处理器302;并且,多核处理器302的每个处理器核设有相应的内存空间303。图3以该多核处理器302为四核处理器为例示出,即该多核处理器302包括四个处理器核,即图3中的处理器核1、处理器核2、处理器核3、处理器核4;相应地,可以设置四个内存空间303。其中,每个内存空间303均能够存储一定数量的操作命令。如图3所示,四个内存空间303所能存储的操作命令的数量依次为n1、n2、n3、n4。NVMe控制器301接收到操作命令后,即可基于实际情况将其中一个内存空间作为目标内存空间,并将该操作命令存储至该目标内存空间中。
其中,NVMe控制器301可以采用轮询的方式,将接收到的操作命令依次存储至多个内存空间。例如,若内存空间的数量如图3所示,即存在四个内存空间,则NVMe控制器301可以将第一个操作命令存储至第一个内存空间,将第二个操作命令存储至第二个内存空间,将第三个操作命令存储至第三个内存空间,将第四个操作命令存储至第四个内存空间,之后,将第五个操作命令再存储至第一个内存空间,以此类推。
步骤S203,为目标内存空间设置用于表示存在待处理命令的标记。
NVMe控制器在将操作命令存储至目标内存空间后,在目标处理器核未读取该操作命令之前,该目标内存空间中的操作命令是一种待处理命令,这些待处理命令是需要被目标处理器核处理的命令。本实施例中,NVMe控制器为该目标内存空间设置用于表示存在待处理命令的标记,以表示目标内存空间中存在需要目标处理器核处理的操作命令;相应地,目标处理器核在检测到用于表示存在待处理命令的标记时,即可得知所对应的目标内存空间中存在需要自身处理的操作命令,进而该目标处理器核可以读取并处理该操作命令。
本实施例提供的命令处理方法,为多核处理器的处理器核分配相应的内存空间,NVMe控制器接收到操作命令后,可以向多个内存空间调度分配操作命令,并为存在待处理命令的内存空间设置标记,使得每个处理器核均可读取各自对应的内存空间,提取出其中待处理的操作命令,并处理,使得多个处理器核能够并行处理多个操作命令,实现对操作命令的多线程并行执行。该方法并行处理操作命令,能够充分利用多个处理器核的计算资源,可以实现多处理器核协同配合,能够减少操作命令的排队等待时间,及时处理操作命令,提高操作命令处理效率和吞吐量,可以有效防止出现命令堆积或命令延迟的情况。
在本实施例中提供了一种命令处理方法,可用于上述的存储设备的NVMe控制器,图4是根据本发明实施例的命令处理方法的流程图,如图4所示,该流程包括以下步骤。
步骤S401,获取主机端发送的操作命令,操作命令为NVMe命令。
详细请参见图2所示实施例的步骤S201,在此不再赘述。
步骤S402,将操作命令存储至目标处理器核所对应的目标内存空间;存储设备还包括多核处理器,目标处理器核为多核处理器中的一个处理器核,且多核处理器的处理器核分配有相应的内存空间。
其中,上述步骤S402“将操作命令存储至目标处理器核所对应的目标内存空间”,可以包括以下步骤S4021至步骤S4023。
步骤S4021,判断操作命令是否为紧急命令。在操作命令为紧急命令的情况下,执行步骤S4022;在操作命令为非紧急命令的情况下,执行步骤S4023。
本实施例中,NVMe控制器获取到操作命令后,可以判断该操作命令是否为紧急命令。例如,NVMe命令可以设置相应的优先级,可以将优先级最高的NVMe命令作为紧急命令,其他命令作为非紧急命令。
步骤S4022,将操作命令存储至目标处理器核所对应的目标紧急内存空间。
步骤S4023,将操作命令存储至目标处理器核所对应的目标非紧急内存空间。
本实施例中,该存储设备包括NVMe控制器和多核处理器;并且,为多核处理器中的每个处理器核所分配的内存空间,包括紧急内存空间和非紧急内存空间;换句话说,每个处理器核分配有紧急内存空间和非紧急内存空间。其中,紧急内存空间用于存储紧急命令,非紧急内存空间用于存储非紧急命令;紧急内存空间和非紧急内存空间均用于存储NVMe控制器接收到的操作命令,且相对来说,紧急内存空间中的命令优先被相应的处理器核处理,换句话说,若紧急内存空间和非紧急内存空间中均存在待处理的操作命令,则处理器核优先处理紧急内存空间中的操作命令。
图5示出了本实施例中存储设备的另一种结构示意图。如图5所示,存储设备包括NVMe控制器501和多核处理器502;图5以该多核处理器502为双核处理器为例示出,即该多核处理器502包括两个处理器核,即图5中的处理器核1、处理器核2。并且,每个处理器核分配有紧急内存空间503和非紧急内存空间504。一般情况下,由于紧急命令需要优先被处理,其不应被长时间存储在紧急内存空间503中,故该紧急内存空间503的大小可小于非紧急内存空间504的大小。如图5所示,两个紧急内存空间503均能够存储三个紧急命令;处理器核1所对应的非紧急内存空间504能够存储m1条非紧急命令,处理器核2所对应的非紧急内存空间504能够存储m2条非紧急命令。
若NVMe控制器接收到的操作命令是紧急命令,则将该操作命令存储至目标处理器核所对应的紧急内存空间,即目标紧急内存空间;由于目标处理器核优先处理目标紧急内存空间中的操作命令,故将属于紧急命令的操作命令存储至目标紧急内存空间,可以使得目标处理器核能够优先执行紧急的操作命令。
相应地,若NVMe控制器接收到的操作命令是非紧急命令,则将该操作命令存储至目标处理器核所对应的非紧急内存空间,即目标非紧急内存空间。当目标处理器核所对应的目标紧急内存空间中存在需要优先执行的命令时,即使将该非紧急的操作命令存储至目标非紧急内存空间,也不影响目标处理器核优先处理目标紧急内存空间中命令的过程。
步骤S403,为目标内存空间设置用于表示存在待处理命令的标记。
其中,详细请参见图2所示实施例的步骤S203,在此不再赘述。
本实施例提供的命令处理方法,为多核处理器的处理器核分配用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间,NVMe控制器将紧急的操作命令存储至目标紧急内存空间,将非紧急的操作命令存储至目标非紧急内存空间,可以有效保证紧急的操作命令能够被目标处理器核优先执行,使得紧急的操作命令能够被及时处理。
在一些可选的实施方式中,内存空间可以设置为指针队列形式,采用一组头尾指针(即head-tail指针)进行控制,从而实现对操作命令先进先出队列存储。并且,通过更新内存空间的尾指针(tail指针),即可表示内存空间存在待处理命令。
具体地,上述步骤S403“为目标内存空间设置用于表示存在待处理命令的标记”可以包括以下步骤A1。
步骤A1,对目标内存空间的尾指针执行加一处理。
本实施例中,操作命令被放入目标内存空间后,NVMe控制器可以更新该目标内存空间的尾指针(tail指针),对该尾指针执行加一处理,即尾指针+1;在目标处理器核读取该操作命令之前,目标内存空间的头指针(head指针)不发生变化,使得尾指针不等于头指针,进而目标处理器核能够检测到该目标内存空间为非空状态,其中存在待处理命令。因此,通过对目标内存空间的尾指针执行加一处理,即可为目标内存空间设置标记,且该标记能够表示目标内存空间设置当前存在待处理命令。
其中,尾指针可存储在尾寄存器中,相应地,头指针可以存储在头寄存器中。
可选地,在内存空间包括紧急内存空间和非紧急内存空间的情况下,紧急内存空间和非紧急内存空间均可采用一组头尾指针实现控制。例如,上述步骤A1“对目标内存空间的尾指针执行加一处理”可以包括以下步骤A11和步骤A12。
步骤A11,在操作命令为紧急命令的情况下,对目标紧急内存空间的尾指针执行加一处理。
步骤A12,在操作命令为非紧急命令的情况下,对目标非紧急内存空间的尾指针执行加一处理。
本实施例中,紧急内存空间和非紧急内存空间可以采用相同的存储格式,NVMe控制器通过更新尾指针,以告知目标处理器核当前存在待处理命令。目标处理器核可以标记哪一内存空间是紧急内存空间,哪一内存空间是非紧急内存空间,并优先处理紧急内存空间中的待处理命令。
或者,在内存空间包括紧急内存空间和非紧急内存空间的情况下,为了能够实现目标处理器核能够及时尽快处理紧急命令,可以为紧急内存空间引入中断机制。具体地,上述步骤A1“对目标内存空间的尾指针执行加一处理”可以包括以下步骤A13和步骤A14。
步骤A13,在操作命令为紧急命令的情况下,向目标处理器核发送中断请求;目标处理器核为当前未处理中断请求的处理器核。
步骤A14,在操作命令为非紧急命令的情况下,对目标非紧急内存空间的尾指针执行加一处理。其中,该步骤A14与上述步骤A12相同,此处不做赘述。
本实施例中,NVMe控制器在接收到操作命令后,先判断该操作命令是否为紧急命令;若该操作命令为紧急命令,则判断是否存在当前未处理中断请求的处理器核,并将其中一个当前未处理中断请求的处理器核作为目标处理器核,将该操作命令存储至目标处理器核的目标紧急内存空间,并向该目标处理器核发送中断请求。目标处理器核即可响应该中断请求,进而及时处理目标紧急内存空间中的命令。
本实施例中,紧急内存空间采取中断管理,非紧急内存空间采取指针队列管理,可以实现对不同命令个性化管理,且触发中断后目标处理器核能够及时处理紧急命令,保证紧急命令被处理的时效性。
在一些可选的实施方式中,上述步骤S402“将操作命令存储至目标处理器核所对应的目标内存空间”,可以包括以下步骤B1和步骤B2。
步骤B1,在至少部分处理器核的内存空间未满的情况下,将内存空间未满的一个处理器核作为目标处理器核,并将操作命令存储至目标处理器核所对应的目标内存空间。
步骤B2,在所有处理器核的内存空间均已满的情况下,停止传输操作命令。
本实施例中,NVMe控制器选取目标处理器核时,需要判断是否存在未满的内存空间,只有未满的内存空间所对应的处理器核,才可作为目标处理器。换句话说,NVMe控制器从内存空间未满的处理器核中选取一个作为目标处理器核。若所有内存空间均已满,则说明不能再存储操作命令,故NVMe控制器停止传输操作命令,可有效防止操作命令溢出。
可以理解,若内存空间包括紧急内存空间和非紧急内存空间,也可基于紧急内存空间或非紧急内存空间是否已满,以确定可以将哪一处理器核作为目标处理器核。例如,若操作命令为紧急命令,则NVMe控制器判断各处理器核的紧急内存空间是否有空闲,若存在空闲,则将紧急内存空间存在空闲的处理器核作为目标处理器核。
在本实施例中提供了一种命令处理方法,可用于上述的存储设备的NVMe控制器,图6是根据本发明实施例的命令处理方法的流程图,如图6所示,该流程包括以下步骤。
步骤S601,获取主机端发送的操作命令,操作命令为NVMe命令。
详细请参见图2所示实施例的步骤S201,在此不再赘述。
步骤S602,将操作命令存储至目标处理器核所对应的目标内存空间;存储设备还包括多核处理器,目标处理器核为多核处理器中的一个处理器核,且多核处理器的处理器核分配有相应的内存空间。
其中,上述步骤S602“将操作命令存储至目标处理器核所对应的目标内存空间”,可以包括以下步骤S6021至步骤S6022。
步骤S6021,根据内存空间的优先级,选取目标内存空间;内存空间的优先级越高,内存空间被选取的概率越大。
步骤S6022,将操作命令存储至目标内存空间。
本实施例中,为每个处理器核的内存空间设置相应的优先级,该优先级表示NVMe控制器优先将操作命令存储至哪一内存空间,或者说,NVMe控制器优先将哪一内存空间作为目标内存空间。
其中,内存空间的优先级越高,内存空间被选取的概率越大;即,对于优先级越高的内存空间,NVMe控制器越可能将操作命令存储至该内存空间。通过这种方式,可以使得优先级较高的内存空间,其中存储的操作命令越多,与内存空间相对应的处理器核会执行较多的操作命令。可以理解,内存空间的优先级也可以表示处理器核处理操作命令的优先级。例如,可以根据不同处理器核的处理能力或处理速度,确定相应内存空间的优先级;处理器核的处理能力越强、处理速度越快,其内存空间的优先级也越高。
可选地,NVMe控制器在选取目标内存空间时,除了基于内存空间的优先级之外,还可基于内存空间待处理命令数量,以选取合适的目标内存空间。相应地,上述步骤S6021“根据内存空间的优先级,选取目标内存空间”可以包括:根据内存空间的优先级以及内存空间待处理命令数量,选取目标内存空间;内存空间的优先级越高、内存空间待处理命令数量越少,内存空间被选取的概率越大。
其中,内存空间待处理命令数量指的是内存空间中当前剩余的待处理命令的数量,即还需要处理器核处理的命令数量。一般情况下,处理器核每处理一个操作命令,即可将该操作命令从内存空间中清除,故该内存空间待处理命令数量也可以是内存空间中所有命令的数量。
内存空间待处理命令数量越多,说明相应的处理器核还存在较多的命令需要处理,不易再向其存储需要处理的操作命令。相反地,内存空间待处理命令数量越少,说明相应的处理器核当前只有较少的命令需要处理,可以向其存储需要处理的操作命令,故可以优先将该内存空间选取为目标内存空间,其被选取的概率较大。
可选地,上述步骤S6021“根据内存空间的优先级,选取目标内存空间”具体可以包括以下步骤C1和步骤C2。
步骤C1,对每个内存空间的优先级进行量化,确定每个内存空间的优先级所对应的优先值;内存空间的优先级越高,内存空间的优先值越大。
本实施例中,为方便基于内存空间的优先级选取出合适的目标内存空间,可以对内存空间的优先级进行量化,将优先级转换为相应的优先值,内存空间的优先级越高,内存空间的优先值越大。可以理解,该优先值为量化后得到的数值。
例如,内存空间的优先级分为高、中、低三个等级,则可以将三种优先级分别量化为数值为3、2、1的优先值。其中,优先值的具体数值可基于实际需求而定。
步骤C2,将待处理命令数量与优先值之间的比值最小的内存空间作为目标内存空间。
本实施例中,对于第i个内存空间,若其优先值为pi,其待处理命令数量为ni,则该第i个内存空间的待处理命令数量ni与优先值pi之间的比值ri满足:ri=ni/pi。可以理解,待处理命令数量ni越小、优先值pi越大,则该比值ri越小;相应地,比值ri越小,第i个内存空间越应该被作为目标内存空间,因此,本实施例中将比值ri最小的第i个内存空间作为目标内存空间。
其中,若存在比值相同的多个内存空间,则将比值相同的多个内存空间中,优先值最大、或待处理命令数量最少得内存空间作为目标空间。
例如,若存在三个内存空间A、B、C,其优先级分别为高、中、低,本实施例为这三个内存空间分别设置4、2、1的优先值。在初始状态,三个内存空间均为空,即待处理命令数量均为0。
在接收到第1个操作命令时,由于此时三个内存空间的比值均为0,可以将其存储至优先级最高(优先值最大)的内存空间,即内存空间A。此时,三个内存空间的待处理命令数量依次为:1、0、0。
在接收到第2个操作命令时,由于此时后两个内存空间的比值均为0,且内存空间B的优先级最高(优先值最大),故将第2个操作命令存储至内存空间B。此时,三个内存空间的待处理命令数量依次为:1、1、0。
在接收到第3个操作命令时,此时内存空间C的比值为0,且最小,故将第3个操作命令存储至内存空间C。此时,三个内存空间的待处理命令数量依次为:1、1、1。
在接收到第4个操作命令时,三个内存空间的比值依次为1/4、1/2、1/1,内存空间A的比值最小,故将第4个操作命令存储至内存空间A。此时,三个内存空间的待处理命令数量依次为:2、1、1。之后接收到其他操作命令时,处理过程与此相似,此处不做赘述。
其中,为简化描述,上述过程未考虑处理器核读取内存空间中命令的情况;若期间存在处理器核读取相应内存空间中命令的情况,则可基于实际情况更新内存空间的待处理命令数量,此处不做详述。另,若某个内存空间已满,则不需要计算其比值,从未满的内存空间中选取目标内存空间。
本实施例中,利用待处理命令数量与优先值之间的比值,可以简单快速地选取出合适的目标内存空间,处理量小,适用于高并发的场景,且能够使得处理能力强或处理速度快的处理器核能够处理更多的命令,能够灵活分配多核处理器的处理资源。
可选地,在确定待处理命令数量时,内存空间中不同命令的权重可以是一样的;例如,内存空间中存在3个未处理的命令,则其待处理命令数量为3。或者,也可以为操作命令设置优先级,即内存空间中存储的命令也具有优先级,根据命令的优先级设置相应的权重,且命令的优先级越高,命令的权重越大;基于命令的权重进行加权求和处理,将处理结果作为待处理命令数量。例如,内存空间中存在3个未处理的命令,若这3个未处理的命令的优先级分别为高、中、低,可以为优先级高的命令设置权重2,为优先级中的命令设置权重1.5,为优先级低的命令设置权重1,则该内存空间此时的待处理命令数量为:2+1.5+1=4.5。通过为内存空间中的命令设置权重,并基于该权重确定待处理命令数量,可以使得内存空间中优先级较高的命令能够在一定程度上被优先处理。
步骤S603,为目标内存空间设置用于表示存在待处理命令的标记。
详细请参见图2所示实施例的步骤S203,在此不再赘述。
本实施例中,通过为内存空间设置优先级,且NVMe控制器更可能将操作命令存储至优先级较高的内存空间,可以实现对操作命令的均衡分配,内存空间中操作命令的数量与处理器核的处理能力和处理速度相匹配,能够灵活分配多核处理器的处理资源。
基于同样的发明构思,本实施例提供了一种命令处理方法,可用于上述的存储设备的多核处理器,图7是根据本发明实施例的命令处理方法的流程图,如图7所示,该流程包括以下步骤。
步骤S701,在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,目标处理器核读取目标内存空间中存储的操作命令,操作命令为NVMe命令;目标处理器核为多核处理器中的一个处理器核,且多核处理器的处理器核分配有相应的内存空间。
本实施例中,如上所述,多核处理器包括多个处理器核,每个处理器核分配有相应的内存空间。其中,可以由多核处理器为处理器核分配相应的内存空间。例如,多核处理器可以根据处理器核的数量,配置内存空间的数量,并为每个内存空间配置可容纳命令的最大数量;例如,如图3所示,可以为四个处理器核的内存空间分别配置可容纳命令的最大数量n1、n2、n3、n4。此外,由于NVMe控制器内部也存在内存,故该内存空间可以设置在NVMe控制器外部,也可以设置在NVMe控制器的内部。其中,若内存空间位于NVMe控制器外部,该多核处理器可以配置内存空间的基地址。
在内存空间配置完成后,即可允许NVMe控制器将接收到的操作命令存储至相应的内存空间。例如,多核处理器配置内存空间后,可以生成使能信号,表示配置完成,并且可进行操作命令的分配和处理。
多核处理器在工作过程中,其检测内存空间是否具有表示存在待处理命令的标记,若存在该标记,则相应的处理器核即可读取其中的操作命令,该操作命令时NVMe控制器所存储的NVMe命令,使得该处理器核能够执行该操作命令。具体地,每个处理器核可以各自监测其目标空间是否设有表示存在待处理命令的标记;以其中一个处理器核为例,为方便描述,将该处理器核称为“目标处理器核”,其所对应的内存空间称为“目标内存空间”。若目标处理器核检测到目标内存空间设有用于表示存在待处理命令的标记,则可说明NVMe控制器向该目标内存空间存储了操作命令,该目标处理器核可以读取目标内存空间中的命令。
步骤S702,目标处理器核执行操作命令,并为目标内存空间设置用于表示已取走操作命令的标记。
本实施例中,目标处理器核读取到操作命令后,即可执行该操作命令,以完成与主机端的交互。并且,还可以为目标内存空间设置用于表示已取走操作命令的标记,以避免目标处理器核后续误认为仍然存在需要处理的该操作命令,可以避免重复读取命令。
可以理解,目标处理器核读取到操作命令后,可以立即为目标内存空间设置用于表示已取走操作命令的标记;或者,也可以在目标处理器核执行完该操作命令之后,再为目标内存空间设置用于表示已取走操作命令的标记,本实施例对此不做限定。
在一些可选的实施方式中,若内存空间为指针队列的形式,采用一组头尾指针(即head-tail指针)进行控制,则目标处理器可以通过检测尾指针的情况,确定目标内存空间是否存在待处理命令,且通过更新头指针,可以避免重复读取命令。
具体地,上述步骤S701“在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,目标处理器核读取目标内存空间中存储的操作命令”可以包括以下步骤D1至步骤D2,上述步骤S702“为目标内存空间设置用于表示已取走操作命令的标记”可以包括以下步骤E1。
步骤D1,在目标处理器核所对应的目标内存空间的尾指针被更新的情况下,确定目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记。
步骤D2,目标处理器核读取目标内存空间中存储的操作命令。
步骤E1,对目标内存空间的头指针执行加一处理。
本实施例中,NVMe控制器将操作命令放入目标处理器核所对应的目标内存空间后,NVMe控制器可以更新该目标内存空间的尾指针(tail指针),对该尾指针执行加一处理,即尾指针+1。目标处理器核在检测过程中,即可确定目标内存空间的尾指针被更新;具体地,目标处理器核检测到目标内存空间的尾指针不等于头指针,则可认为目标内存空间的尾指针被更新,即目标内存空间中存储有待处理命令;目标处理器核读取目标内存空间,即可读取到NVMe控制器所存入的操作命令,进而处理该操作命令。
并且,目标处理器核对目标内存空间的头指针(head指针)执行加一处理,即头指针+1,使得处理后的头指针与尾指针相同,即可表示目标处理器核已取走该操作命令。若NVMe控制器将多个操作命令存储至该目标内存空间,每个操作命令均对尾指针执行一次加一处理;若目标处理器核只取出一个操作命令,且更新了头指针,但此时由于头指针与尾指针不同,仍然需要目标处理器核继续读取目标内存空间中的操作命令,直至头指针与尾指针相同。
可以理解,若内存空间包括用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间,紧急内存空间中的命令优先被相应的处理器核处理,且紧急内存空间和非紧急内存空间均采用指针队列的形式,存储操作命令,上述步骤D1、步骤D2和步骤E1适用于目标处理器核处理目标紧急内存空间或目标非紧急内存空间的情况,此处不作详述。
或者,若内存空间包括用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间,且紧急内存空间引入了中断机制,则目标处理器核在接收到中断请求时,即可认为确定目标紧急内存空间中存在待处理命令。具体地,上述步骤S701“在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,目标处理器核读取目标内存空间中存储的操作命令”可以包括以下步骤D3至步骤D4,上述步骤S702“为目标内存空间设置用于表示已取走操作命令的标记”可以包括以下步骤E2。
步骤D3,在目标处理器核接收到中断请求的情况下,确定目标处理器核所对应的目标紧急内存空间设有用于表示存在待处理命令的标记,并触发目标处理器核的中断。
步骤D4,目标处理器核读取目标紧急内存空间中存储的操作命令。
步骤E2,在目标处理器核执行操作命令完毕后,清除目标处理器核的中断。
本实施例中,在引入中断机制的情况下,若NVMe控制器接收到属于紧急命令的操作命令,则其将该紧急命令存储至目标处理器核的目标紧急内存空间,并向目标处理器核发送中断请求。标处理器核接收到中断请求后,即可触发中断,并从目标紧急内存空间中读取相应的紧急命令,即NVMe控制器所存储的操作命令。目标处理器核执行完该操作命令后,可以清除目标处理器核的中断,使得该目标处理器核可以接收之后的其他紧急命令。其中,目标处理器核在执行操作命令的过程中,保持中断,可以有效避免NVMe控制器将多个紧急命令发送至统一处理器核,使得多个紧急命令尽可能被并行执行。
对于目标处理器核的目标非紧急存储空间,可以采用上述步骤D1、步骤D2和步骤E1执行处理,此处不做赘述。
本实施例提供的命令处理方法,为多核处理器的处理器核分配相应的内存空间,每个处理器核可以分别处理各自内存空间中的命令,能够实现对操作命令的多线程并行执行。该方法并行处理操作命令,能够充分利用多个处理器核的计算资源,可以实现多处理器核协同配合,能够减少操作命令的排队等待时间,及时处理操作命令,提高操作命令处理效率和吞吐量,可以有效防止出现命令堆积或命令延迟的情况。
在本实施例中还提供了一种命令处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种命令处理装置,应用于NVMe控制器,如图8所示,该装置包括:
获取模块801,用于获取主机端发送的操作命令,所述操作命令为NVMe命令;
存储模块802,用于将所述操作命令存储至目标处理器核所对应的目标内存空间;所述存储设备还包括多核处理器,所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
标记模块803,用于为所述目标内存空间设置用于表示存在待处理命令的标记。
在一些可选的实施方式中,所述内存空间包括用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间;所述紧急内存空间中的命令优先被相应的处理器核处理;
所述存储模块802将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:
在所述操作命令为紧急命令的情况下,将所述操作命令存储至目标处理器核所对应的目标紧急内存空间;
在所述操作命令为非紧急命令的情况下,将所述操作命令存储至目标处理器核所对应的目标非紧急内存空间。
在一些可选的实施方式中,所述标记模块803为所述目标内存空间设置用于表示存在待处理命令的标记,包括:
在所述操作命令为紧急命令的情况下,对所述目标紧急内存空间的尾指针执行加一处理;或者,向所述目标处理器核发送中断请求;所述目标处理器核为当前未处理中断请求的处理器核;
在所述操作命令为非紧急命令的情况下,对所述目标非紧急内存空间的尾指针执行加一处理。
在一些可选的实施方式中,所述存储模块802将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:
根据所述内存空间的优先级,选取目标内存空间;所述内存空间的优先级越高,所述内存空间被选取的概率越大;
将所述操作命令存储至所述目标内存空间。
在一些可选的实施方式中,所述存储模块802将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:
在至少部分处理器核的内存空间未满的情况下,将内存空间未满的一个处理器核作为目标处理器核,并将所述操作命令存储至所述目标处理器核所对应的目标内存空间;
在所有处理器核的内存空间均已满的情况下,停止传输所述操作命令。
本实施例提供一种命令处理装置,应用于多核处理器,如图9所示,该装置包括:
读取模块901,用于在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,所述操作命令为NVMe命令;所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
处理模块902,用于执行所述操作命令,并为所述目标内存空间设置用于表示已取走所述操作命令的标记。
在一些可选的实施方式中,所述内存空间包括用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间;所述紧急内存空间中的命令优先被相应的处理器核处理;
所述读取模块901在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,包括:
在所述目标处理器核接收到中断请求的情况下,确定所述目标处理器核所对应的目标紧急内存空间设有用于表示存在待处理命令的标记,并触发所述目标处理器核的中断;以及,所述目标处理器核读取所述目标紧急内存空间中存储的操作命令;
所述处理模块902为所述目标内存空间设置用于表示已取走所述操作命令的标记,包括:在所述目标处理器核执行所述操作命令完毕后,清除所述目标处理器核的中断。
在一些可选的实施方式中,所述读取模块901在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,包括:
在所述目标处理器核所对应的目标内存空间的尾指针被更新的情况下,确定所述目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记;以及,所述目标处理器核读取所述目标内存空间中存储的操作命令;
所述处理模块902为所述目标内存空间设置用于表示已取走所述操作命令的标记,包括:对所述目标内存空间的头指针执行加一处理。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的命令处理装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种存储设备,具有上述的NVMe控制器和多核处理器。
请参阅图10,图10是本发明可选实施例提供的一种存储设备的结构示意图,如图10所示,该存储设备包括:NVMe控制器11、多核处理器12、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。NVMe控制器11、多核处理器12可以对在存储设备内执行的指令进行处理,包括存储在存储器20中的指令。
多核处理器12可以是中央处理器。其中,NVMe控制器11、多核处理器12可以位于同一硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,所述存储器20存储有可由NVMe控制器11、多核处理器12执行的指令,以使所述NVMe控制器11、多核处理器12执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据存储设备的使用所创建的数据,例如又主机端所发送的数据。
该存储设备还包括通信接口30,用于该存储设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (12)
1.一种命令处理方法,其特征在于,应用于存储设备的NVMe控制器,所述方法包括:
获取主机端发送的操作命令,所述操作命令为NVMe命令;
将所述操作命令存储至目标处理器核所对应的目标内存空间;所述存储设备还包括多核处理器,所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
为所述目标内存空间设置用于表示存在待处理命令的标记。
2.根据权利要求1所述的方法,其特征在于,所述内存空间包括用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间;所述紧急内存空间中的命令优先被相应的处理器核处理;
所述将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:
在所述操作命令为紧急命令的情况下,将所述操作命令存储至目标处理器核所对应的目标紧急内存空间;
在所述操作命令为非紧急命令的情况下,将所述操作命令存储至目标处理器核所对应的目标非紧急内存空间。
3.根据权利要求2所述的方法,其特征在于,所述为所述目标内存空间设置用于表示存在待处理命令的标记,包括:
在所述操作命令为紧急命令的情况下,对所述目标紧急内存空间的尾指针执行加一处理;或者,向所述目标处理器核发送中断请求;所述目标处理器核为当前未处理中断请求的处理器核;
在所述操作命令为非紧急命令的情况下,对所述目标非紧急内存空间的尾指针执行加一处理。
4.根据权利要求1所述的方法,其特征在于,所述将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:
根据所述内存空间的优先级,选取目标内存空间;所述内存空间的优先级越高,所述内存空间被选取的概率越大;
将所述操作命令存储至所述目标内存空间。
5.根据权利要求1所述的方法,其特征在于,所述将所述操作命令存储至目标处理器核所对应的目标内存空间,包括:
在至少部分处理器核的内存空间未满的情况下,将内存空间未满的一个处理器核作为目标处理器核,并将所述操作命令存储至所述目标处理器核所对应的目标内存空间;
在所有处理器核的内存空间均已满的情况下,停止传输所述操作命令。
6.一种命令处理方法,其特征在于,应用于存储设备的多核处理器,所述方法包括:
在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,所述操作命令为NVMe命令;所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
所述目标处理器核执行所述操作命令,并为所述目标内存空间设置用于表示已取走所述操作命令的标记。
7.根据权利要求6所述的方法,其特征在于,所述内存空间包括用于存储紧急命令的紧急内存空间和用于存储非紧急命令的非紧急内存空间;所述紧急内存空间中的命令优先被相应的处理器核处理;
所述在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,包括:
在所述目标处理器核接收到中断请求的情况下,确定所述目标处理器核所对应的目标紧急内存空间设有用于表示存在待处理命令的标记,并触发所述目标处理器核的中断;以及,
所述目标处理器核读取所述目标紧急内存空间中存储的操作命令;
所述为所述目标内存空间设置用于表示已取走所述操作命令的标记,包括:
在所述目标处理器核执行所述操作命令完毕后,清除所述目标处理器核的中断。
8.根据权利要求6所述的方法,其特征在于,所述在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,包括:
在所述目标处理器核所对应的目标内存空间的尾指针被更新的情况下,确定所述目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记;以及,
所述目标处理器核读取所述目标内存空间中存储的操作命令;
所述为所述目标内存空间设置用于表示已取走所述操作命令的标记,包括:
对所述目标内存空间的头指针执行加一处理。
9.一种命令处理装置,其特征在于,应用于存储设备的NVMe控制器,所述装置包括:
获取模块,用于获取主机端发送的操作命令,所述操作命令为NVMe命令;
存储模块,用于将所述操作命令存储至目标处理器核所对应的目标内存空间;所述存储设备还包括多核处理器,所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
标记模块,用于为所述目标内存空间设置用于表示存在待处理命令的标记。
10.一种命令处理装置,其特征在于,应用于存储设备的多核处理器,所述装置包括:
读取模块,用于在检测到目标处理器核所对应的目标内存空间设有用于表示存在待处理命令的标记的情况下,所述目标处理器核读取所述目标内存空间中存储的操作命令,所述操作命令为NVMe命令;所述目标处理器核为所述多核处理器中的一个处理器核,且所述多核处理器的处理器核分配有相应的内存空间;
处理模块,用于执行所述操作命令,并为所述目标内存空间设置用于表示已取走所述操作命令的标记。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至5或6至8中任一项所述的命令处理方法。
12.一种存储设备,其特征在于,包括:NVMe控制器和多核处理器;所述NVMe控制器和所述多核处理器之间互相通信连接;
所述NVMe控制器的存储器中存储有第一计算机指令,所述NVMe控制器通过执行所述第一计算机指令,从而执行权利要求1至5中任一项所述的命令处理方法;
所述多核处理器的存储器中存储有第二计算机指令,所述多核处理器通过执行所述第二计算机指令,从而执行权利要求6至8中任一项所述的命令处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311118941.0A CN117075819A (zh) | 2023-08-31 | 2023-08-31 | 命令处理方法、装置、存储介质及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311118941.0A CN117075819A (zh) | 2023-08-31 | 2023-08-31 | 命令处理方法、装置、存储介质及存储设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117075819A true CN117075819A (zh) | 2023-11-17 |
Family
ID=88709665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311118941.0A Pending CN117075819A (zh) | 2023-08-31 | 2023-08-31 | 命令处理方法、装置、存储介质及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117075819A (zh) |
-
2023
- 2023-08-31 CN CN202311118941.0A patent/CN117075819A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7313381B2 (ja) | ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング | |
US10019181B2 (en) | Method of managing input/output(I/O) queues by non-volatile memory express(NVME) controller | |
CN107046508B (zh) | 报文接收方法及网络设备 | |
US7953915B2 (en) | Interrupt dispatching method in multi-core environment and multi-core processor | |
US9137179B2 (en) | Memory-mapped buffers for network interface controllers | |
US9507652B2 (en) | Synchronizing communication over shared memory | |
US11321256B2 (en) | Persistent kernel for graphics processing unit direct memory access network packet processing | |
US8606976B2 (en) | Data stream flow controller and computing system architecture comprising such a flow controller | |
JP2007079789A (ja) | 計算機システム及びイベント処理方法 | |
JP5591729B2 (ja) | トレースデータの優先度の選択 | |
US7975090B2 (en) | Method for efficient I/O controller processor interconnect coupling supporting push-pull DMA read operations | |
US10303627B2 (en) | Hardware queue manager with water marking | |
US20170212852A1 (en) | Method and accelerator unit for interrupt handling | |
CN115934625A (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
US11640305B2 (en) | Wake-up and timer for scheduling of functions with context hints | |
CN111290983A (zh) | Usb传输设备及传输方法 | |
US7853713B2 (en) | Communication interface device and communication method | |
CN117075819A (zh) | 命令处理方法、装置、存储介质及存储设备 | |
US10284501B2 (en) | Technologies for multi-core wireless network data transmission | |
US8706923B2 (en) | Methods and systems for direct memory access (DMA) in-flight status | |
US8214448B2 (en) | Optimized utilization of DMA buffers for incoming data packets in a network protocol | |
CN110837482B (zh) | 分布式块存储低延迟控制方法、系统及设备 | |
US8677028B2 (en) | Interrupt-based command processing | |
KR102668599B1 (ko) | 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링 | |
US11941722B2 (en) | Kernel optimization and delayed execution |
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 |