CN107888337B - 一种fpga、fpga处理信息的方法、加速装置 - Google Patents
一种fpga、fpga处理信息的方法、加速装置 Download PDFInfo
- Publication number
- CN107888337B CN107888337B CN201711086045.5A CN201711086045A CN107888337B CN 107888337 B CN107888337 B CN 107888337B CN 201711086045 A CN201711086045 A CN 201711086045A CN 107888337 B CN107888337 B CN 107888337B
- Authority
- CN
- China
- Prior art keywords
- ethernet
- processed
- interface
- fpga
- subunit
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0083—Formatting with frames or packets; Protocol or part of protocol for error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0084—Formats for payload data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
Abstract
本发明实施例提供一种FPGA、FPGA处理信息的方法、加速装置,用以解决现有技术中在OpenCL开发平台下,通过FPGA处理以太网报文时,需要配置专用的网卡,且数据传输过程的周期长、延时高的技术问题。其中,一种FPGA,包括:内核kernel单元,用于处理待处理信息;以太网引擎单元,与位于所述FPGA外部的以太网接口连接,以及与所述kernel单元通过流传输接口连接,用于在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,在所述以太网接口与流传输接口间进行比特流、以太网帧的格式转换。
Description
技术领域
本发明涉及电子器件领域,尤其涉及一种FPGA、FPGA处理信息的方法、加速装置。
背景技术
现场可编程门阵列(Field-Programmable Gate Array,FPGA)是一种集成度很高的新型高性能可编程芯片,其内部电路功能是可编程的(Programmable),可以通过硬件描述语言(Hardware Description Language,HDL)和专用设计工具,在其内部灵活地实现极其复杂的电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。
目前,存在基于开放运算语言(Open Computing Language,OpenCL)标准,通过FPGA来实现异构运算环境的技术方案。如图1所示,现有技术中,基于OpenCL平台通过FPGA处理以太网报文时,采用如下的方式:
(1)通过FPGA外部的专用网卡(Network Interface Card,NIC)接收以太网报文,并将以太网报文传输至FPGA外部的主处理机(Host Processor);
(2)主处理机将接收的以太网报文打包为A、B、C、D等数据块,并通过FPGA内部的一高速串行计算机扩展总线(Peripheral Component Interconnect-Expres,PCI-E),将打包好的A、B、C、D等数据块发送至FPGA内的内核(kernel)单元;
(3)kernel单元将A、B、C、D等数据块解析为以太网报文后,再对以太网报文进行处理,并将处理好的以太网报文再次打包为A’、B’、C’、D’等数据块,通过FPGA内部的一PCI-E将A’、B’、C’、D’等数据块发送至FPGA外部的主处理机;
(4)主处理机将A’、B’、C’、D’等数据块解析为以太网格式的帧发送给FPGA外部的专用网卡进行传输。
可见,现有技术中在OpenCL开发平台下,通过FPGA处理以太网报文时,需要为FPGA配置专用的网卡,且需要主处理器、kernel单元对传输的数据进行打包和解析,通过PCI-E传输数据,整个数据传输过程的周期长、延时高。
发明内容
本发明实施例提供一种FPGA、FPGA处理信息的方法、加速装置,用以解决现有技术中在OpenCL开发平台下,通过FPGA处理以太网报文时,需要配置专用的网卡,且数据传输过程的周期长、延时高的技术问题。
第一方面,提供一种FPGA,所述FPGA包括:
内核kernel单元,用于处理待处理信息;
以太网引擎单元,与位于所述FPGA外部的以太网接口连接,以及与所述kernel单元通过流传输接口连接,用于在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,在所述以太网接口与流传输接口间进行比特流、以太网帧的格式转换。
在一种可能的实现方式中,
所述以太网引擎单元,用于从所述以太网接口接收包含所述待处理信息的待处理比特流;将所述待处理比特流转换成采用预设帧格式的至少一个待处理以太网帧;
所述kernel单元,用于通过第一流传输接口从所述以太网引擎单元获得所述至少一个待处理以太网帧;根据所述至少一个待处理以太网帧获得所述待处理信息;处理所述待处理信息以获得结果信息;将所述结果信息封装为采用所述预设帧格式的至少一个结果以太网帧;通过第二流传输接口向所述以太网引擎单元发送所述至少一个结果以太网帧;
所述以太网引擎单元,还用于将所述至少一个结果以太网帧转换为结果比特流,并通过所述以太网接口传输所述结果比特流。
在一种可能的实现方式中,所述以太网引擎单元包括物理层PHY子单元、数据链路层MAC子单元、输入缓存和输出缓存,其中:
所述PHY子单元,与所述以太网接口连接,以及与所述MAC子单元通过媒体独立接口连接,用于:从所述以太网接口接收所述待处理比特流,对所述待处理比特流进行串并转换以获得待处理并行数据流,通过所述媒体独立接口传输所述待处理并行数据流至所述MAC子单元;以及用于:通过所述媒体独立接口从所述MAC子单元接收结果并行数据流,对所述结果并行数据流进行并串转换以获得结果比特流,通过所述以太网接口传输所述结果比特流;
所述MAC子单元与所述接收缓存、发送缓存连接,用于:封装所述待处理并行数据流,以获得所述至少一个待处理以太网帧,将所述至少一个待处理以太网帧存储至所述接收缓存,以由所述kernel单元通过所述第一流传输接口,从所述接收缓存读取所述至少一个待处理以太网帧;以及用于:从所述发送缓存读取所述至少一个结果以太网帧,将所述至少一个结果以太网帧转换为所述结果并行数据流,通过所述媒体独立接口传输所述结果并行数据流至所述PHY子单元;
所述接收缓存,通过所述第一流传输接口与所述kernel单元连接,用于存储所述至少一个待处理以太网帧;
所述发送缓存,通过所述第二流传输接口与所述kernel单元连接,用于存储所述kernel单元通过所述第二流传输接口发送的所述至少一个结果以太网帧。
在一种可能的实现方式中,所述FPGA包括多组以太网引擎单元,所述预设帧格式包括通道位,所述通道位用于指示所述多组以太网引擎单元中用于传输以太网帧的以太网引擎单元。
第二方面,提供一种FPGA处理信息的方法,所述FPGA包括用于处理待处理信息的内核kernel单元,及与所述kernel单元通过流传输接口连接的以太网引擎单元,所述方法包括:
在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,通过所述以太网引擎单元,在所述kernel单元与以太网接口间进行比特流、以太网帧的格式转换;其中,所述以太网接口与所述以太网引擎单元连接,且位于所述FPGA外部。
在一种可能的实现方式中,在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,通过所述以太网引擎单元,在所述kernel单元与以太网接口间进行比特流、以太网帧的格式转换,包括:
通过所述以太网引擎单元,从所述以太网接口获得包含待处理信息的待处理比特流,并将所述待处理比特流转换成采用预设帧格式的至少一个待处理以太网帧;
通过所述kernel单元,由第一流传输接口从所述以太网引擎单元获得所述至少一个待处理以太网帧,根据所述至少一个待处理以太网帧获得所述待处理信息,处理所述待处理信息以获得结果信息,将所述结果信息封装为采用所述预设帧格式的至少一个结果以太网帧,由第二流传输接口向所述以太网引擎单元发送所述至少一个结果以太网帧;
通过所述以太网引擎单元,将所述至少一个结果以太网帧转换为结果比特流,由所述以太网接口传输所述结果比特流。
在一种可能的实现方式中,所述以太网引擎单元包括物理层PHY子单元、数据链路层MAC子单元、输入缓存和输出缓存,在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,通过所述以太网引擎单元,在所述kernel单元与以太网接口间进行比特流、以太网帧的格式转换,包括:
通过所述PHY子单元,从所述以太网接口接收所述待处理比特流,对所述待处理比特流进行串并转换以获得待处理并行数据流,由媒体独立接口传输所述待处理并行数据流至所述MAC子单元;其中,所述PHY子单元与所述以太网接口连接,以及通过所述媒体独立接口与所述MAC子单元连接;
通过所述MAC子单元,封装所述待处理并行数据流,以获得所述至少一个待处理以太网帧,将所述至少一个待处理以太网帧存储至所述接收缓存;其中,所述MAC子单元与所述接收缓存、所述发送缓存连接,
通过所述kernel单元,由所述第一流传输接口,从所述接收缓存读取所述至少一个待处理以太网帧;以及由所述第二流传输接口,发送所述至少一个结果以太网帧至所述发送缓存;
通过所述MAC子单元,从所述发送缓存读取所述至少一个结果以太网帧,将所述至少一个结果以太网帧转换为结果并行数据流,由所述媒体独立接口传输所述结果并行数据流至所述PHY子单元;
通过所述PHY子单元,由所述媒体独立接口,从所述MAC子单元接收所述结果并行数据流,对所述结果并行数据流进行并串转换以获得结果比特流,由所述以太网接口传输所述结果比特流。
在一种可能的实现方式中,所述FPGA包括多组以太网引擎单元,所述预设帧格式包括通道位,所述通道位用于指示所述多组以太网引擎单元中用于传输以太网帧的以太网引擎单元。
在一种可能的实现方式中,所述预设帧格式包括满full指示位和/或剩余空间指示位,其中:
所述full指示位用于指示所述接收缓存的存储空间是否已满,以使得所述kernel单元根据所述full指示位确定所述存储空间已满时,调整从所述接收缓存读取数据的策略;
所述剩余空间指示位用于指示所述存储空间的剩余存储容量,以使得所述kernel单元根据所述剩余空间指示位所指示的所述剩余存储容量,调整从所述接收缓存读取数据的策略。
第三方面,提供一种加速装置,所述加速装置包括至少一个存储器、至少一个以太网接口,以及如第一方面所述的FPGA,其中:
所述至少一个存储器,用于存储所述FPGA运行时所需的变量数据;
所述至少一个以太网接口,接连于所述FPGA,用于提供与所述FPGA进行以太网数据交互的接口。
本发明实施例中,FPGA包括用于处理待处理信息的kernel单元,及以太网引擎单元。通过以太网引擎单元在以太网接口与流传输接口间进行比特流、以太网帧的格式转换,FPGA可以直接与FPGA外部进行以太网数据交互,无需在FPGA外部配置专用的网卡。
进一步地,本发明实施例中,通过以太网引擎单元,FPGA与FPGA外部进行交互的数据无需打包为数据块,节约了主处理器和kernel单元的处理资源,同时,避免了打包、解析数据块导致的时延。
进一步地,本发明实施例中,FPGA与FPGA外部进行以太网数据交互时,无需经过FPGA内的PCI-E总线,降低PCI-E总线的数据传输压力,同时,避免了受限于PCI-E总线的传输能力而发生数据拥塞的情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有技术中的FPGA处理以太网报文的方式;
图2为本发明实施例中一种FPGA的结构框图;
图3为本发明实施例中以太网引擎单元的结构示意图;
图4为本发明实施例中一种接口时序图;
图5为本发明实施例中一种加速装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
为了更好的理解本发明实施例中的方法,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
实施例一
请参见图2,图2为本发明实施例中一种FPGA的结构示意图。如图2所示,本发明实施例提供一种FPGA,该FPGA包括kernel单元和以太网引擎单元。
其中,以太网引擎单元可以与FPGA外部的以太网接口连接,该以太网接口可以连接到FPGA外部的装置、设备,以提供与FPGA进行以太网数据交互的接口。
举例来说,该以太网接口可以通过光纤、网线等传输介质连接到服务器、个人电脑(PC)等电子设备。并且,该以太网接口可以是多种传输速率的接口,如可以是10GB以太网接口,等等,本发明实施例对此不做限制。
其中,以太网引擎单元可以与kernel单元通过流传输接口连接。在具体的实施过程中,该流传输接口可以是符合OpenCL标准的流传输接口,例如可以是avalon流传输接口(avalon-ST)。
本发明实施例中,kernel单元可以用于处理待处理信息,该待处理信息可以是kernel单元与FPGA外部进行以太网数据交互时,需要获得的有效数据。kernel单元处理待处理信息的方式可以是执行以太网查表、加密、加速等计算操作,本发明实施例中对于kernel单元处理何种待处理信息,以及具体如何处理待处理信息不做限制。
在具体的实施过程中,可以根据需要为kernel单元配置不同的逻辑电路,以使得kernel单元具体不同的处理待处理信息的功能。也就是说,本发明实施例中实现的FPGA也可以作为一个开发平台,以方便后续的FPGA芯片开发。
本发明实施例中,以太网引擎单元可以用于在kernel单元与FPGA外部进行以太网数据交互的过程中,在以太网接口与流传输接口间进行比特流、以太网帧的格式转换。
在具体的实施过程中,FPGA外部所传输的以太网数据的数据形式为比特流,kernel单元无法识别。通过以太网引擎单元在以太网接口与流传输接口间进行比特流、以太网帧格式转换,FPGA可以与外部进行以太网数据交互。
也就是说,本发明实施例中,为kernel单元提供了与FPGA外部进行以太网数据交互的通道。
在一种可能的实施方式中,以太网引擎单元可以用于从以太网接口接收包含待处理信息的待处理比特流,进而,以太网引擎单元可以将待处理比特流转换成采用预设帧格式的至少一个待处理以太网帧。
其中,以太网引擎单元将待处理比特流转换为待处理以太网帧时,根据待处理比特流的数据量,将待处理比特流包括的数据转换为对应数目的待处理以太网帧。并且,当转换获得的待处理以太网帧为多个时,待处理以太网帧可以是连续的,并且,kernel单元获取、处理待处理以太网帧时,也可以是获取、处理的连续的待处理以太网帧。
本发明实施例中,kernel单元通过以太网引擎单元获取数据和发送数据时,可以分别采用不同的流传输接口,如kernel单元与以太网引擎单元间可以连接有第一流传输接口和第二流传输接口。其中,第一流传输接口可以为kernel单元从以太网引擎单元获取数据的接口,第二流传输接口可以为kernel单元向以太网引擎单元发送数据的接口。
本发明实施例中,kernel单元可以用于通过第一流传输接口从以太网引擎单元获得至少一个待处理以太网帧,并且根据获取的至少一个待处理以太网帧获得待处理信息。举例来说,kernel单元可以对获取的至少一个待处理以太网帧进行解析,以获得待处理信息。
进而,kernel单元处理待处理信息以获得结果信息,将这些结果信息封装为采用预设帧格式的至少一个结果以太网帧,该预设帧格式与待处理以太网帧的帧格式所采用的预设帧格式相同,并且,kernel单元通过第二流传输接口向以太网引擎单元发送至少一个结果以太网帧,以通过以太网引擎单元向FPGA外部传递结果信息。
以太网引擎单元获得kernel单元发送的至少一个结果以太网帧后,可以将至少一个结果以太网帧转换为结果比特流,并通过以太网接口传输该结果比特流,以实现向FPGA外部传递结果信息。
在一种可能的实施方式中,如图3所示,以太网引擎单元包括有物理层(PhysicalLayer,PHY)子单元、数据链路层(Media Access Control,MAC)子单元、输入缓存(ReceiverBuffer,Rx Buffer)和输出缓存(Transceiver Buffer,Tx Buffer)。
本发明实施例中,PHY子单元与以太网接口连接,以及通过媒体独立接口与MAC子单元连接,MAC子单元与接收缓存、发送缓存分别连接,接收缓存通过第一流传输接口与kernel单元连接,发送缓存通过第二流传输接口与kernel单元连接。
其中,连接PHY子单元和MAC子单元的媒体独立接口可以采用的标准、类型有多种,例如可以是标准媒体独立接口(Medium Independent Interface,MII)、简化媒体独立接口(Reduced MII,RMII)、串行媒体独立接口(Serial MII,SMII)、串行同步接口(Serial SyncMII,SSMII)、吉比特媒体独立接口(Gigabit MII,GMII)、10GB媒体独立接口(10GigabitMII,XGMII),等等。
并且,在具体的实施过程中,媒体独立接口的类型与以太网接口的类型相对应。例如,以太网接口为10G以太网接口时,媒体独立接口可以是对应的XMGII。
本发明实施例中,PHY子单元可以用于从以太网接口接收待处理比特流,并对待处理比特流进行串并转换,以获得待处理并行数据流,通过媒体独立接口传输待处理并行数据流至MAC子单元。
MAC子单元可以用于,在接收到待处理并行数据后,封装待处理并行数据流,以获得至少一个待处理以太网帧,并将至少一个待处理以太网帧存储至接收缓存,以由kernel单元通过第一流传输接口,从接收缓存读取这至少一个待处理以太网帧。kernel单元读取这至少一个待处理以太网帧后,即可以从这至少一个待处理以太网帧获得待处理信息,并处理待处理信息,以获得结果信息,进而,kernel单元封装结果信息为至少一个结果以太网帧,并通过第二流传输接口发送这至少一个结果以太网帧至发送缓存。
MAC子单元还可以用于,从发送缓存读取这至少一个结果以太网帧,将这至少一个结果以太网帧转换为结果并行数据流,并通过媒体独立接口传输结果并行数据流至PHY子单元。
PHY子单元还可以用于,通过媒体独立接口从MAC子单元接收结果并行数据流,对结果并行数据流进行并串转换以获得结果比特流,进而,通过以太网接口传输结果比特流,以实现kernel单元与FPGA外部的以太网数据交互。
本发明实施例中,PHY子单元和MAC子单元可以用FPGA提供的ip核(ipcore)配置而成。并且,本发明实施中,可以通过配置PHY子单元、MAC子单元、接收缓存、发送缓存,及其相互间的连接关系而形成以太网引擎单元。
本发明实施例中,接收缓存可以用于存储需要kernel单元接收的待处理以太网帧,发送缓存可以用于存储kernel单元需要发送的结果以太网帧。接收缓存、发送缓存内部可以采用跨时钟域的先入先出队列(First Input First Output,FIFO),实现高速的缓存和安全的接口转换。
在一种可能的实施方式中,FPGA可以包括有多组以太网引擎单元,其中,每一组以太网引擎单元都可以进行比特流、以太网帧的格式转换,也就是说,kernel单元可以有多个通道与FPGA外部进行以太网数据交互,并且,这多个通道可以是连接到FPGA外部同一个或不相同的装置、设备。
本发明实施例中,接收缓存与kernel单元之间,和/或,发送缓存与kernel单元之间,所采用的接口时序可以是符合OpenCL标准的时序,举例来说,可以是avlon-ST中定义的时序,例如为图4所示的时序。图4所示的时序为avlon-ST总线中最简洁的模式,该时序可以与kernel内核直接匹配,无需额外的时序转换,不仅具有较高的工作效率,而且节约成本。
如图4中,ready信号为1代表可以接收数据,valid信号为1代表数据有效,data数据线在valid为1的时候有效。
本发明实施例中,待处理以太网帧和结果以太网帧的帧格式为预设帧格式。如表1所示为本发明实施例中预设帧格式的一种形式,其中,预设帧格式共包括128位,其中控制信息64位,数据信息64位。
表1
表1中,payload为有效载荷;packet表示传输待处理信息的连续的待处理以太网帧整体,或表示传输结果信息的连续的结果以太网帧整体。其中,[0:63]用于存储该以太网帧中的有效载荷;[64]为起始指示位,当[64]的值为1时,表示该以太网帧为packet中的第一帧;[65]为结束指示位,当[65]的值为1时,表示该以太网帧为packet中的最后一帧;[66:68]用于表示packet中的最后一帧的[0:63]中那些位存有数据;[69:84]用于记录整个packet的长度;[85:90]为通道号,用于指示FPGA包括的多组以太网引擎单元中用于传输该以太网帧的以太网引擎单元;[91]为错误指示位,用于指示以太网引擎单元是否存在报错;[92]为满(full)位,用于指示以太网引擎单元中存储该以太网帧的缓存的存储空间是否已满;[93:106]为剩余空间指示位,用于记录以太网引擎单元中存储该以太网帧的缓存的剩余存储空间的容量;[107:127]用于填充0。
在具体的实施过程中,预设帧格式中各内容的在帧中的位置可以如表1所示,各内容的位置也可以为其它的排布方式,本发明实施例中对此不做限制。
本发明实施例中,通道位可以记录有以太网引擎单元的编号信息。
本发明实施例中,full指示位可以用于指示接收缓存的存储空间是否已满,以使得kernel单元根据full指示位确定接收缓存的存储空间已满时,调整从接收缓存读取数据的策略。举例来说,接收缓存已满时,可能会发生丢byte现象,kernel单元在确定接收缓存的存储空间已满时,可以提高从接收缓存读取数据的速率,也可以新开通道从接收缓存同时读取数据,还可以是在通过多通道同时从接收缓存读取数据的情况下,丢弃读取到的部分帧以加快处理速率。
本发明实施例中,剩余空间指示位可以用于指示接收缓存的存储空间的剩余存储容量,以使得kernel单元根据剩余空间指示位所指示的剩余存储容量,调整从接收缓存读取数据的策略。举例来说,kernel单元可以根据剩余存储容量的多少来调整从接收缓存读取数据的速率;剩余空间指示位指示剩余存储容量为0时,kernel单元可以确定接收缓存中没有数据需要读取了,则可以暂停从接收缓存读取数据,等等。并且,在具体的实施过程中,kernel单元中可以设置有不同的容量阈值(/容量区段),根据剩余存储容量所达到的容量阈值(/容量区段),确定对应的从接收缓存读取数据的策略。
也就是说,full指示位、剩余空间指示位所指示的接收缓存的存储空间的相关信息,可以是kernel单元确定如何读取数据的依据。
本发明实施例中,以电路系统的形式将以太网引擎单元实现在FPGA芯片内部,从而实现OpenCL平台的kernel单元数据来源和出口可以是以太网接口。并且,待处理信息和结果信息的来源和出口可以是以太网接口,不仅大大减轻FPGA内部PCI-E通道的数据传输压力,而且降低了传输数据的延迟,拓展了kernel单元在以太网数据处理上的应用,使得FPGA的处理效率更高。
实施例二
基于同一发明构思,本发明实施例提供一种FPGA处理信息的方法,该方法可以应用于如图2所示的FPGA,FPGA包括用于处理待处理信息的kernel单元,及与kernel单元通过流传输接口连接的以太网引擎单元。并且,该FPGA可以是以实施例一中所述的FPGA,因而,本发明实施例中关于FPGA的说明,可以参看和引用实施例一中的描述,在此不再赘述。该方法包括:
在kernel单元与FPGA外部进行以太网数据交互的过程中,通过以太网引擎单元,在kernel单元与以太网接口间进行比特流、以太网帧的格式转换;其中,以太网接口与以太网引擎单元连接,且位于FPGA外部。
在一种可能的实施方式中,在kernel单元与FPGA外部进行以太网数据交互的过程中,通过以太网引擎单元,在kernel单元与以太网接口间进行比特流、以太网帧的格式转换,包括:
通过以太网引擎单元,从以太网接口获得包含待处理信息的待处理比特流,并将待处理比特流转换成采用预设帧格式的至少一个待处理以太网帧;
通过kernel单元,由第一流传输接口从以太网引擎单元获得至少一个待处理以太网帧,根据至少一个待处理以太网帧获得待处理信息,处理待处理信息以获得结果信息,将结果信息封装为采用预设帧格式的至少一个结果以太网帧,由第二流传输接口向以太网引擎单元发送至少一个结果以太网帧;
通过以太网引擎单元,将至少一个结果以太网帧转换为结果比特流,由以太网接口传输结果比特流。
在一种可能的实施方式中,以太网引擎单元包括物理层PHY子单元、数据链路层MAC子单元、输入缓存和输出缓存,在kernel单元与FPGA外部进行以太网数据交互的过程中,通过以太网引擎单元,在kernel单元与以太网接口间进行比特流、以太网帧的格式转换,包括:
通过PHY子单元,从以太网接口接收待处理比特流,对待处理比特流进行串并转换以获得待处理并行数据流,由媒体独立接口传输待处理并行数据流至MAC子单元;其中,PHY子单元与以太网接口连接,以及通过媒体独立接口与MAC子单元连接;
通过MAC子单元,封装待处理并行数据流,以获得至少一个待处理以太网帧,将至少一个待处理以太网帧存储至接收缓存;其中,MAC子单元与接收缓存、发送缓存连接,
通过kernel单元,由第一流传输接口,从接收缓存读取至少一个待处理以太网帧;以及由第二流传输接口,发送至少一个结果以太网帧至发送缓存;
通过MAC子单元,从发送缓存读取至少一个结果以太网帧,将至少一个结果以太网帧转换为结果并行数据流,由媒体独立接口传输结果并行数据流至PHY子单元;
通过PHY子单元,由媒体独立接口,从MAC子单元接收结果并行数据流,对结果并行数据流进行并串转换以获得结果比特流,由以太网接口传输结果比特流。
在一种可能的实施方式中,FPGA包括多组以太网引擎单元,预设帧格式包括通道位,通道位用于指示多组以太网引擎单元中用于传输以太网帧的以太网引擎单元。
在一种可能的实施方式中,预设帧格式包括满full指示位和/或剩余空间指示位,其中:
full指示位用于指示接收缓存的存储空间是否已满,以使得kernel单元根据full指示位确定存储空间已满时,调整从接收缓存读取数据的策略;
剩余空间指示位用于指示存储空间的剩余存储容量,以使得kernel单元根据剩余空间指示位所指示的剩余存储容量,调整从接收缓存读取数据的策略。
实施例三
基于同一发明构思,本发明实施例提供一种加速装置,该加速装置包括至少一个存储器、至少一个以太网接口,以及FPGA。该FPGA可以是实施例一中所述的FPGA,因而,本发明实施例中关于FPGA等内容的说明,可以参看和引用实施例一中的描述,在此不再赘述。其中:
其中,至少一个存储器,用于存储FPGA运行时所需的变量数据,该变量数据可以是FPGA运行时所需的全局变量、常量变量,等等。并且,该至少一个存储器可以为多种类型的存储器,例如可以是双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDRSDRAM),且可以是双倍速率同步动态随机存储器中不同规格的存储器,如DDR、DDR2、DDR3,等等。
其中,至少一个以太网接口,接连于FPGA,用于提供与FPGA进行以太网数据交互的接口。举例来说,以太网接口可以直接与光纤、网线等传输介质连接,并通过这些传输介质传输数据。
请参见图5,图5为本发明实施例中一种可能的加速装置的结构示意图。
在一种可能的实施方式中,加速装置可以具体为一种加速卡。
上述的一个或多个技术方案,具有如下技术效果或优点:
本发明实施例中,FPGA包括用于处理待处理信息的kernel单元,及以太网引擎单元。通过以太网引擎单元在以太网接口与流传输接口间进行比特流、以太网帧的格式转换,FPGA可以直接与FPGA外部进行以太网数据交互,无需在FPGA外部配置专用的网卡。
进一步地,本发明实施例中,通过以太网引擎单元,FPGA与FPGA外部进行交互的数据无需打包为数据块,节约了主处理器和kernel单元的处理资源,同时,避免了打包、解析数据块导致的时延。
进一步地,本发明实施例中,FPGA与FPGA外部进行以太网数据交互时,无需经过FPGA内的PCI-E总线,降低PCI-E总线的数据传输压力,同时,避免了受限于PCI-E总线的传输能力而发生数据拥塞的情况。
进一步地,本发明实施例中,FPGA可以包括多组以太网引擎单元,以拓展kernel单元进行以太网数据交互的通道,提高了FPGA的性能。并且,预设帧格式中包括有通道位,以支持多以太网引擎单元情况下的数据传输。
进一步地,本发明实施例中,预设帧格式包括有满full指示位和/或剩余空间指示位,因而,kernel单元可以了解到接收缓存的存储空间的剩余情况,并根据实时的情况调整从接收缓存读取数据的策略,提高FPGA的性能。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元/模块可以是或者也可以不是物理上分开的,作为单元/模块显示的部件可以是或者也可以不是物理单元/模块,即可以位于一个地方,或者也可以分布到多个网络单元/模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种现场可编程门阵列FPGA,其特征在于,所述FPGA包括:
内核kernel单元,用于处理待处理信息;
以太网引擎单元,与位于所述FPGA外部的以太网接口连接,以及与所述kernel单元通过流传输接口连接,用于在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,在所述以太网接口与流传输接口间进行比特流、以太网帧的格式转换;其中,
所述以太网引擎单元,用于从所述以太网接口接收包含所述待处理信息的待处理比特流;将所述待处理比特流转换成采用预设帧格式的至少一个待处理以太网帧;
所述kernel单元,用于通过第一流传输接口从所述以太网引擎单元获得所述至少一个待处理以太网帧;根据所述至少一个待处理以太网帧获得所述待处理信息;处理所述待处理信息以获得结果信息;将所述结果信息封装为采用所述预设帧格式的至少一个结果以太网帧;通过第二流传输接口向所述以太网引擎单元发送所述至少一个结果以太网帧;
所述以太网引擎单元,还用于将所述至少一个结果以太网帧转换为结果比特流,并通过所述以太网接口传输所述结果比特流。
2.如权利要求1所述的FPGA,其特征在于,所述以太网引擎单元包括物理层PHY子单元、数据链路层MAC子单元、接收缓存和发送缓存,其中:
所述PHY子单元,与所述以太网接口连接,以及与所述MAC子单元通过媒体独立接口连接,用于:从所述以太网接口接收所述待处理比特流,对所述待处理比特流进行串并转换以获得待处理并行数据流,通过所述媒体独立接口传输所述待处理并行数据流至所述MAC子单元;以及用于:通过所述媒体独立接口从所述MAC子单元接收结果并行数据流,对所述结果并行数据流进行并串转换以获得结果比特流,通过所述以太网接口传输所述结果比特流;
所述MAC子单元与所述接收缓存、发送缓存连接,用于:封装所述待处理并行数据流,以获得所述至少一个待处理以太网帧,将所述至少一个待处理以太网帧存储至所述接收缓存,以由所述kernel单元通过所述第一流传输接口,从所述接收缓存读取所述至少一个待处理以太网帧;以及用于:从所述发送缓存读取所述至少一个结果以太网帧,将所述至少一个结果以太网帧转换为所述结果并行数据流,通过所述媒体独立接口传输所述结果并行数据流至所述PHY子单元;
所述接收缓存,通过所述第一流传输接口与所述kernel单元连接,用于存储所述至少一个待处理以太网帧;
所述发送缓存,通过所述第二流传输接口与所述kernel单元连接,用于存储所述kernel单元通过所述第二流传输接口发送的所述至少一个结果以太网帧。
3.如权利要求1或2所述的FPGA,其特征在于,所述FPGA包括多组以太网引擎单元,所述预设帧格式包括通道位,所述通道位用于指示所述多组以太网引擎单元中用于传输以太网帧的以太网引擎单元。
4.一种现场可编程门阵列FPGA处理信息的方法,其特征在于,所述FPGA包括用于处理待处理信息的内核kernel单元,及与所述kernel单元通过流传输接口连接的以太网引擎单元,所述方法包括:
在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,通过所述以太网引擎单元,在所述kernel单元与以太网接口间进行比特流、以太网帧的格式转换;其中,所述以太网接口与所述以太网引擎单元连接,且位于所述FPGA外部;其中,
在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,通过所述以太网引擎单元,在所述kernel单元与以太网接口间进行比特流、以太网帧的格式转换,包括:
通过所述以太网引擎单元,从所述以太网接口获得包含待处理信息的待处理比特流,并将所述待处理比特流转换成采用预设帧格式的至少一个待处理以太网帧;
通过所述kernel单元,由第一流传输接口从所述以太网引擎单元获得所述至少一个待处理以太网帧,根据所述至少一个待处理以太网帧获得所述待处理信息,处理所述待处理信息以获得结果信息,将所述结果信息封装为采用所述预设帧格式的至少一个结果以太网帧,由第二流传输接口向所述以太网引擎单元发送所述至少一个结果以太网帧;
通过所述以太网引擎单元,将所述至少一个结果以太网帧转换为结果比特流,由所述以太网接口传输所述结果比特流。
5.如权利要求4所述的方法,其特征在于,所述以太网引擎单元包括物理层PHY子单元、数据链路层MAC子单元、接收缓存和发送缓存,在所述kernel单元与所述FPGA外部进行以太网数据交互的过程中,通过所述以太网引擎单元,在所述kernel单元与以太网接口间进行比特流、以太网帧的格式转换,包括:
通过所述PHY子单元,从所述以太网接口接收所述待处理比特流,对所述待处理比特流进行串并转换以获得待处理并行数据流,由媒体独立接口传输所述待处理并行数据流至所述MAC子单元;其中,所述PHY子单元与所述以太网接口连接,以及通过所述媒体独立接口与所述MAC子单元连接;
通过所述MAC子单元,封装所述待处理并行数据流,以获得所述至少一个待处理以太网帧,将所述至少一个待处理以太网帧存储至所述接收缓存;其中,所述MAC子单元与所述接收缓存、所述发送缓存连接,
通过所述kernel单元,由所述第一流传输接口,从所述接收缓存读取所述至少一个待处理以太网帧;以及由所述第二流传输接口,发送所述至少一个结果以太网帧至所述发送缓存;
通过所述MAC子单元,从所述发送缓存读取所述至少一个结果以太网帧,将所述至少一个结果以太网帧转换为结果并行数据流,由所述媒体独立接口传输所述结果并行数据流至所述PHY子单元;
通过所述PHY子单元,由所述媒体独立接口,从所述MAC子单元接收所述结果并行数据流,对所述结果并行数据流进行并串转换以获得结果比特流,由所述以太网接口传输所述结果比特流。
6.如权利要求4或5所述的方法,其特征在于,所述FPGA包括多组以太网引擎单元,所述预设帧格式包括通道位,所述通道位用于指示所述多组以太网引擎单元中用于传输以太网帧的以太网引擎单元。
7.如权利要求4或5所述的方法,其特征在于,所述预设帧格式包括满full指示位和/或剩余空间指示位,其中:
所述full指示位用于指示接收缓存的存储空间是否已满,以使得所述kernel单元根据所述full指示位确定所述存储空间已满时,调整从所述接收缓存读取数据的策略;
所述剩余空间指示位用于指示所述存储空间的剩余存储容量,以使得所述kernel单元根据所述剩余空间指示位所指示的所述剩余存储容量,调整从所述接收缓存读取数据的策略。
8.一种加速装置,其特征在于,所述加速装置包括至少一个存储器、至少一个以太网接口,以及如权利要求1-3中任一权利要求所述的现场可编程门阵列FPGA,其中:
所述至少一个存储器,用于存储所述FPGA运行时所需的变量数据;
所述至少一个以太网接口,接连于所述FPGA,用于提供与所述FPGA进行以太网数据交互的接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711086045.5A CN107888337B (zh) | 2017-11-07 | 2017-11-07 | 一种fpga、fpga处理信息的方法、加速装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711086045.5A CN107888337B (zh) | 2017-11-07 | 2017-11-07 | 一种fpga、fpga处理信息的方法、加速装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107888337A CN107888337A (zh) | 2018-04-06 |
CN107888337B true CN107888337B (zh) | 2020-11-20 |
Family
ID=61779148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711086045.5A Active CN107888337B (zh) | 2017-11-07 | 2017-11-07 | 一种fpga、fpga处理信息的方法、加速装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107888337B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111224773B (zh) * | 2018-11-26 | 2022-07-26 | 山东量子科学技术研究院有限公司 | 一种量子密钥管理设备 |
CN110399596A (zh) * | 2019-07-26 | 2019-11-01 | 浪潮电子信息产业股份有限公司 | 一种文件格式转换方法、系统及相关组件 |
CN112087471A (zh) * | 2020-09-27 | 2020-12-15 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法及fpga云平台 |
CN113473648A (zh) * | 2021-06-29 | 2021-10-01 | 南京濠暻通讯科技有限公司 | 5g基站ru中rmii与10g接口间数据传输方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201174706Y (zh) * | 2007-11-26 | 2008-12-31 | 重庆大学 | 基于fpga技术的以太网串口转换器 |
CN102790663A (zh) * | 2011-05-16 | 2012-11-21 | 中国科学院上海天文台 | 一种应用于vlbi硬件相关处理机的全硬件网络接口 |
CN202978998U (zh) * | 2012-12-24 | 2013-06-05 | 中国电子科技集团公司第五十四研究所 | 一种基于sopc的pos/以太网接口转换装置 |
CN103841009A (zh) * | 2014-03-13 | 2014-06-04 | 武汉虹信通信技术有限责任公司 | 一种以太网数据和e1数据的转换与级联的fpga实现方法 |
CN104580031A (zh) * | 2015-01-28 | 2015-04-29 | 中国人民解放军国防科学技术大学 | 基于多协议链路封装技术的pos解帧成帧装置及方法 |
WO2016107210A1 (zh) * | 2014-12-30 | 2016-07-07 | 国电南瑞科技股份有限公司 | 具有报文多级滤清及业务分类控制的冗余工业以太网系统 |
-
2017
- 2017-11-07 CN CN201711086045.5A patent/CN107888337B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201174706Y (zh) * | 2007-11-26 | 2008-12-31 | 重庆大学 | 基于fpga技术的以太网串口转换器 |
CN102790663A (zh) * | 2011-05-16 | 2012-11-21 | 中国科学院上海天文台 | 一种应用于vlbi硬件相关处理机的全硬件网络接口 |
CN202978998U (zh) * | 2012-12-24 | 2013-06-05 | 中国电子科技集团公司第五十四研究所 | 一种基于sopc的pos/以太网接口转换装置 |
CN103841009A (zh) * | 2014-03-13 | 2014-06-04 | 武汉虹信通信技术有限责任公司 | 一种以太网数据和e1数据的转换与级联的fpga实现方法 |
WO2016107210A1 (zh) * | 2014-12-30 | 2016-07-07 | 国电南瑞科技股份有限公司 | 具有报文多级滤清及业务分类控制的冗余工业以太网系统 |
CN104580031A (zh) * | 2015-01-28 | 2015-04-29 | 中国人民解放军国防科学技术大学 | 基于多协议链路封装技术的pos解帧成帧装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107888337A (zh) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107888337B (zh) | 一种fpga、fpga处理信息的方法、加速装置 | |
US8885480B2 (en) | Packet priority in a network processor | |
CN102104548B (zh) | 一种数据包接收处理方法和装置 | |
US9860838B2 (en) | Transmitting device, receiving device, communication device, programs, transmission method, and receiving method for wireless communication of continuous data in the form of packets | |
CN109218154B (zh) | 一种基于fpga的千兆以太网到slip的转换系统 | |
CN112948295A (zh) | 一种基于axi4总线的fpga与ddr高速数据包传输系统及方法 | |
CN101527724B (zh) | 用于在高速互联网协议网络中传送数据的数据传输容器 | |
US8990422B1 (en) | TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data | |
US10255226B2 (en) | Format agnostic data transfer method | |
CN110995507A (zh) | 一种网络加速控制器及方法 | |
CN108614792B (zh) | 1394事务层数据包存储管理方法及电路 | |
US20120041998A1 (en) | Network Interface for Accelerating XML Processing | |
WO2021147051A1 (zh) | 一种基于PCIe的数据传输方法及装置 | |
WO2020001487A1 (zh) | 开销传输方法、装置、设备及计算机可读存储介质 | |
CN111901250A (zh) | 一种数据报文传输方法、装置、设备及可读存储介质 | |
CN115550442A (zh) | 数据包传输方法、装置、电子设备及存储介质 | |
US11388103B2 (en) | Multi-chip system and data transmission method thereof | |
WO2022198357A1 (zh) | 数据处理方法及传输设备、数据处理系统 | |
CN109918325B (zh) | 基于Avalon总线的接口转换桥、接口转换方法及系统 | |
CN106776393A (zh) | 一种无中断的串口数据接收方法和装置 | |
US20230115125A1 (en) | Video and audio signal processing chip, video and audio signal processing device including the same, and video and audio signal processing method | |
CN112637027B (zh) | 基于uart的帧边界界定装置及发送方法和接收方法 | |
CN114710347B (zh) | 一种视频帧数据的多模式数据处理系统及方法 | |
Bortolato et al. | Front-end RDMA over Converged Ethernet, real-time firmware simulation | |
CN117648274A (zh) | 一种传输长度自适应的fc数据传输控制系统和方法 |
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 |