CN110765044B - 数据包传输装置及系统 - Google Patents
数据包传输装置及系统 Download PDFInfo
- Publication number
- CN110765044B CN110765044B CN201810832433.1A CN201810832433A CN110765044B CN 110765044 B CN110765044 B CN 110765044B CN 201810832433 A CN201810832433 A CN 201810832433A CN 110765044 B CN110765044 B CN 110765044B
- Authority
- CN
- China
- Prior art keywords
- packet
- fifo
- descriptor
- data packet
- data
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
一种数据包传输装置及系统,数据包传输装置包括:CPU;数据包传输加速器,适于提供输入接口和输出接口,所述输入接口接收发送设备发送的数据包的数据包描述符,所述输出接口输出所述数据包描述符至接收设备,以供所述接收设备根据所述数据包描述符获取所述数据包,所述发送设备和所述接收设备选自输入输出设备和所述CPU。本发明技术方案可以降低CPU的负载,提升CPU的性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据包传输装置及系统。
背景技术
计算机装置中通常存一些数据包输入输出设备,比如通用串行总线(UniversalSerial Bus,USB)、安全数字输入输出(Secure Digital Input and Output,SDIO)、高速串行计算机扩展总线(peripheral component interconnect express,PCIE)等,在必要时计算机装置还会包含调制解调器(MODEM)。数据包通过这些设备和中央处理器(CentralProcessing Unit,CPU)进行交互。在某些场景下,数据包需要从其中某些设备传输到另外的设备中。
现有技术中,CPU通过中断或者轮询的方式操作输入输出设备。尤其是从一个输入输出设备传输数据包到另一个输入输出设备,需要经历从源设备发送到CPU,再从CPU发送到目标设备的过程。
但是,如果采用上述的方法进行数据包的发送,则在数据流量特别大的情况下会存在CPU需要大量的时间来处理输入输出设备的中断等相关事务,一方面CPU的处理能力会成为计算机装置数据流量处理能力的瓶颈;另一方面为了满足高速数据包传输需求,需要高性能的CPU可能带来更多的功耗开销。
发明内容
本发明解决的技术问题是如何降低CPU的负载,提升CPU的性能。
为解决上述技术问题,本发明实施例提供一种数据包传输装置,数据包传输装置包括:CPU;数据包传输加速器,适于提供输入接口和输出接口,所述输入接口接收发送设备发送的数据包的数据包描述符,所述输出接口输出所述数据包描述符至接收设备,以供所述接收设备根据所述数据包描述符获取所述数据包,所述发送设备和所述接收设备选自输入输出设备和所述CPU。
可选的,所述数据包传输装置还包括外设访问管理器;在所述输入输出设备无法直接访问所述数据包传输加速器的输入接口和输出接口时,所述外设访问管理器适于适配所述输入输出设备的接口与所述数据包传输加速器的输入接口和输出接口。
可选的,所述输入接口包括第一FIFO和第二FIFO;所述第一FIFO接收所述发送设备发送的数据包描述符,发送方更新所述第一FIFO的写指针;所述接收方使用所述数据包描述符后,所述数据包传输加速器将所述数据包描述符写入所述第二FIFO,并更新所述第二FIFO的写指针。
可选的,所述输出接口包括第三FIFO和第四FIFO;所述数据包传输加速器从所述第一FIFO读出所述数据包描述符,更新所述第一FIFO的读指针,将所述数据包描述符写入所述第三FIFO,并更新所述第三FIFO的写指针;所述数据包描述符使用完成后,所述接收方将所述数据包描述符写入所述第四FIFO,并更新所述第四FIFO的写指针。
可选的,所述数据包描述符使用完成是指接收到所述接收设备反馈的使用完成信号。
可选的,所述数据包传输加速器将所述数据包描述符写入所述第三FIFO时,如果所述第三FIFO为满,则所述数据包传输加速器将所述数据包描述符中的错误码更新为预设值,以表示发送失败,将更新后的数据包描述符写入所述第二FIFO,并更新所述第二FIFO的写指针。
可选的,所述第三FIFO的深度达到预设进入门限时,所述数据包传输加速器通知所述发送设备产生中断。
可选的,所述输出接口包括第三FIFO和第四FIFO;所述接收方为嵌入式设备或CPU时,所述数据包传输加速器的输出模式为DMA模式;在所述DMA模式下,所述数据包传输加速器读取所述第四FIFO中的接收描述符以及内存地址,所述内存地址为嵌入式设备或CPU的有效地址,并将所述数据包描述符拷贝至所述接收描述符以及将所述数据包描述符所指向的有效数据拷贝至所述内存地址指向的内存,并将所述接收描述符写入所述第三FIFO,将所述数据包描述符写入所述第二FIFO。
可选的,所述数据包传输加速器在所述第一FIFO的深度达到预设中断门限后,通知所述接收设备产生中断;或者在所述第三FIFO从空到非空开始预设时间长度后通知所述接收设备产生中断。
可选的,所述接收设备接收到所述数据包后,如果所述数据包的数据描述符中的中断符为预设值,则所述接收设备立即产生中断。
可选的,所述数据包传输加速器根据所述发送设备的标识确定所述接收设备的标识,所述发送设备的标识与所述接收设备的标识一一对应;或者,所述数据包传输加速器根据所述数据包的数据包描述符确定所述接收设备,所述数据包描述符包括发送设备的标识以及接收设备的标识;或者,所述数据包传输加速器将所述数据包的内容与预设数据包规则表进行匹配,以确定所述接收设备。
可选的,所述数据包描述符包括所述数据包所在内存块的起始地址、所述数据包的有效数据地址相对于所述起始地址的偏移量、所述数据包的有效长度、发送所述数据包的发送设备的标识、接收所述数据包的接收设备的标识和/或用于数据流多路复用的多路复用标识。
为解决上述技术问题,本发明实施例还公开了一种数据包传输系统,数据包传输系统包括:发送设备,适于发送所述数据包描述符;接收设备,适于接收所述数据包描述符;所述数据包传输装置。
可选的,所述发送设备和所述接收设备选自:所述CPU、USB、SDIO、PCIE和调制解调器。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
本发明技术方案的数据包传输装置包括CPU;数据包传输加速器,适于提供输入接口和输出接口,所述输入接口接收发送设备发送的数据包的数据包描述符,所述输出接口输出所述数据包描述符至接收设备,以供所述接收设备根据所述数据包描述符获取所述数据包,所述发送设备和所述接收设备选自输入输出设备和所述CPU。本发明技术方案中,通过设置数据包传输加速器,可以在无需CPU的参与的情况下,实现输入输出设备之间的数据传输;从而在大数据流量时,不会增加CPU的负载,进而在同样的CPU资源下可以支持更高的数据流量,提升CPU性能。此外,通过设置数据包传输加速器,输入输出设备和CPU之间需要经由数据包传输加速器进行数据包传输,相对于输入输出设备和CPU直接进行数据传输,可以减少CPU中断的数量,可以提升CPU的业务处理能力,进一步提升CPU性能。
进一步地,本发明技术方案的数据包传输装置包括外设访问管理器;在所述输入输出设备无法直接访问所述数据包传输加速器的输入接口和输出接口时,所述外设访问管理器适于适配所述输入输出设备的接口与所述数据包传输加速器的输入接口和输出接口。本发明技术方案中,外设访问管理器通过与数据包传输加速器相连接,可以从数据包传输加速器的输出接口读取数据,从数据包传输加速器的输入接口写入数据;设访问管理器通过与输入输出设备相连接,可以接收和发送数据包描述信息,还可以对传输数据根据传输层协议进行封装和解析,以适配所述输入输出设备的接口与所述数据包传输加速器的输入接口和输出接口,从而实现输入输出设备与数据包传输加速器之间的数据传输。
进一步地,所述输入接口包括第一FIFO和第二FIFO;所述输出接口包括第三FIFO和第四FIFO。由于FIFO中的数据是按序写入和读出的,本发明技术方案通过分别设置输入接口和输出接口为两个FIFO,可以使得第二FIFO的读写顺序不会受到第一FIFO的读写顺序的影响,第四FIFO的读写顺序不会受到第三FIFO的影响,从而可以减少数据传输过程中的中断业务数量,提升数据传输效率。
进一步地,所述输出接口包括第三FIFO和第四FIFO;所述接收方为嵌入式设备或CPU时,所述数据包传输加速器的输出模式为DMA模式。由于嵌入式设备和CPU具有自己的数据内存,因此在本发明技术方案中,在DMA模式下可以由数据包传输加速器将有效数据拷贝至内存地址指向的内存,所述内存地址为嵌入式设备或CPU的有效地址,有利于嵌入式设备或CPU对数据进行管理;同时,在DMA模式避免了CPU进行数据拷贝,节省了CPU的开销。
附图说明
图1是本发明实施例一种数据包传输装置的结构示意图;
图2是本发明实施例另一种数据包传输装置的结构示意图;
图3是本发明实施例一种输入接口的结构示意图;
图4是本发明实施例一种输出接口的结构示意图;
图5是本发明实施例一种数据包传输系统的结构示意图。
具体实施方式
如背景技术中所述,如果采用现有技术中的方法进行数据包的发送,则在数据流量特别大的情况下会存在CPU需要大量的时间来处理输入输出设备的中断等相关事务,一方面CPU的处理能力会成为计算机装置数据流量处理能力的瓶颈;另一方面为了满足高速数据包传输需求,需要高性能的CPU可能带来更多的功耗开销。
本发明技术方案中,通过设置数据包传输加速器,可以在无需CPU的参与的情况下,实现输入输出设备之间的数据传输;从而在大数据流量时,不会增加CPU的负载,进而在同样的CPU资源下可以支持更高的数据流量,提升CPU性能。此外,通过设置数据包传输加速器,输入输出设备和CPU之间需要经由数据包传输加速器进行数据包传输,相对于输入输出设备和CPU直接进行数据传输,可以减少CPU中断的数量,可以提升CPU的业务处理能力,进一步提升CPU性能。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例一种数据包传输装置的结构示意图。
本实施例中的数据包传输装置10可以内置于任意可实施的智能终端设备,例如手机、计算机设备、平板电脑、路由器等。具体而言,数据包传输装置10可以是系统级芯片(System on Chip,SOC),并能够用于任意可实施的操作系统。
图1所示数据包传输装置10可以包括CPU101和数据包传输加速器102。
其中,数据包传输加速器102适于提供输入接口和输出接口,所述输入接口接收发送设备103发送的数据包的数据包描述符,所述输出接口输出所述数据包描述符至接收设备104,以供所述接收设备根据所述数据包描述符获取所述数据包,所述发送设备和所述接收设备选自输入输出设备和所述CPU101。通常而言,所述发送设备和所述接收设备为不同的设备。例如,其中一个是输入输出设备,另一个是所述CPU101;或者,所述发送设备和所述接收设备为不同的输入输出设备。
本实施例中,数据包传输加速器(Packets Transfer Accelerator,PTA)102的输入接口可以供发送设备103连接,输出接口可以供接收设备104连接。发送设备103可以通过输入接口向数据包传输加速器102发送数据包描述符;数据包传输加速器102通过输出接口将数据包描述符发送至接收设备104。
数据包描述符可以为数据包的相关信息,例如,数据包描述符可以指向数据包的实际存放地址,数据包描述符也可以是数据包大小,数据包描述符还可以表示发送该数据包的源设备的信息以及接收该数据包的目标设备的信息,也即发送设备103的信息以及接收设备104的信息。
相对于现有技术中两个输入输出设备之间的数据需要经由CPU来转发,本实施例中,两个输入输出设备之间的数据是通过数据包传输加速器102来转发的。
相对于现有技术中输入输出设备和CPU直接进行数据传输,CPU每接收一次数据就产生中断,本实施例中,输入输出设备和CPU通过数据包传输加速器102来转发数据,如果CPU读取数据的速率和输入输出设备输入数据的速率相当,可以一直保持传输而不产生中断。
具体而言,数据包传输加速器102可以由特定应用集成电路(ApplicationIntegrated Specific Circuit,AISC)来实现。
通过设置数据包传输加速器102,可以在无需CPU的参与的情况下,实现输入输出设备之间的数据传输;从而在大数据流量时,不会增加CPU的负载,进而在同样的CPU资源下可以支持更高的数据流量,提升CPU性能。此外,通过设置数据包传输加速器,输入输出设备和CPU之间需要经由数据包传输加速器进行数据包传输,相对于输入输出设备和CPU直接进行数据传输,可以减少CPU中断的数量,可以提升CPU的业务处理能力,进一步提升CPU性能。
请参照图2,数据包传输装置10还可以包括外设访问管理器(Peripheral AccessManager,PAM)105。
其中,在所述输入输出设备无法直接访问所述数据包传输加速器102的输入接口和输出接口时,所述外设访问管理器105适于适配所述输入输出设备的接口与所述数据包传输加速器的输入接口和输出接口。
本发明实施例中,外设访问管理器105通过与数据包传输加速器相连接,可以从数据包传输加速器的输出接口读取数据,从数据包传输加速器的输入接口写入数据;设访问管理器通过与输入输出设备相连接,可以接收和发送数据包描述信息,还可以对传输数据根据传输层协议进行封装和解析,以适配所述输入输出设备的接口与所述数据包传输加速器的输入接口和输出接口,从而实现输入输出设备与数据包传输加速器之间的数据传输。
具体实施中,CPU101以及具备CPU的输入输出设备,例如4G调制解调器(MODEM)可以直接访问数据包传输加速器102。但其他输入输出设备,例如USB、SDIO等无法直接访问所述数据包传输加速器102。在这种情况下,外设访问管理器105可以连接该输入输出设备的接口以及数据包传输加速器102的接口(也即输入端口和输出端口);在输入输出设备无需更改设计的基础上,建立该输入输出设备与数据包传输加速器102的访问连接。
具体而言,输入输出设备,例如USB在数据包的传输中需要特定的传输协议。所述传输协议在现有技术中需要CPU来实现,而本发明实施实例的外设访问管理器105能够实现原本需要CPU参与才能实现的传输协议,从而可以使得CPU不必和输入输出设备在数据包收发过程中发生任何操作和交互,减小了CPU的开销。
如图2所示,CPU101可以直接与数据包传输加速器102连接。输入输出设备可以包括MODEM1、MODEM2、USB和SDIO。其中,MODEM1具备CPU,可以直接与数据包传输加速器102连接。MODEM2、USB和SDIO则需要通过外设访问管理器105与数据包传输加速器102连接。
本实施例中,输入输出设备或CPU101与数据包传输加速器102的输入端口和输出端口一一对应。具体地,CPU101通过输入端口1a以及输出端口1b与数据包传输加速器102相连接;MODEM1通过输入端口2a以及输出端口2b与数据包传输加速器102相连接;MOSEM2通过输入端口3a以及输出端口3b与数据包传输加速器102相连接;USB通过输入端口4a以及输出端口4b与数据包传输加速器102相连接;SDIO通过输入端口5a以及输出端口5b与数据包传输加速器102相连接。
需要说明的是,输入输出设备也可以是其他任意可实施的设备,本发明实施例对此不做限制。
本发明一个具体实施例中,请一并参照图2和图3,所述输入接口包括第一FIFO和第二FIFO;所述第一FIFO接收所述发送设备发送的数据包描述符,发送方更新所述第一FIFO的写指针(Write Pointer,WP);所述接收方使用所述数据包描述符后,所述数据包传输加速器将所述数据包描述符写入所述第二FIFO,并更新所述第二FIFO的写指针。
其中,FIFO表示先入先出队列(First Input First Output)。
本实施例中的发送方可以是CPU、外设访问管理器105或具备CPU的输入输出设备;所述接收方可以是CPU、外设访问管理器105或具备CPU的输入输出设备。
具体而言,第一FIFO可以由数据包传输加速器102更新读指针(Read Pointer,RP),发送方更新写指针。也即,发送方向第一FIFO中写入数据,数据包传输加速器102从第一FIFO中读取数据。所述数据可以是数据包描述符。
第二FIFO可以由数据包传输加速器102更新写指针,发送方更新读指针。也即,数据包传输加速器102向第二FIFO中写入数据,发送方从第二FIFO中读取数据。
需要说明的是,第一FIFO和第二FIFO也可以是其他任意可实施的命名,例如第一FIFO为filled-fifo,第二FIFO为free-fifo,本发明实施例对此不做限制。
进一步地,请一并参照图2至图4,所述输出接口包括第三FIFO和第四FIFO;所述数据包传输加速器从所述第一FIFO读出所述数据包描述符,更新所述第一FIFO的读指针,将所述数据包描述符写入所述第三FIFO,并更新所述第三FIFO的写指针;所述数据包描述符使用完成后,所述接收方将所述数据包描述符写入所述第四FIFO,并更新所述第四FIFO的写指针。
具体而言,第三FIFO可以由数据包传输加速器102更新写指针,接收方更新读指针。也即,数据包传输加速器102向第三FIFO中写入数据,接收方从第三FIFO中读取数据。所述数据可以是数据包描述符。
第四FIFO可以由数据包传输加速器102更新读指针,接收方更新写指针。也即,接收方向第四FIFO中写入数据,数据包传输加速器102从第四FIFO中读取数据。所述数据可以是数据包描述符。
更近一步地,所述数据包描述符使用完成是指接收到所述接收设备反馈的使用完成信号。
具体而言,接收设备可以判断数据包描述符是否使用完成。接收设备可以根据自身的业务逻辑来判断是否使用完毕,例如USB的逻辑是USB的物理层判断并反馈使用完成信号,调制解调器通过无线信道反馈使用完成信号。所述接收方可以是CPU、外设访问管理器105或具备CPU的输入输出设备。
在本发明一个具体应用中,发送方1访问数据包传输加速器102的输入接口,将数据包的数据包描述符填写到所述输入接口的第一FIFO中,并更新第一FIFO的写指针。然后数据包传输加速器102开始传输,到达接收方1与数据包传输加速器102相连接的输出接口的第三FIFO,接收方1使用完毕后,将数据包描述符放入所述输出接口的第四FIFO,数据包传输加速器102再将数据包描述符取出,放入发送方1与数据包传输加速器102相连接的输入接口的第二FIFO,完成一次循环。
在后续步骤中传输同样的数据包时,数据包传输加速器102可以从发送方1与数据包传输加速器102相连接的输入接口的第二FIFO中,取出数据包描述符,放入所述输入接口的第一FIFO中,并更新第一FIFO的写指针。后续过程请参照前述实施例,此处不再赘述。
本发明一个优选实施例中,所述数据包传输加速器将所述数据包描述符写入所述第三FIFO时,如果所述第三FIFO为满,则所述数据包传输加速器将所述数据包描述符中的错误码更新为预设值,以表示发送失败,将更新后的数据包描述符写入所述第二FIFO,并更新所述第二FIFO的写指针。
具体实施中,数据包描述符包括错误码(ErrCode),错误码为预设值表示发送过程失败。
在数据发送过程中,如果接收方与数据包传输加速器102相连接的输出接口中的第三FIFO满了,则发送过程无法完成。在这种情况下,数据包传输加速器102可以将数据包描述符发送至所述发送方与数据包传输加速器102相连接的输入接口中的第二FIFO,并且在数据包描述符的错误码域中写入特定的预设值。
本发明另一个优选实施例中,所述第三FIFO的深度达到预设进入门限时,所述数据包传输加速器通知所述发送设备产生中断。
为了更好的控制流控的过程,数据包传输加速器102可以设置每个接收方的预设进入门限,当接收方与数据包传输加速器102相连接的输出端口的第三FIFO的深度达到预设进入门限时,通知发送方即将发生流控的事件,发送方产生对应的中断。
本发明另一个具体实施例中,所述接收方为嵌入式设备或CPU时,所述数据包传输加速器的输出模式为DMA模式;在所述DMA模式下,所述数据包传输加速器读取所述第四FIFO中的接收描述符以及内存地址,所述内存地址为嵌入式设备或CPU的有效地址,并将所述数据包描述符拷贝至所述接收描述符以及将所述数据包描述符所指向的有效数据拷贝至所述内存地址指向的内存,并将所述接收描述符写入所述第三FIFO,将所述数据包描述符写入所述第二FIFO。
在现有技术中,由于嵌入式设备和CPU具有自己的数据内存,因此需要CPU将数据包从发送方的内存地址中拷贝至嵌入式设备和CPU的内存中,CPU的开销较大。
本发明实施例中,在直接存储器访问(Direct Memory Access,DMA)模式下可以由数据包传输加速器将有效数据拷贝至内存地址指向的内存,所述内存地址为嵌入式设备或CPU的有效地址,有利于嵌入式设备或CPU对数据进行管理;同时,在DMA模式避免了CPU进行数据拷贝,节省了CPU的开销。
本发明另一种具体应用中,发送方1访问数据包传输加速器102的输入接口,将数据包的数据包描述符填写到所述输入接口的第一FIFO中,然后数据包传输加速器102开始传输,到达接收方时,数据包传输加速器102将发送的数据包描述符信息和指向内存分别拷贝到接收方的输出接口的第四FIFO中的接收描述符,和对应的内存地址中,数据包描述符被数据包传输加速器102放入发送方与数据包传输加速器102的输入端口的第二FIFO,接收描述符放入接收方的第三FIFO中。数据包描述符和接收描述符各自完成循环。
具体地,在DMA模式中,在初始化时,第四FIFO被初始化为满,其中填入接收描述符,接收描述符中的内存地址(也即addres域)指向预先分配好的内存块,该内存块中不存在有效数据,即所谓空白内存。
在DMA模式中,在初始化时,第三FIFO被初始化为空。数据包传输加速器102输出数据时,从第四FIFO中取出空白的接收描述符,将待发送的数据包描述符中的除地址(address offset)外的域拷贝至接收描述符中,将数据包描述符的地址指向的长度为length内存中的数据,拷贝至接收描述符的内存地址中,之后数据包传输加速器102把填写完内容的接收描述符写入到f第三FIFO中,CPU读取第三FIFO中接收描述符。CPU可以按照预设周期或根据第四FIFO中剩余空白接收描述符的数量,向第四FIFO中填入空白的接收描述符,以保证第四FIFO中有足够数量的接收描述符供数据包传输加速器102在后续过程中读取。
具体地,在非DMA模式中,在初始化时,第三FIFO和第四FIFO都被设置为空,即读写指针都相等。数据包传输加速器102发送数据时会更新第三FIFO的写指针,接收方通过更新第三FIFO的读指针来读取数据包描述符。数据发送完成后,接收方将发送完的数据包描述符写入第四FIFO,数据包传输加速器102读取第四FIFO中数据包描述符并更新读指针。
在本发明又一个优选实施例中,一并参照图1至图4,所述数据包传输加速器在所述第一FIFO的深度达到预设中断门限后,通知所述接收设备产生中断;或者在第三FIFO从空到非空开始预设时间长度后通知所述接收设备产生中断。
具体实施中,当接收方为CPU或包含嵌入式CPU的设备时,为了减少接收过程中的中断数量,只有在接收方的第三FIFO从空到非空之后才会产生中断,如果CPU读取第三FIFO的速率和数据包传输加速器102填写第三FIFO的速率相当,则可以一直保持传输而不产生中断。
为了进一步减少中断,但不影响性能,数据包传输加速器102除了可以设置接收方的第三FIFO从空到非空后这一时刻立刻产生中断,还可以在发送方的第一FIFO中积累了一定可配置的数量,也即第一FIFO的深度达到预设中断门限后再产生中断。
或者,在第三FIFO从空到非空开始预设时间长度后通知所述接收设备产生中断。
也可以在第三FIFO从空到非空开始预设时间长度且第一FIFO的深度达到预设中断门限时,通知所述接收设备产生中断。
在本发明再一个优选实施例中,所述接收设备接收到所述数据包后,如果所述数据包的数据描述符中的中断符为预设值,则所述接收设备立即产生中断。
具体实施中,数据描述符包括中断符(Intr域),中断符为预设值表示接收设备需要立即产生中断。
进一步地,在发送方发送的数据包比较重要时,发送方可以在该数据包的数据包描述符中设置中断符为预设值,以使得接收设备可以及时处理重要数据。
在CPU负载较重时会导致接收方的第三FIFO不能及时读空,这样就不会产生中断。通过本发明实施例,数据包传输加速器102可以灵活地平衡CPU的开销和时延的影响,达到降低CPU负载的目的。
本发明再一个具体实施例中,一并参照图1至图4,所述数据包传输加速器根据所述发送设备的标识确定所述接收设备的标识,所述发送设备的标识与所述接收设备的标识一一对应;或者,所述数据包传输加速器根据所述数据包的数据包描述符确定所述接收设备,所述数据包描述符包括发送设备的标识以及接收设备的标识;或者,所述数据包传输加速器将所述数据包的内容与预设数据包规则表进行匹配,以确定所述接收设备。
具体实施中,由于发送设备的标识与所述接收设备的标识一一对应,因此根据发送设备的标识可以确定所述接收设备的标识。
数据包描述符可以包括源设备标识以及目的设备标识,目的设备标识表示数据包要发送的接收设备。
预设数据包规则表可以是预先建立的,并预先存储于数据包传输加速器102中。数据包传输加速器102可以根据预设数据包规则表确定数据包的接收设备。
具体地,数据包规则表可以由CPU来生成并通过数据包规则表的形式配置给数据包传输加速器102,数据包传输加速器102在进行规则匹配时访问数据包规则表。进一步地,在数据包和数据包规则表中某个表项匹配时更新该表项中的时间戳。进而可以以时间戳的时间顺序为依据移除数据包规则表中的对应表项。
数据包传输加速器102在初始化时具有数据包规则表,当数据包在数据包规则表中被查找到时,则按照数据包规则表中规则进行后续处理。数据包传输加速器102发现不符合数据包规则表的数据包时,将该数据包就交给CPU处理,CPU上运行的软件通过对该数据包的处理,总结出新的规则,并把该规则加入数据包规则表中。
更具体地,数据包规则表可以支持处理IP包,IP包的五元组包括IP包中包含的源地址、源端口、目的地址、目的端口、协议类型。数据包规则表可以以IP包的五元组来确定一个IP规则条目。数据包传输加速器102可以确定与数据包规则表中五元组数据相同的IP包的处理规则,并使用规则表中对应的规则处理该IP包。
数据包传输加速器102还可以使用哈希(hash表)的方式加快查找速度。
本发明一个具体应用场景中,所述数据包描述符包括所述数据包所在内存块的起始地址、所述数据包的有效数据地址相对于所述起始地址的偏移量、所述数据包的有效长度、发送所述数据包的发送设备的标识、接收所述数据包的接收设备的标识和/或用于数据流多路复用的多路复用标识。
具体地,起始地址(address域)的长度可以占用40比特(bit),40bit的数据包描述符可以适应更多计算机系统,满足更多终端设备的需求。数据包的有效长度(length域)可以占用20bit。偏移量(offset域)可以占用12bit。多路复用标识(NetID域)可以占用8bit。发送所述数据包的发送设备的标识(src域)可以占用5bit。接收设备的标识(dst域)可以占用5bit。
进一步地,数据包描述符还可以包括索引(index域),表示此描述符的address域被标识为内存块的序列号而不是实际地址,可以占用1bit。
数据包描述符还可以包括中断符(Intr域),表示是否让数据包传输加速器102发送完该数据包后立刻通知接收方产生中断,可以占用1bit。
数据包描述符还可以包括错误码(ErrCode域),表示发送过程中是否存在错误,可以占用4bit。
请参照图5,数据包传输系统50可以包括:
发送设备103,适于发送所述数据包描述符;
接收设备104,适于接收所述数据包描述符;
数据包传输装置10。
本发明实施例中,通过在数据包传输装置10中设置数据包传输加速器,可以在无需数据包传输装置10的CPU的参与的情况下,实现输入输出设备之间的数据传输;从而在大数据流量时,不会增加CPU的负载,进而在同样的CPU资源下可以支持更高的数据流量,提升CPU性能。此外,通过设置数据包传输加速器,输入输出设备和CPU之间需要经由数据包传输加速器进行数据包传输,相对于输入输出设备和CPU直接进行数据传输,可以减少CPU中断的数量,可以提升CPU的业务处理能力,进一步提升CPU性能。
具体实施中,所述发送设备103和所述接收设备104可以选自:所述CPU、USB、SDIO、PCIE和调制解调器。
数据包传输装置10的更多工作原理及具体实施方式请参照前述实施例,此处不再赘述。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (13)
1.一种数据包传输装置,其特征在于,包括:
CPU;
数据包传输加速器,适于提供输入接口和输出接口,所述输入接口接收发送设备发送的数据包的数据包描述符,所述输出接口输出所述数据包描述符至接收设备,以供所述接收设备根据所述数据包描述符获取所述数据包,所述发送设备和所述接收设备选自输入输出设备和所述CPU;
所述输入接口包括第一FIFO和第二FIFO;所述第一FIFO接收所述发送设备发送的数据包描述符,所述发送设备更新所述第一FIFO的写指针;所述接收设备使用所述数据包描述符后,所述数据包传输加速器将所述数据包描述符写入所述第二FIFO,并更新所述第二FIFO的写指针。
2.根据权利要求1所述的数据包传输装置,其特征在于,还包括外设访问管理器;
在所述输入输出设备无法直接访问所述数据包传输加速器的输入接口和输出接口时,所述外设访问管理器适于适配所述输入输出设备的接口与所述数据包传输加速器的输入接口和输出接口。
3.根据权利要求1所述的数据包传输装置,其特征在于,所述输出接口包括第三FIFO和第四FIFO;所述数据包传输加速器从所述第一FIFO读出所述数据包描述符,更新所述第一FIFO的读指针,将所述数据包描述符写入所述第三FIFO,并更新所述第三FIFO的写指针;所述数据包描述符使用完成后,所述接收设备将所述数据包描述符写入所述第四FIFO,并更新所述第四FIFO的写指针。
4.根据权利要求3所述的数据包传输装置,其特征在于,所述数据包描述符使用完成是指接收到所述接收设备反馈的使用完成信号。
5.根据权利要求3所述的数据包传输装置,其特征在于,所述数据包传输加速器将所述数据包描述符写入所述第三FIFO时,如果所述第三FIFO为满,则所述数据包传输加速器将所述数据包描述符中的错误码更新为预设值,以表示发送失败,将更新后的数据包描述符写入所述第二FIFO,并更新所述第二FIFO的写指针。
6.根据权利要求3所述的数据包传输装置,其特征在于,所述第三FIFO的深度达到预设进入门限时,所述数据包传输加速器通知所述发送设备产生中断。
7.根据权利要求3所述的数据包传输装置,其特征在于,所述数据包传输加速器在所述第一FIFO的深度达到预设中断门限后,通知所述接收设备产生中断;或者在所述第三FIFO从空到非空开始预设时间长度后通知所述接收设备产生中断。
8.根据权利要求1所述的数据包传输装置,其特征在于,所述输出接口包括第三FIFO和第四FIFO;所述接收设备为嵌入式设备或CPU时,所述数据包传输加速器的输出模式为DMA模式;在所述DMA模式下,所述数据包传输加速器读取所述第四FIFO中的接收描述符以及内存地址,所述内存地址为嵌入式设备或CPU的有效地址,并将所述数据包描述符拷贝至所述接收描述符以及将所述数据包描述符所指向的有效数据拷贝至所述内存地址指向的内存,并将所述接收描述符写入所述第三FIFO,将所述数据包描述符写入所述第二FIFO。
9.根据权利要求1所述的数据包传输装置,其特征在于,所述接收设备接收到所述数据包后,如果所述数据包的数据描述符中的中断符为预设值,则所述接收设备立即产生中断。
10.根据权利要求1所述的数据包传输装置,其特征在于,所述数据包传输加速器根据所述发送设备的标识确定所述接收设备的标识,所述发送设备的标识与所述接收设备的标识一一对应;或者,所述数据包传输加速器根据所述数据包的数据包描述符确定所述接收设备,所述数据包描述符包括发送设备的标识以及接收设备的标识;或者,所述数据包传输加速器将所述数据包的内容与预设数据包规则表进行匹配,以确定所述接收设备。
11.根据权利要求1所述的数据包传输装置,其特征在于,所述数据包描述符包括所述数据包所在内存块的起始地址、所述数据包的有效数据地址相对于所述起始地址的偏移量、所述数据包的有效长度、发送所述数据包的发送设备的标识、接收所述数据包的接收设备的标识和/或用于数据流多路复用的多路复用标识。
12.一种数据包传输系统,其特征在于,包括:
发送设备,适于发送数据包描述符;
接收设备,适于接收所述数据包描述符;
如权利要求1-11任一项所述的数据包传输装置。
13.根据权利要求12所述的数据包传输系统,其特征在于,所述发送设备和所述接收设备选自:CPU、USB、SDIO、PCIE和调制解调器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810832433.1A CN110765044B (zh) | 2018-07-26 | 2018-07-26 | 数据包传输装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810832433.1A CN110765044B (zh) | 2018-07-26 | 2018-07-26 | 数据包传输装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110765044A CN110765044A (zh) | 2020-02-07 |
CN110765044B true CN110765044B (zh) | 2021-02-23 |
Family
ID=69327505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810832433.1A Active CN110765044B (zh) | 2018-07-26 | 2018-07-26 | 数据包传输装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110765044B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116893987B (zh) * | 2023-09-11 | 2024-01-12 | 归芯科技(深圳)有限公司 | 硬件加速方法、硬件加速器及硬件加速系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1493022A (zh) * | 2000-12-29 | 2004-04-28 | ض� | 当中央处理器操作被挂起时仍保持可操作的计算机外围设备 |
CN1549975A (zh) * | 2001-08-30 | 2004-11-24 | ���ȿ���ͨ�Źɷ�����˾ | 在电子电路中传送数据的方法,电子电路以及相关设备 |
CN101968776A (zh) * | 2010-10-19 | 2011-02-09 | 广东威创视讯科技股份有限公司 | 一种图像采集输出方法及其系统 |
CN104021099A (zh) * | 2014-06-19 | 2014-09-03 | 大唐微电子技术有限公司 | 一种控制数据传输的方法及dma控制器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI254858B (en) * | 2004-04-14 | 2006-05-11 | Mediatek Inc | Multitask data transfer system on ATA bus |
US8046506B2 (en) * | 2006-03-21 | 2011-10-25 | Mediatek Inc. | FIFO system and operating method thereof |
-
2018
- 2018-07-26 CN CN201810832433.1A patent/CN110765044B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1493022A (zh) * | 2000-12-29 | 2004-04-28 | ض� | 当中央处理器操作被挂起时仍保持可操作的计算机外围设备 |
CN1549975A (zh) * | 2001-08-30 | 2004-11-24 | ���ȿ���ͨ�Źɷ�����˾ | 在电子电路中传送数据的方法,电子电路以及相关设备 |
CN101968776A (zh) * | 2010-10-19 | 2011-02-09 | 广东威创视讯科技股份有限公司 | 一种图像采集输出方法及其系统 |
CN104021099A (zh) * | 2014-06-19 | 2014-09-03 | 大唐微电子技术有限公司 | 一种控制数据传输的方法及dma控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN110765044A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7263103B2 (en) | Receive queue descriptor pool | |
US6925512B2 (en) | Communication between two embedded processors | |
US8208470B2 (en) | Connectionless packet data transport over a connection-based point-to-point link | |
US11379278B2 (en) | Methods and apparatus for correcting out-of-order data transactions between processors | |
EP2312807B1 (en) | Method and system for enabling zero-copy transmission of streaming media data | |
US8051212B2 (en) | Network interface adapter with shared data send resources | |
CN101340574B (zh) | 一种实现零拷贝发送流媒体数据的方法及系统 | |
CN101930416B (zh) | 硬件协助处理器间的沟通 | |
US20040252685A1 (en) | Channel adapter with integrated switch | |
US7136355B2 (en) | Transmission components for processing VLAN tag and priority packets supported by using single chip's buffer structure | |
CN104796337A (zh) | 一种转发报文的方法及装置 | |
CN111930676A (zh) | 多处理器间的通信方法、装置、系统及存储介质 | |
CN103049240B (zh) | Pci-e设备及其接收数据重排序方法 | |
US20040030712A1 (en) | Efficient routing of packet data in a scalable processing resource | |
CN105677597A (zh) | 数据写入方法及装置 | |
US20040054822A1 (en) | Transferring interrupts from a peripheral device to a host computer system | |
CN103986585A (zh) | 报文预处理方法及其装置 | |
CN116471242A (zh) | 基于rdma的发送端、接收端、数据传输系统及方法 | |
CN110765044B (zh) | 数据包传输装置及系统 | |
US7610415B2 (en) | System and method for processing data streams | |
US9817784B2 (en) | Multi-port transmitter device for transmitting at least partly redundant data, an associated control system, an associated method and an associated computer program product | |
CN110958216B (zh) | 安全的在线网络分组传输 | |
EP1971923B1 (en) | Method for managing under-runs and a device having under-run management capabilities | |
CN103995786B (zh) | 高速缓存一致性消息的传输方法和装置 | |
CN110647493B (zh) | 一种数据传输方法、处理器和pcie系统 |
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 |