CN113722248A - 命令处理方法及命令处理装置 - Google Patents

命令处理方法及命令处理装置 Download PDF

Info

Publication number
CN113722248A
CN113722248A CN202110860223.5A CN202110860223A CN113722248A CN 113722248 A CN113722248 A CN 113722248A CN 202110860223 A CN202110860223 A CN 202110860223A CN 113722248 A CN113722248 A CN 113722248A
Authority
CN
China
Prior art keywords
command
tag
firmware
sram
dma
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
Application number
CN202110860223.5A
Other languages
English (en)
Other versions
CN113722248B (zh
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.)
Hunan Goke Microelectronics Co Ltd
Original Assignee
Hunan Goke Microelectronics 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 Hunan Goke Microelectronics Co Ltd filed Critical Hunan Goke Microelectronics Co Ltd
Priority to CN202110860223.5A priority Critical patent/CN113722248B/zh
Publication of CN113722248A publication Critical patent/CN113722248A/zh
Application granted granted Critical
Publication of CN113722248B publication Critical patent/CN113722248B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种命令处理方法及命令处理装置。其中,该命令处理方法包括:获取提交队列SQ命令;将SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,固件命令标签ID为SQ命令的索引标识,第一级缓存位于NVMe控制器内部的SRAM;判断标签管理组件在当前时间点是否存在可用的固件命令标签ID;若当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,第二级缓存位于固态硬盘SSD控制器的片上缓存一,固件命令存储SRAM位于NVMe控制器内部。

Description

命令处理方法及命令处理装置
技术领域
本发明涉及信息处理技术领域,具体而言,涉及一种命令处理方法及命令处理装置。
背景技术
相关技术中,随着云计算、人工智能和物联网等技术的快速发展,终端产品和服务器对存储的需求越来越大,在此过程中,NVMe(Non-Volatile Memory express)固态硬盘(Solid State Disk,SSD)以其低延迟、低功耗、高带宽等诸多优势获得存储界越来越多的关注,助力存储领域的快速发展。
当前,通常将NVMe控制器的命令执行方式分为两种,第一种,先由处理器CPU下发固件命令队列,再由CPU下发DMA命令队列,原因是由于命令数据结构需要的信息越来越多,需要将固件命令和DMA命令解耦合,以便于设计的开发和移植。第二种,通过NVMe控制器将固件命令数据结构与DMA数据结构耦合在一起,使得CPU不需要下发固件命令而直接下发DMA命令队列,省去了CPU下发固件命令队列的过程,从而在一定程度上提高IO命令的执行效率。
但是这两种方案都存在明显的缺陷,其中,第一种执行方式,虽然可将固件命令和DMA命令解耦合,以便于设计的开发和移植,也便于固件的设计,但是NVMe控制器需要先加载固件命令,然后再执行DMA命令,增大了IO命令处理的时延,会降低NVMe IO命令的执行性能。而第二种执行方式,虽然CPU不需要下发固件命令而直接下发DMA命令队列,省去了CPU下发固件命令队列的过程,但由于数据结构简单,不利于将该方法应用于支持多功能、多命名空间、端到端数据保护等相对功能更丰富的NVMe控制器,同时,该第二种执行也不利于设计的扩展和移植。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种命令处理方法及命令处理装置,以至少解决相关技术中将固件命令和DMA命令解耦合,增大了命令处理时延,导致NVMe控制的命令执行性能降低的技术问题。
根据本发明实施例的一个方面,提供了一种命令处理方法,包括:获取提交队列SQ命令;将所述SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,所述固件命令标签ID为所述SQ命令的索引标识,所述第一级缓存位于NVMe控制器内部的SRAM;判断所述标签管理组件在当前时间点是否存在可用的所述固件命令标签ID;若当前时间点存在可用的所述固件命令标签ID,则接收所述固件命令标签ID,并采用硬件电路将所述SQ命令写入至第二级缓存,将所述SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,所述第二级缓存位于固态硬盘SSD控制器的片上缓存一,所述固件命令存储SRAM位于NVMe控制器内部。
通过硬件电路将SQ命令及产生的固件命令信息直接写入至固件命令存储SRAM,同时采用硬件电路将SQ命令写入至第二级缓存,将固件命令标签ID与SRAM的地址进行关联,便于DMA命令读写访问该SRAM,可以使CPU不用下发固件命令队列,直接下发DMA命令队列即可执行IO读写命令,减小命令处理时延,提高命令读写带宽,提高了NVMe SQ命令的执行速度。
可选地,在将所述SQ命令以及产生的固件命令信息写入至固件命令存储SRAM之后,所述处理方法还包括:通过固件将所述SQ命令的存储完成条目写入至固态硬盘SSD控制器的片上缓存二或者写入至NVMe控制器内部的SRAM中,其中,所述存储完成条目的条目信息包括:查询SQ命令的检测结果、空间存储状态以及标签ID的值。
可选地,所述处理方法还包括:在接收到SQ的标签请求后,判断当前时刻是否有可用的硬件标签ID;若当前时刻有可用的硬件标签ID,则控制状态机跳转至审查标签状态,其中,在所述审查标签状态下,分配给所述标签请求一个硬件标签ID;在获取到硬件标签ID后,控制所述状态机跳转至审查标签完成状态,根据所述SQ命令计算需要传输的目标数据的数据长度;基于所述固件命令标签ID,将所述数据长度写入到NVMe控制器的固件命令存储SRAM。
可选地,根据所述SQ命令计算需要传输的目标数据的数据长度的步骤,包括:确定所述SQ命令的命令数据长度以及逻辑区块地址的地址占用空间;基于所述SQ命令的命令数据长度以及逻辑区块地址的地址占用空间,计算需要传输的目标数据的数据长度。
可选地,基于所述固件命令标签ID,将所述数据长度写入到NVMe控制器的固件命令存储SRAM的步骤,包括:控制所述状态机进入固件命令初始化状态;在所述固件命令初始化状态下,对所述固件命令标签ID进行标签ID合法性检查;若合法性检查合格,则以所述固件命令标签ID为SRAM地址索引,将SQ命令信息写入至NVMe控制器内部的固件命令存储SRAM中。
可选地,所述处理方法还包括:接收直接存储器存取DMA命令,其中,所述DMA命令的数据结构包括所述SQ命令的类型、分散聚合表SGL数据块结构;所述DMA命令根据所述SQ命令的类型和所述SGL数据块结构执行所述SQ命令。
可选地,所述固件命令信息至少包括:命名空间信息、端到端数据保护信息。
根据本发明实施例的另一方面,还提供了一种命令处理方法,包括:接收DMA命令,其中,所述DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构,所述SQ命令包含固件命令标签ID,所述固件命令标签ID为所述SQ命令的索引标识;所述DMA命令根据所述SQ命令的类型和所述SGL数据块结构执行所述SQ命令。
根据本发明实施例的另一方面,还提供了一种命令处理装置,包括:获取单元,用于获取提交队列SQ命令;申请单元,用于将所述SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,所述固件命令标签ID为所述SQ命令的索引标识,所述第一级缓存位于NVMe控制器内部的SRAM;判断单元,用于判断所述标签管理组件在当前时间点是否存在可用的所述固件命令标签ID;写入单元,用于在当前时间点存在可用的所述固件命令标签ID,则接收所述固件命令标签ID,并采用硬件电路将所述SQ命令写入至第二级缓存,将所述SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,所述第二级缓存位于固态硬盘SSD控制器的片上缓存一,所述固件命令存储SRAM位于NVMe控制器内部。
可选地,所述命令处理装置还包括:第一写入模块,用于在将所述SQ命令以及产生的固件命令信息写入至固件命令存储SRAM之后,通过固件将所述SQ命令的存储完成条目写入至固态硬盘SSD控制器的片上缓存二或者写入至NVMe控制器内部的SRAM中,其中,所述存储完成条目的条目信息包括:查询SQ命令的检测结果、空间存储状态以及标签ID的值。
可选地,所述命令处理装置还包括:第一判断模块,用于在接收到SQ的标签请求后,判断当前时刻是否有可用的硬件标签ID;第一控制模块,用于在当前时刻有可用的硬件标签ID时,则控制状态机跳转至审查标签状态,其中,在所述审查标签状态下,分配给所述标签请求一个硬件标签ID;第二控制模块,用于在获取到硬件标签ID后,控制所述状态机跳转至审查标签完成状态,根据所述SQ命令计算需要传输的目标数据的数据长度;第二写入模块,用于基于所述固件命令标签ID,将所述数据长度写入到NVMe控制器的固件命令存储SRAM。
可选地,所述第二控制模块包括:第一确定子模块,用于确定所述SQ命令的命令数据长度以及逻辑区块地址的地址占用空间;第一计算子模块,用于基于所述SQ命令的命令数据长度以及逻辑区块地址的地址占用空间,计算需要传输的目标数据的数据长度。
可选地,所述第二写入模块包括:第一控制子模块,用于控制所述状态机进入固件命令初始化状态;合法性检查模块,用于在所述固件命令初始化状态下,对所述固件命令标签ID进行标签ID合法性检查;第一写入子模块,用于在合法性检查合格时,则以所述固件命令标签ID为SRAM地址索引,将SQ命令信息写入至NVMe控制器内部的固件命令存储SRAM中。
可选地,所述命令处理装置还包括:接收模块,用于接收直接存储器存取DMA命令,其中,所述DMA命令的数据结构包括所述SQ命令的类型、分散聚合表SGL数据块结构;执行模块,用于所述DMA命令根据所述SQ命令的类型和所述SGL数据块结构执行所述SQ命令。
可选地,所述固件命令信息至少包括:命名空间信息、端到端数据保护信息。
根据本发明实施例的另一方面,还提供了一种命令处理装置,包括:接收单元,用于接收DMA命令,其中,所述DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构,所述SQ命令包含固件命令标签ID,所述固件命令标签ID为所述SQ命令的索引标识;执行单元,所述DMA命令根据所述SQ命令的类型和所述SGL数据块结构执行所述SQ命令。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任意一项所述的命令处理方法。
本发明实施例中,采用获取提交队列SQ命令,然后将SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,判断标签管理组件在当前时间点是否存在可用的固件命令标签ID,若当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM。在该实施例中,可以通过硬件方式实现针对SQ读写命令自动申请命令处理标签ID,通过硬件电路将SQ命令及产生的固件命令信息直接写入至固件命令存储SRAM,同时采用硬件电路将SQ命令写入至第二级缓存,可以使CPU不用下发固件命令队列,直接下发DMA命令队列即可执行IO读写命令,减小命令处理时延,提高命令读写带宽,提高了NVMe SQ命令的执行速度,提高NVMe控制器的读写性能,从而解决相关技术中将固件命令和DMA命令解耦合,增大了命令处理时延,导致NVMe控制的命令执行性能降低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的命令处理方法的流程图;
图2是根据本发明实施例的一种可选的SQ命令写二级缓存控制状态机的示意图;
图3是根据本发明实施例中的一种可选的固件命令加载控制的状态机示意图;
图4是根据本发明实施例的另一种可选的命令处理方法的流程图;
图5是根据本发明实施例的一种可选的命令处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于本领域技术人员理解本发明,下面对本发明各实施例中涉及的部分术语或者名词做出解释:
NVMe,Non-Volatile Memory express,是一种以寄存器接口作为交互界面的主机端控制接口,通过提交队列SQ(Submission Queue)来存放主机对SSD的操作命令。SQ根据功能分为两类:管理提交队列ASQ(Admin Submission Queue)和IO SQ,其中管理提交队列用来实现对SSD固态硬盘的管理,如创建IO SQ、删除IO SQ、创建IO CQ、删除IO CQ、设定特性、格式化磁盘等等;IO SQ顾名思义,主要和IO相关,包括用来传输数据的读写命令、数据比较命令等等。
SQ,Submission Queue,提交队列。
ASQ,Admin Submission Queue,管理员提交队列。
CQ,Completion Queue,完成队列。
ACQ,Admin Completion Queue,管理员完成队列。
PF,Physical Function,物理功能。
VF,Virtual Function,虚拟功能。
DMA,Direct Memory Access,直接存储器存取。
SGL,Scatter Gather List,分散聚合表。
SSD,Solid State Disk,固态硬盘。
SRAM,静态随机存取存储器。
本发明可应用于NVMe控制器的命令读写场景中,适用于多种类型/大小命令(如4K、128K的IO命令)的命令顺序或随机读写带宽。通过一种NVMe控制器硬件方式实现针对SQ读写命令自动申请命令处理标签ID,通过硬件方式匹配SQ命令(可包括IO命令)的命名空间信息、端到端数据保护信息,可以使CPU不用下发固件命令队列,直接下发DMA命令队列即可执行IO读写命令,减小命令处理时延,提高命令读写带宽,从而提高了NVMe控制器的命令执行速度,提高NVMe控制器的读写性能。下面结合各个实施例来说明本发明。
实施例一
根据本发明实施例,提供了一种命令处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例中,以NVMe控制器为执行主体,在NVMe控制器内部设置SQ命令一级缓存:位于NVMe控制器各SQ内部的SRAM,每个SQ命令对应设置一个,用于从主机端取SQ命令放到该缓存;同时,本实施例还设置SQ命令的二级缓存:位于SSD控制器的片上缓存,不在NVMe控制器内部,给每个SQ命令分配一块该缓存,用于存储SQ命令,供固件或NVMe控制器读取(加速模式下);固件命令存储SRAM:位于NVMe控制器内部,将SQ命令信息(位于SQ命令二级缓存中)、固件命令信息或者加速模式下硬件产生的固件命令信息写入到固件命令存储SRAM,该SRAM中存储了该SQ命令信息及固件命令信息,以固件命令标签ID作为读写SRAM的地址索引,可以方便的将固件命令标签ID与SRAM的地址进行关联,便于DMA命令读写访问该SRAM。
其中,第二级缓存可以为共享缓存,包括存储器、CPU等电子设备的执行部件都可以使用该第二级缓存。
本实施例中的命令处理方法可以以设备端为实施主体,该设备端与主机端连接,主动获取SQ命令。
图1是根据本发明实施例的一种可选的命令处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取提交队列SQ命令;
步骤S104,将SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,固件命令标签ID为SQ命令的索引标识,第一级缓存位于NVMe控制器内部的SRAM;
步骤S106,判断标签管理组件在当前时间点是否存在可用的固件命令标签ID;
步骤S108,若当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,第二级缓存位于固态硬盘SSD控制器的片上缓存一,固件命令存储SRAM位于NVMe控制器内部。
通过上述步骤,可以先获取提交队列SQ命令,然后将SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,判断标签管理组件在当前时间点是否存在可用的固件命令标签ID,若当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM。在该实施例中,可以通过硬件方式实现针对SQ读写命令自动申请命令处理标签ID,通过硬件电路将SQ命令及产生的固件命令信息直接写入至固件命令存储SRAM,同时采用硬件电路将SQ命令写入至第二级缓存,将固件命令标签ID与SRAM的地址进行关联,便于DMA命令读写访问该SRAM,可以使CPU不用下发固件命令队列,直接下发DMA命令队列即可执行IO读写命令,减小命令处理时延,提高命令读写带宽,提高了NVMe SQ命令的执行速度,提高NVMe控制器的读写性能,从而解决相关技术中将固件命令和DMA命令解耦合,增大了命令处理时延,导致NVMe控制的命令执行性能降低的技术问题。
下面结合上述各实施步骤来详细说明本发明实施例。
步骤S102,获取提交队列SQ命令。
本实施例中,SQ命令是设备端主动去主机端获取得到的。
本实施例中,每一个SQ命令对应一条命令信息,每个SQ队列可以接收多个SQ命令。
本发明实施例,在接收提交队列SQ命令之后,处理方法还包括:判断第一级缓存是否为空,并判断目的地址队列是否为空;若第一级缓存非空且目的地址队列非空,确定当前时刻片上缓存中存在空闲空间;在片上缓存中存在空闲空间的情况下,读取目的地址队列,得到目的地址的地址指针;基于目的地址的地址指针,将SQ命令写入至片上缓存中目的地址。
图2是根据本发明实施例的一种可选的SQ命令写二级缓存控制状态机的示意图,如图2所示,在第一级缓存非空且目的地址队列非空,表示当前有空间存储SQ命令时,状态机由IDLE跳转至DEST_REQ状态,读取DEST(目的地址)队列得到目的地址的值(地址指针,通过地址指针指向SQ命令的存储位置),当读请求得到响应即dest_ack为1,状态机跳转至WREQ状态(写目的地址请求状态:向目的地址发起写SQ命令的请求),发起将SQ命令写入目的地址的请求,写请求得到响应即dev_wr_ack为1,控制状态机跳转至WWAIT状态,等待命令写入到第二级缓存的地址(即目的地址)中。
本实施例在实现SQ命令存储加速部分时,SQ命令分两个共享缓存,第一级共享缓存位于NVMe控制器内部各SQ的SRAM,第二级共享缓存位于SSD控制器的片上缓存。
步骤S104,将SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,固件命令标签ID为SQ命令的索引标识,第一级缓存位于NVMe控制器内部的SRAM。
第一级缓存可以是指位于NVMe控制器各SQ内部的SRAM,每个SQ命令都可以分配一个,用于从主机端取SQ命令放到该第一级缓存。本实施例在获取到SQ命令后,先写入第一级缓存,然后申请固件命令标签ID,硬件电路将SQ命令及产生的固件命令写入到固件命令存储SRAM,将SQ命令写入到第二级缓存。
可选的,本实施例提及的固件命令标签ID和SQ命令是一一对应的,在获取到SQ命令后,标签管理组件根据轮循仲裁结果从标签资源池中顺序取标签ID分配给该SQ命令。即在将SQ命令写入第二级缓存后,通过预设电路(是指标签管理电路)自动申请固件命令标签ID,通过轮循仲裁方式或加权轮循仲裁方式(对不同的物理功能、虚拟功能赋予权重以优先处理某些功能的IO读写命令)。若当前存在可用的固件命令标签ID,则在获取固件命令标签ID后,将SQ命令及该SQ对应的命名空间信息、端到端数据保护信息等写入NVMe控制器的固件命令存储SRAM,本发明实施例中,以固件命令标签ID作为读写SRAM的地址,可以方便的将固件命令ID与SRAM的地址进行关联,便于DMA命令读写访问该SRAM。
固件命令标签ID是该SQ命令在设备端生命周期全过程的标签,直到该SQ命令的CQ(完成队列)条目发送给主机端终止。
如图2所示,在WWAIT状态,进行SQ命令解析以判断该命令是否是IO命令,该命令各字段是否合法无误,若该命令是IO读写命令且命令检查无误,则在SQ命令写入到二级缓存完毕后跳转至TAG_REQ状态,如果该命令不是IO命令或者该命令检查出错误,则跳过TAG_REQ状态直接跳转至CPLQ状态,将该命令交由CPU处理。在TAG_REQ状态,向标签管理组件发起申请固件命令标签ID的请求,若当前有可用的固件命令标签ID,标签管理组件向该SQ分配固件命令标签ID,并将hw_tag_ack信号置为1。然后控制状态机跳转至CPLQ状态,在CPLQ状态,通过预设硬件电路发起写SQ_CPLQ数据结构的请求,该数据结构包含申请到的hw_tag_id的值(若未申请到固件命令ID,则该域为0)及SQ命令的具体检测结果,片上缓存回复dev_wr_ack后,状态机跳转至CPLQ_WAIT(等待写完成队列条目写入)状态,等待数据写入片上缓存,当dev_wr_done信号为1表示数据已写入片上缓存,状态机跳转回到IDLE状态。
步骤S106,判断标签管理组件在当前时间点是否存在可用的固件命令标签ID。
步骤S108,若当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,第二级缓存位于固态硬盘SSD控制器的片上缓存一,固件命令存储SRAM位于NVMe控制器内部。可选的,本实施例中的固件命令信息至少包括:命名空间信息、端到端数据保护信息。
在将所需的SQ命令及命名空间信息、端到端数据保护信息写入固件命令SRAM后,SQ状态机跳转至回复CPLQ状态(SQ命令已经写入到第二级缓存中,硬件开写命令存储完成条目到SRAM中,用存储完成条目供固件查询SQ命令的检测结果、存储状态以及标签ID的值)。
另一种可选的,在将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM之后,处理方法还包括:通过固件将SQ命令的存储完成条目写入至固态硬盘SSD控制器的片上缓存二或者写入至NVMe控制器内部的SRAM中,其中,存储完成条目的条目信息包括:查询SQ命令的检测结果、空间存储状态以及标签ID的值。
本实施例中涉及的完成条目(CQ entry)是由固件写入到片上缓存二(在片上缓存二为每一个CQ分配一块缓存),该片上缓存二也可以位于NVMe控制器内部的SRAM中。另外,本实施例中对SQ命令存储完成的条目进行存储的目的是缓存该条目,比如固件可能下发的很快,硬件来不及及时发出去,有了该片上缓存二,固件就可以下发多个,不必等硬件电路一个一个处理结束,节省了CPU的处理时间。
可选的,在下发SQ命令后,需要为该SQ命令打一个标签,该标签ID(TAG_ID)即为固件命令,每个SQ命令对应唯一的固件命令。由于SQ命令的命令数据可能较大,因此需要对数据进行拆分传输,可选的,本实施例中可以以4k(或128k)大小对该SQ命令的数据进行等分拆分处理,得到多个DMA命令,即每个SQ命令可拆分为多个DMA命令,同时,每个固件命令可对应多个DMA命令。
图3是根据本发明实施例中的一种可选的固件命令加载控制的状态机示意图,如图3所示,固件命令加载流程如下:CPU将固件命令写入到固件命令队列中并更新固件命令队列的写指针寄存器,硬件检测到固件命令队列非空且此时固件命令队列被使能,则状态机由IDLE状态跳转至CMD_REQ(请求固件命令)状态。在此状态收到读地址通道回复的dev_r_ack信号为1,状态机跳转至CMD_WAIT(等待返回固件命令)状态,在此状态等待读数据,如果读数据有效信号dev_rdata_valid为1,硬件电路从读数据中解析出存储SQ命令的地,等待回复SQ命令。
如果SQ命令读取完毕且固件命令的cmd_len_sel为1,则状态机跳转至CAL_LEN(计算数据传输长度)状态,根据SQ命令计算需要传输的用户数据长度及Meta数据长度(端到端数据保护需要计算Meta数据长度,若NVMe控制器不支持端到端数据保护功能,则直接计算用户数据长度)。如果cmd_len_sel为0,则说明使用CPU固件命令域的命令数据长度,状态机跳过CAL_LEN状态直接跳转至CAL_PRP_LEN(计算命令传输的地址长度)状态。
在CAL_PRP_LEN状态,若cmd_len_sel为0,则根据CPU下发的命令数据长度及LBA大小计算PRP的长度,以用于PRP管理。若cmd_len_sel为1,则直接使用CAL_LEN状态计算出的用户数据长度、Meta数据长度及Meta数据是否与用户数据分离得到PRP的总长度。说明:cmd_len_sel为0应用的场景为需要CPU下发数据长度的情形。PRP计算完毕后将cal_prp_done信号置为1,状态机跳转至INIT_CMDC状态(固件命令初始化状态,对固件命令进行标签ID合法性检查并将命令写入到NVMe控制器内部的固件命令存储SRAM),对命令进行检查并将命令写入到NVMe控制器内部的固件命令存储SRAM,在此状态收到检查命令的init_ack为1,则状态机跳转至IDLE状态。
一种可选的实施方式,处理方法还包括:在接收到SQ的标签请求后,判断当前时刻是否有可用的硬件标签ID;若当前时刻有可用的硬件标签ID,则控制状态机跳转至审查标签状态,其中,在审查标签状态下,分配给标签请求一个硬件标签ID;在获取到硬件标签ID后,控制状态机跳转至审查标签完成状态,根据SQ命令计算需要传输的目标数据的数据长度;基于固件命令标签ID,将数据长度写入到NVMe控制器的固件命令存储SRAM。
审查标签状态的目的是审查硬件标签ID是否合法有效以及是否可用,并分配一个标签ID。
本发明实施例中,需要计算的目标数据的数据长度包括但不限于:用户数据长度、Meta数据长度及Meta数据是否与用户数据分离得到PRP的总长度。
可选的,根据SQ命令计算需要传输的目标数据的数据长度的步骤,包括:确定SQ命令的命令数据长度以及逻辑区块地址的地址占用空间;基于SQ命令的命令数据长度以及逻辑区块地址的地址占用空间,计算需要传输的目标数据的数据长度。
本实施例中,基于固件命令标签ID,将数据长度写入到NVMe控制器的固件命令存储SRAM的步骤,包括:控制状态机进入固件命令初始化状态;在固件命令初始化状态下,对固件命令标签ID进行标签ID合法性检查;若合法性检查合格,则以固件命令标签ID为SRAM地址索引,将SQ命令信息写入至NVMe控制器内部的固件命令存储SRAM中。
本发明以固件命令标签ID作为读写SRAM的地址索引,可以方便的将固件命令标签ID与SRAM的地址进行关联,便于DMA命令读写访问该SRAM。在将所需的SQ IO命令信息及命名空间信息、端到端数据保护信息写入固件命令SRAM后,SQ状态机跳转至回复CPLQ状态。
本实施例在执行固件命令时,也可以通过硬件电路实现加速传输。
固件命令硬件加速流程:本实施例将固件命令ID分为两部分,由CPU通过配置寄存器决定分配给硬件自动申请的ID总数量。当收到来自SQ的tag_req之后,实时判断当前是否有可用的硬件自动申请的ID(即在接收到SQ的标签请求后,判断当前时刻是否有可用的硬件标签ID),若当前无可用硬件自动申请的ID,则状态机保持在IDLE状态,若当前有可用的硬件自动申请ID,状态机跳转至CHK_TAG状态,在此状态分配给该申请一个可用的硬件自动申请的ID,并将tag_chk_done信号置为1,状态机跳转至CHK_TAG_DONE状态,在此状态将tag_ack信号置为1,完成和sq_tag_req(SQ申请标签ID请求)的握手,状态机跳转至CAL_LEN状态,其他状态与固件命令加载流程一致,不再赘述。
通过固件命令硬件加速流程,省去了CPU读取IO SQ命令、CPU解析SQ命令、CPU下发固件命令、硬件读取固件命令、硬件解析固件命令、硬件读取SQ命令等诸多过程,从而减小了IO命令的执行时延,提高了IO命令的执行效率。
进一步地,本发明实施例还可以实现DMA命令的硬件加速。
对于传输数据长度超过4K的SQ读写命令,本发明未做硬件加速,本发明仅对拆分后的小的SQ命令(例如,数据长度小于4K)进行硬件加速。
DMA的数据结构通常分为两部分,一部分为DMA命令相关的数据结构,另一部分为SGL数据结构,且为偏于CPU分散高效管理,将SGL数据结构的地址放在DMA命令数据结构中,即硬件先加载DMA命令,然后从DMA命令解析出SGL数据结构的地址,再根据此地址读取SGL数据结构。本发明针对小IO读写命令的硬件加速就在于省去CPU下发SGL数据结构及硬件加载SGL数据结构的过程,从而减小了DMA命令的加载时延,提高了DMA的执行效率。
作为本实施例可选的实施方式,处理方法还包括:接收直接存储器存取DMA命令,其中,DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构;DMA命令根据SQ命令的类型和SGL数据块结构执行SQ命令。
在本实施例中,在DMA命令的数据结构中使用一个比特small_cmd表示小IO命令,并将复用DMA命令数据的SGL地址域段为SGL的实际地址(不使用SGL地址域段中的指针,减少了通过指针链接地址位置,导致的传输延迟),将SGL_LEN同样设计为来自于DMA命令数据结构,固定当前的SGL为数据块模式即可。这样的设计可以灵活的指定SGL的数据长度,对于小IO命令(无论是否有Meta数据),可以灵活高效的处理,也能够提高4K iops(io persecond的简称,表示每秒钟执行的IO命令的个数)的测试性能。
本发明实施例,省去了CPU读取IO SQ命令、CPU解析SQ命令、CPU下发固件命令、硬件读取固件命令、硬件解析固件命令、硬件读取SQ命令等诸多过程,从而减小了SQ命令的执行时延,提高了SQ命令的执行效率。
通过针对小SQ命令的DMA命令的硬件加速,省去CPU下发SGL数据结构及硬件加载SGL数据结构的过程,从而减小了DMA命令的加载时延,提高了DMA命令的执行效率,提高了SQ命令的执行效率。
根据本发明实施例的另一种可选的实施方式,还可以提供一种涉及IO命令的执行方法,即通过DMA命令执行IO命令。
图4是根据本发明实施例的另一种可选的命令处理方法的流程图,如图4所示,该命令处理方法包括:
步骤S401,接收DMA命令,其中,DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构,SQ命令包含固件命令标签ID,固件命令标签ID为SQ命令的索引标识;
步骤S403,DMA命令根据SQ命令的类型和SGL数据块结构执行SQ命令。
通过上述步骤,可以先接收DMA命令,其中,DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构,SQ命令包含固件命令标签ID,固件命令标签ID为SQ命令的索引标识,DMA命令根据SQ命令的类型和SGL数据块结构执行SQ命令。在该实施例中,可以将固件命令与DMA命令分离,通过DMA命令执行SQ命令,以硬件加速IO读写命令的执行效率,提高读写命令的带宽,直接下发DMA命令队列即可执行IO读写命令,减小命令处理时延,提高命令读写带宽,提高了NVMe SQ命令的执行速度,提高NVMe控制器的读写性能,从而解决相关技术中将固件命令和DMA命令解耦合,增大了命令处理时延,导致NVMe控制的命令执行性能降低的技术问题。
下面结合另一种可选的实施例来说明本发明。
实施例二
本实施例提供了一种命令处理装置,该装置中包含的多个实施单元可以执行上述实施例一中各个实施步骤。
图5是根据本发明实施例的一种可选的命令处理装置的示意图,如图5所示,该命令处理装置可以包括:获取单元51、申请单元53、判断单元55、写入单元57,其中,
获取单元51,用于获取提交队列SQ命令;
申请单元53,用于将SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,固件命令标签ID为SQ命令的索引标识,第一级缓存位于NVMe控制器内部的SRAM;
判断单元55,用于判断标签管理组件在当前时间点是否存在可用的固件命令标签ID;
写入单元57,用于在当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,第二级缓存位于固态硬盘SSD控制器的片上缓存一,固件命令存储SRAM位于NVMe控制器内部。
上述命令处理装置,可以通过获取单元51获取提交队列SQ命令,然后通过申请单元53将SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,通过判断单元55判断标签管理组件在当前时间点是否存在可用的固件命令标签ID,通过写入单元57当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM。在该实施例中,可以通过硬件方式实现针对SQ读写命令自动申请命令处理标签ID,通过硬件电路将SQ命令及产生的固件命令信息直接写入至固件命令存储SRAM,同时采用硬件电路将SQ命令写入至第二级缓存,可以使CPU不用下发固件命令队列,直接下发DMA命令队列即可执行IO读写命令,减小命令处理时延,提高命令读写带宽,提高了NVMe SQ命令的执行速度,提高NVMe控制器的读写性能,从而解决相关技术中将固件命令和DMA命令解耦合,增大了命令处理时延,导致NVMe控制的命令执行性能降低的技术问题。
可选的,命令处理装置还包括:第一写入模块,用于在将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM之后,通过固件将SQ命令的存储完成条目写入至固态硬盘SSD控制器的片上缓存二或者写入至NVMe控制器内部的SRAM中,其中,存储完成条目的条目信息包括:查询SQ命令的检测结果、空间存储状态以及标签ID的值。
可选的,命令处理装置还包括:第一判断模块,用于在接收到SQ的标签请求后,判断当前时刻是否有可用的硬件标签ID;第一控制模块,用于在当前时刻有可用的硬件标签ID时,则控制状态机跳转至审查标签状态,其中,在审查标签状态下,分配给标签请求一个硬件标签ID;第二控制模块,用于在获取到硬件标签ID后,控制状态机跳转至审查标签完成状态,根据SQ命令计算需要传输的目标数据的数据长度;第二写入模块,用于基于固件命令标签ID,将数据长度写入到NVMe控制器的固件命令存储SRAM。
可选的,第二控制模块包括:第一确定子模块,用于确定SQ命令的命令数据长度以及逻辑区块地址的地址占用空间;第一计算子模块,用于基于SQ命令的命令数据长度以及逻辑区块地址的地址占用空间,计算需要传输的目标数据的数据长度。
可选的,第二写入模块包括:第一控制子模块,用于控制状态机进入固件命令初始化状态;合法性检查模块,用于在固件命令初始化状态下,对固件命令标签ID进行标签ID合法性检查;第一写入子模块,用于在合法性检查合格时,则以固件命令标签ID为SRAM地址索引,将SQ命令信息写入至NVMe控制器内部的固件命令存储SRAM中。
可选的,命令处理装置还包括:接收模块,用于接收直接存储器存取DMA命令,其中,DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构;执行模块,用于DMA命令根据SQ命令的类型和SGL数据块结构执行SQ命令。
可选的,固件命令信息至少包括:命名空间信息、端到端数据保护信息。
根据本发明实施例的另一方面,还提供了一种命令处理装置,包括:接收单元,用于接收DMA命令,其中,DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构,SQ命令包含固件命令标签ID,固件命令标签ID为SQ命令的索引标识;执行单元,DMA命令根据SQ命令的类型和SGL数据块结构执行SQ命令。
上述的命令处理装置还可以包括处理器和存储器,上述获取单元51、申请单元53、判断单元55、写入单元57等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来在当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM。
上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述任意一项的命令处理方法。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取提交队列SQ命令;将SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,固件命令标签ID为SQ命令的索引标识,第一级缓存位于NVMe控制器内部的SRAM;判断标签管理组件在当前时间点是否存在可用的固件命令标签ID;若当前时间点存在可用的固件命令标签ID,则接收固件命令标签ID,并采用硬件电路将SQ命令写入至第二级缓存,将SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,第二级缓存位于固态硬盘SSD控制器的片上缓存一,固件命令存储SRAM位于NVMe控制器内部。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种命令处理方法,其特征在于,包括:
获取提交队列SQ命令;
将所述SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,所述固件命令标签ID为所述SQ命令的索引标识,所述第一级缓存位于NVMe控制器内部的SRAM;
判断所述标签管理组件在当前时间点是否存在可用的所述固件命令标签ID;
若当前时间点存在可用的所述固件命令标签ID,则接收所述固件命令标签ID,并采用硬件电路将所述SQ命令写入至第二级缓存,将所述SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,所述第二级缓存位于固态硬盘SSD控制器的片上缓存一,所述固件命令存储SRAM位于NVMe控制器内部。
2.根据权利要求1所述的处理方法,其特征在于,在将所述SQ命令以及产生的固件命令信息写入至固件命令存储SRAM之后,所述处理方法还包括:
通过固件将所述SQ命令的存储完成条目写入至固态硬盘SSD控制器的片上缓存二或者写入至NVMe控制器内部的SRAM中,其中,所述存储完成条目的条目信息包括:查询SQ命令的检测结果、空间存储状态以及标签ID的值。
3.根据权利要求1所述的处理方法,其特征在于,所述处理方法还包括:
在接收到SQ的标签请求后,判断当前时刻是否有可用的硬件标签ID;
若当前时刻有可用的硬件标签ID,则控制状态机跳转至审查标签状态,其中,在所述审查标签状态下,分配给所述标签请求一个硬件标签ID;
在获取到硬件标签ID后,控制所述状态机跳转至审查标签完成状态,根据所述SQ命令计算需要传输的目标数据的数据长度;
基于所述固件命令标签ID,将所述数据长度写入到NVMe控制器的固件命令存储SRAM。
4.根据权利要求3所述的处理方法,其特征在于,根据所述SQ命令计算需要传输的目标数据的数据长度的步骤,包括:
确定所述SQ命令的命令数据长度以及逻辑区块地址的地址占用空间;
基于所述SQ命令的命令数据长度以及逻辑区块地址的地址占用空间,计算需要传输的目标数据的数据长度。
5.根据权利要求3所述的处理方法,其特征在于,基于所述固件命令标签ID,将所述数据长度写入到NVMe控制器的固件命令存储SRAM的步骤,包括:
控制所述状态机进入固件命令初始化状态;
在所述固件命令初始化状态下,对所述固件命令标签ID进行标签ID合法性检查;
若合法性检查合格,则以所述固件命令标签ID为SRAM地址索引,将SQ命令信息写入至NVMe控制器内部的固件命令存储SRAM中。
6.根据权利要求1所述的处理方法,其特征在于,所述处理方法还包括:
接收直接存储器存取DMA命令,其中,所述DMA命令的数据结构包括所述SQ命令的类型、分散聚合表SGL数据块结构;
所述DMA命令根据所述SQ命令的类型和所述SGL数据块结构执行所述SQ命令。
7.根据权利要求1至6中任意一项所述的处理方法,其特征在于,所述固件命令信息至少包括:命名空间信息、端到端数据保护信息。
8.一种命令处理方法,其特征在于,包括:
接收DMA命令,其中,所述DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构,所述SQ命令包含固件命令标签ID,所述固件命令标签ID为所述SQ命令的索引标识;
所述DMA命令根据所述SQ命令的类型和所述SGL数据块结构执行所述SQ命令。
9.一种命令处理装置,其特征在于,包括:
获取单元,用于获取提交队列SQ命令;
申请单元,用于将所述SQ命令写入第一级缓存,并向标签管理组件申请固件命令标签ID,其中,所述固件命令标签ID为所述SQ命令的索引标识,所述第一级缓存位于NVMe控制器内部的SRAM;
判断单元,用于判断所述标签管理组件在当前时间点是否存在可用的所述固件命令标签ID;
写入单元,用于在当前时间点存在可用的所述固件命令标签ID,则接收所述固件命令标签ID,并采用硬件电路将所述SQ命令写入至第二级缓存,将所述SQ命令以及产生的固件命令信息写入至固件命令存储SRAM,其中,所述第二级缓存位于固态硬盘SSD控制器的片上缓存一,所述固件命令存储SRAM位于NVMe控制器内部。
10.一种命令处理装置,其特征在于,包括:
接收单元,用于接收DMA命令,其中,所述DMA命令的数据结构包括SQ命令的类型、分散聚合表SGL数据块结构,所述SQ命令包含固件命令标签ID,所述固件命令标签ID为所述SQ命令的索引标识;
执行单元,所述DMA命令根据所述SQ命令的类型和所述SGL数据块结构执行所述SQ命令。
CN202110860223.5A 2021-07-28 2021-07-28 命令处理方法及命令处理装置 Active CN113722248B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110860223.5A CN113722248B (zh) 2021-07-28 2021-07-28 命令处理方法及命令处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110860223.5A CN113722248B (zh) 2021-07-28 2021-07-28 命令处理方法及命令处理装置

Publications (2)

Publication Number Publication Date
CN113722248A true CN113722248A (zh) 2021-11-30
CN113722248B CN113722248B (zh) 2023-08-22

Family

ID=78674212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110860223.5A Active CN113722248B (zh) 2021-07-28 2021-07-28 命令处理方法及命令处理装置

Country Status (1)

Country Link
CN (1) CN113722248B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114003182A (zh) * 2022-01-04 2022-02-01 苏州浪潮智能科技有限公司 指令交互方法、装置、存储设备以及介质
CN114328345A (zh) * 2021-12-10 2022-04-12 北京泽石科技有限公司 控制信息的处理方法、装置以及计算机可读存储介质
CN116483754A (zh) * 2023-06-26 2023-07-25 湖北芯擎科技有限公司 Ram的读写控制方法、控制器、ram以及电子设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100287310A1 (en) * 2009-05-08 2010-11-11 Won-Seok Jung Method and controller for processing commands in a storage device
US20180059987A1 (en) * 2016-08-31 2018-03-01 Samsung Electronics Co., Ltd. Method for reducing read buffer size requirements in nvme based solid state drives
US20180121368A1 (en) * 2016-10-28 2018-05-03 Intel Corporation Deferred discard
CN107992436A (zh) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 一种NVMe数据读写方法及NVMe设备
CN108197504A (zh) * 2017-12-28 2018-06-22 湖南国科微电子股份有限公司 一种可控数据加解密系统及方法
CN110413542A (zh) * 2016-12-05 2019-11-05 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统
US20200065269A1 (en) * 2018-08-24 2020-02-27 Samsung Electronics Co., Ltd. NVMeoF Messages Between a Host and a Target
CN110851075A (zh) * 2018-08-07 2020-02-28 马维尔国际贸易有限公司 在固态存储装置的虚拟接口上提供服务质量的装置和方法
CN111352873A (zh) * 2016-06-30 2020-06-30 北京忆芯科技有限公司 NVMe协议命令处理方法与装置
WO2020224662A1 (zh) * 2019-05-09 2020-11-12 北京忆芯科技有限公司 使用cmb提供开放通道存储设备
US20210073086A1 (en) * 2019-09-11 2021-03-11 Hewlett Packard Enterprise Development Lp Fault management in nvme systems
CN112612424A (zh) * 2020-12-29 2021-04-06 江苏国科微电子有限公司 一种NVMe提交队列控制装置及方法

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100287310A1 (en) * 2009-05-08 2010-11-11 Won-Seok Jung Method and controller for processing commands in a storage device
CN111352873A (zh) * 2016-06-30 2020-06-30 北京忆芯科技有限公司 NVMe协议命令处理方法与装置
US20180059987A1 (en) * 2016-08-31 2018-03-01 Samsung Electronics Co., Ltd. Method for reducing read buffer size requirements in nvme based solid state drives
CN107992436A (zh) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 一种NVMe数据读写方法及NVMe设备
US20180121368A1 (en) * 2016-10-28 2018-05-03 Intel Corporation Deferred discard
CN110413542A (zh) * 2016-12-05 2019-11-05 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统
CN108197504A (zh) * 2017-12-28 2018-06-22 湖南国科微电子股份有限公司 一种可控数据加解密系统及方法
CN110851075A (zh) * 2018-08-07 2020-02-28 马维尔国际贸易有限公司 在固态存储装置的虚拟接口上提供服务质量的装置和方法
US20200065269A1 (en) * 2018-08-24 2020-02-27 Samsung Electronics Co., Ltd. NVMeoF Messages Between a Host and a Target
WO2020224662A1 (zh) * 2019-05-09 2020-11-12 北京忆芯科技有限公司 使用cmb提供开放通道存储设备
US20210073086A1 (en) * 2019-09-11 2021-03-11 Hewlett Packard Enterprise Development Lp Fault management in nvme systems
CN112612424A (zh) * 2020-12-29 2021-04-06 江苏国科微电子有限公司 一种NVMe提交队列控制装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
任敏华;刘宇;罗云宝;赵永建;张激;: "两级链表在交换控制芯片描述符管理中的应用", 计算机工程, no. 04, pages 82 - 84 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114328345A (zh) * 2021-12-10 2022-04-12 北京泽石科技有限公司 控制信息的处理方法、装置以及计算机可读存储介质
CN114328345B (zh) * 2021-12-10 2024-05-03 北京泽石科技有限公司 控制信息的处理方法、装置以及计算机可读存储介质
CN114003182A (zh) * 2022-01-04 2022-02-01 苏州浪潮智能科技有限公司 指令交互方法、装置、存储设备以及介质
CN114003182B (zh) * 2022-01-04 2022-04-29 苏州浪潮智能科技有限公司 指令交互方法、装置、存储设备以及介质
CN116483754A (zh) * 2023-06-26 2023-07-25 湖北芯擎科技有限公司 Ram的读写控制方法、控制器、ram以及电子设备
CN116483754B (zh) * 2023-06-26 2023-10-10 湖北芯擎科技有限公司 Ram的读写控制方法、控制器、ram以及电子设备

Also Published As

Publication number Publication date
CN113722248B (zh) 2023-08-22

Similar Documents

Publication Publication Date Title
CN113722248B (zh) 命令处理方法及命令处理装置
US10606516B2 (en) Systems and methods for I/O prioritization in NVMe-compliant storage devices
US8122225B2 (en) LUN masking/mapping in a SR-IOV enabled SAS adapter
CN110275841A (zh) 访问请求处理方法、装置、计算机设备和存储介质
US20140164666A1 (en) Server and method for sharing peripheral component interconnect express interface
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
US8271748B2 (en) Generating and/or receiving, at least one data access request
CN109977037B (zh) 一种dma数据传输方法及系统
US8694698B2 (en) Storage system and method for prioritizing data transfer access
US20170277470A1 (en) Interface device, and computer system including interface device
KR102387922B1 (ko) 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US11210127B2 (en) Method and apparatus for processing request
CN108334284A (zh) 尾延迟感知前台垃圾收集算法
US8972676B2 (en) Assigning device adaptors and background tasks to use to copy source extents to target extents in a copy relationship
CN106133707A (zh) 高速缓存管理
CN114356223A (zh) 存储器的访问方法及装置、芯片、电子设备
KR102442682B1 (ko) 머신 러닝 시스템에서 직렬화된 키 값 접근을 방지하기 위한 시스템 및 방법
US10552349B1 (en) System and method for dynamic pipelining of direct memory access (DMA) transactions
US20160018989A1 (en) Control apparatus and control method
CN112749072B (zh) 一种对存储训练数据的云存储系统的测试方法及装置
US10585622B2 (en) Data writing device and method
US9213644B2 (en) Allocating enclosure cache in a computing system
CN112732176B (zh) 基于fpga的ssd访问方法及装置、存储系统及存储介质
US10783096B2 (en) Storage system and method of controlling I/O processing
CN116670661A (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
GR01 Patent grant
GR01 Patent grant