CN112540770B - 基于PowerPC和FPGA的异构平台及其加速方法 - Google Patents
基于PowerPC和FPGA的异构平台及其加速方法 Download PDFInfo
- Publication number
- CN112540770B CN112540770B CN201910898139.5A CN201910898139A CN112540770B CN 112540770 B CN112540770 B CN 112540770B CN 201910898139 A CN201910898139 A CN 201910898139A CN 112540770 B CN112540770 B CN 112540770B
- Authority
- CN
- China
- Prior art keywords
- fpga
- module
- data
- platform
- powerpc
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及基于PowerPC和FPGA的异构平台及其加速方法,PowerPC平台将不需要加速的.c算法代码生成可执行应用程序,将需要加速的算法的C代码转换成FPGA IP核,运行FPGA_IP.tcl脚本文件生成FPGA可执行的.bit文件;管理PowerPC平台和FPGA平台之间的数据交互;FPGA用于加速算法的运行平台,通过RapidIO通信,动态更新算法;在动态配置阶段,连接AXI读写接口和动态配置模块,将AXI读写接口使用权限给动态配置模块,一旦动态配置完成之后,权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块。FPGA算法动态更新功能,只更改加速算法部分,用户不需要关心底层的通信及代码生成部分,提升了更新速度,加快了开发周期,快速的实现算法加速。
Description
技术领域
本发明涉及了异构加速领域,一种基于PowerPC和FPGA的异构加速平台及其加速方法,主要应用于光刻机控制领域。
背景技术
集成电路产业伴随着经济全球化、信息化已经成为影响国家政治、经济和国防安全的战略产业。整个产业链的基础是制造装备。从技术发展历史进程可以看出,其发展瓶颈之一是先进光刻技术。光刻及光刻机是IC制造工艺中的重要技术环节和核心装备之一。目前,浸没式光刻技术是先进光刻技术的主流,为了解决投影物镜成本大幅增长的问题,现在采用步进加扫描方式的同时,采用了浸没式技术。这种方式有效地降低了投影光刻物镜成本,但却对工件台提出了更高的要求。这更高的要求主要体现在,工件台除要求完成超精密步进、定位、调整等动作外,还需要进行动态测量、扫描、曝光,同时要求整个过程在短时间内完成。短时间完成动态测量、扫描、曝光促使双硅片台技术的诞生。双硅片台超精密运动控制系统是光刻机核心关键技术之一,是我国必须自主掌握的核心单元技术,对研制自主产权的高精密扫描光刻机具有重大意义。如果没有良好的运动控制硬件平台,就没有高性能的光刻机和集成电路制造设备。如果没有高性能的集成电路制造装备,我们将失去的庞大的市场和科技发展的主动权,而且会长期受制于人。
我国现在自主研发的双硅片精密运动控制系统采用PowerPC+FPGA异构平台,PowerPC负责所有控制算法、与上位机和FPGA的通信,FPGA负责各路传感信号的采集,不做算法处理,PowerPC和FPGA采用PCI Express通信。这样的架构下,控制周期只能达到5K,不能提高控制周期的限制,对于28nm及以下的光刻机产品已经不能满足要求。
RapidIO作为高速总线,相比PCI Express,有更低的延时,及更高的灵活性,可以实现交换机制,替代PCI Express能获得更快的通信效率及低延时,同时FPGA由于并行度高,延时低等特点、将并行度高的算法开发在FPGA上,可以有效的提高控制周期。利用我们设计的平台,可以分析需要加速算法部分,并生成FPGA可执行文件,动态加载到FPGA中。将大大提高PowerPC+FPGA异构平台的灵活性、易用性。
发明内容
为解决上述技术问题,本发明提供一种基于PowerPC和FPGA的异构加速平台及其加速方法。
本发明的技术方案如下:基于PowerPC和FPGA的异构平台,包括:
PowerPC平台,用于对算法进行分析,将需要加速的算法的C代码转换成FPGA IP核;将不需要加速的算法代码生成PowerPC可执行应用程序;同时运行FPGA_IP.tcl脚本文件生成FPGA可执行的.bit文件;管理PowerPC平台和FPGA平台之间的数据交互;
FPGA平台,用于实现加速算法的运行平台,通过RapidIO通信,动态更新加速算法;在动态配置阶段,连接AXI读写接口和动态配置模块,将AXI读写接口使用权限给动态配置模块,一旦动态配置完成之后,权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块。
所述PowerPC平台包括:
算法分析模块,用于对算法运行时间分析,将需要加速的算法的C代码转换成FPGAIP核;
代码生成模块,用于调用gcc编译器将不需要加速的算法代码生成PowerPC可执行应用程序,调用Vivado tcl工具运行FPGA_IP.tcl脚本文件,将FPGA IP核通过AXI总线挂接到静态逻辑部分,最终生成FPGA可执行的.bit文件;
RapidIO控制器,用于管理PowerPC平台和FPGA平台之间的数据交互。
所述算法分析模块,包括:
用户算法模块,用于存储平台运行的算法;
运行分析模块,包括耗时分析函数库,通过用户算法模块的调用,获取算法运行时间;
IP生成模块,用于将计算时间超过阈值的算法通过HLS将C代码转换成FPGA IP核。
所述RapidIO控制器,包括:
内存管理模块,用于管理PowerPC平台和FPGA平台之间的数据交互;通过mmap到用户态来降低通信延时,通过两块内存作为数据交互缓存内存,用于保证数据稳定性;
RapidIO协议控制模块,用于将内存管理模块的数据按照RapidIO协议的进行包处理,发送至FPGA平台。
所述FPGA平台包括:
FPGA RapidIO IP模块,用于按照应用层协议规范解析和编码协议数据包,同时开辟读写FIFO,通过FIFO与DMA控制模块进行数据交互;
所述的DMA控制模块,用于处理数据流在FPGARapidIO IP模块与FPGA平台的动态配置模块、加速逻辑模块之间的DMA传输;
权限归属模块,用于在动态配置阶段,连接AXI读写接口和动态配置模块,将AXI读写接口使用权限给动态配置模块,一旦动态配置完成之后,权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块;
动态配置模块,通过AXI总线数据信号及控制信号,接收解析的数据包存入到FIFO中;检测到FIFO非空,读取数据,并判断FPGA可执行的.bit文件的包头和包尾,从包头开始,将数据发送给用于FPGA配置的ICAP模块;检测到包尾信号时,发送配置完成信号给权限归属模块,配置结束;
加速逻辑模块,是算法分析模块生成的FPGAIP,在FPGA中运行的模块,可以动态更新的模块。
所述FPGARapidIO IP模块包括:
RapidIO IP模块,是Xilinx RapidIO IP核;
DMA交互模块,用于完成RapidIO总线应用层协议,按照协议规范解析和编码协议数据包,同时开辟读写FIFO,通过FIFO与DMA控制模块进行数据交互;
所述DMA控制模块,包括:
RQC模块,用于实现请求应答功能,与FIFO交互;
H2C通道,用于处理数据流从FPGA RapidIO IP模块到FPGA平台的动态配置模块或加速逻辑模块的DMA传输;
C2H通道,用于处理数据流从FPGA平台的加速逻辑模块到FPGA RapidIO IP模块的DMA传输;
AXI读写接口,设于H2C通道与权限归属模块、以及C2H通道与权限归属模块之间,用于实现RapidIO地址映射成AXI总线地址,并将H2C通道和C2H通道的控制信号、数据信号转换成AXI总线控制信号和数据信号,通过AXI总线,实现链接用户IP。
FPGA平台运行的RapidIO IP模块、DMA控制模块、动态配置模块构成静态逻辑部分,用于为不同的算法IP提供配置功能和与PowerPC的通信功能。
基于PowerPC和FPGA的异构加速方法,包括以下步骤:
1)调用耗时分析函数库,获取算法计算时间,将计算时间超过阈值的算法即加速算法通过HLS将C代码转换成FPGA IP核;
2)利用HLS工具,将加速算法转生成FPGA AXI IP核;
3)将运行在PowerPC平台上的程序转化为可执行程序,运行FPGA_IP.tcl脚本,生成FPGA可执行的.bit文件和动态配置算法IP.bit文件;
4)PowerPC平台开辟写内存作为数据交互缓存内存,PowerPC平台写IP.bit文件数据到写内存中,由FPGA平台通过RapidIO总线将数据包读走;
5)权限归属模块连接AXI读写接口和动态配置模块,将AXI读写接口使用权限给动态配置模块,动态配置模块通过AXI读写接口,接收AXI总线数据及控制信号,接收解析的数据包存入到FIFO中;数据接收后,发送配置完成信号给权限归属模块,配置结束,此时加速算法已经在FPGA平台中运行;
6)权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块;
7)PowerPC平台开辟读写独立的两块内存作为数据交互缓存内存;
8)PowerPC平台发数据给FPGA平台,PowerPC写数据到写内存区中,FPGA RapidIOIP模块周期发起NREAD命令,通过内存管理,数据不冲突时,DMA控制模块通过RQC请求FIFO数据,非空时通过H2C通道将数据发给AXI读写接口,AXI读写接口解析数据发给加速算法模块;加速逻辑模块将需要与PowerPC平台通信的数据发送给AXI读写接口,通过C2H通道,RQC请求存储数据到FPGA平台RapidIO IP模块的FIFO中,RapidIO IP模块检测FIFO非空,将数据通过NWRITE方式发送给PowerPC的读内存区,PowerPC平台将数据读走,完成数据交互。
所述内存管理,通过两块内存作为数据交互缓存,定义读写防冲突机制,用于保证数据稳定性,包括以下步骤:
对于写操作处理:写操作的数据流是PowerPC平台到FPGA平台,PowerPC平台数据到写内存中,为了避免数据冲突,PowerPC平台正在写数据时,将内存的第一个数据写为0xAAAAAAAA,然后将需要交互的数据依次写入内存中,当数据写完后,将内存第一个数据更改为0xBBBBBBBB;FPGA平台发起读命令,检测内存地址的第一个数据,如果检测到0xBBBBBBBB,通过RapidIO总线,将数据包读走,如果检测到0xAAAAAAAA,处于等待状态;
对于读操作的处理:读操作的数据流是FPGA平台到PowerPC平台,FPGA平台主动发起写命令,将数据通过RapidIO总线发送到读内存,并添加数据包尾0xA5A5A5A5,PowerPC平台检测到数据包尾为0xA5A5A5A5时,将数据读走,同时修改数据包尾所在的内存单元为0x00000000,结束读操作。
本发明的有益效果和优点是:
1、该平台用FPGA做部分算法加速,相比之前所有算法在PowerPC上运行,能有效地提高了控制频率。
2、算法分析功能,有效的分析算法需要加速的部分,提高开发效率。
3、FPGA算法动态更新功能,只更改加速算法部分,用户不需要关心底层的通信及代码生成部分,提升了更新速度,加快了开发周期,快速的实现算法加速。
4、基于RapidIO总线通信,降低通信延时,提高系统灵活性。
5、内存管理模块,能避免数据冲突及毛刺发生,降低延时,保证数据稳定交互。
附图说明
图1是本发明的异构加速平台架构图。
图2是本发明中的实施例的工作流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实例对本发明进一步详细说明。
基于PowerPC和FPGA的异构加速平台及其加速方法,其中主要涉及PowerPC平台和FPGA平台。如图1所示:
所述的PowerPC平台,主要包括算法分析模块,代码生成模块、RapidIO控制器。
所述的FPGA平台,主要包括RapidIO IP模块,DMA控制模块,权限归属模块,动态配置模块,加速逻辑模块。
所述的异构平台,主要包括PowerPC多核处理器和FPGA处理器,PowerPC处理器和FPGA处理器之间通过RapidIO接口通信。
所述的算法分析模块,包括运行分析模块、用户算法模块、IP生成模块。用户算法模块主要是需要在平台运行的算法。运行分析模块主要包括耗时分析函数库,以头文件和源文件形式,通过用户算法模块调用,来分析算法比较耗时的部分。IP生成模块,主要包括HLS工具,将耗时的算法在HLS平台下进行资源和并行度分析。如果有提高的可能,再适度修改,提高算法加速性能,并利用HLS工具,将加速算法C代码转换成FPGA IP核。
所述的代码生成模块,主要涉及PowerPC平台运行算法代码生成模块和FPGA平台运行算法代码生成模块。PowerPC代码生成模块调用gcc编译器将.c算法代码生成可执行应用程序。FPGA平台运行算法代码生成模块,调用Vivado tcl工具运行FPGA_IP.tcl脚本文件,生成FPGA可执行的.bit文件。
所述的代码生成FPGA_IP.tcl脚本文件,脚本里是vivado下执行的命令行代码,主要完成将上述算法IP通过AXI总线挂接到静态逻辑部分,对完整工程进行代码的综合、布局布线。然后,将算法IP部分标定为动态配置部分,执行.bit生成命令,生成FPGA可执行完整工程.bit文件和动态配置算法IP.bit文件。
所述的静态逻辑部分,主要包括FPGA平台运行的RapidIO IP模块,DMA控制模块,动态配置模块。静态逻辑部分是FPGA固化的逻辑,当进行不同算法的配置时,静态逻辑部分仍然执行其原有功能,不受算法部分逻辑影响。静态逻辑部分为不同的算法IP提供配置功能和与PowerPC的通信功能。
所述的RapidIO控制器,包括RapidIO协议控制模块和内存管理模块。
所述的内存管理模块,是管理PowerPC和FPGA之间数据交互的模块,自PowerPC开辟读写独立的两块内存作为数据交互缓存内存。同时将读写内存mmap到用户态来降低通信延时。自定义内存管理机制来保证数据稳定性。内存管理机制对于写操作处理:写操作的数据流是PowerPC到FPGA,PowerPC数据到内存中,为了避免数据冲突,PowerPC正在写数据时,会将内存的第一个数据写为0xAAAAAAAA,然后将需要交互的数据依次写入内存中,当数据写完后,将内存第一个数据更改为0xBBBBBBBB。FPGA发起读命令,检测内存地址的第一个数据,如果检测到0xBBBBBBBB,通过RapidIO总线,将数据包读走,如果检测到0xAAAAAAAA,处于等待状态。内存管理机制对于读操作的处理:读操作的数据流是FPGA到PowerPC,FPGA主动发起写命令,将数据通过RapidIO总线发送到读内存模块,并添加数据包尾0xA5A5A5A5,PowerPC检测到数据包尾为0xA5A5A5A5时,将数据读走,同时修改数据包尾所在的内存单元为0x00000000,结束读操作。内存管理模块有效地减少延时,避免异构平台的读写冲突。
所述的RapidIO协议控制模块,主要将内存管理模块的数据,利用PowerPC的RapidIO控制器将数据按照RapidIO协议的进行包处理。
所述的FPGA RapidIO IP模块,主要包括Xilinx RapidIO IP核和DMA交互模块。
所述的DMA交互模块,完成RapidIO总线应用层协议,实现SWRITE、NWRITE、NREAD三种基本通信方式,按照协议规范,解析和编码协议数据包,同时开辟读写FIFO,通过FIFO与DMA控制模型进行数据交互。
所述的DMA控制模块,主要包括RQC模块、C2H通道、H2C通道和AXI读写接口。
所述的RQC模块,实现请求应答功能,与上述的FIFO交互。
所述的H2C通道,处理数据流从PowerPC到FPGA的DMA传输。
所述的C2H通道,处理数据流从FPGA到PowerPC的DMA传输。
所述的AXI读写接口,实现RapidIO地址映射成AXI总线地址,并将H2C和C2H通道的控制和数据信号转换成AXI总线控制和数据信号。通过AXI总线,可以方便链接更多的用户IP。
所述的权限归属模块,连接AXI读写接口、动态配置模块和加速逻辑模块。在动态配置阶段,权限归属模块连接AXI读写接口器和动态配置模块,将AXI读写接口使用权限给动态配置模块。一旦动态配置完成之后,权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块。
所述的动态配置模块,包括AXI通信模块和原语模块。AXI通信模块通过AXI总线数据及控制信号,接收解析的数据包存入到FIFO中。动态配置模块内用于FPGA配置的原语模块检测到FIFO非空,读取数据,并判断bitfile文件的包头和包尾,从包头开始,将数据发送给ICAP模块。检测到包尾信号时,发送配置完成信号给权限归属模型,配置结束。
所述的加速逻辑部分是需要在FPGA中执行的加速算法部分。
如图2所示,本发明包括以下步骤:
1)用C语言编写控制算法,通过运行分析模块来分析算法比较耗时的部分。
所述的运行分析模块主要包括耗时分析函数库,以头文件和源文件形式给出,通过用户算法调用来进行算法分析。
2)将耗时的算法部分通过IP生成模块,在HLS工具下进行分析、修改,优化加速算法的并行度,利用HLS工具,将加速算法转生成FPGAAXI IP核。
3)利用代码生成模块将运行在PowerPC上的程序转化为可执行程序,运行FPGA_IP.tcl脚本,生成FPGA可执行完整工程.bit文件和动态配置算法IP.bit文件。
FPGA_IP.tcl脚本,主要完成将算法IP通过AXI挂接到静态逻辑部分,对完整工程进行代码的综合、布局布线,将算法IP部分标定为动态配置部分,运行.bit生成命令,生成FPGA可执行完整工程.bit文件和加速逻辑算法IP.bit文件。脚本就是为了把加速算法,生成FPGA可执行的动态配置的IP.bit。IP.bit文件通过RapidIO总线发送给FPGA运行,成为FPGA中运行的加速逻辑算法部分。
所述的静态逻辑部分,主要包括FPGA平台运行的RapidIO IP模块,DMA控制模块,动态配置模块。静态逻辑部分是FPGA固化的逻辑,当进行不同算法的可重配置时,静态逻辑部分仍然执行其原有功能,不受算法部分逻辑影响。静态逻辑部分为不同的算法IP提供配置功能和与PowerPC的通信功能。
4)PowerPC开辟写内存作为数据交互缓存内存,PowerPC写IP.bit文件数据到写内存中,内存的第一个数据写为0xAAAAAAAA,然后将IP.bit数据依次写入内存中,当数据写完后,将内存第一个数据更改为0xBBBBBBBB。FPGA发起RapidIO NREAD读命令,检测内存地址的第一个数据,如果检测到0xBBBBBBBB,通过RapidIO IP模块,DMA控制模块,将数据包读走。
5)权限归属模块将连接AXI读写接口器和动态配置模块,将AXI读写接口使用权限给动态配置模块,动态配置模块通过AXI通信模块,接收AXI总线数据及控制信号,接收解析的数据包存入到FIFO中。原语模块检测到FIFO非空,读取数据,并判断bitfile文件的包头和包尾,从包头开始,将数据发送给ICAP模块。检测到包尾信号时,发送配置完成信号给权限归属模型,配置结束,此时加速部分算法已经在FPGA中运行。
6)权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块。
7)PowerPC开辟读写独立的两块内存作为数据交互缓存内存。同时将读写内存mmap到用户态来降低通信延时,读写内存区作为PowerPC和FPGA数据交互内存区。
8)PowerPC写数据给FPGA时,PowerPC写数据到写内存区中,RapidIO IP模块周期发起NREAD命令,检测内存地址的第一个数据,如果检测到0xBBBBBBBB,通过RapidIO总线,将数据包读走,如果检测到0xAAAAAAAA,处于等待状态。DMA控制模块通过RQC请求FIFO数据,非空时通过H2C通道将数据发给AXI读写接口,AXI读写接口解析数据发给加速算法模块。FPGA写数据给PowerPC,FPGA加速逻辑模块将数据发送给AXI读写接口,通过C2H通道,RQC请求存储数据到FPGA RapidIO IP的FIFO中,FPGA RapidIO IP模块检测FIFO非空,将数据通过NWRITE方式发送给PowerPC的读内存区,PowerPC检测到读内存区的数据包尾为0xA5A5A5A5时,将数据读走发送用户算法模块,并将数据包尾内存单元改为0x00000000,完成数据交互。
9)如果仅有FPGA算法需要更新,回到步骤2执行。如果PowerPC和FPGA算法都需要更新,回到步骤1执行。
综上所述,本发明基于PowerPC和FPGA的异构加速平台及其加速方法。将FPGA作为加速单元加入到异构平台中,能有效提高控制频率。同时,提出了方法,用户不用关系底层FPGA代码和通信实现,快速的实现异构平台的算法更新,加快开发速度,提升了平台的灵活性。
Claims (10)
1.基于PowerPC和FPGA的异构加速方法,其特征在于,包括以下步骤:
1)调用耗时分析函数库,获取算法计算时间,将计算时间超过阈值的算法即加速算法通过HLS将C代码转换成FPGA IP核;
2)利用HLS工具,将加速算法转生成FPGA AXI IP核;
3)将运行在PowerPC平台上的程序转化为可执行程序,运行FPGA_IP.tcl脚本,生成FPGA可执行的.bit文件和动态配置算法IP. bit文件;
4)PowerPC平台开辟写内存作为数据交互缓存内存,PowerPC平台写IP.bit文件数据到写内存中,由FPGA平台通过RapidIO总线将数据包读走;
5)权限归属模块连接AXI读写接口和动态配置模块,将AXI读写接口使用权限给动态配置模块,动态配置模块通过AXI读写接口,接收AXI总线数据及控制信号,接收解析的数据包存入到FIFO中;数据接收后,发送配置完成信号给权限归属模块,配置结束,此时加速算法已经在FPGA平台中运行;
6)权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块;
7)PowerPC平台开辟读写独立的两块内存作为数据交互缓存内存;
8)PowerPC平台发数据给FPGA平台,PowerPC写数据到写内存区中,FPGA RapidIO IP模块周期发起NREAD命令,通过内存管理,数据不冲突时,DMA控制模块通过RQC请求FIFO数据,非空时通过H2C通道将数据发给AXI读写接口,AXI读写接口解析数据发给加速算法模块;加速逻辑模块将需要与PowerPC平台通信的数据发送给AXI读写接口,通过C2H通道,RQC请求存储数据到FPGA平台 RapidIO IP模块的FIFO中, RapidIO IP模块检测FIFO非空,将数据通过NWRITE方式发送给PowerPC的读内存区,PowerPC平台将数据读走,完成数据交互。
2.根据权利要求1所述的基于PowerPC和FPGA的异构加速方法,其特征在于,
所述内存管理,通过两块内存作为数据交互缓存,定义读写防冲突机制,用于保证数据稳定性,包括以下步骤:
对于写操作处理:写操作的数据流是PowerPC平台到FPGA平台,PowerPC平台数据到写内存中,为了避免数据冲突,PowerPC平台正在写数据时,将内存的第一个数据写为0xAAAAAAAA,然后将需要交互的数据依次写入内存中,当数据写完后,将内存第一个数据更改为0xBBBBBBBB;FPGA平台发起读命令,检测内存地址的第一个数据,如果检测到0xBBBBBBBB,通过RapidIO总线,将数据包读走,如果检测到0xAAAAAAAA,处于等待状态;
对于读操作的处理:读操作的数据流是FPGA平台到PowerPC平台, FPGA平台主动发起写命令,将数据通过RapidIO总线发送到读内存,并添加数据包尾0xA5A5A5A5,PowerPC平台检测到数据包尾为0xA5A5A5A5时,将数据读走,同时修改数据包尾所在的内存单元为0x00000000,结束读操作。
3.基于PowerPC和FPGA的异构平台,用于实现如权利要求1-2任意一项所述的方法,其特征在于,包括:
PowerPC平台,用于对算法进行分析,将需要加速的算法的C代码转换成FPGA IP核;将不需要加速的算法代码生成PowerPC可执行应用程序;同时运行FPGA_IP.tcl脚本文件生成FPGA可执行的.bit文件;管理PowerPC平台和FPGA平台之间的数据交互;
FPGA平台,用于实现加速算法的运行平台,通过RapidIO通信,动态更新加速算法;在动态配置阶段,连接AXI读写接口和动态配置模块,将AXI读写接口使用权限给动态配置模块,一旦动态配置完成之后,权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块。
4.根据权利要求3所述的基于PowerPC和FPGA的异构平台,其特征在于,所述PowerPC平台包括:
算法分析模块,用于对算法运行时间分析,将需要加速的算法的C代码转换成FPGA IP核;
代码生成模块,用于调用gcc编译器将不需要加速的算法代码生成PowerPC可执行应用程序,调用Vivado tcl工具运行FPGA_IP.tcl脚本文件,将FPGA IP核通过AXI总线挂接到静态逻辑部分,最终生成FPGA可执行的.bit文件;
RapidIO控制器,用于管理PowerPC平台和FPGA平台之间的数据交互。
5.根据权利要求4所述的基于PowerPC和FPGA的异构平台,其特征在于,所述算法分析模块,包括:
用户算法模块,用于存储平台运行的算法;
运行分析模块,包括耗时分析函数库,通过用户算法模块的调用,获取算法运行时间;
IP生成模块,用于将计算时间超过阈值的算法通过HLS将C代码转换成FPGA IP核。
6.根据权利要求4所述的基于PowerPC和FPGA的异构平台,其特征在于,所述RapidIO控制器,包括:
内存管理模块,用于管理PowerPC平台和FPGA平台之间的数据交互;通过mmap到用户态来降低通信延时,通过两块内存作为数据交互缓存内存,用于保证数据稳定性;
RapidIO协议控制模块,用于将内存管理模块的数据按照RapidIO协议的进行包处理,发送至FPGA平台。
7.根据权利要求4所述的基于PowerPC和FPGA的异构平台,其特征在于,所述FPGA平台包括:
FPGA RapidIO IP模块,用于按照应用层协议规范解析和编码协议数据包,同时开辟读写FIFO,通过FIFO与DMA控制模块进行数据交互;
所述的DMA控制模块,用于处理数据流在FPGA RapidIO IP模块与FPGA平台的动态配置模块、加速逻辑模块之间的DMA传输;
权限归属模块,用于在动态配置阶段,连接AXI读写接口和动态配置模块,将AXI读写接口使用权限给动态配置模块,一旦动态配置完成之后,权限归属模块断开与动态配置模块的连接,将AXI读写接口和加速逻辑模块相连,将AXI读写接口使用权限给加速逻辑模块;
动态配置模块,通过AXI总线数据信号及控制信号,接收解析的数据包存入到FIFO中;检测到FIFO非空,读取数据,并判断FPGA可执行的.bit文件的包头和包尾,从包头开始,将数据发送给用于FPGA配置的ICAP模块;检测到包尾信号时,发送配置完成信号给权限归属模块,配置结束;
加速逻辑模块,是算法分析模块生成的FPGA IP,在FPGA中运行的模块,可以动态更新的模块。
8.根据权利要求7所述的基于PowerPC和FPGA的异构平台,其特征在于,所述FPGARapidIO IP模块包括:
RapidIO IP模块,是Xilinx RapidIO IP核;
DMA交互模块,用于完成RapidIO总线应用层协议,按照协议规范解析和编码协议数据包,同时开辟读写FIFO,通过FIFO与DMA控制模块进行数据交互。
9.根据权利要求7所述的基于PowerPC和FPGA的异构平台,其特征在于,所述DMA控制模块,包括:
RQC模块,用于实现请求应答功能,与FIFO交互;
H2C通道,用于处理数据流从FPGA RapidIO IP模块到FPGA平台的动态配置模块或加速逻辑模块的DMA传输;
C2H通道,用于处理数据流从FPGA平台的加速逻辑模块到FPGA RapidIO IP模块的DMA传输;
AXI读写接口,设于H2C通道与权限归属模块、以及C2H通道与权限归属模块之间,用于实现RapidIO地址映射成AXI总线地址,并将H2C通道和C2H通道的控制信号、数据信号转换成AXI总线控制信号和数据信号,通过AXI总线,实现链接用户IP。
10.根据权利要求7所述的基于PowerPC和FPGA的异构平台,其特征在于, FPGA平台运行的RapidIO IP模块、DMA控制模块、动态配置模块构成静态逻辑部分,用于为不同的算法IP提供配置功能和与PowerPC的通信功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910898139.5A CN112540770B (zh) | 2019-09-23 | 2019-09-23 | 基于PowerPC和FPGA的异构平台及其加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910898139.5A CN112540770B (zh) | 2019-09-23 | 2019-09-23 | 基于PowerPC和FPGA的异构平台及其加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112540770A CN112540770A (zh) | 2021-03-23 |
CN112540770B true CN112540770B (zh) | 2022-05-06 |
Family
ID=75012793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910898139.5A Active CN112540770B (zh) | 2019-09-23 | 2019-09-23 | 基于PowerPC和FPGA的异构平台及其加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540770B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114238187B (zh) * | 2022-02-24 | 2022-04-29 | 苏州浪潮智能科技有限公司 | 一种基于fpga的全栈网卡任务处理系统 |
CN114398304B (zh) * | 2022-03-01 | 2024-07-02 | 山西银河电子设备厂 | 一种解决srio接口阻塞的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104142845A (zh) * | 2014-07-21 | 2014-11-12 | 中国人民解放军信息工程大学 | 基于OpenCL-To-FPGA的CT图像重建反投影加速方法 |
CN104834628A (zh) * | 2015-04-26 | 2015-08-12 | 西北工业大学 | 多态计算平台及其构造方法 |
CN107135078A (zh) * | 2017-06-05 | 2017-09-05 | 浙江大学 | Pbkdf2密码算法加速方法及所用装置 |
CN108255773A (zh) * | 2017-12-07 | 2018-07-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种智能计算异构多核处理方法与平台 |
CN108958800A (zh) * | 2018-06-15 | 2018-12-07 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga硬件加速的ddr管理控制系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7913066B2 (en) * | 2008-03-10 | 2011-03-22 | International Business Machines Corporation | Early exit processing of iterative refinement algorithm using register dependency disable and programmable early exit condition |
-
2019
- 2019-09-23 CN CN201910898139.5A patent/CN112540770B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104142845A (zh) * | 2014-07-21 | 2014-11-12 | 中国人民解放军信息工程大学 | 基于OpenCL-To-FPGA的CT图像重建反投影加速方法 |
CN104834628A (zh) * | 2015-04-26 | 2015-08-12 | 西北工业大学 | 多态计算平台及其构造方法 |
CN107135078A (zh) * | 2017-06-05 | 2017-09-05 | 浙江大学 | Pbkdf2密码算法加速方法及所用装置 |
CN108255773A (zh) * | 2017-12-07 | 2018-07-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种智能计算异构多核处理方法与平台 |
CN108958800A (zh) * | 2018-06-15 | 2018-12-07 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga硬件加速的ddr管理控制系统 |
Non-Patent Citations (1)
Title |
---|
"基于FPGA的可进化系统的设计与研究";卜海祥;《中国优秀硕士论文电子期刊网》;20110315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112540770A (zh) | 2021-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210081258A1 (en) | Synthesis Path For Transforming Concurrent Programs Into Hardware Deployable on FPGA-Based Cloud Infrastructures | |
US11748535B2 (en) | System and method to generate a network-on-chip (NoC) description using incremental topology synthesis | |
EP3842987A1 (en) | Physically aware topology synthesis of a network | |
US10664421B1 (en) | Reordering responses in a high performance on-chip network | |
KR101815173B1 (ko) | 코히어런스 프로토콜 테이블 | |
US7814243B2 (en) | Shared storage for multi-threaded ordered queues in an interconnect | |
US7257780B2 (en) | Software-to-hardware compiler | |
CN112540770B (zh) | 基于PowerPC和FPGA的异构平台及其加速方法 | |
De Matteis et al. | Streaming message interface: High-performance distributed memory programming on reconfigurable hardware | |
CN108768981B (zh) | 一种实现Powerlink工业实时以太网通讯的IP核 | |
CN114356419B (zh) | 一种通用接口寄存器系统及快速生成方法 | |
Thoma et al. | FPGA-GPU communicating through PCIe | |
KR20210021202A (ko) | 직렬로 연결된 전자 장치들 사이의 레이턴시를 감소시키기 위한 컴퓨팅 시스템 | |
Chelcea et al. | Resynthesis and peephole transformations for the optimization of large-scale asynchronous systems | |
Thoma et al. | FPGA 2: An open source framework for FPGA-GPU PCIe communication | |
US20080040700A1 (en) | Behavioral synthesizer, debugger, writing device and computer aided design system and method | |
CN114385327A (zh) | 基于线程的处理器暂停 | |
CN114970409A (zh) | 基于多管芯互联的集成电路 | |
CN100492299C (zh) | 一种嵌入式软件开发的方法及系统 | |
JP3261766B2 (ja) | マルチプロセッサシステム、共有変数更新装置、プロセッサユニット及び共有変数更新方法 | |
US20240353813A1 (en) | Process for generating physical implementation guidance during the synthesis of a network-on-chip | |
JP7287743B2 (ja) | コンパイラのためのワークロード指向定数伝播 | |
US20240184552A1 (en) | Compilers and compiling methods field | |
EP4394601A1 (en) | Systems, methods, and apparatus for intermediary representations of workflows for computational devices | |
KR20070063124A (ko) | 시스템 버스와 아이피간 인터페이싱 장치와 방법 및 컴퓨터프로그램을 저장하는 컴퓨터로 읽을 수 있는 기록 매체 |
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 |