CN116185649A - 存储控制方法、存储控制器、存储芯片、网卡、可读介质 - Google Patents
存储控制方法、存储控制器、存储芯片、网卡、可读介质 Download PDFInfo
- Publication number
- CN116185649A CN116185649A CN202111421847.3A CN202111421847A CN116185649A CN 116185649 A CN116185649 A CN 116185649A CN 202111421847 A CN202111421847 A CN 202111421847A CN 116185649 A CN116185649 A CN 116185649A
- Authority
- CN
- China
- Prior art keywords
- queue
- storage
- bit register
- control method
- flag bit
- 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
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
-
- 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/30098—Register arrangements
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供一种存储控制方法,包括:发送至少一个第一队列的命令获取请求,所述第一队列为多个队列中已累积至少一个队列请求消息的队列,所述第一队列的命令获取请求对应所述第一队列已累积的全部队列请求消息;接收各个所述第一队列的存储命令。本公开还提供一种存储控制器、一种存储芯片、一种网卡、一种计算机可读介质。
Description
技术领域
本公开涉及存储领域,特征涉及一种存储控制方法、一种存储控制器、一种存储芯片、一种网卡、一种计算机可读介质。
背景技术
非易失性内存主机控制器接口规范(NVME,Non-Volatile Memory Express)是一种存储设备通信协议,主要提供了用于固态硬盘(SSD,Solid State Disk)的接口规范。
NVME具有多队列对存储控制器进行管理的特性,即在主机与SSD之间能够构造多个通道进行命令的传输及数据的交互,这些通道对应的载体就是队列。在NVME***中,主机与SSD间的信息交互依托于队列中命令的管理。而多队列的存在使主机能利用多个核心或者多个线程并行地进行命令提交和命令处理等命令管理过程。
但是,基于NVME的存储***的存储性能有待提升。
发明内容
本公开实施例提供一种存储控制方法、一种存储控制器、一种存储芯片、一种网卡、一种计算机可读介质。
第一方面,本公开实施例提供一种存储控制方法,包括:
发送至少一个第一队列的命令获取请求,所述第一队列为多个队列中已累积至少一个队列请求消息的队列,所述第一队列的命令获取请求对应所述第一队列已累积的全部队列请求消息;
接收各个所述第一队列的存储命令。
在一些实施例中,在发送至少一个第一队列的命令获取请求的步骤之前,所述存储控制方法还包括:
将第一标志位寄存器表中使能的标志位寄存器对应的队列确定为所述第一队列,其中,至少一个标志位寄存器表中的一者作为第一标志位寄存器表,所述标志位寄存器表包括与多个队列一一对应的多个标志位寄存器,所述标志位寄存器使能表征对应的队列已累积至少一个队列请求消息。
在一些实施例中,所述存储控制方法还包括:
响应于第二队列的队列请求消息,在第二标志位寄存器表中将所述第二队列对应的标志位寄存器使能,其中,所述第二队列为第一标志位寄存器表中非使能的标志位寄存器对应的队列,多个标志位寄存器表中的一者作为第二标志位寄存器表。
在一些实施例中,所述存储控制方法还包括:
响应于任意一个所述第一队列的队列请求消息,判断所述第一队列的命令获取请求是否已发送;
当所述第一队列的命令获取请求已发送时,在第二标志位寄存器表中将所述第一队列对应的标志位寄存器使能。
在一些实施例中,在发送至少一个第一队列的命令获取请求的步骤之后,所述存储控制方法还包括:
对于任意一个所述第一队列,在所述第一队列的命令获取请求发出之后,在第一标志位寄存器表中将所述第一队列对应的标志位寄存器清零。
在一些实施例中,所述存储控制方法还包括:
在第一标志位寄存器表中的标志位寄存器均清零的情况下,将作为第二标志位寄存器表的标志位寄存器表作为第一标志位寄存器表。
在一些实施例中,发送至少一个第一队列的命令获取请求的步骤包括:
针对任意一个所述第一队列,根据所述第一队列已累积的队列请求消息,生成所述第一队列的命令获取请求,其中,所述第一队列的命令获取请求对应的存储命令的数量等于所述第一队列已累积的各个队列请求消息对应的存储命令的数量的和;
发送所述第一队列的命令获取请求。
第二方面,本公开实施例提供一种存储控制器,包括:
一个或多个处理单元;
存储单元,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理单元执行,使得所述一个或多个处理单元实现本公开实施例第一方面中任意一项所述的存储控制方法。
第三方面,本公开实施例提供一种存储芯片,包括:
本公开实施例第二方面所述的存储控制器;
存储器。
第四方面,本公开实施例提供一种网卡,包括:
主控芯片和存储芯片;
所述存储芯片包括本公开实施例第二方面所述的存储控制器。
第五方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开实施例第一方面中任意一项所述的存储控制方法。
在本公开实施例中,存储控制器对接收到的队列请求消息先进行累积,并对累积的至少一个队列请求消息进行统一响应,对于任意一个队列,能够通过发送一个命令获取请求获取多个队列请求消息对应的存储命令,从而增加直接存储器访问组件进行一次搬运从主机获取的存储命令的数量,减少直接存储器访问组件从主机搬运存储命令的次数,避免了存储控制器从主机获取存储命令时发生阻塞和超时,提高了存储命令的获取效率,提升了存储***的存储性能。
附图说明
图1是本公开实施例中一种存储控制方法的流程图;
图2是本公开实施例中一种队列的示意图;
图3是本公开实施例中另一种存储控制方法中部分步骤的流程图;
图4是本公开实施例中一种队列管理的示意图;
图5是本公开实施例中又一种存储控制方法中部分步骤的流程图;
图6是本公开实施例中再一种存储控制方法中部分步骤的流程图;
图7是本公开实施例中再一种存储控制方法中部分步骤的流程图;
图8是本公开实施例中再一种存储控制方法中部分步骤的流程图;
图9是本公开实施例中再一种存储控制方法中部分步骤的流程图;
图10是本公开实施例中一种存储控制器的组成框图;
图11是本公开实施例中一种存储芯片的组成框图;
图12是本公开实施例中一种网卡的组成框图;
图13是本公开实施例中一种计算机可读介质的组成框图;
图14是本公开实施例中一种多队列管理的流程示意图;
图15是本公开实施例中一种多队列管理的架构图;
图16是本公开实施例中另一种多队列管理的架构图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的存储控制方法、存储控制器、存储芯片、网卡、计算机可读介质进行详细描述。
在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
基于NVME的存储***中,主机与存储控制器进行存储交互的过程包括:主机向存储控制器发送管理消息,存储控制器根据管理消息创建多个队列;主机生成存储命令后,向存储控制器发送队列请求消息;存储控制器对队列请求消息进行响应,向主机发送命令获取请求;主机根据命令获取请求向存储控制器传输存储命令;存储控制器根据存储命令进行下一步处理。
随着技术的发展,主机与存储控制器之间队列的数量在不断增长。例如,在虚拟化技术领域,主机与用户之间可以构造和呈现多个虚拟化的存储设备,每个虚拟化的存储设备在主机里可以对应为一个虚拟功能(VF,Virtual Function),其中,每个VF可以与对应的存储控制器进行绑定,且每个VF与绑定的存储控制器之间通过多个队列进行存储交互,多个VF会对应大量的队列。存储控制器从主机获取存储命令的效率成为制约存储***的存储性能的关键因素,而对大量队列的管理是影响存储控制器从主机获取存储命令的效率的重要因素。
在一些相关技术中,存储控制器对主机发送的每一个队列请求消息都单独响应并发送命令获取请求,对于多个队列请求消息则按照队列请求消息到达存储控制器的先后顺序依次串行进行响应。
本公开的发明人研究发现,当存在大量队列时,从主机过来的不同队列的队列请求消息会非常频繁,在存储控制器对队列请求消息进行响应到发起从主机获取存储命令的过程中,通常会产生大量的命令获取请求。而直接存储器访问(DMA,Direct MemoryAccess)组件和数据总线是串行处理从主机到存储控制器的命令获取请求,很容易造成存储控制***的命令获取请求的阻塞与超时;同时,由于存储控制器针对每一个队列请求消息都发送一条命令获取请求,DMA组件针对每一条命令获取请求都发起一次命令数据搬运,而每个队列请求消息对应的存储命令的数量通常比较少,因此单位时间从主机获取的存储命令的数量也比较少,存储控制器从主机获取存储命令的效率极低。
有鉴于此,第一方面,参照图1,本公开实施例提供一种存储控制方法,包括:
S1、发送至少一个第一队列的命令获取请求,所述第一队列为多个队列中已累积至少一个队列请求消息的队列,所述第一队列的命令获取请求对应所述第一队列已累积的全部队列请求消息;
S2、接收各个所述第一队列的存储命令。
在本公开实施例中,在执行步骤S1前,存储控制器通过累积过程对多个队列的队列请求消息进行累积。需要说明的是,队列已累积的队列请求消息,是指在累积过程中存储控制器接收到主机发送的该队列的队列请求消息。例如,对于任意一个队列,在累积过程中,存储控制器接收到一个或多个该队列的队列请求消息,那么这一个或多个队列请求消息则为该队列累积的队列请求消息。
相应地,在本公开实施例中,存储控制器接收到主机发送的任意队列的队列请求消息时,并不直接对该队列的队列请求消息进行响应,而是通过执行步骤S1,针对任意一个第一队列用一个命令获取请求,对该第一队列已累积的至少一个队列请求消息进行统一响应。因此,在本公开实施例中,一个命令获取请求可以对应一个队列请求消息,一个命令获取请求也可以对应多个队列请求。在执行步骤S1时,可以是多个第一队列的命令获取请求均对应多个队列请求消息;也可以是一部分第一队列的命令获取请求对应一个队列请求消息,另一部分第一队列的命令获取请求对应多个队列请求消息。相比于针对每一个队列请求消息都发送一个命令获取请求,能够减少命令获取请求的数量,进而减少DMA组件从主机搬运存储命令的次数。
在本公开实施例中,一个队列的命令获取请求对应多个队列请求消息时,主机将根据该命令获取请求向存储控制器发送该队列的全部队列请求消息对应的存储命令,从而能够增加DMA组件进行一次搬运从主机获取的存储命令的数量。
还需要说明的是,在本公开实施例中,存储控制器并不是严格按照接收队列请求消息的先后顺序对队列请求进行响应。通过对队列请求消息进行累积,然后执行步骤S1发送命令获取请求对队列请求消息进行响应,能够对所有已接收的队列请求消息进行响应,避免响应遗漏和延时。
本公开实施例提供的存储控制方法中,存储控制器对接收到的队列请求消息先进行累积,并对累积的至少一个队列请求消息进行统一响应,对于任意一个队列,能够通过发送一个命令获取请求获取多个队列请求消息对应的存储命令,从而增加DMA组件进行一次搬运从主机获取的存储命令的数量,减少DMA组件从主机搬运存储命令的次数,避免了存储控制器从主机获取存储命令时发生阻塞和超时,提高了存储命令的获取效率,提升了存储***的存储性能。
本公开实施例对于如何对队列请求消息进行累积不做特殊限定。在一些实施例中,存储控制器维护标志位寄存器表,用于存储各个队列的标志位寄存器信息,队列的标志位寄存器信息用于表征存储控制器是否接收到该队列的队列请求消息。在累积过程中,存储控制器每接收到一个队列的队列请求消息,则将该队列对应的标志位寄存器使能,标志位寄存器使能表征已接收到该队列的队列请求消息,同时也表征该队列已累积至少一个队列请求消息。
图2为主机和存储控制器之间的队列的一种示意图。如图2所示,队列也称为存储提交队列(SQ,Submission Queue),一个SQ相当于内存中的一个区域,SQ包括头指针SQhead Doorbell和尾指针SQ tail Doorbell,存储控制器接收到SQ的队列请求消息,则更新尾指针SQ tail Doorbell;存储控制器获取存储命令并处理后,则更新头指针SQ headDoorbell。例如,假设尾指针SQ tail Doorbell=头指针SQ head Doorbell=0,主机生成3条存储命令并向存储控制器发送队列请求消息;存储控制器根据队列请求消息更新该队列的尾指针SQ tail Doorbell,此时,头指针SQ head Doorbell=0,尾指针SQ tailDoorbell=3;存储控制器发送命令获取消息从主机获取3条存储命令并执行后,更新头指针SQ head Doorbell,此时,头指针SQ head Doorbell=3,尾指针SQ tail Doorbell=3。
在本公开实施例中,在执行步骤S1之前,存储控制器并不对接收到的队列请求消息进行响应,存储控制器接收到的队列请求消息按照如图2所示的机制进行累积。例如,假设初始阶段,尾指针SQ tail Doorbell=头指针SQ head Doorbell=0;第一阶段,主机生成队列的3条存储命令并向存储控制器发送队列请求消息;存储控制器根据队列请求消息更新该队列的尾指针SQ tail Doorbell,此时,头指针SQ head Doorbell=0,尾指针SQtail Doorbell=3;第二阶段,主机生成该队列的2条存储命令并向存储控制器发送队列请求消息;存储控制器根据队列请求消息更新该队列的尾指针SQ tail Doorbell,此时,头指针SQ head Doorbell=0,尾指针SQ tail Doorbell=5……从而实现对队列请求消息的累积。
在一些实施例中,存储控制器根据标志位寄存器表能够确定已累积至少一个队列请求消息的队列(即第一队列),并发起响应。
相应地,在一些实施例中,参照图3,在步骤S1之前,所述存储控制方法还包括:
S3、将第一标志位寄存器表中使能的标志位寄存器对应的队列确定为所述第一队列,其中,至少一个标志位寄存器表中的一者作为第一标志位寄存器表,所述标志位寄存器表包括与多个队列一一对应的多个标志位寄存器,所述标志位寄存器使能表征对应的队列已累积至少一个队列请求消息。
在本公开实施例中,存储控制器可以维护一个标志位寄存器表,也可以维护多个标志位寄存器表。本公开实施例对此不做特殊限定。
在一些实施例中,存储控制器维护2个标志位寄存器表,基于2个标志位寄存器表交错进行累积和响应,也称为在2个标志位寄存器表之间PING-PONG轮流切换。需要说明的是,基于标志位寄存器表进行累积,是指当存储控制器接收到队列的队列请求消息时,在该标志位寄存器表中将该队列的标志位寄存器使能;基于标志位寄存器表进行响应,是指通过执行步骤S3、S1、S2,对该标志位寄存器表中已使能的标志位寄存器对应的队列累积的队列请求消息进行响应,生成命令获取请求,并从主机获取存储命令。图4为本公开实施例中基于2个标志位寄存器交错进行累积和响应的示意图。如图4所示,时间t1,基于标志位寄存器表1进行累积,基于标志位寄存器表2进行响应;时间t2,基于标志位寄存器表1进行响应,基于标志位寄存器表2进行累积;时间t3,基于标志位寄存器表1进行累积,基于标志位寄存器表2进行响应……
相应地,在一些实施例中,参照图5,所述存储控制方法还包括:
S4、响应于第二队列的队列请求消息,在第二标志位寄存器表中将所述第二队列对应的标志位寄存器使能,其中,所述第二队列为第一标志位寄存器表中非使能的标志位寄存器对应的队列,多个标志位寄存器表中的一者作为第二标志位寄存器表。
在本公开实施例中,任意一个标志位寄存器表,当基于该标志位寄存器表进行响应时,该标志位寄存器表作为第一标志位寄存器表;当基于该标志位寄存器表进行累积时,该标志位寄存器表作为第二标志位寄存器表。
在本公开实施例中,基于第一标志位寄存器表进行响应的同时,能够基于第二标志位寄存器表充分累积队列请求消息,进一步增加单个命令获取请求对应的队列请求消息的数量,从而增加单次存储命令搬运获取的存储命令的数量,减少搬运次数,提升存储性能。此外,基于第一标志位寄存器表进行响应的同时,基于第二标志位寄存器表充分累积队列请求消息,还能够避免遗漏队列请求消息。
在本公开实施例中,基于第一标志位寄存器表进行响应时,若在发送第一队列的命令获取请求之前接收到第一队列的队列请求消息,继续基于第一标志位寄存器表对第一队列的队列请求消息进行累积;若在发送第一队列的命令获取请求之后接收到第一队列的队列请求消息,则在第二标志位寄存器表对第一队列的队列请求消息进行累积。
相应地,在一些实施例中,参照图6,所述存储控制方法还包括:
S51、响应于任意一个所述第一队列的队列请求消息,判断所述第一队列的命令获取请求是否已发送;
S52、当所述第一队列的命令获取请求已发送时,在第二标志位寄存器表中将所述第一队列对应的标志位寄存器使能。
通过步骤S51和S52,能够提高对队列请求消息的响应效率,同时避免遗漏队列请求消息。
需要说明的是,如图2所示,在基于第一标志位寄存器表进行响应时,若在发送第一队列的命令获取请求之前接收到第一队列的队列请求消息,会对尾指针SQ tailDoorbell进行更新,在发送命令获取请求时,会根据更新后的尾指针SQ tail Doorbell生成命令获取请求,即在发送第一队列的命令获取请求之前接收到的第一队列的队列请求消息基于第一标志位寄存器表进行了累积。
在一些实施例中,基于第一标志位寄存器表进行响应时,第一队列的命令获取请求发出后,则将第一标志位寄存器表中该第一队列的标志位寄存器清零,以使作为第一标志位寄存器表的标志位寄存器表能够交错作为第二标志位寄存器表。
相应地,在一些实施例中,参照图7,在步骤S1之后,所述存储控制方法还包括:
S6、对于任意一个所述第一队列,在所述第一队列的命令获取请求发出之后,在第一标志位寄存器表中将所述第一队列对应的标志位寄存器清零。
在一些实施例中,基于2个标志位寄存器表交错进行累积和响应时,2个标志位寄存器表按照预定周期进行切换。在一些实施例中,基于2个标志位寄存器表交错进行累积和响应时,当第一标志位寄存器表中全部标志位寄存器均清零时进行切换,从而实现PING-PONG轮流切换。
相应地,在一些实施例中,参照图8,所述存储控制方法还包括:
S7、在第一标志位寄存器表中的标志位寄存器均清零的情况下,将作为第二标志位寄存器表的标志位寄存器表作为第一标志位寄存器表。
在本公开实施例中,存储控制器可以对多个第一队列同时进行响应,也可以对多个第一队列逐个进行响应。本公开实施例对此不做特殊限定。
相应地,在一些实施例中,参照图9,当对多个第一队列逐个进行响应时,步骤S1包括:
S11、针对任意一个所述第一队列,根据所述第一队列已累积的队列请求消息,生成所述第一队列的命令获取请求,其中,所述第一队列的命令获取请求对应的存储命令的数量等于所述第一队列已累积的各个队列请求消息对应的存储命令的数量的和;
S12、发送所述第一队列的命令获取请求。
本公开实施例对于如何对多个第一队列逐个进行响应不做特殊限定。在一些实施例中,对存储控制器和主机之间的多个队列进行编号,按照多个第一队列的编号的顺序,逐个进行响应。在一些实施例中,存储控制器和主机之间的多个队列具有不同的优先级,按照多个第一队列的优先级顺序,逐个进行响应。在一些实施例中,可以按照随机选择确定的多个第一队列的顺序进行响应。
第二方面,参照图10,本公开实施例提供一种存储控制器,包括:
一个或多个处理单元101;
存储单元102,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理单元执行,使得一个或多个处理单元实现本公开实施例第一方面中任意一项所述的存储控制方法。
其中,处理单元101为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储单元102为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH)。
第三方面,参照图11,本公开实施例提供一种存储芯片,包括:
本公开实施例第二方面所述的存储控制器201;
存储器202。
在一些实施例中,存储芯片为存储加速芯片。
第四方面,参照图12,本公开实施例提供一种网卡,包括:
主控芯片301和存储芯片302;
所述存储芯片302包括本公开实施例第二方面所述的存储控制器。
在一些实施例中,网卡为存储加速智能网卡。
第五方面,参照图13,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开实施例第一方面中任意一项所述的存储控制方法。
为了使本领域技术人员能够更清楚地理解本公开实施例提供的技术方案,下面通过具体的实施例,对本公开实施例提供的技术方案进行详细说明:
实施例一
在本实施例中,存储控制***包括多个存储控制器。参照图14,存储控制器和主机之间对多个存储提交队列进行管理的交互流程包括:
E1、存储控制器根据主机的请求在建立多个存储提交队列,并对所有存储提交队列进行编号;
其中,主机在对存储控制***里的存储控制器进行初始化后,就会对各个存储控制器发送建立多个存储提交队列的管理消息。存储控制器根据管理消息从主机取回对应的管理命令,并根据管理命令创建多个存储提交队列,同时对多个存储提交队列顺序编号。
E2、主机生成存储命令并向存储控制器发送队列请求消息;
其中,主机对存储控制器创建好存储提交队列后,在主机内生成存储命令放到主机内对应的存储提交队列的地址空间内,同时主机往存储控制***发送队列请求消息。
E3、建立消息标志位管理机制;
其中,存储控制器维护标志位寄存器表,建立所有存储提交队列的消息标志位寄存器,根据收到的队列请求消息使能对应存储提交队列的标志位寄存器,即存储控制器每得到一个队列请求消息就将对应存储提交队列的标志位寄存器使能(置1)。
E4、对所有已编号的存储提交队列的标志位寄存器进行举手监测;
其中,将监测到的举手的存储提交队列(对应的标志位寄存器为1)作为第一队列,多个第一队列将被存储控制器按照编号进行响应,并将存储命令从主机搬运到存储控制***,搬运完存储命令后将其对应的标志位寄存器清零;
E5、基于第一标志位寄存器表执行E1至E4的同时,基于第二标志位寄存器表进行下一轮的累积和聚合,PING-PONG轮流切换处理,如此循环往复。
实施例二
图15是本实施例中,存储控制器和主机的架构示意图。基于图15进行多个存储提交队列的管理交互的流程包括:
主机发送队列请求消息,即门铃(Doorbell),通过***组件互连接口(PCIe,peripheral Component Interconnect express)模块及DMA控制模块,进入存储控制器内的消息处理及响应模块。
消息处理及响应模块将对应存储提交队列的命令获取请求通过DMA控制模块及PCIe模块发送给主机。
主机根据命令获取请求,在其内部可生成对应存储提交队列的含有存储命令的PCIe包,PCIe包经过PCIe模块及DMA控制模块,进入存储控制器内的命令处理模块进行下一步处理。
实施例三
图16是本实施例中,进行多个存储提交队列的管理交互的架构示意图。在本实施例中,存储控制***包括多个存储控制器。
主机通过DMA组件可对存储控制***里的各个控制器进行初始化,并建立多个存储提交队列SQ;创建好存储提交队列后,将各个存储提交队列对应的Doorbell发给存储控制***里的各个存储控制器,Doorbell进入到对应的存储控制器的消息监测单元。
在标志位寄存器表组件中,存储控制器赋予每一个创建好的存储提交队列对应的编号,比如创建2048个存储提交队列则对应编号0-2047,每个编号对应唯一的SQ,并且每一个SQ都有1个标志位寄存器,标志位寄存器为1表示有Doorbell消息的更新,标志位为0表示没有Doorbell消息的更新。每当消息监测单元监测到某个存储提交队列有对应的Doorbell消息更新,则将该存储提交队列所对应编号的标志位寄存器置1。
消息监测单元并行同时对2048个标志位寄存器进行监视和判断,若有多个标志位寄存器为1,存储控制器对标志位寄存器为1的存储提交队列进行处理响应。其中,2048个标志位寄存器构成标志位寄存器表组件。
每一个监测到的标志位寄存器为1的SQ,队列响应执行单元将该SQ对应的SQ tailDoorbell值与SQ header Doorbell的值进行比较,生成命令获取请求,并将命令获取请求发送给主机,然后通过DMA组件将存储命令从主机搬运回存储控制器,同时通知标志位寄存器表组件将该SQ的标志位寄存器清0。
在本实施例中,采用PING-PONG轮流切换设计,设计2张标志位寄存器表,分别记为表A和表B。在第一轮,消息监测单元对标志位寄存器表组件中的表A进行监测,对于表A中标志位寄存器为1的第一队列,若在发出第一队列的命令获取请求之前,第一队列有新的Doorbell更新,则可以继续基于表A累积聚合第一队列的Doorbell消息,由消息聚合控制单元进行管理。在基于表A进行相应的同时,表A中标志位寄存器不为1的第二队列如果有Doorbell更新,则在表B中将第二队列的标志位寄存器置1,各个第二队列若有多个Doorbell连续下发,基于表B对各个第二队列的Doorbell累积聚合。当表A中的所有标志位寄存器都已清0,则标志位PING-PONG切换单元控制表A到表B的切换,并通知消息监测单元,在下一轮对表B进行监测,即从PING轮切换到PONG轮。表B的标志位寄存器处理完后,下一轮又对表A进行处理,即又从PONG轮切换到PING轮。表A和表B进行如此的PING-PONG切换并循环往复。整体流程下来,对应的SQ既不会丢失新的Doorbell,又能尽最大的程度进行Doorbell的累积聚合。
队列响应执行单元在得到消息监测单元的通知后,能将充分进行了Doorbell累积聚合的各个存储提交队列对应的命令获取请求发给DMA组件,DMA组件再向主机发起命令获取操作并将存储命令取回。
在本实施例中,能够减少DMA搬运次数,增加单次DMA搬运的存储命令条数来,从而提高存储命令的获取效率,提升存储性能。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、***、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (11)
1.一种存储控制方法,包括:
发送至少一个第一队列的命令获取请求,所述第一队列为多个队列中已累积至少一个队列请求消息的队列,所述第一队列的命令获取请求对应所述第一队列已累积的全部队列请求消息;
接收各个所述第一队列的存储命令。
2.根据权利要求1所述的存储控制方法,其中,在发送至少一个第一队列的命令获取请求的步骤之前,所述存储控制方法还包括:
将第一标志位寄存器表中使能的标志位寄存器对应的队列确定为所述第一队列,其中,至少一个标志位寄存器表中的一者作为第一标志位寄存器表,所述标志位寄存器表包括与多个队列一一对应的多个标志位寄存器,所述标志位寄存器使能表征对应的队列已累积至少一个队列请求消息。
3.根据权利要求2所述的存储控制方法,其中,所述存储控制方法还包括:
响应于第二队列的队列请求消息,在第二标志位寄存器表中将所述第二队列对应的标志位寄存器使能,其中,所述第二队列为第一标志位寄存器表中非使能的标志位寄存器对应的队列,多个标志位寄存器表中的一者作为第二标志位寄存器表。
4.根据权利要求3所述的存储控制方法,其中,所述存储控制方法还包括:
响应于任意一个所述第一队列的队列请求消息,判断所述第一队列的命令获取请求是否已发送;
当所述第一队列的命令获取请求已发送时,在第二标志位寄存器表中将所述第一队列对应的标志位寄存器使能。
5.根据权利要求3或4所述的存储控制方法,其中,在发送至少一个第一队列的命令获取请求的步骤之后,所述存储控制方法还包括:
对于任意一个所述第一队列,在所述第一队列的命令获取请求发出之后,在第一标志位寄存器表中将所述第一队列对应的标志位寄存器清零。
6.根据权利要求5所述的存储控制方法,其中,所述存储控制方法还包括:
在第一标志位寄存器表中的标志位寄存器均清零的情况下,将作为第二标志位寄存器表的标志位寄存器表作为第一标志位寄存器表。
7.根据权利要求1至4中任意一项所述的存储控制方法,其中,发送至少一个第一队列的命令获取请求的步骤包括:
针对任意一个所述第一队列,根据所述第一队列已累积的队列请求消息,生成所述第一队列的命令获取请求,其中,所述第一队列的命令获取请求对应的存储命令的数量等于所述第一队列已累积的各个队列请求消息对应的存储命令的数量的和;
发送所述第一队列的命令获取请求。
8.一种存储控制器,包括:
一个或多个处理单元;
存储单元,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理单元执行,使得所述一个或多个处理单元实现根据权利要求1至7中任意一项所述的存储控制方法。
9.一种存储芯片,包括:
根据权利要求8所述的存储控制器;
存储器。
10.一种网卡,包括:
主控芯片和存储芯片;
所述存储芯片包括根据权利要求8所述的存储控制器。
11.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1至7中任意一项所述的存储控制方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111421847.3A CN116185649A (zh) | 2021-11-26 | 2021-11-26 | 存储控制方法、存储控制器、存储芯片、网卡、可读介质 |
PCT/CN2022/134035 WO2023093805A1 (zh) | 2021-11-26 | 2022-11-24 | 存储控制方法、存储控制器、存储芯片、网卡、可读介质 |
CA3238254A CA3238254A1 (en) | 2021-11-26 | 2022-11-24 | Storage control method, storage controller, storage chip, network card, and readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111421847.3A CN116185649A (zh) | 2021-11-26 | 2021-11-26 | 存储控制方法、存储控制器、存储芯片、网卡、可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116185649A true CN116185649A (zh) | 2023-05-30 |
Family
ID=86442721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111421847.3A Pending CN116185649A (zh) | 2021-11-26 | 2021-11-26 | 存储控制方法、存储控制器、存储芯片、网卡、可读介质 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN116185649A (zh) |
CA (1) | CA3238254A1 (zh) |
WO (1) | WO2023093805A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483286A (zh) * | 2023-06-16 | 2023-07-25 | 北京得瑞领新科技有限公司 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1656754A (zh) * | 2002-05-30 | 2005-08-17 | 松下电器产业株式会社 | 分组传送电路和分组传送方法 |
KR100528861B1 (ko) * | 2003-03-04 | 2005-11-16 | 삼성전자주식회사 | 제어 패킷의 적응적 대역 할당을 위한 패킷 포워딩시스템의 제어 패킷 관리 장치 및 그의 제어 패킷 관리 방법 |
WO2017158799A1 (ja) * | 2016-03-17 | 2017-09-21 | 株式会社日立製作所 | ストレージ装置および情報処理方法 |
CN109450816B (zh) * | 2018-11-19 | 2022-08-12 | 迈普通信技术股份有限公司 | 一种队列调度方法、装置、网络设备及存储介质 |
-
2021
- 2021-11-26 CN CN202111421847.3A patent/CN116185649A/zh active Pending
-
2022
- 2022-11-24 WO PCT/CN2022/134035 patent/WO2023093805A1/zh active Application Filing
- 2022-11-24 CA CA3238254A patent/CA3238254A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483286A (zh) * | 2023-06-16 | 2023-07-25 | 北京得瑞领新科技有限公司 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
CN116483286B (zh) * | 2023-06-16 | 2023-08-25 | 北京得瑞领新科技有限公司 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2023093805A1 (zh) | 2023-06-01 |
CA3238254A1 (en) | 2023-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11169938B2 (en) | Non-volatile memory (NVM) express (NVMe) data processing method and system | |
TWI276964B (en) | Direct memory access controller system | |
US8893146B2 (en) | Method and system of an I/O stack for controlling flows of workload specific I/O requests | |
KR101883155B1 (ko) | 메모리 콘트롤러와 이 메모리 콘트롤러의 작동방법 | |
EP3605347B1 (en) | Systems and methods for i/o prioritization in nvme-compliant storage devices | |
US20120324160A1 (en) | Method for data access, message receiving parser and system | |
CN110659151B (zh) | 数据校验方法及装置,存储介质 | |
JP2012523619A (ja) | データストレージデバイスのコマンド及び割り込みのグループ化 | |
US10853365B2 (en) | Database management system, computer, and database management method | |
WO2022227693A1 (zh) | 用于命令分发的装置、方法、芯片、计算机设备及介质 | |
CN112311702A (zh) | Fc交换机调度方法、装置、电子设备及存储介质 | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
US20080225858A1 (en) | Data transferring apparatus and information processing system | |
CN116185649A (zh) | 存储控制方法、存储控制器、存储芯片、网卡、可读介质 | |
CN117076353B (zh) | 描述符的配置方法和描述符的配置装置 | |
US10003551B2 (en) | Packet memory system, method and device for preventing underrun | |
CN110764705B (zh) | 一种数据的读写方法、装置、设备和存储介质 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
KR20170117326A (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
EP3293625A1 (en) | Method and device for accessing file, and storage system | |
US10585622B2 (en) | Data writing device and method | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储***及存储介质 | |
US10783096B2 (en) | Storage system and method of controlling I/O processing | |
CN115103020B (zh) | 数据迁移处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |