CN105512075A - 高速输出、输入接口电路及数据传输方法 - Google Patents
高速输出、输入接口电路及数据传输方法 Download PDFInfo
- Publication number
- CN105512075A CN105512075A CN201510870041.0A CN201510870041A CN105512075A CN 105512075 A CN105512075 A CN 105512075A CN 201510870041 A CN201510870041 A CN 201510870041A CN 105512075 A CN105512075 A CN 105512075A
- Authority
- CN
- China
- Prior art keywords
- message
- link layer
- packet
- circuit
- sent
- 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
Links
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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/324—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种高速输出、输入接口电路及数据传输方法,该高速输出、输入接口电路均设置在高速输入输出接口中,该高速输出、输入接口电路均应用于快速输入输出传输的协议栈,协议栈包括链路层、逻辑层、传输层以及物理层。高速输出接口电路中的链路层电路将链路层信息封装至数据中,封装模块对数据进一步封装,由高速输出接口将封装完成的报文发送至接收端;高速输入接口电路中的高速输入接口接收发送端发送的报文,解封装模块对该报文进行解封装,链路层电路对该报文进行链路层解封装,得到链路层信息,根据链路层信息进行报文的重组,得到完整的数据包。本实施例减少了数据包接收端和发送端的软件开销,提高处理器的处理效率。
Description
技术领域
本发明实施例涉及通信技术,尤其涉及一种高速输出、输入接口电路及数据传输方法。
背景技术
高速输入输出协议(以下简称RapidIO)是一种高性能、低引脚数、基于数据包交换的互连体系结构,是为了满足现在和未来高性能嵌入式***需求而设计的一种开放式互连技术标准。RapidIO主要应用于嵌入式***内部互连,支持芯片到芯片、板到板间的通信,可用于嵌入式设备的备板连接。
在现有技术中,通常基于RapidIO的消息传递模式进行数据传输。RapidIO的消息传递模式的报文最大支持4KB(千比特)的传输,如果一个数据包有大流量的数据需要传输,首先处理器,如中央处理单元(CPU)需要调用存储器中存储的软件将数据包按照4KB的粒度进行拆分,得到多个报文,然后将属于同一个数据包的报文的标识(ID)域字段配置为相同的标识值,并将多个报文组成一条链表,配置到消息控制器中。消息控制器根据链表按顺序,通过高速输入输出接口依次发送各所述报文。在接收端,处理器调用存储器中存储的软件,采用链表的接收方式,并根据报文中的标识值进行区分处理,对具有相同标识值的报文采用同一链表进行管理,当接收到数据包所拆分的全部报文后,将拆分后的报文重组为一个数据包。
然而,现有技术中的消息传递模式,由于需要通过处理器运行软件对数据包进行拆分和重组,接收端和发送端的软件开销大,导致处理器处理效率低下。
发明内容
本发明实施例提供一种高速输出、输入接口电路及数据传输方法,不需要通过处理器运行软件对数据包进行拆分和重组,减少了数据包接收端和发送端的软件开销,提高处理器的处理效率。
第一方面,本发明实施例提供一种高速输出接口电路,所述高速输出接口电路设置在高速输入输出接口中,所述高速输出接口电路应用于快速输入输出传输的协议栈,所述协议栈包括链路层、逻辑层、传输层以及物理层;所述高速输出接口电路包括:链路层电路、封装模块以及高速输出接口,其中,所述封装模块分别与所述链路层电路、所述高速输出接口连接;
所述链路层电路,用于获取位于高速输出接口电路之外的处理器配置的待发送数据包,对所述待发送的数据包中的部分数据进行链路层封装,得到包括所述数据以及链路层信息的报文,并将所述报文发送至封装模块,所述链路层信息包括所述数据包对应的报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
所述封装模块,用于接收所述链路层电路发送的所述报文,对所述报文依次进行逻辑层、传输层以及物理层封装,得到完成封装的报文,并将完成封装的所述报文发送至高速输出接口;
所述高速输出接口,用于接收所述封装模块发送的完成封装的所述报文,将完成封装的所述报文发送至接收端。
在本实施例中,处理器只需要配置待发送的数据包,链路层电路就可以对该数据包进行拆分,并在拆分的过程中,将链路层信息封装至数据中,以使接收端可根据链路层信息对数据包进行重组,然后由封装模块进一步封装,高速输出接口直接将完成封装的数据发送至接收端,不需要通过处理器运行软件对数据包进行拆分,降低了软件的开销,不会影响通用处理器的处理效率。
进一步地,所述高速输出接口电路还包括:软件接口以及链表模块,所述软件接口与所述链表模块连接,所述链表模块与所述链路层电路连接;
所述软件接口,用于获取所述处理器配置的描述符,并将所述描述符发送至所述链表模块,所述描述符中包括所述数据包的内存地址以及所述接收端的标识;
所述链表模块,用于接收所述软件接口发送的描述符,并将所述描述符添加至任务表中,在所述高速输出接口空闲时,向所述链路层电路发送所述任务表中的描述符;
所述链路层电路具体用于,接收所述链表模块发送的所述描述符,根据所述数据包的内存地址,从内存中获取所述处理器配置的待发送数据包,对所述待发送的数据包中的数据进行链路层封装,得到包括所述数据以及链路层信息的报文,并将所述报文以及所述接收端的标识发送至封装模块;
所述封装模块还用于,接收所述链路层电路发送的所述接收端的标识,并将所述接收端的标识发送至所述高速输出接口;
所述高速输出接口具体用于,接收所述封装模块发送的完成封装的所述报文以及所述接收端的标识,根据所述接收端的标识,将所述完成封装的所述报文发送至接收端。
更进一步地,所述描述符中还包括所述数据包的大小,所述链路层电路还用于,根据其它数据包的标识,生成与所述其它数据包的标识不同的数据包的标识;根据所述数据包的大小以及所述数据的大小,获取所述报文总数,根据所述数据在所述数据包中的读取顺序,确定所述报文在报文序列中的序列号;根据所述报文总数、所述报文在报文序列中的序列号以及所述数据包的标识,生成所述链路层信息。
本实施例通过软件接口获取处理器根据数据包配置的描述符,链表模块根据高速输出接口的空闲状态,向链路层模块发送未发送至接收端的数据包对应的描述符,链路层模块对数据的链路层封装,使得数据包的发送由高速输出接口的状态决定,使得报文的发送不受标识域的限定,最大限度的利用了可用带宽。封装模块对数据的进一步封装以及高速输出接口将封装完成的报文发送至接收端,不需要通过处理器运行软件对待发送的数据包进行提前拆分,只要在数据包中读取数据,对该数据进行链路层封装之后,即可将该数据发送,降低了软件的开销,不会影响处理器的处理效率。
本发明实施例还提供一种通信设备,包括如上所述的高速输出接口电路以及处理器、存储器;
所述存储器包括驱动软件;
所述处理器,用于从所述存储器读取所述驱动软件并在所述驱动软件的驱动下向所述高速输出接口电路提供待发送数据包。
第二方面,本发明提供一种高速输入接口电路,所述高速输入接口电路设置在高速输入输出接口中,所述高速输入接口电路应用于快速输入输出传输的协议栈,所述协议栈包括链路层、逻辑层、传输层以及物理层;所述高速输入接口电路包括:高速输入接口、解封装模块以及链路层电路,其中,所述解封装模块分别与所述高速输入接口以及所述链路层电路连接;
所述高速输入接口,用于接收发送端发送的报文,并将所述报文发送至所述解封装模块;
所述解封装模块,用于接收所述高速输入接口发送的报文,对所述报文依次进行物理层、传输层以及逻辑层的解封装,得到包括链路层信息的报文,并将所述包括链路层信息的报文发送至所述链路层电路,所述链路层信息包括报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
所述链路层电路,用于接收所述解封装模块发送的所述包括链路层信息的报文,对所述包括链路层信息的报文进行链路层解封装,得到所述链路层信息以及所述报文中的数据,根据所述数据包的标识、所述报文总数以及所述报文在报文序列中的序列号,对所述报文中的数据与其他报文中的数据进行重组得到所述报文对应的数据包。
本实施例通过高速输入接口电路接收发送端发送的报文,解封装模块对该报文依次进行物理层、传输层以及逻辑层的解封装,链路层电路根据链路层信息进行报文的重组,得到完整的数据包,不需要通过处理器运行软件对报文进行重组,降低了软件的开销,不会影响通用处理器的处理效率。
进一步地,所述链路层电路具体用于,
接收所述解封装模块发送的所述包括链路层信息的报文,对所述包括链路层信息的报文进行链路层解封装,得到所述链路层信息以及所述数据;
在重组表中确定存在与所述数据包的标识匹配的表项,所述表项中包括所述数据包的标识、缓存信息以及报文总数,所述缓存信息包括链路层缓存区的起始位置与大小,以及数据缓存区的起始位置与大小;
根据所述报文在报文序列中的序列号以及所述缓存信息,将所述报文中的数据存储至所述数据缓存中,将所述数据包对应的首个报文的链路层信息存储至所述链路层缓存中。
根据所述数据包的标识、报文总数,确定与所述报文对应的数据包是否重组成功。
更进一步地,所述高速输入接口电路还包括:软件接口以及缓存配置模块;所述缓存配置模块分别与所述软件接口以及所述链路层电路连接;
所述软件接口,用于获取所述高速输入接口电路之外的处理器配置的所述缓存信息,将所述缓存信息发送至所述缓存配置模块;
所述缓存配置模块,用于接收所述软件接口发送的所述缓存信息,对所述缓存信息进行存储,并向所述链路层电路发送所述缓存信息。
本实施例通过软件接口获取高速输入接口电路之外的处理器配置的缓存信息,将缓存信息发送至缓存配置模块,缓存配置模块对该缓存信息进行存储,并将该缓存信息发送至链路层电路。链路层电路对报文进行链路层解封装,得到链路层信息,根据报文对应的数据包的标识,在重组表中确定存在与数据包标识匹配的表项,根据表项中的缓存信息及报文在报文序列中的序列号,将报文中的数据存储至数据缓存中,将首个报文的链路层信息存储至链路层缓存中,在存储数据的同时直接进行了重组,不需要通过处理器运行软件对报文进行重组,降低了软件的开销,不会影响处理器的处理效率。
本发明实施例还提供一种通信设备,包括如上所述的高速输入接口电路以及处理器、存储器;
所述存储器包括驱动软件;
所述处理器,用于从所述存储器读取所述驱动软件并在所述驱动软件的驱动下从所述高速输入接口电路接收重组后的所述数据包。
第三方面,本发明提供一种利用高速输出接口电路进行数据传输的数据传输方法,所述高速输出接口电路设置在高速输入输出接口中,所述高速输出接口电路应用于快速输入输出传输的协议栈,所述协议栈包括链路层、逻辑层、传输层以及物理层;所述高速输出接口电路包括:链路层电路、封装模块以及高速输出接口,所述方法包括:
通过所述链路层电路获取位于高速输出接口电路之外的处理器配置的待发送数据包,对所述待发送的数据包中的部分数据进行链路层封装,得到包括所述数据以及链路层信息的报文,并将所述报文发送至封装模块,所述链路层信息包括所述数据包对应的报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
通过所述封装模块接收所述链路层电路发送的所述报文,对所述报文依次进行逻辑层、传输层以及物理层封装,得到完成封装的报文,并将完成封装的所述报文发送至高速输出接口;
通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文,将完成封装的所述报文发送至接收端。
进一步地,所述高速输出接口电路还包括:软件接口以及链表模块,
在通过所述封装模块接收所述链路层电路发送的所述报文之前,还包括:
通过所述软件接口获取所述处理器配置的描述符,并将所述描述符发送至所述链表模块,所述描述符中包括所述数据包的内存地址以及所述接收端的标识;
通过所述链表模块接收所述软件接口发送的描述符,并将所述描述符添加至任务表中,在所述高速输出接口空闲时,向所述链路层电路发送所述任务表中的描述符;
通过所述链路层电路接收所述链表模块发送的所述描述符;
所述通过所述链路层电路获取位于高速输出接口电路之外的处理器配置的待发送数据包,包括:
通过所述链路层电路,根据所述数据包的内存地址,从内存中获取所述处理器配置的待发送数据包;
所述将所述报文发送至所述封装模块包括:将所述报文以及所述接收端的标识发送至所述封装模块;
所述方法还包括:通过所述封装模块接收所述链路层电路发送的所述接收端的标识,并将所述接收端的标识发送至所述高速输出接口;
所述通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文,将完成封装的所述报文发送至接收端,包括:
通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文以及所述接收端的标识,根据所述接收端的标识,将所述完成封装的所述报文发送至接收端。
更进一步地,所述描述符中还包括所述数据包的大小,所述方法还包括:
通过所述链路层电路根据其它数据包的标识,生成与所述其它数据包的标识不同的数据包的标识;
通过所述链路层电路根据所述数据包的大小以及所述数据的大小,获取所述报文总数;
通过所述链路层电路根据所述数据在所述数据包中的读取顺序,确定所述报文在报文序列中的序列号;
通过所述链路层电路根据所述报文总数、所述报文在报文序列中的序列号以及所述数据包的标识,生成所述链路层信息。
本实施例提供的数据传输方法,利用高速输出接口电路进行数据传输,其实现原理和技术效果与高速输出接口电路的实现原理和技术效果类似,本实施例此处不再赘述。
第四方面,本发明提供一种利用高速输入接口电路进行数据传输的数据传输方法,所述高速输入接口电路设置在高速输入输出接口中,所述高速输入接口电路应用于快速输入输出传输的协议栈,所述协议栈包括链路层、逻辑层、传输层以及物理层;所述高速输入接口电路包括:高速输入接口、解封装模块以及链路层电路,所述方法包括:
通过所述高速输入接口接收发送端发送的报文,并将所述报文发送至所述解封装模块;
通过所述解封装模块接收所述高速输入接口发送的报文,对所述报文依次进行物理层、传输层以及逻辑层的解封装,得到包括链路层信息的报文,并将所述包括链路层信息的报文发送至所述链路层电路,所述链路层信息包括报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
通过所述链路层电路接收所述解封装模块发送的所述包括链路层信息的报文,对所述包括链路层信息的报文进行链路层解封装,得到所述链路层信息以及所述报文中的数据,根据所述数据包的标识、所述报文总数以及所述报文在报文序列中的序列号,对所述报文中的数据与其他报文中的数据进行重组得到所述报文对应的数据包。
进一步地,所述通过链路层电路根据所述数据包的标识、所述报文总数以及所述报文在报文序列中的序列号,对所述报文中的数据与其他报文中的数据进行重组得到所述报文对应的数据包,包括:
通过所述链路层电路在重组表中确定存在与所述数据包的标识匹配的表项,所述表项中包括所述数据包的标识、缓存信息以及报文总数,所述缓存信息包括链路层缓存区的起始位置与大小,以及数据缓存区的起始位置与大小;
通过所述链路层电路根据所述报文在报文序列中的序列号以及所述缓存信息,将所述报文中的数据存储至所述数据缓存中,将所述数据包对应的首个报文的链路层信息存储至所述链路层缓存中。
通过所述链路层电路根据所述数据包的标识、报文总数,确定与所述报文对应的数据包是否重组成功。
更进一步地,所述高速输入接口电路还包括:软件接口以及缓存配置模块;所述方法还包括:
通过所述软件接口获取所述高速输入接口电路之外的处理器配置的所述缓存信息,将所述缓存信息发送至所述缓存配置模块;
通过所述缓存配置模块接收所述软件接口发送的所述缓存信息,对所述缓存信息进行存储,并向所述链路层电路发送所述缓存信息。
本实施例提供的数据传输方法,利用高速输入接口电路进行数据传输,其实现原理和技术效果与高速输入接口电路的实现原理和技术效果类似,本实施例此处不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了RapidIO互连在嵌入式***中的应用示意图;
图2为本发明快速输入输出传输的协议栈的结构示意图;
图3为本发明高速输出、输入接口电路的结构示意图;
图4为链路层的格式示意图;
图5为描述符的格式示意图;
图6为重组表的格式示意图;
图7为链路层信息和数据包的存储示意图;
图8为本发明数据传输方法实施例一的流程示意图;
图9为本发明数据传输方法实施例二的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供一种高速输出、输入接口电路及数据传输方法。该高速输出、输入接口电路及数据传输方法可以基于RapidIO协议实现。本实施例提供的高速输出、输入接口电路及数据传输方法,主要应用于嵌入式***内部互连,支持芯片到芯片、板卡到板卡间的通信。本实例中的发送端可以为嵌入式***内部中的芯片或板卡等,接收端也可以为嵌入式***内部中的芯片或板卡等。高速输出接口电路位于发送端,高速输入接口电路位于接收端。图1示出了RapidIO互连在嵌入式***中的应用示意图。如图1所示,发送端作为一种通信设备,包括处理器101,SRIO接口102,存储器103,作为片内缓存,其中包括驱动软件,存储器104,作为片外随机存储器,其中,发送端内部的各器件通过总线进行通信。接收端作为一种通信设备,包括处理器107,SRIO接口105,存储器106,其中包括驱动软件,作为片内缓存,存储器108作为片外随机存储器,其中,接收端内部的各器件通过总线进行通信。发送端与接收端之间通过串行高速输入输出(SerialRapidInputOutput,简称SRIO)接口通信。发送端通过SRIO接口102向接收端发送数据,接收端通过SRIO接口105接收发送端发送的数据。
在具体实现过程中,接收端和发送端之间的数据传输基于RapidIO协议实现。其中,RapidIO协议下的数据包最大支持4KB的传输。RapidIO协议采用三层分级体系:逻辑层、传输层与物理层。
为了解决发送端和接收端软件开销大,传输效率低下的问题。本实施例在RapidIO协议的基础上,在逻辑层上再增加一层链路层。该链路层中定义了发送端和接收端的数据包的拆分和重组信息,例如报文总数、报文在报文序列中的序列号、数据包的标识,使得数据包的传输可以通过硬件完成,而不是通过软件完成。图2为本发明快速输入输出传输的协议栈的结构示意图。如图2所示,链路层位于最高层,逻辑层位于链路层之下,逻辑层定义了所有协议和包格式,支持存储器映射的IO***,消息传输、流控以及数据流。对发送端和接收端发起和完成数据包传输提供必要的信息。传输层在中间层,定义了RapidIO的地址空间和在发送端和接收端公共传输数据包所需的路由信息。物理层在整个分级结构的底部,包括器件级接口的细节,如包传输机制、流量控制、电气特性及错误管理等。
本实施例提供的高速输出接口电路设置在如图1所示的发送端的SRIO接口102中,高速输入接口电路设置在如图2所示的接收端的SRIO接口105中。本领域技术人员可以理解,在具体实现过程中,任意的SRIO接口都可以包括本实施例提供的高速输出接口电路以及高速输入接口电路。为了便于说明,本实施例在图3中同时绘示了高速输出接口电路以及高速输入接口电路。如图3所示,图3为本发明高速输出、输入接口电路的结构示意图。
为了便于说明,下面采用具体的实施例,分别对发送端的高速输出接口电路以及接收端的高速输入接口电路进行详细说明。
下面结合图1至图3,对高速输出接口电路如何发送数据包进行详细说明。如图3所示,发送端的高速输出接口电路包括:链路层电路303、封装模块304以及高速输出接口305,其中,封装模块304分别与链路层电路303、高速输出接口305连接。可选地,该高速输出接口电路还包括软件接口301以及链表模块302,其中软件接口301与链表模块302连接,链表模块302与链路层电路303连接。
其中,链路层电路303,用于获取位于高速输出接口电路之外的处理器配置的待发送数据包,对待发送的数据包中的部分数据进行链路层封装,得到包括数据以及链路层信息的报文,并将报文发送至封装模块304,链路层信息包括数据包对应的报文总数、报文在报文序列中的序列号、报文对应的数据包的标识;
封装模块304,用于接收链路层电路303发送的报文,对报文依次进行逻辑层、传输层以及物理层封装,得到完成封装的报文,并将完成封装的报文发送至高速输出接口305;
高速输出接口305,用于接收封装模块304发送的完成封装的报文,将完成封装的报文发送至接收端。
在具体实现过程中,在发送端,处理器101用于从存储器104中读取驱动软件,并在驱动软件的驱动下向高速输出接口电路提供待发送数据包。高速输出接口电路中的链路层电路303在确定当前存在可用带宽时,从内存(例如图1所示的存储器104)中获取该待发送的数据包,对该待发送的数据包中的部分数据进行链路层封装(对应图2中的链路层),得到包括数据以及链路层信息的报文。其中,内存中的数据包为处理器之前已经存储的数据包。链路层的格式示意图可如图4所示。可选地,链路层电路303可将链路层信息封装至该报文的头部。
图4为链路层的格式示意图。如图4所示,MsgNo的位宽为16,用于指示数据包的标识,针对同一数据包的报文,数据包标识相同。本领域技术人员可以理解,该数据包的标识可以为编号,每处理一个任务对应的数据包,该编号单调加一;FragNum的位宽为8,用于指示报文总数;FragNo的位宽为8,用于指示报文在报文序列中的序列号。以一个具体的例子为例,一个12KB的数据包,会产生3个报文,第一报文的FragNum=3,FragNo=0;第二报文FragNum=3,FragNo=1;第三报文FragNum=3,FragNo=2,上述3个报文的数据包标识相同,例如,MsgNo=2。
链路层电路303在得到包括数据以及链路层信息的报文后,将该报文发送至封装模块304。封装模块304对该报文依次进行逻辑层、传输层以及物理层封装,得到完成封装的报文,并将该完成封装的报文发送至高速输出接口305,由高速输出接口305将完成封装的报文发送至接收端。
本发明提供的高速输出接口电路,该高速输出接口电路设置在高速输入输出接口中,高速输出接口电路应用于快速输入输出传输协议栈,该协议栈包括链路层、逻辑层、传输层以及物理层;该高速输出接口电路包括:链路层电路、封装模块以及高速输出接口。其中,处理器只需要配置待发送的数据包,链路层电路就可以对该数据包进行拆分,并在拆分的过程中,将链路层信息封装至数据中,以使接收端可根据链路层信息对数据包进行重组,然后由封装模块进一步封装,高速输出接口直接将完成封装的数据发送至接收端,不需要通过处理器运行软件对数据包进行拆分,降低了软件的开销,不会影响通用处理器的处理效率。
可选地,在上述实施例的基础上,为了保证多个数据包能够有序发送,本实施例还可配合软件接口301以及链表模块302,通过任务表来管理各数据包的发送。
具体的,处理器(例如图1中的处理器101)根据待发送的数据包生成描述符,并将该描述符下发给软件接口301。软件接口301获取该描述符之后,将该描述符发送至链表模块302。其中,描述符可以包括数据包的大小、数据包的内存地址以及接收端的标识等。在一种可行的实现方式中,描述符的实现形式如图5所示。图5为描述符的格式示意图。其中,size的位宽为20,用于指示数据包的大小,单位为字节,数据包最大可为1M(兆)字节;addr的位宽为32,用于指示数据包在内存中的地址;dest_id的位宽为16,用于指示接收端的标识。链表模块302将该描述符添加至任务表中,在确定当前存在可用带宽,即高速输出接口305空闲时,可从任务表中获取描述符,向链路层电路303发送该描述符。
链路层电路303接收链表模块302发送的描述符,链路层电路303根据数据包的内存地址,在数据包中获取数据,并根据该数据在数据包中的读取顺序,确定该报文在报文序列中的序列号。在此过程中,链路层电路303根据该描述符获取数据包的大小,根据数据包的大小以及数据大小,确定报文总数,根据其它数据包的标识,生成与其它数据包的标识不同的数据包标识。其中,数据大小可以为4KB。此时,链路层电路303根据报文总数、报文在报文序列中的序列号以及数据包的标识,生成链路层信息,并将链路层信息封装至该数据中,得到与该数据对应的报文。将该报文以及接收端的标识发送至封装模块304,由封装模块304做进一步的封装,并将完成封装的报文以及接收端的标识发送至高速输出接口305,由高速输出接口305根据接收端的标识发送该完成封装的报文。
进一步地,链路层电路303对该报文进行链路层封装之后,链路层电路303判断该报文是否为该数据包的最后一个报文,若是,向链表模块302发送描述符删除指示,以指示链表模块302将该描述符从任务表中删除。若否,则继续读取该数据包中的另一部分数据。具体的读取和发送过程,与上述实施例类似,本实施例此处不再赘述。本领域技术人员可以理解,具体的读取次数由数据包的大小决定,每次读取的数据的大小相同。
本实施例提供的高速输出接口电路,通过软件接口获取处理器根据数据包配置的描述符,链表模块根据高速输出接口的空闲状态,向链路层模块发送未发送至接收端的数据包对应的描述符,链路层模块对数据的链路层封装,使得数据包的发送由高速输出接口的状态决定,使得报文的发送不受标识域的限定,最大限度的利用了可用带宽。封装模块对数据的进一步封装以及高速输出接口将封装完成的报文发送至接收端,不需要通过处理器运行软件对待发送的数据包进行提前拆分,只要在数据包中读取数据,对该数据进行链路层封装之后,即可将该数据发送,降低了软件的开销,不会影响处理器的处理效率。
下面结合图1至图3,对高速输入接口电路如何接收并重组数据包进行详细说明。如图3所示,接收端的高速输入接口电路包括:高速输入接口401、解封装模块402以及链路层电路403,其中,解封装模块402分别与高速输入接口401以及链路层电路403连接。可选地,该高速输入接口电路还包括:软件接口405以及缓存配置模块404;缓存配置模块404分别与软件接口405以及链路层电路403连接。
其中,高速输入接口401,用于接收发送端发送的报文,并将报文发送至解封装模块402;
解封装模块402,用于接收高速输入接口发送的报文,对报文依次进行物理层、传输层以及逻辑层的解封装,得到包括链路层信息的报文,并将包括链路层信息的报文发送至链路层电路403,链路层信息包括报文总数、报文在报文序列中的序列号、报文对应的数据包的标识;
链路层电路403,用于接收解封装模块402发送的包括链路层信息的报文,对包括链路层信息的报文进行链路层解封装,得到链路层信息以及报文中的数据,根据数据包的标识、报文总数以及报文在报文序列中的序列号,对报文中的数据与其他报文中的数据进行重组得到报文对应的数据包。
在具体实现过程中,接收端通过高速输入接口401接收发送端发送的报文,并将该报文发送至解封装模块402。解封装模块402对报文依次进行物理层、传输层以及逻辑层的解封装,得到包括链路层信息的报文,将该报文发送至链路层电路403。
链路层电路403对该报文进行链路层解封装,得到链路层信息。可选地,当链路层信息封装在该报文的头部时,可从该报文的头部获取链路层信息。链路层信息包括报文总数、报文在报文序列中的序列号、报文对应的数据包的标识。
具体地,链路层电路403在接收到该报文之后,根据该报文在报文序列中的序列号,对该报文进行存储和重组,然后对数据包标识对应的已收到的报文数据进行单调加1处理,针对该数据包标识,判断已收到的报文数目是否与报文总数一致,若是,则表明已将各报文重组为数据包,若否,则表明该数据包还未重组成功。
当数据包重组成功之后,处理器107用于从存储器104读取驱动软件并在驱动软件的驱动下,从高速输出接口电路接收重组后的数据包。
本实施例提供的高速输入接口电路,该高速输入接口电路设置在高速输入输出接口中,高速输入接口电路应用于快速输入输出传输协议栈,该协议栈包括链路层、逻辑层、传输层以及物理层;该高速输入接口电路包括:高速输入接口、解封装模块以及链路层电路。其中,高速输入接口电路接收发送端发送的报文,解封装模块对该报文依次进行物理层、传输层以及逻辑层的解封装,链路层电路根据链路层信息进行报文的重组,得到完整的数据包,不需要通过处理器运行软件对报文进行重组,降低了软件的开销,不会影响通用处理器的处理效率。
可选地,在上述实施例的基础上,为了保证接收的报文能有快速重组以及有序存储,本实施例还可以配合缓存配置模块404和软件接口405,通过重组表来管理接收的数据包。
具体地,软件接口405获取高速输入接口电路之外的处理器(例如图1中的处理器107)配置的缓存信息,将缓存信息发送至缓存配置模块404,缓存配置模块404对该缓存信息进行存储。
当链路层电路403获取到发送端发送的数据包中的首个报文时,根据链路层信息在重组表中初始化空的表项。具体地,链路层电路403根据报文总数以及数据大小,确定数据包所占存储空间,根据该存储空间向缓存配置模块404获取缓存信息,该缓存信息包括链路层缓存区的起始位置与大小,以及数据缓存区的起始位置与大小,链路层电路403根据报文在报文序列中的序列号以及缓存信息,将报文中的数据存储至数据缓存中,将数据包对应的首个报文的链路层信息存储至链路层缓存中。同时,根据链路层信息中的数据包标识以及报文总数,设置表项中的数据包标识以及报文总数,并将数据包标识对应的已收到的报文数目置为1。
可选地,在本实施例中,为了对重组表中的表项进行管理,不浪费表项资源,则在数据包重组成功之后,删除该表项,使得该表项为空,对应地,在重组表的表项中增加了用于指示该表项是否为空的指示位。链路层电路403只要根据该重组表中的指示位,就可以在重组表中判断是否存在空的表项。
由此,重组表的格式可如图6所示。图6为重组表的格式示意图。如图6所示,msgno用于指示数据包标识;fragnum用于指示报文总数;fragcnt用于指示已收到的报文数目;head_ptr用于指示链路层缓存区的地址;payload_ptr用于指示数据缓存区的地址;vld用于指示表项是否为空的指示位vld,vld的位宽为1,指示位具体为有效指示位或无效指示位,其中,无效指示位用于指示空的表项,有效指示位用于指示非空的表项。
当链路层电路403获取到发送端发送的该数据包的其它报文时,获取该报文对应的数据包标识,在重组表中确定存在与该数据包标识匹配的表项,即表项中存在该数据包标识,则只对该表项中的数据包标识对应的已收到的报文数目进行单调加1处理,根据报文在报文序列中的序列号,确定该报文中的数据的存储偏移量,根据该偏移量以及数据缓存区的起始位置,将数据存储至数据缓存区。对于该报文不为该数据包的首个报文时,不需要存储该报文中的链路层信息。
在本实施例中,通过链路层缓存区和数据缓存区,实现了链路层信息和数据分离存储。进一步地,本实施例还可以建立链路层缓存区的地址与数据缓存区的地址的映射关系。例如,将首个报文的头部的最后4字节更改为数据缓存区的起始地址。这样,可以将数据量较少的链路层缓存区全部映射到处理器(例如图1中的处理器101)的缓存空间中,使得处理器可以在处理器的缓存空间中快速获取链路层信息,并根据该映射关系,获取数据包,提高了处理器的处理效率。
可选地,为了节省缓存空间,可将各数据包的链路层信息在链路层缓存区紧密排放,将各数据包在数据缓存区紧密排放。图7为链路层信息和数据包的存储示意图。如图7所示,一共存储了3个数据包,其中,H区代表了链路息缓存区,P区代表了数据缓存区。3个数据包(P0、P1、P2)对应的链路层信息在链路层缓存区紧密排放,3个数据包(P0、P1、P2)对应的数据在数据缓存区紧密排放。
本实施例提供的高速输入接口电路,通过软件接口获取高速输入接口电路之外的处理器配置的缓存信息,将缓存信息发送至缓存配置模块,缓存配置模块对该缓存信息进行存储,并将该缓存信息发送至链路层电路。链路层电路对报文进行链路层解封装,得到链路层信息,根据报文对应的数据包的标识,在重组表中确定存在与数据包标识匹配的表项,根据表项中的缓存信息及报文在报文序列中的序列号,将报文中的数据存储至数据缓存中,将首个报文的链路层信息存储至链路层缓存中,在存储数据的同时直接进行了重组,不需要通过处理器运行软件对报文进行重组,降低了软件的开销,不会影响处理器的处理效率。
图8为本发明数据传输方法实施例一的流程示意图。该方法利用高速输出接口电路进行数据传输,该高速输出接口电路设置在高速输入输出接口中,高速输出接口电路应用于快速输入输出传输的协议栈,协议栈包括链路层、逻辑层、传输层以及物理层;高速输出接口电路包括:链路层电路、封装模块以及高速输出接口。该方法包括:
步骤801、通过所述链路层电路获取位于高速输出接口电路之外的处理器配置的待发送数据包,对所述待发送的数据包中的部分数据进行链路层封装,得到包括所述数据以及链路层信息的报文,并将所述报文发送至封装模块,所述链路层信息包括所述数据包对应的报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
步骤802、通过所述封装模块接收所述链路层电路发送的所述报文,对所述报文依次进行逻辑层、传输层以及物理层封装,得到完成封装的报文,并将完成封装的所述报文发送至高速输出接口;
步骤803、通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文,将完成封装的所述报文发送至接收端。
可选地,所述高速输出接口电路还包括:软件接口以及链表模块,
在通过所述封装模块接收所述链路层电路发送的所述报文之前,还包括:
通过所述软件接口获取所述处理器配置的描述符,并将所述描述符发送至所述链表模块,所述描述符中包括所述数据包的内存地址以及所述接收端的标识;
通过所述链表模块接收所述软件接口发送的描述符,并将所述描述符添加至任务表中,在所述高速输出接口空闲时,向所述链路层电路发送所述任务表中的描述符;
通过所述链路层电路接收所述链表模块发送的所述描述符;
所述通过所述链路层电路获取位于高速输出接口电路之外的处理器配置的待发送数据包,包括:
通过所述链路层电路,根据所述数据包的内存地址,从内存中获取所述处理器配置的待发送数据包;
所述将所述报文发送至所述封装模块包括:将所述报文以及所述接收端的标识发送至所述封装模块;
所述方法还包括:通过所述封装模块接收所述链路层电路发送的所述接收端的标识,并将所述接收端的标识发送至所述高速输出接口;
所述通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文,将完成封装的所述报文发送至接收端,包括:
通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文以及所述接收端的标识,根据所述接收端的标识,将所述完成封装的所述报文发送至接收端。
可选地,所述描述符中还包括所述数据包的大小,所述方法还包括:
通过所述链路层电路根据其它数据包的标识,生成与所述其它数据包的标识不同的数据包的标识;
通过所述链路层电路根据所述数据包的大小以及所述数据的大小,获取所述报文总数;
通过所述链路层电路根据所述数据在所述数据包中的读取顺序,确定所述报文在报文序列中的序列号;
通过所述链路层电路根据所述报文总数、所述报文在报文序列中的序列号以及所述数据包的标识,生成所述链路层信息。
本实施例提供的数据传输方法,利用高速输出接口电路进行数据传输,其实现原理和技术效果与高速输出接口电路的实现原理和技术效果类似,本实施例此处不再赘述。
图9为本发明数据传输方法实施例二的流程示意图。该方法利用高速输入接口电路进行数据传输的数据传输方法,该高速输入接口电路设置在高速输入输出接口中,高速输入接口电路应用于快速输入输出传输的协议栈,协议栈包括链路层、逻辑层、传输层以及物理层;高速输入接口电路包括:高速输入接口、解封装模块以及链路层电路,该方法包括:
步骤901、通过所述高速输入接口接收发送端发送的报文,并将所述报文发送至所述解封装模块;
步骤902、通过所述解封装模块接收所述高速输入接口发送的报文,对所述报文依次进行物理层、传输层以及逻辑层的解封装,得到包括链路层信息的报文,并将所述包括链路层信息的报文发送至所述链路层电路,所述链路层信息包括报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
步骤903、通过所述链路层电路接收所述解封装模块发送的所述包括链路层信息的报文,对所述包括链路层信息的报文进行链路层解封装,得到所述链路层信息以及所述报文中的数据,根据所述数据包的标识、所述报文总数以及所述报文在报文序列中的序列号,对所述报文中的数据与其他报文中的数据进行重组得到所述报文对应的数据包。
可选地,所述通过链路层电路根据所述数据包的标识、所述报文总数以及所述报文在报文序列中的序列号,对所述报文中的数据与其他报文中的数据进行重组得到所述报文对应的数据包,包括:
通过所述链路层电路在重组表中确定存在与所述数据包的标识匹配的表项,所述表项中包括所述数据包的标识、缓存信息以及报文总数,所述缓存信息包括链路层缓存区的起始位置与大小,以及数据缓存区的起始位置与大小;
通过所述链路层电路根据所述报文在报文序列中的序列号以及所述缓存信息,将所述报文中的数据存储至所述数据缓存中,将所述数据包对应的首个报文的链路层信息存储至所述链路层缓存中。
通过所述链路层电路根据所述数据包的标识、报文总数,确定与所述报文对应的数据包是否重组成功。
可选地,所述高速输入接口电路还包括:软件接口以及缓存配置模块;所述方法还包括:
通过所述软件接口获取所述高速输入接口电路之外的处理器配置的所述缓存信息,将所述缓存信息发送至所述缓存配置模块;
通过所述缓存配置模块接收所述软件接口发送的所述缓存信息,对所述缓存信息进行存储,并向所述链路层电路发送所述缓存信息。
本实施例提供的数据传输方法,利用高速输入接口电路进行数据传输,其实现原理和技术效果与高速输入接口电路的实现原理和技术效果类似,本实施例此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (15)
1.一种高速输出接口电路,其特征在于,所述高速输出接口电路设置在高速输入输出接口中,所述高速输出接口电路应用于快速输入输出传输的协议栈,所述协议栈包括链路层、逻辑层、传输层以及物理层;所述高速输出接口电路包括:链路层电路、封装模块以及高速输出接口,其中,所述封装模块分别与所述链路层电路、所述高速输出接口连接;
所述链路层电路,用于获取位于高速输出接口电路之外的处理器配置的待发送数据包,对所述待发送的数据包中的部分数据进行链路层封装,得到包括所述数据以及链路层信息的报文,并将所述报文发送至封装模块,所述链路层信息包括所述数据包对应的报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
所述封装模块,用于接收所述链路层电路发送的所述报文,对所述报文依次进行逻辑层、传输层以及物理层封装,得到完成封装的报文,并将完成封装的所述报文发送至高速输出接口;
所述高速输出接口,用于接收所述封装模块发送的完成封装的所述报文,将完成封装的所述报文发送至接收端。
2.根据权利要求1所述的高速输出接口电路,其特征在于,所述高速输出接口电路还包括:软件接口以及链表模块,所述软件接口与所述链表模块连接,所述链表模块与所述链路层电路连接;
所述软件接口,用于获取所述处理器配置的描述符,并将所述描述符发送至所述链表模块,所述描述符中包括所述数据包的内存地址以及所述接收端的标识;
所述链表模块,用于接收所述软件接口发送的描述符,并将所述描述符添加至任务表中,在所述高速输出接口空闲时,向所述链路层电路发送所述任务表中的描述符;
所述链路层电路具体用于,接收所述链表模块发送的所述描述符,根据所述数据包的内存地址,从内存中获取所述处理器配置的待发送数据包,对所述待发送的数据包中的数据进行链路层封装,得到包括所述数据以及链路层信息的报文,并将所述报文以及所述接收端的标识发送至封装模块;
所述封装模块还用于,接收所述链路层电路发送的所述接收端的标识,并将所述接收端的标识发送至所述高速输出接口;
所述高速输出接口具体用于,接收所述封装模块发送的完成封装的所述报文以及所述接收端的标识,根据所述接收端的标识,将所述完成封装的所述报文发送至接收端。
3.根据权利要求2所述的高速输出接口电路,其特征在于,所述描述符中还包括所述数据包的大小,所述链路层电路还用于,
根据其它数据包的标识,生成与所述其它数据包的标识不同的数据包的标识;
根据所述数据包的大小以及所述数据的大小,获取所述报文总数,
根据所述数据在所述数据包中的读取顺序,确定所述报文在报文序列中的序列号;
根据所述报文总数、所述报文在报文序列中的序列号以及所述数据包的标识,生成所述链路层信息。
4.根据权利要求2或3所述的高速输出接口电路,其特征在于,所述链路层电路还用于,
判断所述报文是否为所述数据包的最后一个报文;
若是,向所述链表模块发送描述符删除指示,所述描述符删除指示用于指示所述链表模块将所述描述符从所述任务表中删除;
若否,继续读取所述数据包中的另一部分数据。
5.一种通信设备,其特征在于,包括如权利要求1至4中任一项所述的高速输出接口电路以及处理器、存储器;
所述存储器包括驱动软件;
所述处理器,用于从所述存储器读取所述驱动软件并在所述驱动软件的驱动下向所述高速输出接口电路提供待发送数据包。
6.一种高速输入接口电路,其特征在于,所述高速输入接口电路设置在高速输入输出接口中,所述高速输入接口电路应用于快速输入输出传输的协议栈,所述协议栈包括链路层、逻辑层、传输层以及物理层;所述高速输入接口电路包括:高速输入接口、解封装模块以及链路层电路,其中,所述解封装模块分别与所述高速输入接口以及所述链路层电路连接;
所述高速输入接口,用于接收发送端发送的报文,并将所述报文发送至所述解封装模块;
所述解封装模块,用于接收所述高速输入接口发送的报文,对所述报文依次进行物理层、传输层以及逻辑层的解封装,得到包括链路层信息的报文,并将所述包括链路层信息的报文发送至所述链路层电路,所述链路层信息包括报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
所述链路层电路,用于接收所述解封装模块发送的所述包括链路层信息的报文,对所述包括链路层信息的报文进行链路层解封装,得到所述链路层信息以及所述报文中的数据,根据所述数据包的标识、所述报文总数以及所述报文在报文序列中的序列号,对所述报文中的数据与其他报文中的数据进行重组得到所述报文对应的数据包。
7.根据权利要求6所述的高速输入接口电路,其特征在于,所述链路层电路具体用于,
接收所述解封装模块发送的所述包括链路层信息的报文,对所述包括链路层信息的报文进行链路层解封装,得到所述链路层信息以及所述数据;
在重组表中确定存在与所述数据包的标识匹配的表项,所述表项中包括所述数据包的标识、缓存信息以及报文总数,所述缓存信息包括链路层缓存区的起始位置与大小,以及数据缓存区的起始位置与大小;
根据所述报文在报文序列中的序列号以及所述缓存信息,将所述报文中的数据存储至所述数据缓存中,将所述数据包对应的首个报文的链路层信息存储至所述链路层缓存中。
根据所述数据包的标识、报文总数,确定与所述报文对应的数据包是否重组成功。
8.根据权利要求6或7所述的高速输入接口电路,其特征在于,所述高速输入接口电路还包括:软件接口以及缓存配置模块;所述缓存配置模块分别与所述软件接口以及所述链路层电路连接;
所述软件接口,用于获取所述高速输入接口电路之外的处理器配置的所述缓存信息,将所述缓存信息发送至所述缓存配置模块;
所述缓存配置模块,用于接收所述软件接口发送的所述缓存信息,对所述缓存信息进行存储,并向所述链路层电路发送所述缓存信息。
9.一种通信设备,其特征在于,包括如权利要求6至8中任一项所述的高速输入接口电路以及处理器、存储器;
所述存储器包括驱动软件;
所述处理器,用于从所述存储器读取所述驱动软件并在所述驱动软件的驱动下从所述高速输入接口电路接收重组后的所述数据包。
10.一种利用高速输出接口电路进行数据传输的数据传输方法,其特征在于,所述高速输出接口电路设置在高速输入输出接口中,所述高速输出接口电路应用于快速输入输出传输的协议栈,所述协议栈包括链路层、逻辑层、传输层以及物理层;所述高速输出接口电路包括:链路层电路、封装模块以及高速输出接口,所述方法包括:
通过所述链路层电路获取位于高速输出接口电路之外的处理器配置的待发送数据包,对所述待发送的数据包中的部分数据进行链路层封装,得到包括所述数据以及链路层信息的报文,并将所述报文发送至封装模块,所述链路层信息包括所述数据包对应的报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
通过所述封装模块接收所述链路层电路发送的所述报文,对所述报文依次进行逻辑层、传输层以及物理层封装,得到完成封装的报文,并将完成封装的所述报文发送至高速输出接口;
通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文,将完成封装的所述报文发送至接收端。
11.根据权利要求10所述的方法,其特征在于,所述高速输出接口电路还包括:软件接口以及链表模块,
在通过所述封装模块接收所述链路层电路发送的所述报文之前,还包括:
通过所述软件接口获取所述处理器配置的描述符,并将所述描述符发送至所述链表模块,所述描述符中包括所述数据包的内存地址以及所述接收端的标识;
通过所述链表模块接收所述软件接口发送的描述符,并将所述描述符添加至任务表中,在所述高速输出接口空闲时,向所述链路层电路发送所述任务表中的描述符;
通过所述链路层电路接收所述链表模块发送的所述描述符;
所述通过所述链路层电路获取位于高速输出接口电路之外的处理器配置的待发送数据包,包括:
通过所述链路层电路,根据所述数据包的内存地址,从内存中获取所述处理器配置的待发送数据包;
所述将所述报文发送至所述封装模块包括:将所述报文以及所述接收端的标识发送至所述封装模块;
所述方法还包括:通过所述封装模块接收所述链路层电路发送的所述接收端的标识,并将所述接收端的标识发送至所述高速输出接口;
所述通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文,将完成封装的所述报文发送至接收端,包括:
通过所述高速输出接口接收所述封装模块发送的完成封装的所述报文以及所述接收端的标识,根据所述接收端的标识,将所述完成封装的所述报文发送至接收端。
12.根据权利要求11所述的方法,其特征在于,所述描述符中还包括所述数据包的大小,所述方法还包括:
通过所述链路层电路根据其它数据包的标识,生成与所述其它数据包的标识不同的数据包的标识;
通过所述链路层电路根据所述数据包的大小以及所述数据的大小,获取所述报文总数;
通过所述链路层电路根据所述数据在所述数据包中的读取顺序,确定所述报文在报文序列中的序列号;
通过所述链路层电路根据所述报文总数、所述报文在报文序列中的序列号以及所述数据包的标识,生成所述链路层信息。
13.一种利用高速输入接口电路进行数据传输的数据传输方法,其特征在于,所述高速输入接口电路设置在高速输入输出接口中,所述高速输入接口电路应用于快速输入输出传输的协议栈,所述协议栈包括链路层、逻辑层、传输层以及物理层;所述高速输入接口电路包括:高速输入接口、解封装模块以及链路层电路,所述方法包括:
通过所述高速输入接口接收发送端发送的报文,并将所述报文发送至所述解封装模块;
通过所述解封装模块接收所述高速输入接口发送的报文,对所述报文依次进行物理层、传输层以及逻辑层的解封装,得到包括链路层信息的报文,并将所述包括链路层信息的报文发送至所述链路层电路,所述链路层信息包括报文总数、所述报文在报文序列中的序列号、所述报文对应的数据包的标识;
通过所述链路层电路接收所述解封装模块发送的所述包括链路层信息的报文,对所述包括链路层信息的报文进行链路层解封装,得到所述链路层信息以及所述报文中的数据,根据所述数据包的标识、所述报文总数以及所述报文在报文序列中的序列号,对所述报文中的数据与其他报文中的数据进行重组得到所述报文对应的数据包。
14.根据权利要求13所述的方法,其特征在于,所述通过链路层电路根据所述数据包的标识、所述报文总数以及所述报文在报文序列中的序列号,对所述报文中的数据与其他报文中的数据进行重组得到所述报文对应的数据包,包括:
通过所述链路层电路在重组表中确定存在与所述数据包的标识匹配的表项,所述表项中包括所述数据包的标识、缓存信息以及报文总数,所述缓存信息包括链路层缓存区的起始位置与大小,以及数据缓存区的起始位置与大小;
通过所述链路层电路根据所述报文在报文序列中的序列号以及所述缓存信息,将所述报文中的数据存储至所述数据缓存中,将所述数据包对应的首个报文的链路层信息存储至所述链路层缓存中。
通过所述链路层电路根据所述数据包的标识、报文总数,确定与所述报文对应的数据包是否重组成功。
15.根据权利要求13或14所述的方法,其特征在于,所述高速输入接口电路还包括:软件接口以及缓存配置模块;所述方法还包括:
通过所述软件接口获取所述高速输入接口电路之外的处理器配置的所述缓存信息,将所述缓存信息发送至所述缓存配置模块;
通过所述缓存配置模块接收所述软件接口发送的所述缓存信息,对所述缓存信息进行存储,并向所述链路层电路发送所述缓存信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510870041.0A CN105512075B (zh) | 2015-12-01 | 2015-12-01 | 高速输出、输入接口电路及数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510870041.0A CN105512075B (zh) | 2015-12-01 | 2015-12-01 | 高速输出、输入接口电路及数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105512075A true CN105512075A (zh) | 2016-04-20 |
CN105512075B CN105512075B (zh) | 2018-09-07 |
Family
ID=55720071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510870041.0A Expired - Fee Related CN105512075B (zh) | 2015-12-01 | 2015-12-01 | 高速输出、输入接口电路及数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105512075B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109669903A (zh) * | 2018-12-07 | 2019-04-23 | 天津津航计算技术研究所 | 一种srio协议的桥接模块设计及优化方法 |
CN113420860A (zh) * | 2020-08-20 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 内存智能卡、设备、网络、方法及计算机存储介质 |
CN114765494A (zh) * | 2021-01-14 | 2022-07-19 | 瑞昱半导体股份有限公司 | 具有数据重用机制的数据传输方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101562559A (zh) * | 2008-04-15 | 2009-10-21 | 大唐移动通信设备有限公司 | 一种串行Rapid IO链路数据传输的方法及装置 |
CN102004713A (zh) * | 2010-11-19 | 2011-04-06 | 中国船舶重工集团公司第七○九研究所 | 一种 TigerSHARC DSP LINK 口转串行 RapidIO总线的实现方法 |
CN102035751A (zh) * | 2011-01-20 | 2011-04-27 | 大唐移动通信设备有限公司 | 一种数据的传输方法和设备 |
US8090789B1 (en) * | 2007-06-28 | 2012-01-03 | Emc Corporation | Method of operating a data storage system having plural data pipes |
CN102880573A (zh) * | 2012-09-04 | 2013-01-16 | 武汉邮电科学研究院 | 一种基于Linux***的串行RapidIo数据传输方法 |
-
2015
- 2015-12-01 CN CN201510870041.0A patent/CN105512075B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8090789B1 (en) * | 2007-06-28 | 2012-01-03 | Emc Corporation | Method of operating a data storage system having plural data pipes |
CN101562559A (zh) * | 2008-04-15 | 2009-10-21 | 大唐移动通信设备有限公司 | 一种串行Rapid IO链路数据传输的方法及装置 |
CN102004713A (zh) * | 2010-11-19 | 2011-04-06 | 中国船舶重工集团公司第七○九研究所 | 一种 TigerSHARC DSP LINK 口转串行 RapidIO总线的实现方法 |
CN102035751A (zh) * | 2011-01-20 | 2011-04-27 | 大唐移动通信设备有限公司 | 一种数据的传输方法和设备 |
CN102880573A (zh) * | 2012-09-04 | 2013-01-16 | 武汉邮电科学研究院 | 一种基于Linux***的串行RapidIo数据传输方法 |
Non-Patent Citations (2)
Title |
---|
RAPIDIO TRADE ASSOCIATION: "《RapidIO Interconnect Specification 3.0》", 11 October 2013 * |
SYED等: ""RapidIO Traffic Management and Flow Arbitration Protocol"", 《IEEE COMMUNICATIONS MAGAZINE》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109669903A (zh) * | 2018-12-07 | 2019-04-23 | 天津津航计算技术研究所 | 一种srio协议的桥接模块设计及优化方法 |
CN113420860A (zh) * | 2020-08-20 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 内存智能卡、设备、网络、方法及计算机存储介质 |
CN114765494A (zh) * | 2021-01-14 | 2022-07-19 | 瑞昱半导体股份有限公司 | 具有数据重用机制的数据传输方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105512075B (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016187813A1 (zh) | 一种光电混合网络的数据传输方法及装置 | |
CN103391256B (zh) | 一种基于Linux***的基站用户面数据处理优化方法 | |
CN102769869B (zh) | 无线接入点的控制和配置报文快速转发*** | |
CN109815176B (zh) | 特定dma数据发送方法、接收方法、***及介质 | |
CN106685826B (zh) | 交换机堆叠***、从设备、交换芯片及处理协议报文方法 | |
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
CN104796337A (zh) | 一种转发报文的方法及装置 | |
CN105511954A (zh) | 一种报文处理方法及装置 | |
CN104395895A (zh) | 用于输入/输出虚拟化的***和方法 | |
US11916811B2 (en) | System-in-package network processors | |
CN103945456A (zh) | 一种基于Linux***的LTE基站用户面高效UDP数据发送优化方法 | |
CN103312720A (zh) | 一种数据传输方法、设备及*** | |
US11829323B2 (en) | Method of notifying a process or programmable atomic operation traps | |
CN115065637B (zh) | 传输算力资源信息的方法、装置和电子设备 | |
CN106603409B (zh) | 一种数据处理***、方法及设备 | |
CN105512075A (zh) | 高速输出、输入接口电路及数据传输方法 | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及*** | |
KR20170133236A (ko) | PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치 | |
CN102916902A (zh) | 数据存储方法及装置 | |
CN114244915A (zh) | 一种支持多种协议的数据传输方法、装置及存储介质 | |
CN109286564B (zh) | 一种报文转发方法及装置 | |
TWI223747B (en) | Increasing memory access efficiency for packet applications | |
WO2023030195A1 (zh) | 缓存管理方法和装置、控制程序及控制器 | |
JP2020088517A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
CN117499351A (zh) | 报文转发装置及方法、通信芯片及网络设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180907 Termination date: 20201201 |