CN117149278B - 一种命令处理系统、控制方法及主机设备 - Google Patents
一种命令处理系统、控制方法及主机设备 Download PDFInfo
- Publication number
- CN117149278B CN117149278B CN202311415393.8A CN202311415393A CN117149278B CN 117149278 B CN117149278 B CN 117149278B CN 202311415393 A CN202311415393 A CN 202311415393A CN 117149278 B CN117149278 B CN 117149278B
- Authority
- CN
- China
- Prior art keywords
- information
- processed
- queue
- command
- sub
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 103
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000012544 monitoring process Methods 0.000 claims description 38
- 230000003139 buffering effect Effects 0.000 claims description 12
- 230000010365 information processing Effects 0.000 claims description 11
- 230000006798 recombination Effects 0.000 claims description 10
- 238000005215 recombination Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009191 jumping Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012857 repacking Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种命令处理系统、控制方法及主机设备,该系统包括:第一优先级子系统和第二优先级子系统,第一优先级子系统和第二优先级子系统为相互独立的硬件系统;第一优先级子系统用于获取主机输入的第一待处理信息,并根据第一待处理信息,处理对应的第一目标命令;第二优先级子系统用于获取主机输入的第二待处理信息,并根据第二待处理信息,处理对应的第二目标命令。上述方案提供的系统,通过将待处理信息按照不同的优先级单独处理,实现了不同优先级命令的并行处理,提高了命令执行效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种命令处理系统、控制方法及主机设备。
背景技术
随着大规模集成电路产业的飞速发展,固态硬盘(Solid State Disk,简称:SSD)作为一种低成本、低功耗、高性能的存储介质,在各类电子产品中得到了广泛的使用。非易失性内存主机控制器接口规范(NVM Express,简称:NVMe)是新一代的接口传输协议,规定了主机与非易失性存储介质(Non-Volatile Memory,简称:NVM)子系统之间的通信协议,具有高带宽、低延迟、高并行性等特点,是目前最常用的主机高速串行计算机扩展总线标准(PCI Express,简称:PCIe)与SSD连通规范,也逐渐成为当今市场中的主流选择。
在现有技术中,NVMe协议包括提交队列,主机首先将命令写入提交队列,主机中央处理器(Central Processing Unit,简称:CPU)通过运行软件驱动程序,实现对提交队列的管理。但是,由于提交队列中包括不同优先级的命令,管理逻辑较为复杂,若通过运行软件驱动程序的执行命令,将导致在接收到高优先级命令时低优先级命令被堵塞,降低了命令执行效率。
发明内容
本申请提供一种命令处理系统、控制方法及主机设备,以解决现有技术降低了命令执行效率等缺陷。
本申请第一个方面提供一种命令处理系统,包括:第一优先级子系统和第二优先级子系统,所述第一优先级子系统和第二优先级子系统为相互独立的硬件系统;
所述第一优先级子系统用于获取主机输入的第一待处理信息,并根据所述第一待处理信息,处理对应的第一目标命令;
所述第二优先级子系统用于获取所述主机输入的第二待处理信息,并根据所述第二待处理信息,处理对应的第二目标命令。
在一种可选的实施方式中,所述第一优先级子系统包括:第一监测模块、第一缓存器和第一命令处理模块;
所述第一监测模块用于监测第一门铃寄存器的更新情况,当监测到所述第一门铃寄存器发生更新时,获取所述第一待处理信息,并将得到的第一待处理信息添加至第一缓存器;
所述第一缓存器用于缓存所述第一待处理信息;
所述第一命令处理模块用于处理所述第一缓存器中缓存的第一待处理信息所对应的第一目标命令。
在一种可选的实施方式中,所述第一命令处理模块包括:第一指令搬移模块和第一缓存区;
所述第一指令搬移模块用于根据所述第一缓存器中缓存的第一待处理信息,向所述第一缓存区搬移对应的第一目标命令;
所述第一缓存区用于缓存所述第一目标命令。
在一种可选的实施方式中,所述第二优先级子系统包括:第二监测模块、提交队列管理模块、第二缓存器和第二命令处理模块;
所述第二监测模块用于监测第二门铃寄存器的更新情况,当监测到所述第二门铃寄存器发生更新时,获取所述第二待处理信息,并将得到的第二待处理信息发送至所述提交队列管理模块;
所述提交队列管理模块用于管理所述第二待处理信息,并将管理后的第二待处理信息添加至所述第二缓存器;
所述第二缓存器用于缓存管理后的第二待处理信息;
所述第二命令处理模块用于处理所述第二缓存器中缓存的第二待处理信息所对应的第二目标命令。
在一种可选的实施方式中,所述提交队列管理模块包括:若干个子路队列及各所述子路队列对应的管理单元;
各所述子路队列用于缓存待管理的第二待处理信息;
所述管理单元用于从所述子路队列读取所述第二待处理信息,并对所述第二待处理信息进行数据重组,得到管理后的第二待处理信息。
在一种可选的实施方式中,所述管理单元包括:流程控制单元和信息处理单元;
所述流程控制单元用于在当前子路队列非空时生成仲裁请求,当轮询仲裁器许可所述仲裁请求时,从当前子路队列读取所述第二待处理信息,并对所述第二待处理信息进行数据重组,得到管理后的第二待处理信息;
所述信息处理单元用于将所述管理后的第二待处理信息添加至所述第二缓存器。
在一种可选的实施方式中,所述管理单元还包括:仲裁单元;
所述仲裁单元用于向所述轮询仲裁器发送仲裁请求,并接收所述轮询仲裁器反馈的仲裁请求响应结果。
在一种可选的实施方式中,所述第二待处理信息至少包括第二目标命令地址和第二目标命令长度。
在一种可选的实施方式中,所述流程控制单元,用于:
当所述轮询仲裁器许可所述仲裁请求时,若所述第二目标命令长度不小于预设长度阈值,则从当前子路队列读取所述第二待处理信息。
在一种可选的实施方式中,所述流程控制单元,用于:
若所述第二目标命令长度小于预设长度阈值,则获取当前子路队列的轮询仲裁次数;
若当前子路队列的轮询仲裁次数达到预设次数阈值,则从当前子路队列读取所述第二待处理信息。
在一种可选的实施方式中,所述流程控制单元,还用于:
在从当前子路队列读取所述第二待处理信息之后,生成第二门铃寄存器更新标志。
在一种可选的实施方式中,所述第二监测模块,用于:
当监测到所述第二门铃寄存器发生更新,且所述流程控制单元生成所述第二门铃寄存器更新标志时,触发所述第二命令处理模块处理所述第二缓存器中缓存的第二待处理信息所对应的第二目标命令。
在一种可选的实施方式中,各所述子路队列采用环形存储器,所述第二监测模块,用于:
当监测到所述第二门铃寄存器发生更新时,根据所述第二门铃寄存器的锁定值,判断子路队列是否发生绕回;
若发生绕回,则生成绕回信息;
根据所述绕回信息,对所述第二待处理信息进行打包处理。
本申请第二个方面提供一种命令处理系统控制方法,包括:
当主机输入第一待处理信息时,基于第一优先级子系统获取所述第一待处理信息,并根据所述第一待处理信息,处理对应的第一目标命令;
当主机输入第二待处理信息时,基于第二优先级子系统获取所述第二待处理信息,并根据所述第二待处理信息,处理对应的第二目标命令;
其中,所述第一优先级子系统和第二优先级子系统为相互独立的硬件系统。
本申请第三个方面提供一种主机设备,包括:如上第一个方面以及第一个方面各种可能的设计所述的命令处理系统。
本申请技术方案,具有如下优点:
本申请提供一种命令处理系统、控制方法及主机设备,该系统包括:第一优先级子系统和第二优先级子系统,第一优先级子系统和第二优先级子系统为相互独立的硬件系统;第一优先级子系统用于获取主机输入的第一待处理信息,并根据第一待处理信息,处理对应的第一目标命令;第二优先级子系统用于获取主机输入的第二待处理信息,并根据第二待处理信息,处理对应的第二目标命令。上述方案提供的系统,通过基于第一优先级子系统处理admin等优先级较高的待处理信息,基于第二优先级子系统处理I/O等优先级较低的待处理信息,实现将待处理信息按照不同的优先级单独处理,实现了不同优先级命令的并行处理,提高了命令执行效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为传统NVMe协议的命令执行流程示意图;
图2为本申请实施例提供的一种命令处理系统的结构示意图;
图3为本申请实施例提供的另一种命令处理系统的结构示意图
图4为本申请实施例提供的提交队列管理模块的逻辑架构图;
图5为本申请实施例提供的流程控制单元的状态机逻辑图;
图6为本申请实施例提供的第二监测模块的状态机逻辑图;
图7为本申请实施例提供的命令处理系统控制方法的流程示意图;
图8为本申请实施例提供的主机设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
在现有技术中,NVMe包含提交队列和完成队列两类队列,对于提交队列而言主要是主机端向SSD等NVM子系统或设备发送NVMe命令,而完成队列主要是SSD等NVM子系统或设备向主机端反馈命令执行情况,具体工作流程图1所示,图1为传统NVMe协议的命令执行流程示意图,主机将指令写入提交队列,更新SSD等NVM子系统或设备端的门铃寄存器,SSD等NVM子系统或设备检查门铃寄存器更新,并从DDR中获取提交队列中的指令,依次解析并执行获取的指令,执行完成后将指令执行的结果信息写入完成队列,并发送中断信号通知主机执行完成,主机接收到完成队列的完成信息并检查,更新完成队列的门铃寄存器,结束当前任务的执行。NVMe 1.4协议中包含33组队列,包括1组admin命令队列,队列深度4K,32组I/O命令队列,队列深度64K,其中admin命令队列具有最高的优先级。对于提交队列而言,目前常见的设计是由软件驱动程序实现提交队列的管理,admin与32组I/O命令同时进行仲裁,只不过将admin命令队列的仲裁优先级拉高,同时CPU还需要给每一个队列开辟一个环形缓存区,用于缓存队列命令的内容,以便于SSD等NVM子系统或设备读取。因受限于CPU执行指令效率低、传输延迟高以及驱动本身的优化不足等问题,无法充分发挥NVMe优势。目前也有少数将NVMe控制器封装成IP的实现方式,但是IP本身定制化要求高,灵活性太差,只能适应极少数项目的需求,且价格大多昂贵,不具有通用性。
针对上述问题,本申请实施例提供一种命令处理系统、控制方法及主机设备,该系统包括:第一优先级子系统和第二优先级子系统,第一优先级子系统和第二优先级子系统为相互独立的硬件系统;第一优先级子系统用于获取主机输入的第一待处理信息,并根据第一待处理信息,处理对应的第一目标命令;第二优先级子系统用于获取主机输入的第二待处理信息,并根据第二待处理信息,处理对应的第二目标命令。上述方案提供的系统,通过基于第一优先级子系统处理admin等优先级较高的待处理信息,基于第二优先级子系统处理I/O等优先级较低的待处理信息,实现将待处理信息按照不同的优先级单独处理,实现了不同优先级命令的并行处理,提高了命令执行效率。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
本申请实施例提供了一种命令处理系统,用于管理NVMe提交队列,将原本运行在CPU中管理NVMe提交队列的驱动程序用硬件方式替代。
如图2所示,为本申请实施例提供的一种命令处理系统的结构示意图,该系统包括:第一优先级子系统和第二优先级子系统,第一优先级子系统和第二优先级子系统为相互独立的硬件系统。
其中,第一优先级子系统用于获取主机输入的第一待处理信息,并根据第一待处理信息,处理对应的第一目标命令;第二优先级子系统用于获取主机输入的第二待处理信息,并根据第二待处理信息,处理对应的第二目标命令。
需要说明的是,第一待处理信息的优先级高于第二待处理信息,第一待处理信息对应的第一目标命令具体可以指admin命令,第二待处理信息对应的第二目标命令具体可以指I/O命令,admin命令具体可以为对SSD等NVM子系统或设备的刷新和配置等管理命令,I/O命令具体指数据读命令等。
在上述实施例的基础上,如图3所示,为本申请实施例提供的另一种命令处理系统的结构示意图,作为一种可实施的方式,在一实施例中,第一优先级子系统包括:第一监测模块、第一缓存器和第一命令处理模块;
其中,第一监测模块用于监测第一门铃寄存器的更新情况,当监测到第一门铃寄存器发生更新时,获取第一待处理信息,并将得到的第一待处理信息添加至第一缓存器;第一缓存器用于缓存第一待处理信息;第一命令处理模块用于处理第一缓存器中缓存的第一待处理信息所对应的第一目标命令。
具体地,当主机发送第一待处理信息,第一门铃寄存器将发生更新,因此第一检测模块可以在监测到第一门铃寄存器发生更新时,将第一待处理信息添加至第一缓存器,第一命令处理模块在确定第一门铃寄存器发生更新时,从第一待提交队列提取第一待处理信息,以对该第一待处理信息所对应的第一目标命令进行相应的处理操作。
具体地,在一实施例中,第一命令处理模块包括:第一指令搬移模块和第一缓存区;第一指令搬移模块用于根据第一缓存器中缓存的第一待处理信息,向第一缓存区搬移对应的第一目标命令;第一缓存区用于缓存第一目标命令。
具体地,第一指令搬移模块在确定第一门铃寄存器发生更新时,从第一待提交队列提取第一待处理信息,然后按照第一待处理信息在预设命令池定位第一目标命令,并将第一目标命令搬移至第一缓存区,以供存储系统(第一指令搬移模块)读取并响应。其中,第一待处理信息至少包括第一目标命令地址和第一目标命令长度。
在上述实施例的基础上,作为一种可实施的方式,在一实施例中,第二优先级子系统包括:第二监测模块、提交队列管理模块、第二缓存器和第二命令处理模块。
其中,第二监测模块用于监测第二门铃寄存器的更新情况,当监测到第二门铃寄存器发生更新时,获取第二待处理信息,并将得到的第二待处理信息发送至提交队列管理模块;提交队列管理模块用于管理第二待处理信息,并将管理后的第二待处理信息添加至第二缓存器;第二缓存器用于缓存管理后的第二待处理信息;第二命令处理模块用于处理第二缓存器中缓存的第二待处理信息所对应的第二目标命令。
具体地,在一实施例中,提交队列管理模块包括:若干个子路队列及各子路队列对应的管理单元;其中,各子路队列用于缓存待管理的第二待处理信息;管理单元用于从子路队列读取第二待处理信息,并对第二待处理信息进行数据重组,得到管理后的第二待处理信息。
需要说明的是,NVMe提交队列包括1组admin命令队列和32组I/O命令队列,上述实施例提供的第一待提交队列即为admin命令队列,子路队列即为I/O命令队列。
具体地,第二监测模块实际用于监测各子路队列的第二门铃寄存器,第二门铃寄存器与子路队列一一对应,当第二监测模块监测到任一子路队列的第二门铃寄存器发生更新时,将获取待写入该子路队列的第二待处理信息,并将该第二待处理信息添加至该子路队列,管理单元用于对各子路队列当前的缓存的第二待处理信息进行数据管理,将管理后的第二待处理信息添加至第二缓存器,第二缓存器用于对各子路队列的第二待处理数据进行统一缓存,第二命令处理模块在满足预设第二命令处理条件时,处理第二缓存器中缓存的第二待处理信息所对应的第二目标命令。
需要说明的是,第二命令处理模块包括第二指令搬移模块和第二缓存区;第二指令搬移模块用于根据第二缓存器中缓存的第二待处理信息,向第二缓存区搬移对应的第二目标命令;第二缓存区用于缓存第二目标命令。
具体地,在一实施例中,管理单元包括:流程控制单元和信息处理单元;流程控制单元用于在当前子路队列非空时生成仲裁请求,当轮询仲裁器许可仲裁请求时,从当前子路队列读取第二待处理信息,并对第二待处理信息进行数据重组,得到管理后的第二待处理信息;信息处理单元用于将管理后的第二待处理信息添加至第二缓存器。
具体地,流程控制单元在确定当前子路队列非空时,生成仲裁请求,并将仲裁请求发送至轮询仲裁器,当轮询仲裁器通过当前仲裁请求,则表征该子路队列满足预设第二命令处理条件,进而从当前子路队列读取第二待处理信息,并对第二待处理信息进行数据重组,得到管理后的第二待处理信息;信息处理单元用于将管理后的第二待处理信息添加至第二缓存器,以供第二命令处理模块读取和处理。其中,第二待处理信息至少包括第二目标命令地址和第二目标命令长度。
具体地,在一实施例中,管理单元还包括:仲裁单元;仲裁单元用于向轮询仲裁器发送仲裁请求,并接收轮询仲裁器反馈的仲裁请求响应结果。
示例性的,如图4所示,为本申请实施例提供的提交队列管理模块的逻辑架构图,提交队列管理模块包括若干个管理单元,每个子路队列均对应一个管理单元,用于对各子路队列进行管理和控制,本申请实施例以包括32个子路队列(IOSQ0 FIFO~ IOSQ31 FIFO)为例,提交队列管理模块包含32个管理单元和1个32输入的轮询仲裁器,其中每个管理单元包括流程控制单元、信息处理单元和仲裁单元。32输入的轮询仲裁器主要是根据管理单元的仲裁请求信息,完成32个队列请求的仲裁,并将仲裁结果返回管理单元;信息处理单元主要完成FIFO(子路队列)空信号处理,响应流程控制单元状态机的控制,发送读使能并获取读数据,并将读取的数据重组后发送至第二缓存器和第二命令处理模块;仲裁单元主要完成32输出轮询仲裁器的控制,响应流程控制单元状态机的控制,产生仲裁请求,按要求停止仲裁或切换仲裁信息,向流程控制单元反馈仲裁结果;流程控制单元主要完成仲裁请求信息的产生和仲裁切换的控制、搬移带宽的限制、IOSQ FIFO的读取以及第二待处理信息的传递。
具体地,在一实施例中,流程控制单元,用于当轮询仲裁器许可仲裁请求时,若第二目标命令长度不小于预设长度阈值,则从当前子路队列读取第二待处理信息。
需要说明的是,第一命令处理模块和第二命令处理模块进行目标命令搬移时均需要请求主机DMA资源,为避免第二命令处理模块频繁为搬移优先级较低的第二目标命令请求DMA资源,本申请实施例预设第二命令处理条件,当满足第二命令处理条件时,轮询仲裁器通过当前仲裁请求,以使控制流程单元从当前子路队列读取第二待处理信息。
相应地,在一实施例中,流程控制单元,用于若第二目标命令长度小于预设长度阈值,则获取当前子路队列的轮询仲裁次数;若当前子路队列的轮询仲裁次数达到预设次数阈值,则从当前子路队列读取第二待处理信息。
需要说明的是,轮询仲裁次数具体指向轮询仲裁器发送仲裁请求的次数,当轮询仲裁器未通过仲裁请求时,轮询仲裁次数加1,若第二目标命令长度小于预设长度阈值,但当前子路队列的轮询仲裁次数达到预设次数阈值,则表征该子路队列已经累计多条第二待处理信息未得到处理,因此为避免第二待处理信息长时间得不到相应,可以在第二目标命令长度小于预设长度阈值,但当前子路队列的轮询仲裁次数达到预设次数阈值,控制流程单元从当前子路队列读取第二待处理信息。
具体地,在一实施例中,流程控制单元,还用于在从当前子路队列读取第二待处理信息之后,生成第二门铃寄存器更新标志。
相应地,在一实施例中,第二监测模块,用于当监测到第二门铃寄存器发生更新,且流程控制单元生成第二门铃寄存器更新标志时,触发第二命令处理模块处理第二缓存器中缓存的第二待处理信息所对应的第二目标命令。
需要说明的是,第二命令处理模块在确定第二门铃寄存器发生更新时触发,本申请实施例为避免频繁触发第二命令处理模块进行第二目标命令的搬移,第二监测模块再监测到第二门铃寄存器发生更新时,先锁定更新前的值(老值),在确定流程控制单元生成第二门铃寄存器更新标志时,才将第二门铃寄存器的状态值更新为最新值,否则保持更新前的值不变,也就不会触发第二命令处理模块。
其中,如图5所示,为本申请实施例提供的流程控制单元的状态机逻辑图,第二监测模块将待处理的IOSQ信息(第二待处理信息)写入IOSQ FIFO(子路队列)后,该子路队列为队列非空状态,当在队列空闲状态(SQ_IDLE)检测到IOSQ FIFO非空时,状态机跳转至仲裁请求产生状态(GEN_REQ);状态机进入GEN_REQ状态后,产生仲裁请求,并将仲裁请求发送至轮询仲裁器进行仲裁,状态机跳转至等待仲裁结果状态(WAIT_ARB);状态机进入WAIT_ARB状态后,等待仲裁结果,当请求被许可后,即轮询仲裁器通过该仲裁请求,仲裁有效,状态机跳转至传输判断状态(TRANS_JUD);状态机进入TRANS_JUD状态后,发送IOSQ FIFO读取信号(第二待处理信息读取信号),判断当次需要搬移的数据长度,若长度大于最低搬移长度门限,状态机跳转至信息发送状态(TRANS_INFO);若长度小于最低搬移长度门限,则判断当前被仲裁许可队列的轮询次数计数器,若轮询次数计数器未达到预先设置的队列轮询门限值,则该计数器加1,状态机跳转至SQ_IDLE状态;若轮询次数计数器大于等于预先设置的队列轮询门限值(当前子路队列的轮询仲裁次数达到预设次数阈值),状态机跳转至TRANS_INFO状态;状态机进入TRANS_INFO状态后,将从IOSQ FIFO(子路队列)中获取的第二待处理信息进行重新组装,产生老值更新标志,并重组后的待处理队列信息写入FIFO(第二缓存器)中,状态机跳回SQ_IDLE状态。
具体地,在一实施例中,各子路队列采用环形存储器,第二监测模块,用于当监测到第二门铃寄存器发生更新时,根据第二门铃寄存器的锁定值,判断子路队列是否发生绕回;若发生绕回,则生成绕回信息;根据绕回信息,对第二待处理信息进行打包处理。
需要说明的是,第二门铃寄存器的锁定值包括本次输入的第二待处理数据在子路队列中的头地址和尾地址,当尾地址小于头地址时,则确定子路队列发生了绕回,因此可以生成绕回信息,绕回信息至少包括当前第二待处理数据的头地址、尾地址及数据长度等,以使第二监测模块在将该第二待处理数据添加至子路队列前,对第二待处理信息进行打包处理。
其中,如图6所示,为本申请实施例提供的第二监测模块的状态机逻辑图,主机未更新IOSQ Doorbell寄存器(第二门铃寄存器)时,状态机处于门铃寄存器空闲状态(DB_IDLE),当监测到门铃寄存器变化,状态机跳转至门铃寄存器检查状态(DB_CHECK);状态机进入DB_CHECK状态后,根据锁定值的内容,判断当前子路队列是否出现了绕回,若未出现绕回,则将地址长度等第二待处理信息进行组装,并发送有效信号,若出现绕回则,将绕回信息存储,并伴随地址长度等信息一同传递,状态机跳转至发送信息状态(SEND_INFO);状态机进入SEND_INFO状态后,提取地址长度等信息,并根据绕回信息,对地址长度等信息进行重新打包,然后发往对应的IOSQ FIFO,发送完成后状态机跳转至绕回判断状态(REWIND_JUD);状态机进入REWIND_JUD状态后,判断绕回信息,若表征该子路队列存在绕回,则状态机跳转至SEND_INFO状态,否则跳回至DB_IDLE状态;老值的更新依赖于提交队列管理模块对于IO命令读取长度(第二目标命令长度)的判断,只有当老值更新标志(第二目标命令长度)有效时,老值才会更新为门铃寄存器更新后的值,否则老值一直保持。该方式可以最大限度的将主机多次少量更新一个I/O进行组合搬移,减小总线的占用。
需要说明的是,第一监测模块的主要功能是监测Admin Doorbell寄存器(第一门铃寄存器)的变化,该模块功能与第二监测模块功能相同,将第二监测模块部分设计进行复用,老值的更新不依赖于老值更新标志,主机每更新一次第一门铃寄存器便更新一次老值,并将待写入的信息(第一待处理信息)分别存放至Admin FIFO(第一缓存器)中,此处不再进行赘述。
需要进一步说明的是,针对上述实施例提供的第一命令处理模块和第二命令处理模块,IO指令搬移模块(第二指令搬移模块)主要是根据获取的搬移信息(第二待处理信息)完成IO指令的搬移,指令中包含了待搬移第二目标命令的地址和长度信息,由于AXIMasterAXI总线主端接口Advanced eXtensible Interface Master)读总线响应与读数据一起返回,若等待响应回来后再发起一笔新的读操作,会降低总线的利用率,增大传输延时,因此使用AXI总线预发的方式发起多笔读请求,可以提高总线利用率,降低传输延时,减少总线资源的占用,最后将读回的数据写入第二缓存区中。第一指令搬移模块主要功能是根据获取的搬移信息(第一待处理信息)完成第一目标命令的搬移,并将搬移的指令存储于第一缓存区中,第一指令搬移模块和第二指令搬移模块功能基本相同,部分设计可以进行复用,此处不再进行赘述。
本申请实施例提供的命令处理系统,包括:第一优先级子系统和第二优先级子系统,第一优先级子系统和第二优先级子系统为相互独立的硬件系统;第一优先级子系统用于获取主机输入的第一待处理信息,并根据第一待处理信息,处理对应的第一目标命令;第二优先级子系统用于获取主机输入的第二待处理信息,并根据第二待处理信息,处理对应的第二目标命令。上述方案提供的系统,通过基于第一优先级子系统处理admin等优先级较高的待处理信息,基于第二优先级子系统处理I/O等优先级较低的待处理信息,实现将待处理信息按照不同的优先级单独处理,实现了不同优先级命令的并行处理,提高了命令执行效率。并且,通过利用硬件并行处理的优势,可以实现提交队列中Admin队列和32个I/O队列高效管理,提高队列的管理效率;控制I/O指令搬移时低数据量传输对总线的占用,使用AXI总线预发的方式提高总线利用率,降低了总线传输延时。但是I/O队列间采用的是轮询仲裁,各个I/O提交队列间优先级相同,对于紧急I/O队列处理请求无法满足,后续可考虑通过加入仲裁器权重配置或者开辟紧急处理通道两种方式来解决该问题。
本申请实施例提供了一种命令处理系统控制方法,用于控制上述实施例提供的命令处理系统。
如图7所示,为本申请实施例提供的命令处理系统控制方法的流程示意图,该方法包括:
步骤701,当主机输入第一待处理信息时,基于第一优先级子系统获取第一待处理信息,并根据第一待处理信息,处理对应的第一目标命令;
步骤702,当主机输入第二待处理信息时,基于第二优先级子系统获取第二待处理信息,并根据第二待处理信息,处理对应的第二目标命令。
其中,第一优先级子系统和第二优先级子系统为相互独立的硬件系统。
关于本实施例中的命令处理系统控制方法,其中各个步骤的具体实施方式已经在有关该系统的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供的命令处理系统控制方法,用于控制上述实施例提供的命令处理系统方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种主机设备,用于运行上述实施例提供的命令处理系统。
如图8所示,为本申请实施例提供的主机设备的结构示意图。该主机设备包括:上述实施例提供的命令处理系统。
本申请实施例提供的电子设备,用于运行上述实施例提供的命令处理系统,其实现方式与原理相同,不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (9)
1.一种命令处理系统,其特征在于,包括:第一优先级子系统和第二优先级子系统,所述第一优先级子系统和第二优先级子系统为相互独立的硬件系统;
所述第一优先级子系统用于获取主机输入的第一待处理信息,并根据所述第一待处理信息,处理对应的第一目标命令;
所述第二优先级子系统用于获取所述主机输入的第二待处理信息,并根据所述第二待处理信息,处理对应的第二目标命令;
所述第二优先级子系统包括:第二监测模块、提交队列管理模块、第二缓存器和第二命令处理模块;
所述第二监测模块用于监测第二门铃寄存器的更新情况,当监测到所述第二门铃寄存器发生更新时,获取所述第二待处理信息,并将得到的第二待处理信息发送至所述提交队列管理模块;
所述提交队列管理模块用于管理所述第二待处理信息,并将管理后的第二待处理信息添加至所述第二缓存器;
所述第二缓存器用于缓存管理后的第二待处理信息;
所述第二命令处理模块用于处理所述第二缓存器中缓存的第二待处理信息所对应的第二目标命令;
所述提交队列管理模块包括:若干个子路队列及各所述子路队列对应的管理单元;
各所述子路队列用于缓存待管理的第二待处理信息;
所述管理单元用于从所述子路队列读取所述第二待处理信息,并对所述第二待处理信息进行数据重组,得到管理后的第二待处理信息;
所述管理单元包括:流程控制单元和信息处理单元;
所述流程控制单元用于在当前子路队列非空时生成仲裁请求,当轮询仲裁器许可所述仲裁请求时,从当前子路队列读取所述第二待处理信息,并对所述第二待处理信息进行数据重组,得到管理后的第二待处理信息;
所述信息处理单元用于将所述管理后的第二待处理信息添加至所述第二缓存器;
所述第二待处理信息至少包括第二目标命令地址和第二目标命令长度;
所述流程控制单元,用于:
当所述轮询仲裁器许可所述仲裁请求时,若所述第二目标命令长度不小于预设长度阈值,则从当前子路队列读取所述第二待处理信息;
所述流程控制单元,用于:
若所述第二目标命令长度小于预设长度阈值,则获取当前子路队列的轮询仲裁次数;
若当前子路队列的轮询仲裁次数达到预设次数阈值,则从当前子路队列读取所述第二待处理信息。
2.根据权利要求1所述的系统,其特征在于,所述第一优先级子系统包括:第一监测模块、第一缓存器和第一命令处理模块;
所述第一监测模块用于监测第一门铃寄存器的更新情况,当监测到所述第一门铃寄存器发生更新时,获取所述第一待处理信息,并将得到的第一待处理信息添加至第一缓存器;
所述第一缓存器用于缓存所述第一待处理信息;
所述第一命令处理模块用于处理所述第一缓存器中缓存的第一待处理信息所对应的第一目标命令。
3.根据权利要求2所述的系统,其特征在于,所述第一命令处理模块包括:第一指令搬移模块和第一缓存区;
所述第一指令搬移模块用于根据所述第一缓存器中缓存的第一待处理信息,向所述第一缓存区搬移对应的第一目标命令;
所述第一缓存区用于缓存所述第一目标命令。
4.根据权利要求1所述的系统,其特征在于,所述管理单元还包括:仲裁单元;
所述仲裁单元用于向所述轮询仲裁器发送仲裁请求,并接收所述轮询仲裁器反馈的仲裁请求响应结果。
5.根据权利要求1所述的系统,其特征在于,所述流程控制单元,还用于:
在从当前子路队列读取所述第二待处理信息之后,生成第二门铃寄存器更新标志。
6.根据权利要求2所述的系统,其特征在于,所述第二监测模块,用于:
当监测到所述第二门铃寄存器发生更新,且所述流程控制单元生成所述第二门铃寄存器更新标志时,触发所述第二命令处理模块处理所述第二缓存器中缓存的第二待处理信息所对应的第二目标命令。
7.根据权利要求6所述的系统,其特征在于,各所述子路队列采用环形存储器,所述第二监测模块,用于:
当监测到所述第二门铃寄存器发生更新时,根据所述第二门铃寄存器的锁定值,判断子路队列是否发生绕回;
若发生绕回,则生成绕回信息;
根据所述绕回信息,对所述第二待处理信息进行打包处理。
8.一种命令处理系统控制方法,其特征在于,包括:
当主机输入第一待处理信息时,基于第一优先级子系统获取所述第一待处理信息,并根据所述第一待处理信息,处理对应的第一目标命令;
当主机输入第二待处理信息时,基于第二优先级子系统获取所述第二待处理信息,并根据所述第二待处理信息,处理对应的第二目标命令;
其中,所述第一优先级子系统和第二优先级子系统为相互独立的硬件系统;
所述第二优先级子系统包括:第二监测模块、提交队列管理模块、第二缓存器和第二命令处理模块;
所述第二监测模块用于监测第二门铃寄存器的更新情况,当监测到所述第二门铃寄存器发生更新时,获取所述第二待处理信息,并将得到的第二待处理信息发送至所述提交队列管理模块;
所述提交队列管理模块用于管理所述第二待处理信息,并将管理后的第二待处理信息添加至所述第二缓存器;
所述第二缓存器用于缓存管理后的第二待处理信息;
所述第二命令处理模块用于处理所述第二缓存器中缓存的第二待处理信息所对应的第二目标命令;
所述提交队列管理模块包括:若干个子路队列及各所述子路队列对应的管理单元;
各所述子路队列用于缓存待管理的第二待处理信息;
所述管理单元用于从所述子路队列读取所述第二待处理信息,并对所述第二待处理信息进行数据重组,得到管理后的第二待处理信息;
所述管理单元包括:流程控制单元和信息处理单元;
所述流程控制单元用于在当前子路队列非空时生成仲裁请求,当轮询仲裁器许可所述仲裁请求时,从当前子路队列读取所述第二待处理信息,并对所述第二待处理信息进行数据重组,得到管理后的第二待处理信息;
所述信息处理单元用于将所述管理后的第二待处理信息添加至所述第二缓存器;
所述第二待处理信息至少包括第二目标命令地址和第二目标命令长度;
所述流程控制单元,用于:
当所述轮询仲裁器许可所述仲裁请求时,若所述第二目标命令长度不小于预设长度阈值,则从当前子路队列读取所述第二待处理信息;
所述流程控制单元,用于:
若所述第二目标命令长度小于预设长度阈值,则获取当前子路队列的轮询仲裁次数;
若当前子路队列的轮询仲裁次数达到预设次数阈值,则从当前子路队列读取所述第二待处理信息。
9.一种主机设备,其特征在于,包括:如权利要求1至7任一项所述的命令处理系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311415393.8A CN117149278B (zh) | 2023-10-30 | 2023-10-30 | 一种命令处理系统、控制方法及主机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311415393.8A CN117149278B (zh) | 2023-10-30 | 2023-10-30 | 一种命令处理系统、控制方法及主机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117149278A CN117149278A (zh) | 2023-12-01 |
CN117149278B true CN117149278B (zh) | 2024-02-06 |
Family
ID=88906472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311415393.8A Active CN117149278B (zh) | 2023-10-30 | 2023-10-30 | 一种命令处理系统、控制方法及主机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117149278B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628777A (zh) * | 2017-03-24 | 2018-10-09 | 西部数据技术公司 | 动态和自适应中断合并的系统和方法 |
CN110088725A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 |
CN115586867A (zh) * | 2022-09-27 | 2023-01-10 | 中科驭数(北京)科技有限公司 | NVMe控制器 |
-
2023
- 2023-10-30 CN CN202311415393.8A patent/CN117149278B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628777A (zh) * | 2017-03-24 | 2018-10-09 | 西部数据技术公司 | 动态和自适应中断合并的系统和方法 |
CN110088725A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 |
CN115586867A (zh) * | 2022-09-27 | 2023-01-10 | 中科驭数(北京)科技有限公司 | NVMe控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN117149278A (zh) | 2023-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10997093B2 (en) | NVME data processing method and NVME device | |
CN102414671B (zh) | 对于不同源的分级内存仲裁技术 | |
US8850085B2 (en) | Bandwidth aware request throttling | |
US7577772B2 (en) | Method and system for optimizing DMA channel selection | |
CN112527730A (zh) | 用于处理具有设备附接的存储器的远程直接存储器存取操作的系统、装置和方法 | |
US20040123013A1 (en) | Direct memory access controller system | |
US9311265B2 (en) | Techniques for improving throughput and performance of a distributed interconnect peripheral bus connected to a host controller | |
US20150234759A1 (en) | Method and apparatus using high-efficiency atomic operations | |
CN115934625B (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
CN115248795A (zh) | 高速外围组件互连(pcie)接口系统及其操作方法 | |
US10318362B2 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium | |
US10581748B2 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium | |
CN114721975A (zh) | 链表处理方法、装置、加速器、电路板、设备和存储介质 | |
EP3945406A1 (en) | Storage device and method for processing commands | |
WO2014206229A1 (zh) | 一种加速器以及数据处理方法 | |
JP2006268753A (ja) | Dma回路及びコンピュータシステム | |
CN117149278B (zh) | 一种命令处理系统、控制方法及主机设备 | |
US20080189719A1 (en) | Operation processor apparatus | |
US8307141B2 (en) | Multi-core processor, control method thereof, and information processing apparatus | |
JP3873589B2 (ja) | プロセッサシステム | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
US8239652B2 (en) | Data processing system | |
CN117331510B (zh) | 应用于NVMe控制器的数据迁移方法、装置及设备 | |
CN118819421A (zh) | Psram设备的读写方法、芯片及电子设备 | |
US9448954B2 (en) | Method and an apparatus for coherency control |
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 |