CN115168081B - 转换电路和报文转换方法 - Google Patents

转换电路和报文转换方法 Download PDF

Info

Publication number
CN115168081B
CN115168081B CN202211095226.5A CN202211095226A CN115168081B CN 115168081 B CN115168081 B CN 115168081B CN 202211095226 A CN202211095226 A CN 202211095226A CN 115168081 B CN115168081 B CN 115168081B
Authority
CN
China
Prior art keywords
queue
message
channel
state
conversion circuit
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
Application number
CN202211095226.5A
Other languages
English (en)
Other versions
CN115168081A (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.)
Jingxin Microelectronics Technology Tianjin Co Ltd
Original Assignee
Jingxin Microelectronics Technology Tianjin 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 Jingxin Microelectronics Technology Tianjin Co Ltd filed Critical Jingxin Microelectronics Technology Tianjin Co Ltd
Priority to CN202211095226.5A priority Critical patent/CN115168081B/zh
Publication of CN115168081A publication Critical patent/CN115168081A/zh
Application granted granted Critical
Publication of CN115168081B publication Critical patent/CN115168081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

本公开提出了一种转换电路和报文转换方法。本公开通过在转换电路设置多个寄存器组来对应管理多个通道队列,且寄存器组接受接收端设备的处理器的配置,且设置响应报文机制,取得了占用逻辑资源少,通道队列的数量及状态可以灵活配置,转换效率高,PCIe接收端可以控制DOORBELL传递的进程,SRIO发送端可以确定PCIe接收端接收状态等优点。

Description

转换电路和报文转换方法
技术领域
本公开涉及信息技术领域,具体涉及一种转换电路和报文转换方法。
背景技术
PCIe(PCI-Express,高速串行计算机扩展总线标准)总线主要应用于处理器系统中,用于设备与CPU(central processing unit,中央处理器)数据传输,具有高带宽,抗干扰性强的特点;PCIe MWR(Memory Write,写内存)报文为Posted Request(推送请求)包,即不需要完成(Complete)包响应的应答,无需等待时间从而获得较高的总线效率。
SRIO(Serial RapidIO,序列快速输入输出)总线是一种高性能、低引脚数、基于数据包交换的互联体系架构,主要应用于嵌入式系统内部互联中,支持芯片到芯片、板到板间的互联通讯可作为嵌入式设备的背板(Backplane)连接。SRIO DOOEBELL(门铃)是一种基于端口的轻量级事务,仅携带16bit DOOEBELL INFO(信息),可用于带内(in-band)中断,主要用于设备间的快速消息传递,一个完整的DOORBELL消息操作由DOORBELL事务和RESPONSE(响应)事务组成,RESPONSE响应包含DONE(完成)、RETRY(重试)、ERROR(错误)三种状态。
现有PCIe和SRIO数据转换设计中,在SRIO向PCIe传递消息设计时,采用单一或者一对一的设计进行DOORBELL消息的传递,当有多个通道的数据,采用多个DOORBELL模块进行处理,占用较多的逻辑资源,且SRIO消息发送端无法确定PCIe接收端接收状态,PCIe端也无法控制DOORBELL传递的进程。
发明内容
本公开提出了一种转换电路和报文转换方法。
本公开能够应用于PCIe与SRIO数据转换场景,可以实现SRIO DOORBELL报文转换为PCIe MWR报文,完成SRIO DOORBELL快速通知类消息向PCIe MWR报文的转换传递。
第一方面,本公开提供一种转换电路,应用于报文转换系统,所述系统包括发送端设备、接收端设备和所述转换电路,所述接收端设备包括处理器和内存,所述内存中形成有多个环形缓存队列,所述转换电路包括队列维护单元、转换发送单元和响应处理单元,所述转换发送单元包括包含匹配通道信息的本地输入共享缓存队列,所述响应处理单元包括至少一个本地输出缓存队列,所述队列维护单元包括多个寄存器组;其中,多个所述环形缓存队列和所述本地输入共享缓存队列构成多个通道队列,多个所述寄存器组一一对应管理多个所述通道队列;所述转换发送单元被配置成:响应于接收到来自于所述发送端设备的第一报文,根据所述寄存器组确定所述通道队列的状态,将所述第一报文与处于运行状态的至少一个所述通道队列进行匹配,匹配成功后获得目的通道队列(即匹配成功的通道队列)的通道信息,目的通道队列包括目的输入共享缓存队列(即匹配成功的本地输入共享缓存队列)和目的环形缓存队列(就匹配成功的本地输出缓存队列),将所述第一报文与相关的通道信息(即目的通道队列的通道信息)一起送入匹配到的目的输入共享缓存队列中,并根据所述通道信息将所述第一报文转换为第二报文,向匹配到的目的环形缓存队列发送;所述响应处理单元被配置成:根据所述第一报文匹配到所述通道队列的情况,生成对应的响应报文,将生成的所述响应报文送入所述本地输出缓存队列,向所述发送端设备发送;所述队列维护单元被配置成:接受所述处理器针对所述寄存器组的更新配置操作,所述更新配置操作是所述处理器从所述目的环形缓存队列中获取所述第二报文后,根据所述目的环形缓存队列当前的状态做出的。
在一些可选的实施方式中,所述队列维护单元进一步被配置成:接受所述处理器针对至少一个所述寄存器组的初始配置操作,使得至少一个所述通道队列完成信息配置和初始化,初始化后的至少一个所述通道队列进入运行状态。
在一些可选的实施方式中,所述寄存器组包括多个寄存器,多个所述寄存器分别对应于队列分类、队列空间、队列地址、队列读指针、队列写指针、队列控制及队列状态;其中,对应于队列写指针和队列状态的寄存器接受所述转换电路的配置;对应于队列分类、队列空间、队列地址、队列读指针和队列控制的寄存器接受所述处理器的配置。
在一些可选的实施方式中,所述转换发送单元进一步被配置成:确认匹配成功的目的通道队列,所述目的通道队列包括目的输入共享缓存队列和目的环形缓存队列;在所述目的通道队列对应的寄存器组指示所述目的环形缓存队列为正常运行状态时,将所述第一报文与相关通道信息一起送入所述目的输入共享缓存队列;在所述目的通道队列对应的寄存器组指示所述目的环形缓存队列为满状态时,丢弃所述第一报文;以及,在所述目的通道队列对应的寄存器组指示所述目的通道队列为挂起状态时,丢弃所述第一报文。
在一些可选的实施方式中,所述响应处理单元进一步被配置成:若所述第一报文匹配成功到任一个所述通道队列且完成转换且转换后的所述第二报文发送至所述目的环形缓存队列,则生成表示完成状态的第一响应报文;若所述第一报文未匹配到任一个所述通道队列,或者,匹配到的所述目的通道队列没有处于运行状态,或者匹配到的所述目的通道队列为挂起状态,则生成表示错误状态的第二响应报文;若所述第一报文匹配到的所述目的环形缓存队列为满状态,则生成表示重试的第三响应报文。
第二方面,本公开提供一种报文转换方法,用于报文转换系统,所述系统包括发送端设备、接收端设备和转换电路,所述接收端设备包括处理器和内存,所述内存中形成有多个环形缓存队列,所述转换电路中形成有包含匹配通道信息的本地输入共享缓存队列和多个寄存器组以及至少一个本地输出缓存队列,多个所述环形缓存队列和所述本地输入共享缓存队列构成多个通道队列,多个所述寄存器组一一对应管理多个所述通道队列;所述方法包括:所述转换电路响应于接收到来自于所述发送端设备的第一报文,根据所述寄存器组确定所述通道队列的状态,将所述第一报文与处于运行状态的至少一个所述通道队列进行匹配,匹配成功后将所述第一报文与相关通道信息一起送入匹配到的目的输入共享缓存队列中,并根据通道信息将所述第一报文转换为第二报文,向匹配到的目的环形缓存队列发送;所述转换电路根据所述第一报文匹配到所述通道队列的情况,生成对应的响应报文,将生成的所述响应报文送入所述本地输出缓存队列,向所述发送端设备发送;所述转换电路接受所述处理器针对所述寄存器组的更新配置操作,所述更新配置操作是所述处理器从所述目的环形缓存队列中获取所述第二报文后,根据所述目的环形缓存队列当前的状态做出的。
在一些可选的实施方式中,在所述转换电路响应于接收到来自于发送端设备的第一报文之前,还包括:所述转换电路接受所述处理器针对至少一个所述寄存器组的初始配置操作,使得至少一个所述通道队列完成信息配置和初始化,初始化后的至少一个所述通道队列进入运行状态。
在一些可选的实施方式中,所述寄存器组包括多个寄存器,多个所述寄存器分别对应于队列分类、队列空间、队列地址、队列读指针、队列写指针、队列控制及队列状态;其中,对应于队列写指针和队列状态的寄存器接受所述转换电路的配置;对应于队列分类、队列空间、队列地址、队列读指针和队列控制的寄存器接受所述处理器的配置。
在一些可选的实施方式中,所述匹配成功后将所述第一报文送入匹配到的目的输入共享缓存队列中包括:确认匹配成功的目的通道队列,所述目的通道队列包括目的输入共享缓存队列和目的环形缓存队列;在所述目的通道队列对应的寄存器组指示所述目的环形缓存队列为正常运行状态时,将所述第一报文与相关通道信息一起送入所述目的输入共享缓存队列;在所述目的通道队列对应的寄存器组指示所述目的环形缓存队列为满状态时,丢弃所述第一报文;以及,在所述目的通道队列对应的寄存器组指示所述目的通道队列为挂起状态时,丢弃所述第一报文。
在一些可选的实施方式中,所述转换电路根据所述第一报文匹配到所述通道队列的情况,生成对应的响应报文包括:若所述第一报文匹配成功到任一个所述通道队列且完成转换且转换后的所述第二报文发送至所述目的环形缓存队列,则生成表示完成状态的第一响应报文;若所述第一报文未匹配到任一个所述通道队列,或者,匹配到的所述目的通道队列没有处于运行状态,或者匹配到的所述目的通道队列为挂起状态,则生成表示错误状态的第二响应报文;若所述第一报文匹配到的所述目的环形缓存队列为满状态,则生成表示重试的第三响应报文。
为了解决PCIe和SRIO数据转换设计存在的上述缺陷,本公开提出了一种转换电路和报文转换方法。本公开通过采用上述技术方案,取得的技术效果包括但不限于:
1、通过设置多个通道队列,多个第一报文(例如DOORBELL报文)可以分别匹配不同的通道队列,统一进行本地缓存,不同通道队列互不影响,以此,转换电路的逻辑资源可以时分复用给不同的通道队列,减少了对逻辑资源的占用,不会占用成倍于单通道的逻辑资源;从而实现了在占用较小逻辑资源的情况下,完成多个通道的SRIO向PCIe的DOORBELL报文传递。
2、通过在转换电路设置多个寄存器组来对应管理多个通道队列,且寄存器组接受接收端设备的处理器的配置,使得,运行于处理器的PCIe接收端软件可以根据自身状态去配置寄存器组,灵活配置通道队列的运行数量,灵活配置通道队列的运行状态,灵活控制转换电路中第一报文的入队缓存情况以及转换成第二报文(例如MWR)并发送的情况,从而实现了对DOORBELL报文传递的进程控制;
对于不同规格的处理器及其内存,PCIe接收端软件都可以根据自身状态实现对通道队列状态的控制,从而实现对DOORBELL消息传递的进程控制;
以及,利用寄存器组配置通道队列的状态信息,实现了PCIe侧与SRIO侧相互感知操作,保证多通道的DOOEBELL向MWR的高效转换,同时,避免报文的无效传输占用总线带宽。
3、通过设置响应报文机制,转换电路可以根据第一报文匹配到通道队列的情况,生成并发送对应的响应(RESPONSE)报文给发送端设备(例如SRIO发送端设备),使得,SRIO发送端可以根据RESPONSE状态进行对应的操作,实现SRIO发送端与PCIe接收端的高效消息传递。
总之,本公开可用于实现PCIe和SRIO数据转换,完成SRIO DOORBELL报文转换为PCIe MWR报文,取得了占用逻辑资源少,通道队列的数量及状态可以灵活配置,转换效率高,PCIe接收端可以控制DOORBELL传递的进程,SRIO发送端可以确定PCIe接收端接收状态等优点。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
图1是根据本公开一实施例的的报文转换方法和系统所适用的系统架构的结构框图;
图2是根据本公开一个实施例实现环形缓存队列形态的示意图;
图3是根据本公开一个实施例的报文转换方法的流程示意图;
图4是根据本公开的报文转换方法的一个具体应用场景实施例的流程图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
在本公开的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系,仅是为了便于描述本公开和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本公开的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本公开的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”等应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
在本公开的描述中,需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开提出一种转换电路和报文转换方法,用于实现PCIe和SRIO数据转换中SRIODOORBELL报文转换为PCIe MWR报文。本公开的主要目是,在占用较小的逻辑资源的情况下,实现多个通道的SRIO向PCIe的DOORBELL消息传递;以及,针对不同规格的处理器及其内存设备,PCIe接收端可以根据自身状态实现对接收缓存大小、接收缓存地址、接收状态配置,从而实现对DOORBELL消息传递的进程控制;以及,SRIO发送端可以获取RESPONSE状态,根据RESPONSE状态进行对应的操作,实现SRIO发送端与PCIe接收端的高效消息传递。
参考图1,图1是根据本公开一个实施例的转换电路和报文转换方法所适用的报文转换系统的系统架构的结构框图。如图1所示,报文转换系统包括:发送端设备11、转换电路12和接收端设备13,接收端设备13包括处理器和内存。示例性的,发送端设备11可以是SRIO端点设备(即SRIO发送端),接收端设备13可以是PCIe设备(即PCIe接收端)。转换电路12部署于SRIO发送端和PCIe接收端之间,可以用来将发送端设备11发出的SRIO DOORBELL报文转换为PCIe MWR报文提供给接收端设备13。
参考图1,本公开一个实施例提供一种转换电路12,该转换电路12应用于如上所述的报文转换系统,该系统还包括发送端设备11和接收端设备13,接收端设备13包括处理器和内存,内存中形成有多个环形缓存队列。转换电路12可包括报文转换引擎。报文转换引擎中可包括:队列维护单元121、转换发送单元122和响应处理单元123,其中,转换发送单元122包括包含匹配通道信息的本地输入共享缓存队列、队列分类匹配模块、状态机(Finite-state machine,FSM)模块和转换报文生成模块,响应处理单元123包括至少一个本地输出缓存队列和响应报文生成模块,队列维护单元121中包括多个寄存器组。其中,多个环形缓存队列和本地输入共享缓存队列构成多个通道队列,多个寄存器组一一对应管理多个通道队列,多个寄存器组可以接受接收端设备13的处理器的配置以及转换电路12的配置。
这里,转换发送单元122被配置成:响应于接收到来自于发送端设备的第一报文,根据寄存器组确定通道队列的状态,将第一报文与处于运行状态的至少一个通道队列进行匹配,匹配成功后将第一报文与相关通道信息一起送入目的输入共享缓存队列中,并根据通道信息将第一报文转换为第二报文,向匹配到的目的环形缓存队列发送;
响应处理单元123被配置成:根据第一报文匹配到通道队列的情况,生成对应的响应报文,将生成的响应报文送入本地输出缓存队列,向发送端设备发送;
队列维护单元121被配置成:接受处理器针对寄存器组的更新配置操作,该更新配置操作是处理器从目的环形缓存队列中获取第二报文后,根据目的环形缓存队列当前的状态做出的。
本公开的转换电路12适用于报文的转换及发送,示例性的,适用于实现PCIe和SRIO数据转换中SRIO DOORBELL报文转换为PCIe MWR报文,即,第一报文可以是SRIODOORBELL报文,第二报文可以是PCIe MWR报文。
在一些可选的实施方式中,队列维护单元121进一步被配置成:接受处理器针对至少一个寄存器组的初始配置操作,使得至少一个通道队列完成信息配置和初始化,初始化后的至少一个通道队列进入运行状态。
在一些可选的实施方式中,转换电路12还包括:SRIO控制器和PCIe控制器。SRIO控制器用于连接发送端设备11例如SRIO发送端,被配置成接收来自于SRIO端点设备的第一报文,即SRIO DOORBELL报文,发送给报文转换引擎;以及,将报文转换引擎生成的存储在本地输出缓存队列中的响应报文发送给发送端设备11。PCIe控制器用于连接接收端设备13例如PCIe接收端,被配置成将报文转换引擎转换得到的第二报文,即PCIe MWR报文,写入接收端设备13的内存的环形缓存队列中。
示例性的,本公开的转换电路12,包括可以实现例如8个通道的SRIO DOORBELL向PCIe MWR的报文转换引擎,该转换引擎可以将SRIO输入的DOORBELL报文转换为MWR报文并且写入到PCIe侧的对应的多个环形缓存队列中。其中,环形缓存队列的写入操作可以由硬件(即转换电路12)完成,读取操作可以由处理器(或者说处理器中运行的驱动软件)执行,以此完成DOORBELL报文高效传递。
在一些可选的实施方式中,转换电路12例如可以由FPGA(Field ProgrammableGate Array,现场可编程逻辑门阵列)芯片或其它芯片来实现。
参考图2,图2是根据本公开一个实施例实现环形缓存队列形态的示意图。环形缓存通常有一个读指针(RDPTR)、一个写指针(WRPTR)和一个基(Base)地址,读指针指向环形缓存中可读的数据,写指针指向环形缓存中可写的缓冲区。通过移动读指针和写指针就可以实现环形缓存的数据读取和写入。
本公开可以实现由软硬件共同维护管理通道队列功能,即,由转换电路和处理器共同维护管理通道队列,其中,可以由处理器中运行的软件控制通道队列的队列信息及进程,由转换电路根据通过队列状态实现报文数据的入队管理。在具体实现上,由硬件即转换电路12实现多个寄存器组,每个寄存器组对应一个通道队列,每个寄存器组包括多个寄存器,多个寄存器分别对应于队列分类、队列空间、队列地址、队列读指针、队列写指针、队列控制及队列状态等,由硬件与软件共同维护上述寄存器信息。其中,对应于队列分类、队列空间、队列地址、队列读指针、队列控制的寄存器均接受处理器的配置,它们的维护由处理器(或者说处理器中运行的驱动软件)单独进行;对应于队列写指针与队列状态的寄存器则接受硬件即转换电路12的配置,它们的维护由转换电路12进行。
转换电路12的工作流程如下:
由PCIe侧处理器(其中运行的驱动软件)配置至少一个寄存器组,即:通过对队列地址、队列空间、队列分类等涉及队列信息的寄存器进行配置完成队列准备,配置队列控制寄存器完成队列初始化,准备就绪后,配置队列读指针启动队列,以此完成至少一个通道队列的信息配置和初始化,初始化后的至少一个通道队列进入运行状态。
转换电路12通过寄存器组获知当前通道队列的状态后,写入数据到队列状态寄存器,指示通道队列当前为运行状态,可正常接收报文。
转换电路12响应于接收到来自于发送端设备的第一报文(以DOORBELL报文为例),将接收到报文匹配到任一正常运行的通道队列,匹配成功后,确认匹配成功的目的通道队列,目的通道队列包括目的输入共享缓存队列(即本地的DOORBELL缓存)和目的环形缓存队列;将该第一报文与相关通道信息一起送入本地的目的输入共享缓存队列中。
转换电路12的转换报文生成模块,根据状态机模块的控制,从目的输出缓存队列中获取第一报文并完成向第二报文(以MWR报文为例)的转换,经统一调度后完成转换的第二报文向内存中的目的环形缓存队列的发送。
在一些可选的实施方式中,根据匹配的目的通道队列的状态,转换电路对于第一报文的处理有几种方式:
(1)环形缓存队列为正常运行状态,且为非满状态,即队列写指针与队列读指针相差大于1时,将接收的第一报文与相关通道信息一起送入目的输入共享缓存队列;
(2)环形缓存队列为满状态,即队列写指针与队列读指针相差为1时,由于当前工作队列进入满状态后无法接收报文,则后续进入的第一报文都将被转换电路的队列分类匹配模块丢弃;直至处理器重新更新队列读指针,使得队列写指针与队列读指针相差大于1时,队列即恢复运行状态可正常接收并转换报文;
(3)为了根据PCIe接收端缓存及处理进程等状态,更加灵活调整队列状态,本公开中通道队列支持挂起和恢复功能,当处理器中运行的软件配置队列状态寄存器为挂起时,当前通道队列进入挂起状态,此后匹配该通道队列的第一报文都将被丢弃;若处理器中运行的软件需要该通道队列恢复运行状态时,只需重新配置当前队列的读指针,由转换电路完成本通道队列运行状态的更新即可恢复通道队列正常接收转换报文。
在一些可选的实施方式中,转换电路12在进行报文转换流程的同时,可以根据队列状态完成响应(RESPONSE)报文的组包生成及发送。其中,当第一报文正常完成队列匹配时,将生成DONE(完成)状态的RESPONSE报文;当第一报文未能匹配到任何通道队列,或者匹配到未初始化完成、没有处于运行状态的通道队列,或者匹配到一个正在挂起状态的通道队列时,将生成ERROR(错误)状态的RESPONSE报文;当第一报文匹配到的目的通道队列对应的目的环形缓存队列进入满状态时,将生成RETRY(重试)状态的RESPONSE报文。生成的各种状态的RESPONSE报文都将进入本地输出缓存队列(即RESPONSE缓存),经统一调度后完成RESPONSE报文向发送端设备的发送。
以上,对本公开的一种应用于报文转换系统的转换电路进行了说明。本公开与现有的方案主要区别点包括:在接收端设备的内存中建立多个环形缓存队列,在转换电路中建立包含匹配通道信息的本地输入共享缓存队列组成多个通道队列,在转换电路中建立多个寄存器组,由软硬件(即转换电路和处理器中运行的软件)共同维护寄存器组,来管理多个通道队列的状态,以此完成多通道的第一报文(例如DOORBELL报文)向第二报文(例如MWR报文)的转换,转换电路的逻辑资源可以时分复用给不同的通道队列,避免多个通道报文转换时需要例化多个模块,减小了资源占用;同时,利用软硬件系统配合,灵活的配置通道队列的状态,实现了接收端设备对DOORBELL报文传递的进程控制;以及,通过设置响应报文机制,使得,SRIO发送端可以根据RESPONSE状态进行对应的操作;最终实现了SRIO发送端与PCIe接收端的高效传递DOORBELL报文的目标。
请参考图3,图3是根据本公开一个实施例的报文转换方法的流程示意图。本公开的报文转换方法用于如上文的报文转换系统,该报文转换系统包括发送端设备、接收端设备和转换电路,接收端设备包括处理器和内存,内存中形成有多个环形缓存队列,转换电路中形成有输入共享缓存队列和多个寄存器组以及至少一个本地输出缓存队列,多个环形缓存队列和包含匹配通道信息的本地输入共享缓存队列构成多个通道队列,多个寄存器组一一对应管理多个通道队列,寄存器组接受处理器的配置。
如图3所示,本公开的报文转换方法包括:
步骤301、转换电路响应于接收到来自于发送端设备的第一报文,根据寄存器组确定通道队列的状态,将第一报文与处于运行状态的至少一个通道队列进行匹配,匹配成功后将第一报文与相关通道信息一起送入目的输入共享缓存队列中,并根据通道信息将第一报文转换为第二报文,向匹配到的目的环形缓存队列发送;
步骤302、转换电路根据第一报文匹配到通道队列的情况,生成对应的响应报文,将生成的响应报文送入本地输出缓存队列,向发送端设备发送;
步骤303、转换电路接受处理器针对寄存器组的更新配置操作,更新配置操作是处理器从目的环形缓存队列中获取第二报文后,根据目的环形缓存队列当前的状态做出的。
在一些可选的实施方式中,在步骤301中的转换电路响应于接收到来自于发送端设备的第一报文之前,还包括:转换电路接受处理器针对至少一个寄存器组的初始配置操作,使得至少一个通道队列完成信息配置和初始化,初始化后的至少一个通道队列进入运行状态。
在一些可选的实施方式中,寄存器组包括多个寄存器,多个寄存器分别对应于队列分类、队列空间、队列地址、队列读指针、队列写指针、队列控制及队列状态;其中,对应于队列写指针和队列状态的寄存器接受转换电路的配置;对应于队列分类、队列空间、队列地址、队列读指针和队列控制的寄存器接受处理器的配置。
在一些可选的实施方式中,步骤301中的匹配成功后将第一报文与相关通道信息一起送入匹配到的目的输入共享缓存队列中包括:
确认匹配成功的目的通道队列,目的通道队列包括目的输入共享缓存队列和目的环形缓存队列;
在目的通道队列对应的寄存器组指示目的环形缓存队列为正常运行状态时,将第一报文与相关通道信息一起送入目的输入共享缓存队列;
在目的通道队列对应的寄存器组指示目的环形缓存队列为满状态时,丢弃第一报文;以及,
在目的通道队列对应的寄存器组指示目的通道队列为挂起状态时,丢弃第一报文。
在一些可选的实施方式中,步骤301中的转换电路根据第一报文匹配到通道队列的情况,生成对应的响应报文包括:
若所述第一报文匹配成功到任一个所述通道队列且完成转换且转换后的所述第二报文发送至所述目的环形缓存队列,则生成表示完成状态的第一响应报文;
若第一报文未匹配到任一个通道队列,或者,匹配到的目的通道队列没有处于运行状态,或者匹配到的目的通道队列为挂起状态,则生成表示错误状态的第二响应报文;
若第一报文匹配到的目的环形缓存队列为存满状态,则生成表示重试的第三响应报文。
参考图4,图4是根据本公开的报文转换方法的一个具体应用场景实施例的流程图,包括如下步骤:
步骤401、首先PCIE侧的处理器通过配置寄存器组,完成至少一个通道队列的信息配置及初始化,初始化完成之后的通道队列进入运行状态,等待SRIO侧的DOORBELL报文;
步骤402、待SRIO侧DOORBELL报文送至,转换电路根据步骤401配置好的队列状态,将报文同时分配给8个通道队列进行队列分类匹配,匹配成功的DOORBELL报文将进入通道队列的本地DOORBELL缓存(即转换电路中的本地输入共享缓存队列)中;未能匹配或者匹配异常队列的DOORBELL报文将被丢弃,同时生成对应状态(ERROR/RETRY)的RESPONSE报文进入本地RESPONSE缓存(即转换电路中的本地输出缓存队列)中;
步骤403、匹配成功的DOORBELL报文存储在本地DOORBELL缓存中,在用于转换控制的状态机模块的控制下,申请报文发送仲裁,授权后将DOORBELL报文按照队列配置管理中相关信息与DOORBELL信息完成MWR组包,即转换为MMWR报文,并发送到对应的环形缓存队列,与此同时完成寄存器组中的队列写指针寄存器的更新;
步骤404、当PCIe接收端的处理器收到接收的环形缓存队列非空信息时,从对应的环形缓存队列中获取MWR报文,处理器中运行的软件根据相关队列完成对应的寄存器组的配置更新操作,至此完成一次MWR报文转换传递;
步骤405、在步骤403中对应MWR组包发送完成的同时,完成表示完成(DONE)状态下的RESPONSE报文组包,并送入本地RESPONSE缓存(即本地输出缓存队列)中,与步骤402生成的异常状态(ERROR/RETRY)下的RESPONSE在同一块本地RESPONSE缓存中统一仲裁调度后完成向发送端设备的发送,SRIO侧在收到RESPONSE报文后,完整的SRIO DOORBELL报文传递至此完成。
在一些可选的实施方式中,在步骤401中,实际工程下可以根据功能需要初始化单个或者多个通道队列,实现灵活的通道队列数量。
在一些可选的实施方式中,在步骤402/403中,不同INFO信息的DOORBELL报文匹配成功不同通道队列,统一进行本地DOORBELL缓存中,不同通道队列互不影响,逻辑资源实现分时复用。
在一些可选的实施方式中,在步骤403中,当PCIe侧某一环形缓存队列读指针由于处理器太忙未更新时,在多次正常MWR报文送达之后达到缓存满状态,报文转换引擎可根据读写指针状态指示队列满状态,将后续到达的DOORBELL报文丢弃,并回复RETEY状态的RESPOSNE报文,使SRIO发送端可实时根据队列状态来进行调整新的DOORBELL报文发送。当CPU空闲后处理完成队列中剩余的报文时,队列自动恢复正常运行状态,同时队列满状态下的DOORBELL报文不会出现丢失,一系列队列操作无需过多无效报文交互占用带宽。
在一些可选的实施方式中,在步骤403中,若处理器由于某些原因需要暂停其中一个或者多个环形缓存队列接收时,可通过控制队列状态寄存器的挂起,后续对应通道队列的DOORBELL报文都将丢弃而不会保留,同样不会因为无效报文交互占用有效带宽。
至此,完成多通道SRIODOORBELL报文转换为PCIeMWR报文。本公开的方案中,可以进行通道队列的灵活配置,队列状态的灵活控制,占用较小的本地缓存资源,实现多通道的DOORBELL报文高效转换。
以上,通过具体实施例对本公开的技术方案进行了详细说明。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种转换电路,其特征在于,应用于报文转换系统,所述系统包括发送端设备、接收端设备和所述转换电路,所述接收端设备包括处理器和内存,所述内存中形成有多个环形缓存队列,所述转换电路包括队列维护单元、转换发送单元和响应处理单元,所述转换发送单元包括包含匹配通道信息的本地输入共享缓存队列,所述响应处理单元包括至少一个本地输出缓存队列,所述队列维护单元包括多个寄存器组;其中,
多个所述环形缓存队列和所述本地输入共享缓存队列构成多个通道队列,多个所述寄存器组一一对应管理多个所述通道队列;
所述转换发送单元被配置成:响应于接收到来自于所述发送端设备的第一报文,根据所述寄存器组确定所述通道队列的状态,将所述第一报文与处于运行状态的至少一个所述通道队列进行匹配,匹配成功后将所述第一报文与相关通道信息一起送入目的输入共享缓存队列中,并根据通道信息将所述第一报文转换为第二报文,向匹配到的目的环形缓存队列发送;
所述响应处理单元被配置成:根据所述第一报文匹配到所述通道队列的情况,生成对应的响应报文,将生成的所述响应报文送入所述本地输出缓存队列,向所述发送端设备发送;
所述队列维护单元被配置成:接受所述处理器针对所述寄存器组的更新配置操作,所述更新配置操作是所述处理器从所述目的环形缓存队列中获取所述第二报文后,根据所述目的环形缓存队列当前的状态做出的。
2.根据权利要求1所述的转换电路,其特征在于,所述队列维护单元进一步被配置成:接受所述处理器针对至少一个所述寄存器组的初始配置操作,使得至少一个所述通道队列完成信息配置和初始化,初始化后的至少一个所述通道队列进入运行状态。
3.根据权利要求2所述的转换电路,其特征在于,所述寄存器组包括多个寄存器,多个所述寄存器分别对应于队列分类、队列空间、队列地址、队列读指针、队列写指针、队列控制及队列状态;其中,对应于队列写指针和队列状态的寄存器接受所述转换电路的配置;对应于队列分类、队列空间、队列地址、队列读指针和队列控制的寄存器接受所述处理器的配置。
4.根据权利要求1所述的转换电路,其特征在于,所述转换发送单元进一步被配置成:
确认匹配成功的目的通道队列,所述目的通道队列包括目的输入共享缓存队列和目的环形缓存队列;
在所述目的通道队列对应的寄存器组指示所述目的环形缓存队列为正常运行状态时,将所述第一报文与相关通道信息一起送入所述目的输入共享缓存队列;
在所述目的通道队列对应的寄存器组指示所述目的环形缓存队列为满状态时,丢弃所述第一报文;以及,
在所述目的通道队列对应的寄存器组指示所述目的通道队列为挂起状态时,丢弃所述第一报文。
5.根据权利要求4所述的转换电路,其特征在于,所述响应处理单元进一步被配置成:
若所述第一报文匹配成功到任一个所述通道队列且完成转换且转换后的所述第二报文发送至所述目的环形缓存队列,则生成表示完成状态的第一响应报文;
若所述第一报文未匹配到任一个所述通道队列,或者,匹配到的所述目的通道队列没有处于运行状态,或者匹配到的所述目的通道队列为挂起状态,则生成表示错误状态的第二响应报文;
若所述第一报文匹配到的所述目的环形缓存队列为满状态,则生成表示重试的第三响应报文。
6.一种报文转换方法,其特征在于,用于报文转换系统,所述系统包括发送端设备、接收端设备和转换电路,所述接收端设备包括处理器和内存,所述内存中形成有多个环形缓存队列,所述转换电路中形成有包含匹配通道信息的本地输入共享缓存队列和多个寄存器组以及至少一个本地输出缓存队列,多个所述环形缓存队列和所述本地输入共享缓存队列构成多个通道队列,多个所述寄存器组一一对应管理多个所述通道队列;
所述方法包括:
所述转换电路响应于接收到来自于所述发送端设备的第一报文,根据所述寄存器组确定所述通道队列的状态,将所述第一报文与处于运行状态的至少一个所述通道队列进行匹配,匹配成功后将所述第一报文与相关通道信息一起送入目的输入共享缓存队列中,并根据通道信息将所述第一报文转换为第二报文,向匹配到的目的环形缓存队列发送;
所述转换电路根据所述第一报文匹配到所述通道队列的情况,生成对应的响应报文,将生成的所述响应报文送入所述本地输出缓存队列,向所述发送端设备发送;
所述转换电路接受所述处理器针对所述寄存器组的更新配置操作,所述更新配置操作是所述处理器从所述目的环形缓存队列中获取所述第二报文后,根据所述目的环形缓存队列当前的状态做出的。
7.根据权利要求6所述的方法,其特征在于,在所述转换电路响应于接收到来自于发送端设备的第一报文之前,还包括:
所述转换电路接受所述处理器针对至少一个所述寄存器组的初始配置操作,使得至少一个所述通道队列完成信息配置和初始化,初始化后的至少一个所述通道队列进入运行状态。
8.根据权利要求7所述的方法,其特征在于,所述寄存器组包括多个寄存器,多个所述寄存器分别对应于队列分类、队列空间、队列地址、队列读指针、队列写指针、队列控制及队列状态;其中,对应于队列写指针和队列状态的寄存器接受所述转换电路的配置;对应于队列分类、队列空间、队列地址、队列读指针和队列控制的寄存器接受所述处理器的配置。
9.根据权利要求6所述的方法,其特征在于,所述匹配成功后将所述第一报文送入匹配到的目的输入共享缓存队列中包括:
确认匹配成功的目的通道队列,所述目的通道队列包括目的输入共享缓存队列和目的环形缓存队列;
在所述目的通道队列对应的寄存器组指示所述目的环形缓存队列为正常运行状态时,将所述第一报文与相关通道信息一起送入所述目的输入共享缓存队列;
在所述目的通道队列对应的寄存器组指示所述目的环形缓存队列为满状态时,丢弃所述第一报文;以及,
在所述目的通道队列对应的寄存器组指示所述目的通道队列为挂起状态时,丢弃所述第一报文。
10.根据权利要求9所述的方法,其特征在于,所述转换电路根据所述第一报文匹配到所述通道队列的情况,生成对应的响应报文包括:
若所述第一报文匹配成功到任一个所述通道队列且完成转换且转换后的所述第二报文发送至所述目的环形缓存队列,则生成表示完成状态的第一响应报文;
若所述第一报文未匹配到任一个所述通道队列,或者,匹配到的所述目的通道队列没有处于运行状态,或者匹配到的所述目的通道队列为挂起状态,则生成表示错误状态的第二响应报文;
若所述第一报文匹配到的所述目的环形缓存队列为满状态,则生成表示重试的第三响应报文。
CN202211095226.5A 2022-09-08 2022-09-08 转换电路和报文转换方法 Active CN115168081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211095226.5A CN115168081B (zh) 2022-09-08 2022-09-08 转换电路和报文转换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211095226.5A CN115168081B (zh) 2022-09-08 2022-09-08 转换电路和报文转换方法

Publications (2)

Publication Number Publication Date
CN115168081A CN115168081A (zh) 2022-10-11
CN115168081B true CN115168081B (zh) 2022-11-15

Family

ID=83482395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211095226.5A Active CN115168081B (zh) 2022-09-08 2022-09-08 转换电路和报文转换方法

Country Status (1)

Country Link
CN (1) CN115168081B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658574A (zh) * 2022-10-26 2023-01-31 杭州芯正微电子有限公司 一种基于fpga实现pcie与srio相互转换方法及现场可编程门阵列
CN115617733B (zh) * 2022-12-19 2023-02-17 井芯微电子技术(天津)有限公司 RapidIO网络报文转换方法、系统及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103401846A (zh) * 2013-07-15 2013-11-20 杭州华为数字技术有限公司 数据处理方法、协议转换设备和互联网络
CN103763204A (zh) * 2013-12-31 2014-04-30 华为技术有限公司 一种流量控制方法及装置
CN103890746A (zh) * 2012-09-28 2014-06-25 华为技术有限公司 报文发送控制方法、处理方法、设备及系统
CN112347721A (zh) * 2020-10-29 2021-02-09 北京长焜科技有限公司 基于fpga实现数据处理加速的系统及其加速方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877766B2 (en) * 2018-05-24 2020-12-29 Xilinx, Inc. Embedded scheduling of hardware resources for hardware acceleration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103890746A (zh) * 2012-09-28 2014-06-25 华为技术有限公司 报文发送控制方法、处理方法、设备及系统
CN103401846A (zh) * 2013-07-15 2013-11-20 杭州华为数字技术有限公司 数据处理方法、协议转换设备和互联网络
CN103763204A (zh) * 2013-12-31 2014-04-30 华为技术有限公司 一种流量控制方法及装置
CN112347721A (zh) * 2020-10-29 2021-02-09 北京长焜科技有限公司 基于fpga实现数据处理加速的系统及其加速方法

Also Published As

Publication number Publication date
CN115168081A (zh) 2022-10-11

Similar Documents

Publication Publication Date Title
CN115168081B (zh) 转换电路和报文转换方法
US9100349B2 (en) User selectable multiple protocol network interface device
US7669000B2 (en) Host bus adapter with multiple hosts
US5528584A (en) High performance path allocation system and method with fairness insurance mechanism for a fiber optic switch
EP0709985A2 (en) Path allocation system and method for a high performance fiber optic switch
US6240096B1 (en) Fibre channel switch employing distributed queuing
US5548590A (en) High performance frame time monitoring system and method for a fiber optic switch for a fiber optic network
US5592472A (en) High performance path allocation system and method for a fiber optic switch for a fiber optic network
JPH0695695B2 (ja) 交換システム
WO2021068978A1 (zh) 多处理器通信方法及装置
CN112073336A (zh) 基于AXI4 Stream接口协议的高性能数据交换系统及方法
US5317565A (en) Method of sequencing bus operations in a simplex switch
USRE39026E1 (en) Bus protocol
CN116821042A (zh) 基于多分区的fc设备dma通信方法
US7254139B2 (en) Data transmission system with multi-memory packet switch
US7142515B2 (en) Expandable self-route multi-memory packet switch with a configurable multicast mechanism
CN101044727B (zh) 使用直插式信用扩充器与主机总线适配器的方法及系统
US20030093603A1 (en) Apparatus and method for responding to a interruption of a packet flow to a high level data link controller in a signal processing system
EP0505781B1 (en) Multi-media serial line switching adapter for parallel networks and heterogeneous and homologous computer system
JP3360727B2 (ja) パケット転送システム及びそれを用いたパケット転送方法
CN101594291B (zh) 非阻塞式网络系统及其分组仲裁方法
KR100391712B1 (ko) 교환기의 아이피시 정합 장치
CN116827888A (zh) 一种基于交换架构的外设接口调度方法及系统
CN115827545A (zh) 增强型串行外设接口实现方法、装置、转换器件及介质
CN104216863A (zh) 多个arm间的通信电路及其通信方法

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