CN112835823B - 存储控制器应答发送方法 - Google Patents
存储控制器应答发送方法 Download PDFInfo
- Publication number
- CN112835823B CN112835823B CN202110094158.XA CN202110094158A CN112835823B CN 112835823 B CN112835823 B CN 112835823B CN 202110094158 A CN202110094158 A CN 202110094158A CN 112835823 B CN112835823 B CN 112835823B
- Authority
- CN
- China
- Prior art keywords
- descriptor
- response
- reply
- queue
- sending
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种存储控制器应答发送方法,用于存储控制器将应答发送至主机中,若所述应答包含应答消息帧,则将本地预先准备好的应答消息描述符投送到本地应答消息符队列,利用所述存储控制器的应答消息发送逻辑电路实现应答消息帧的发送和应答描述符的重构。本发明由硬件电路本身完成应答发送和重构等操作,无需CPU的介入,提升存储系统的性能和用户体验。
Description
技术领域
本发明属于存储控制领域,特别涉及一种存储控制器应答发送方法。
背景技术
存储控制器(Storage IOC,也称存储输入/输出控制器)作为存储阵列与主机控制器的控制通路,广泛存在于计算机网络存储系统中。存储控制器负责执行存储系统的一系列功能,主要包括输入输出(I/O)通路和处理器功能两方面。如图1所示,对于I/O通路功能,上连端口负责与存储网络或者直连的服务器通信,下连端口负责与硬件存储设备或存储扩展设备通信。对于处理器功能,负责处理数据传输、数据管理相关的各种功能(如RAID、块管理等)。存储控制器的性能直接影响到存储系统的表现,从而影响整个计算机网络系统的各种应用场景和服务的用户体验。
图2示出了主机和存储控制器之间的概念抽象通信流程。主机和存储控制器之间的通信主要分为以下三个阶段:
阶段S0:主机下发Request(请求)给存储控制器。Request是主机通过下发请求命令的方式来要求存储控制器来进行数据传输或执行相关管理任务。在这个阶段,主机具体将Request帧下发给存储控制器。如图3所示,Request帧包含Request Index和IRQ Index的信息。Request Index是Request帧的请求索引号,存储控制器向主机返回Reply(应答)时会使用这个索引号,用于标志当前的Reply是对应于哪个Request帧。IRQ Index用于指定本Request对应的Reply推送到主机的IRQ中断向量号,一般而言,IRQ中断向量号和主机处理器的核之间的一一对应关系已预先分配捆绑好。
阶段S1:存储控制器处理Request。在这个阶段,存储控制器解析Request,根据Request所包含的具体内容,存储控制器采取相应的处理措施来控制和协调Request的处理。
阶段S2:存储控制器向主机返回Reply,向主机汇报对应Request的执行结果。对于I/O Success Reply,只需要给主机发送Reply Descriptor(应答描述符,应答描述符中携带有Request Index信息,用于指示当前Reply Descriptor和哪一条Request相对应),然后推送中断以通知主机(中断号对应于所应答的Request中携带的IRQ Index);对于其他的Reply(非I/O Success Reply),在给主机发送Reply Descriptor(应答描述符)和推送中断之前,还需要发送具体的Reply Message Frame(应答消息帧)给主机,并且要将这条ReplyMessage Frame在主机中对应的地址信息携带入对应的Reply Descriptor中。
图4描述了当前普遍使用的由软件主导协调的Reply发送概念流程示意。其中C0-C10描述了应答流程中所涉及的组件,具体说明如下:
Host(主机)C0是Request的发送方和Reply的接收方。
RDDQ(Reply Descriptor Delivery Queue)C1为应答描述符投送队列,队列数量是主机预先设定的,并将队列数量信息在系统初始化阶段发送给存储控制器。对于多队列的情况,每个队列是和Request中的IRQ Index一一映射的。队列中的一个元素对应一个应答描述符(Reply Descriptor),应答描述符中携带有Request Index信息用于指示当前Reply Descriptor和哪一条Request相对应,对于非I/O Success Reply Descriptor,应答描述符还携带有应答消息帧的地址(RMFA)。
RMFB(主机侧的Reply Message Frame Buffer)C2为应答消息帧缓冲区,应答消息帧保存于此,对于非I/O Success Reply,存储控制器需要向主机返回应答消息帧来汇报更多的信息。
FRMFAQ(Free Reply Message Frame Address Queue)C3为空闲应答消息帧地址队列,队列中的每一项指示一个空闲的应答消息帧主机内存地址。
存储控制器(Storage IOC)C4是Request的接收方和Reply的发送方。
FRMFAQ_HeadIndex存储单元C5用于保存存储控制器读取FRMFAQ的头索引,由存储控制器来维护。
FRMFAQ_AckIndex存储单元C6用于保存主机传递给存储控制器关于主机确认的最新写入空闲消息帧地址的索引信息。
存储控制器侧的RMFB(Reply Message Frame Buffer)C7为存储控制器侧的应答消息帧缓冲区,用于暂时保存存储控制器执行机构产生的应答消息帧,对于非I/O SuccessReply,存储控制器需要向主机返回Reply Message Frame来汇报更多的信息。
RDQ(Reply Descriptor Queue)C8为应答描述符队列,队列的数量是主机预先在系统初始化阶段注册给存储控制器的,对于多队列的情况,每个队列是与Request中的IRQIndex一一映射的。
RDDQ_TailIndex存储单元C9用于保存存储控制器写入RDDQ C1的尾索引,由存储控制器来维护。
RDDQ_AckIndex存储单元C10用于保存主机传递给存储控制器关于主机确认的最新已消费掉的RDDQ C1元素的位置索引信息。
图4的步骤S1-S11描述了现有技术的应答(Reply)流程所涉及的步骤。对于I/OSuccess Reply,只需要执行步骤S5-S8而忽略步骤S1-S4和步骤S9-S11。对于非I/OSuccess Reply,需要执行以下步骤S1-S11的完整Reply流程。
步骤S1:存储控制器软件通过读取FRMFAQ_HeadIndex存储单元C5和FRMFAQ_AckIndex存储单元C6,判断FRMFAQ C3是否有空闲的应答消息帧地址,若有,转到步骤S2,否则等待。
步骤S2:存储控制器软件读取FRMFAQ C3获取一条空闲的应答消息帧地址。
步骤S3:将存储控制器侧的RMFB C7中当前待发送的应答消息帧通过DMA发送到由步骤S2所指定的RMFB C2的地址中。
步骤S4:存储控制器软件将步骤S3中发送的应答消息帧对应的应答描述符写入对应的应答描述符队列C8中,具体的应答描述符队列号由当前应答描述符所对应的Request中的IRQ Index所决定。
步骤S5:存储控制器软件通过读取RDDQ_TailIndex存储单元C9和RDDQ_AckIndex存储单元C10计算主机端的对应的应答描述符投送队列C1中的可用槽位,并判断是否满足应答描述符发送条件,如果发送条件满足则将应答描述符发送到对应的应答描述符投送队列C1,如不满足则等待。所述应答描述符发送条件指的是应答描述符队列C8中含有的应答描述符达到指定聚合阈值数量(或发生超时)且C1中足够的可用槽位可以保存本次待发送的应答描述符。
步骤S6:若满足推送条件,C8中的描述符由存储控制器软件直接或调用DMA发送到相应的应答描述符投送队列C1中,并且更新RDDQ_TailIndex存储单元C9的值。
步骤S7:存储控制器软件推送步骤S6中发送的应答描述符所对应的中断,以通知主机C0。
步骤S8:响应步骤S7推送的中断,主机读取C1中的应答描述符投送队列中的应答描述符并进行处理。
步骤S9:若非I/O Success Reply Descriptor,主机读取应答描述符中的地址指定的应答消息帧,并进行处理。
步骤S10:主机将步骤S9中处理的应答消息帧地址重新放入FRMFAQ C3中。
步骤S11:主机通过更新FRMFAQ_AckIndex C6,通知存储控制器新的FRMFAQ_AckIndex。
可以看出,存储控制器Reply(应答)的发送涉及众多步骤,且需要与主机有多次通信,尤其在实际和主机通信过程中,会有大量并发的Request下发到存储控制器。与此相对应,在Request处理结束后,存储控制器需要将大量的Reply频繁发送给主机,因此降低了存储系统的性能和用户体验。虽然上述由软件主导的应答发送方案可以使用应答描述符队列来聚合应答描述符并调用DMA来发送应答消息帧和聚合的应答描述符,部分地减少软件的介入,但仍需要软件来协调和管理众多的应答发送步骤以及和主机的通信,尤其对于有些步骤,在执行条件不能满足时还需轮询等待执行条件的满足,这会导致存储控制器相当多CPU的资源都消耗在应答的发送管理上。
同时,随着主机服务器的多核技术突飞猛进的发展,为提高存储系统的性能,主机服务器所支持的应答中断数量会越来越多,未来几年可能达到256甚至512个。由于应答描述符队列和中断是一一对应的,这就意味着在未来,存储控制器CPU可能需要管理越来越多的应答描述符队列(RDQ)对应的应答描述符和中断的发送及相关事务。这更会进一步增加存储控制器CPU的负载,从而降低整个存储系统的性能。
发明内容
本发明的目的在于提供一种存储控制器应答发送方法,将预先准备好的应答自动发送到主机,发送过程无需存储控制器CPU的介入,以提高整个存储系统的性能。所述存储控制器应答发送方法包括:
判断所述应答是否包含应答消息帧;
若所述应答包含应答消息帧,则
将本地预先准备好的携带有本地应答消息帧地址的对应应答消息描述符投送到本地应答消息符队列,
利用所述存储控制器的应答消息发送逻辑电路实现应答消息帧的发送和应答描述符的重构。
优选地,所述利用应答消息发送逻辑电路实现应答消息帧的发送和应答描述符的重构,进一步包括:
由所述应答消息发送逻辑电路自动将对应的本地应答消息帧发送到主机端的应答消息帧缓冲区,基于主机端应答消息帧的地址来重构应答描述符,以及将所重构的应答描述符写入对应的本地应答描述符队列。
优选地,所述将所重构的应答描述符写入对应的本地应答描述符队列之后,还包括:
将重构的应答描述符发送至主机以及将中断推送到主机。
优选地,在将在本地内存中预先准备好的应答消息描述符投送到本地应答消息符队列之前,还包括:
判断主机侧的空闲应答消息帧地址队列是否有空闲的应答消息帧地址,如果有,则配置启动DMA读取所述空闲应答消息帧地址队列中的空闲地址。
优选地,所述应答消息发送逻辑电路包括寄存器,用于提供控制和状态信息,所述重构应答描述符之后,方法还包括:
更新所述寄存器中记录的空闲应答消息帧地址队列的头索引。
优选地:
若所述应答不包含应答消息帧,则
通过应答描述符发送DMA将存储控制器的应答描述符队列中的应答描述符发送到主机端对应的应答描述符投送队列,并将中断推送到主机。
优选地,如果存在多个应答中断,则使用多个应答描述符队列和多通道DMA来发送应答描述符,其中每个应答描述符队列、DMA通道以及应答中断一一对应。
优选地,其中每个所述DMA通道的应答描述符和应答中断的发送均由所述存储控制器的DMA控制和调度逻辑电路根据每个应答描述符队列的发送控制信息来自动管理和调度。
优选地,所述方法进一步包括:
轮询是否存在满足发送条件的DMA通道。
优选地,所述发送条件包括:
DMA通道对应的应答描述符队列中含有的应答描述符数量超过预设阈值且主机端对应的应答描述符投送队列的空闲槽位数量大于所述应答描述符队列的应答描述符数量;或
DMA通道对应的计时器超时,应答描述符队列中存在待发送的应答描述符且主机端对应的应答描述符投送队列的空闲槽位数量大于所述应答描述符队列的应答描述符数量。
相比于现有技术,本发明具有以下优点:
对于需要发送应答消息的应答,只要将应答消息帧事先在本地消息缓冲区中保存,并将相应应答消息描述符写入本地应答消息描述符队列,对于不需要发送应答消息帧的应答,执行机构只要将应答描述符写入相应的本地应答描述符队列中。每种应答都是由硬件电路本身完成一系列控制、调度等操作,由此将应答完整地发送到主机,无需CPU的介入,从而提升整个存储系统的性能和用户体验。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获取。
附图说明
为更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,下面描述中的附图是本发明的某些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
图1示出了根据现有技术的存储控制器典型连接结构的示意图。
图2示出了根据现有技术的主机和存储控制器的通信流程图。
图3示出了根据现有技术的Request帧内容示意图。
图4示出了现有技术中基于软件主导协调架构的应答发送流程示意图。
图5示出了根据本发明的存储控制器应答发送实现架构示意图。
图6示出了根据本发明的存储控制器应答消息帧的发送方法流程图。
图7示出了根据本发明的存储控制器的应答描述符的发送方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
通过对现有技术的研究发现,提高从存储控制器发送应答到主机的效率对提高存储系统的性能和用户体验至关重要。因此本发明提出了一种高效的存储控制器应答发送方法,执行机构只要将应答消息事先在本地消息缓冲区中保存(对于I/O Success Reply不需要保存),并将应答描述符写入相应的本地队列中,硬件电路本身就可以自动地将应答完整地发送到主机,无需CPU的介入,从而降低CPU的负载,使CPU可以更高效的处理数据传输和数据管理,从而提高整个存储系统的性能和用户体验。
本发明使用两种应答描述符:第一种是需要直接发送到主机中对应的应答描述符投送队列中,是主机所期待的描述符;第二种是为实现带有应答消息帧的应答发送自动化而构造,这种应答描述符中所携带的地址是对应的应答消息帧所在的本地地址,而不是发送到主机端内存的对应的应答消息帧地址。为便于和第一种描述符相区别,在本发明中,将第二种描述符称为应答消息描述符(RMD:Reply Message Descriptor)。
本发明使用FIFO实现的应答描述符队列来接收执行机构产生的应答描述符,即上述第一种描述符。使用DMA将应答描述符队列中的应答描述符批量发送到主机端对应的应答描述符投送队列,并将中断推送到主机。对于多应答中断的情况,使用多应答描述符队列和多通道DMA,每个应答描述符队列、DMA通道以及应答中断一一对应。每个DMA通道的应答描述符和中断的发送均由一个统一的DMA控制和调度逻辑电路根据每个应答描述符队列的发送控制信息来自动管理和调度,从而使应答描述符的发送过程完全自动化,无需CPU的介入。
另外,本发明使用FIFO实现的应答消息描述符队列来接收产生于执行机构的应答消息描述符,即上述第二种描述符。当存储控制器执行机构将应答消息帧在本地应答消息帧缓冲区准备好以后,将携带有本地应答消息帧地址的对应应答消息描述符投送到应答消息描述符队列中,硬件逻辑电路自动完成将对应的本地应答消息帧发送到主机端的应答消息帧缓冲区、基于主机端应答消息帧的地址来重构应答描述符生成新的应答描述符、并将新生成的应答描述符写入本地对应的应答描述符队列。应答描述符硬件发送电路最终完成将应答描述符发送到主机以及将中断推送到主机的任务,从而自动完成整个应答的发送任务。
本发明的一个实现示例如图5所示。图5中各个组件的说明如下:
主机服务器(Host Server)C_S0,简称主机,包含主机CPU C0。
FRMFAQ C1为空闲应答消息帧地址队列,队列中的每一项指示一个空闲的应答消息帧(Reply Message Frame)的主机内存地址。
RMFB C2为应答消息帧缓冲区,用于保存应答消息帧。对于非I/O Success Reply,存储控制器需要向主机返回应答消息帧(Reply Message Frame)来汇报更多的信息。
RDDQ C3为应答描述符投送队列,队列的数量是主机预先设定的,并将队列数量信息在系统初始化阶段发送给存储控制器。对于多队列的情况,每个队列与Request中的IRQIndex一一映射。队列中的一个元素对应一个应答描述符(Reply Descriptor),应答描述符中携带有Request Index信息,用于指示当前应答描述符和哪一条Request相对应。对于非I/O Success Reply Descriptor,应答描述符还携带有应答消息帧的地址(RMFA)。
存储控制器C_S1通过接口总线i1与主机C_S0通信。存储控制器的内存C4通过接口总线i2与存储控制内的总线网络C7通信。存储控制器的CPU C5通过接口总线i3与总线网络C7通信。存储控制器通过主机接口逻辑C6连接到主机,而主机接口逻辑C6通过接口总线i4与总线网络C7通信。
应答消息发送逻辑C8(RM_TX_Logic)和应答描述符发送逻辑C9是本发明实现示意的主要组件,共同组成完整的实现示例。
所述应答消息发送逻辑C8(RM_TX_Logic)还包括应答消息描述符FIFO C8.2(RMD_FIFO),用于接收携带有本地应答消息帧地址的对应应答消息描述符,当存储控制器执行机构将应答消息帧在本地应答消息帧缓冲区C4.1准备好以后,将携带有此本地应答消息帧地址的对应应答消息描述符投送到RMD_FIFO C8.2中,硬件逻辑电路自动地将此本地应答消息帧发送到主机端的应答消息帧缓冲区C2、基于主机端应答消息帧的地址来重构应答消息描述符生成新的应答描述符、并将这个新生成的应答描述符写入对应的应答描述符FIFOC9.1.1.1。应答描述符硬件发送电路C9.2最终完成应答描述符发送到主机以及将中断推送到主机的任务,从而自动完成整个应答的发送任务。
应答描述符发送逻辑C9包括应答描述符FIFO RD_FIFO C9.1.1.1,用于直接接收执行机构产生的应答描述符,对于多应答中断的情况,需要使用多个RD_FIFO,每个RD_FIFO与应答中断一一对应。对应于每一个RD_FIFO,本发明使用一个DMA通道C9.2.2将本地RD_FIFO中的应答描述符批量发送到主机端对应的应答描述符投送队列RDDQ C3中,并将中断推送到主机。所有DMA通道的应答描述符和中断的发送由一个统一的DMA控制和调度逻辑电路C9.2.1根据控制逻辑C9.1.1.2(CTRL)产生的控制信息来自动管理和调度,从而使应答描述符的发送过程完全自动化。
应答消息发送逻辑C8(RM_TX_Logic)通过接口总线i5与总线网络C7通信。应答描述符发送逻辑(RD_TX_Logic)C9通过接口总线i6与总线网络C7通信。
进一步地,所述应答消息发送逻辑C8(RM_TX_Logic)还包括控制调度逻辑C8.1(CTRL&SCH),通过读接口i7读取RMD_FIFO C8.2中的应答消息描述符。
所述应答消息发送逻辑C8(RM_TX_Logic)还包括寄存器C8.3(Register),用于提供控制和状态信息,而控制调度逻辑C8.1通过控制和状态接口连线i8与寄存器C8.3通信。
所述应答消息发送逻辑C8(RM_TX_Logic)还包括DMA C8.4,用于根据控制调度逻辑C8.1的(CTRL&SCH)控制和调度,读取FRMFAQ C1中的空闲的应答消息帧地址、将应答消息帧发送到RMFB C2、发送重构的应答描述符到RD_FIFO C9.1.1.1。控制调度逻辑C8.1与DMAC8.4通过i9通信,由此控制调度逻辑可配置DMA,并控制和调度DMA读取操作并查询执行状态。
其中,控制调度逻辑C8.1还负责将应答消息帧发送到RMFB C2的控制和协调,并负责构造新的应答描述符和控制协调DMA C8.4将应答描述符发送到应答描述符FIFOC9.1.1.1(RD_FIFO)。
具体地,控制调度逻辑C8.1的功能可包括:通过接口i7读取RMD_FIFO C8.2中的应答消息描述符并解析,检测FRMFAQ C1是否有空闲的应答消息帧地址,通过接口i9配置DMAC8.4读取FRMFAQ C1中的空闲的消息帧地址,维护FRMFAQ C1的头索引Head_Index,控制和协调DMA C8.4将应答消息帧发送到RMFB C2,构造新的应答描述符和控制协调DMA C8.4将应答描述符发送到RD_FIFO C9.1.1.1。
应答描述符发送逻辑C9包括描述符发送管理模块C9.1(RD_TX_Mgm)和应答描述符发送DMA C9.2(RD_TX_DMA)。描述符发送管理模块C9.1负责接收从执行机构投送过来的应答描述符以及提供发送控制信息给C9.2。对于多应答中断的情况,描述符发送管理模块C9.1包含多个独立的子描述符发送管理模块C9.1.1,子描述符发送管理模块的数量是由应答中断的数量决定的,每个子描述符发送管理模块C9.1.1与应答中断一一对应。
子描述符发送管理模块C9.1.1还包括控制模块C9.1.1.2(CTRL),用于维护RDDQC3的尾索引Tail_Index、产生发送控制信息并提供给C9.2,包括标志位、应答描述符数目和目标地址及起始地址等信息。控制模块C9.1.1.2通过接口i10与RD_FIFO C9.1.1.1通信,获取RD_FIFO的状态信息。
子描述符发送管理模块C9.1.1还包括计时器C9.1.1.3(Timer),用于产生超时信息。C9.1.1.2与C9.1.1.3通过接口i12通信。
子描述符发送管理模块C9.1.1还包括寄存器C9.1.1.4,C9.1.1.2与C9.1.1.4通过接口i11通信;C9.1.1.3与C9.1.1.4通过接口i13通信。
应答描述符发送逻辑C9还包括应答描述符发送DMA C9.2(RD_TX_DMA),负责将RD_FIFO中汇聚的应答描述符发送到主机侧的RDDQ C3以及推送相应的中断通知主机。
应答描述符发送DMA C9.2进一步包括控制调度逻辑C9.2.1(CTRL&SCH),DMA通道发送应答描述符和响应中断受到控制调度逻辑C9.2.1的控制和调度。控制调度逻辑C9.2.1依据来自描述符发送管理模块C9.1的控制信息,控制和调度各DMA通道发送应答描述符和响应中断到主机。
应答描述符发送DMA C9.2进一步包括DMA通道C9.2.2,负责将应答描述符发送到主机。DMA通道的数量是由应答中断的数量决定的,DMA通道与应答中断一一对应,每个DMA通道负责发送依据中断索引对应的RD_FIFO中的应答描述符到主机相应的应答描述符投送队列。对于多应答中断的情况,DMA通道C9.2.2可包括多个独立的DMA通道。
控制调度逻辑C9.2.1与描述符发送管理模块C9.1通过接口i15通信,提供应答描述符的发送控制和状态信息。C9.2.1通过接口i17向C9.2.2提供控制调度信息,C9.2.2通过该接口i17向C9.2.1提供状态信息。DMA通道C9.2.2通过接口i18读取对应RD_FIFO中的应答描述符。
应答描述符发送逻辑C9还包括全局寄存器C9.3,用于提供全局的配置控制和状态信息。C9.2与C9.3通过接口i16通信。
应答消息帧的发送流程示意性示例如图6所示。应答消息帧的发送流程是图5实现示意图中的应答消息发送逻辑C8来控制协调完成的。图6应答消息帧发送流程示意图包含步骤S0-S10,具体说明如下:
步骤S0:开始;
步骤S1:对应答消息发送逻辑C8进行初始化。
初始化过程包括为应答消息发送逻辑C8的运行提供必要的初始配置信息,如将主机端的FRMFAQ C1和RMFB C2的基地址注册到寄存器C8.3中,等。
步骤S2:判断RMD_FIFO C8.2中是否存在要发送新的应答消息帧。
可由CTRL&SCH C8.1经由接口i7检测RMD_FIFO C8.2,以判断是否存在要发送新的应答消息帧,若没有,则等待;若有,则转到步骤S3开始应答消息帧的发送;
步骤S3:读取RMD_FIFO C8.2中的一条应答消息描述符并解析。
通过CTRL&SCH C8.1读取RMD_FIFO C8.2中的一条应答消息描述符并解析,获得对应的待发送的应答消息帧的地址。
步骤S4:判断主机侧的FRMFAQ C1是否有空闲的应答消息帧地址。
通过CTRL&SCH C8.1判断主机侧的FRMFAQ C1是否有空闲的应答消息帧地址FRMFA:如没有,则等待;若有,则转到S5继续应答消息帧的发送;
步骤S5:配置启动DMA读取FRMFAQ C1中的空闲地址。
CTRL&SCH C8.1配置并启动DMA C8.4,以读取FRMFAQ C1中的空闲地址;
步骤S6:判断读取空闲地址的DMA传输是否完成。
CTRL&SCH C8.1根据接口i9提供的信息,判断DMA C8.4的传输是否完成:若未完成,则等待;若完成,则转到S7继续应答消息帧的发送;
步骤S7:重构要发送的应答描述符并更新寄存器中记录的FRMFAQ Head_Index,进行应答消息帧的传递。
CTRL&SCH C8.1生成要在S9中发送的应答描述符、更新寄存器C8.3中记录的FRMFAQ Head_Index、配置启动DMA C8.4将本地应答消息帧缓冲区RMFB C4.1中的应答消息帧传递到主机RMFB C2;
步骤S8:判断应答消息帧的DMA传输是否完成。
CTRL&SCH C8.1根据接口i9提供的信息,判断DMA C8.4传输是否完成:若未完成,则等待;若完成,则转到S9以启动应答描述符的发送;
步骤S9:将所生成的应答描述符发送到本地应答描述符队列。
CTRL&SCH C8.1配置并启动DMA C8.4,将S7生成的应答描述符发送到RD_FIFOC9.1.1.1;
步骤S10:判断应答描述符的DMA传输是否完成。
CTRL&SCH C8.1根据接口i9提供的信息,判断DMA C8.4传输是否完成:若未完成,则等待;若完成,则回到S3开始下一条应答消息帧的发送。
如果没有空闲的应答消息帧地址,则方法结束。
从图6可以看出,一旦初始化完成,应答消息帧的发送不再需要CPU介入,应答消息发送逻辑C8自身就可以将应答消息帧持续发送到主机侧的应答消息帧缓冲区RMFB C2,以及将重构的应答描述符发送到本地的应答描述符FIFO C9.1.1.1(RD_FIFO)中。
对于应答描述符,其发送流程示例如图7所示,应答描述符的发送是图5实现示意图中的应答描述符发送逻辑C9来控制协调完成的。图7的应答描述符发送流程示意图包含步骤S0-S7,各步骤详细说明如下:
步骤S0:开始;
步骤S1:对应答描述符发送逻辑进行初始化。
初始化过程包括为应答描述符发送逻辑C9的运行提供必要的初始配置信息,如将主机端的RDDQ C3的基地址注册到寄存器C9.1.1.4中、配置每个RD_FIFO的发送阈值、计时器超时值等。
步骤S2:判断是否存在满足发送条件的DMA通道。
可由CTRL&SCH C9.2.1从多个DMA通道中轮询是否有满足发送条件的DMA通道,所述发送条件可包括:
a)对应的RD_FIFO C9.1.1.1中含有的应答描述符数量超过预设阈值且主机端的对应RDDQ C3的空闲槽位数量大于所述应答描述符队列的应答描述符数量;或
b)对应的计时器C9.1.1.3超时、RD_FIFO C9.1.1.1有待发送的应答描述符且主机端的对应RDDQ C3的空闲槽位数量大于所述应答描述符队列的应答描述符数量,
若发送条件均不满足,则等待;若存在第一DMA通道满足其中任一条件,则转到步骤S3;
步骤S3:暂停所述第一DMA通道的计时器,将第一DMA通道的RD_FIFO中的应答描述符发送到应答描述符投送队列。
将满足发送条件的所述第一DMA通道记为DMA Channel X,DMA Channel X对应的C9.1.1.3Timer可记为Timer X、对应的RD_FIFO为RD_FIFO X、对应的RDDQ为RDDQ X、对应的CTRL为CTRL X,则CTRL&SCH C9.2.1通过CTRL X暂停Timer X、CTRL&SCH C9.2.1配置DMAChannel X发送RD_FIFO X中的应答描述符到RDDQ X。
步骤S4:判断应答描述符在所述第一DMA通道的传输是否完成。
CTRL&SCH C9.2.1通过接口i17提供的状态信息判断DMA Channel X发送应答描述符是否完成:若未完成,则等待;若完成,则转到S5,启动应答中断IRQ_X的发送。
步骤S5:将应答中断发送到主机。
CTRL&SCH C9.2.1配置DMA Channel X以发送IRQ_X,通知主机端的C0 CPU。
步骤S6:判断应答中断在第一DMA通道的传输是否完成。
CTRL&SCH C9.2.1通过接口i17提供的状态信息判断DMA Channel X发送应答中断IRQ_X的过程是否完成:若未完成,则等待;若完成,则转到S7。
步骤S7:更新对应于第一DMA通道的应答描述符投送队列的尾索引。
CTRL&SCH C9.2.1通知CTRL X更新对应于RDDQ X的TailIndex寄存器,重载并启动Timer X。
在步骤S7执行完成后,返回S2继续重复应答描述符的发送流程,使应答描述符的发送过程完全自动化,直到所有应答描述符被发送完成。
根据图7的流程,一旦初始化完成,应答描述符的发送不再需要CPU介入,应答描述符发送逻辑C9可将应答描述符持续发送到主机侧的应答描述符队列RDDQ C3,以及发送相应的中断到主机。
可以看出,本发明提出的发送存储控制器应答的方法,对于需要发送应答消息的应答(特别是非I/O Success Reply),执行机构只要将应答消息帧事先在本地消息缓冲区中保存,并将相应应答消息描述符写入本地应答消息描述符队列,对于不需要发送应答消息帧的应答(包括I/O Success Reply),执行机构只要将应答描述符写入相应的本地应答描述符队列中,硬件电路本身就可以完成一系列控制、调度、主机通信、描述符重构等操作,由此将应答完整地发送到主机,整个发送过程完全自动化,无需CPU的介入,使CPU的负载减轻,可以更快、更专注于数据的传输、控制以及其他业务,从而提升了整个存储系统的性能和用户体验。
本领域技术人员可以理解,上述实施例中描述的存储控制器的内部结构和方法流程仅为举例说明。本领域技术人员可以根据需要而调整存储控制器的内部结构以包括更多或更少的组件,或改变上述方法流程的个别步骤的参数或顺序。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种存储控制器应答发送方法,用于存储控制器将应答发送至主机中,其特征在于,包括:
判断所述应答是否包含应答消息帧;
若所述应答包含应答消息帧,则
将本地预先准备好的携带有本地应答消息帧地址的对应应答消息描述符投送到本地应答消息符队列,所述应答消息描述符中所携带的本地应答消息帧地址是对应的应答消息帧所在的本地地址;
利用所述存储控制器的应答消息发送逻辑电路实现应答消息帧的发送和应答描述符的重构;
所述利用应答消息发送逻辑电路实现应答消息帧的发送和应答描述符的重构,进一步包括:
由所述应答消息发送逻辑电路自动将对应的本地应答消息帧发送到主机端的应答消息帧缓冲区,基于主机端应答消息帧的地址来重构应答描述符,以及将所重构的应答描述符写入本地应答描述符队列。
2.根据权利要求1所述的存储控制器应答发送方法,其特征在于,所述将所重构的应答描述符写入本地应答描述符队列之后,还包括:将重构的应答描述符发送至主机以及将中断推送到主机。
3.根据权利要求1所述的存储控制器应答发送方法,其特征在于,在将在本地内存中预先准备好的应答消息描述符投送到本地应答消息符队列之前,还包括:
判断主机侧的空闲应答消息帧地址队列是否有空闲的应答消息帧地址,如果有,则配置启动DMA读取所述空闲应答消息帧地址队列中的空闲地址。
4.根据权利要求1所述的存储控制器应答发送方法,其特征在于,所述应答消息发送逻辑电路包括寄存器,用于提供控制和状态信息,所述重构应答描述符之后,方法还包括:
更新所述寄存器中记录的空闲应答消息帧地址队列的头索引。
5.根据权利要求1所述的存储控制器应答发送方法,其特征在于,还包括:
若所述应答不包含应答消息帧,则
通过应答描述符发送DMA将存储控制器的应答描述符队列中的应答描述符发送到主机端对应的应答描述符投送队列,并将中断推送到主机。
6.根据权利要求5所述的存储控制器应答发送方法,其特征在于,如果存在多个应答中断,则使用多个应答描述符队列和多通道DMA来发送应答描述符,其中每个应答描述符队列、DMA通道以及应答中断一一对应。
7.根据权利要求6所述的存储控制器应答发送方法,其特征在于,其中所述存储控制器包括DMA控制和调度逻辑电路,用于根据每个应答描述符队列的发送控制信息来自动管理和调度每个所述DMA通道的应答描述符和应答中断的发送。
8.根据权利要求6所述的存储控制器应答发送方法,其特征在于,所述方法进一步包括:
在多个DMA通道中轮询是否存在满足发送条件的DMA通道。
9.根据权利要求8所述的存储控制器应答发送方法,其特征在于,所述发送条件包括:
DMA通道对应的应答描述符队列中含有的应答描述符数量超过预设阈值且主机端对应的应答描述符投送队列的空闲槽位数量大于所述应答描述符队列的应答描述符数量;或
DMA通道对应的计时器超时,应答描述符队列中存在待发送的应答描述符,且主机端对应的应答描述符投送队列的空闲槽位数量大于所述应答描述符队列的应答描述符数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110094158.XA CN112835823B (zh) | 2021-01-25 | 2021-01-25 | 存储控制器应答发送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110094158.XA CN112835823B (zh) | 2021-01-25 | 2021-01-25 | 存储控制器应答发送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835823A CN112835823A (zh) | 2021-05-25 |
CN112835823B true CN112835823B (zh) | 2022-03-01 |
Family
ID=75931330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110094158.XA Active CN112835823B (zh) | 2021-01-25 | 2021-01-25 | 存储控制器应答发送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835823B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102065568A (zh) * | 2009-11-17 | 2011-05-18 | 中国科学院微电子研究所 | 基于数据描述符的mac软硬件交互方法及其硬件实现装置 |
CN105512005A (zh) * | 2015-12-12 | 2016-04-20 | 中国航空工业集团公司西安航空计算技术研究所 | 控制/远程节点与总线监控节点同步工作的电路及方法 |
CN108199941A (zh) * | 2017-12-29 | 2018-06-22 | 北京纳米维景科技有限公司 | 一种基于can2.0b的can总线通信方法 |
CN108595351A (zh) * | 2018-05-11 | 2018-09-28 | 湖南华芯通网络科技有限公司 | 一种面向网络转发处理的dma发送控制方法 |
CN109558344A (zh) * | 2018-12-03 | 2019-04-02 | 郑州云海信息技术有限公司 | 一种适用于网络传输的dma传输方法及dma控制器 |
CN112130752A (zh) * | 2019-06-24 | 2020-12-25 | 英特尔公司 | 共享本地存储器读取合并和多播返回 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100958685B1 (ko) * | 2005-04-01 | 2010-05-20 | 후지쯔 가부시끼가이샤 | Dma 컨트롤러, 노드, 데이터 전송 제어 방법 및 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 |
EP3539293A1 (en) * | 2016-11-09 | 2019-09-18 | Renesas Electronics Corporation | Communications network controller module |
US10657084B1 (en) * | 2018-11-07 | 2020-05-19 | Xilinx, Inc. | Interrupt moderation and aggregation circuitry |
CN109766296A (zh) * | 2019-01-08 | 2019-05-17 | 郑州云海信息技术有限公司 | 一种数据处理方法、装置、系统和dma控制器 |
-
2021
- 2021-01-25 CN CN202110094158.XA patent/CN112835823B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102065568A (zh) * | 2009-11-17 | 2011-05-18 | 中国科学院微电子研究所 | 基于数据描述符的mac软硬件交互方法及其硬件实现装置 |
CN105512005A (zh) * | 2015-12-12 | 2016-04-20 | 中国航空工业集团公司西安航空计算技术研究所 | 控制/远程节点与总线监控节点同步工作的电路及方法 |
CN108199941A (zh) * | 2017-12-29 | 2018-06-22 | 北京纳米维景科技有限公司 | 一种基于can2.0b的can总线通信方法 |
CN108595351A (zh) * | 2018-05-11 | 2018-09-28 | 湖南华芯通网络科技有限公司 | 一种面向网络转发处理的dma发送控制方法 |
CN109558344A (zh) * | 2018-12-03 | 2019-04-02 | 郑州云海信息技术有限公司 | 一种适用于网络传输的dma传输方法及dma控制器 |
CN112130752A (zh) * | 2019-06-24 | 2020-12-25 | 英特尔公司 | 共享本地存储器读取合并和多播返回 |
Also Published As
Publication number | Publication date |
---|---|
CN112835823A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0365731B1 (en) | Method and apparatus for transferring messages between source and destination users through a shared memory | |
US7124207B1 (en) | I2O command and status batching | |
US9703595B2 (en) | Multi-core system with central transaction control | |
US5073852A (en) | Network protocol translator including method and apparatus for reducing interprocess communication and data exchange overhead | |
JPH03130863A (ja) | 制御要素転送システム | |
JPS58501065A (ja) | パケツト音声統合交換のための処理設備 | |
CN112039722B (zh) | 一种mqtt协议仿真方法及仿真设备 | |
JPH0824320B2 (ja) | 通信制御装置における緩衝域連鎖の方法およびその装置 | |
CN111538694B (zh) | 一种用于网络接口支持多链接和重传的数据缓存方法 | |
CN105141603A (zh) | 通信数据传输方法及系统 | |
US10305772B2 (en) | Using a single work item to send multiple messages | |
CN113079113B (zh) | 数据传输装置和数据传输系统 | |
CN112291336B (zh) | 一种arinc429网卡的多通道并行数据加载方法 | |
CN112835823B (zh) | 存储控制器应答发送方法 | |
CN109062857A (zh) | 一种能高速实现多处理器间通信的新型消息控制器及其通信方法 | |
CN114077562A (zh) | 一种1553b总线控制器协议处理ip核 | |
CN116346959A (zh) | 一种dpu场景弹性网卡高效实现方法及装置 | |
CN113553279B (zh) | 一种rdma通信加速集合通信的方法及系统 | |
CN112491620B (zh) | 一种基于srio的多通道数据传输控制器及调整方法 | |
JP3713977B2 (ja) | リアルタイム分散システム | |
CN112559404A (zh) | 一种数据调度装置、方法和加速处理芯片 | |
CN113518082B (zh) | 一种消息处理方法、电子设备及存储介质 | |
US12019909B2 (en) | IO request pipeline processing device, method and system, and storage medium | |
US20230393782A1 (en) | Io request pipeline processing device, method and system, and storage medium | |
CN114390067B (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 |