基于Impulse-C的可重构编程技术研究

时间:2022-02-10 02:01:37

基于Impulse-C的可重构编程技术研究

摘要:可重构计算的研究使用高度灵活的计算结构进行高性能计算。近年来采用FPGA器件来创建可重计算平台的研究大量出现。基于高级语言的FPGA编程技术可以让软件工程师摆脱硬件的干扰,致力于算法的实现。Impulse C语言工具集就是一种对软硬件划分和软硬件过程协同设计的相对简单的、基于C语言的方法,它与高效的基于FPGA的硬件编译器相结合,形成了一种完整的混合处理器和FPGA实现的方法。这些工具极大地简化了可重构部件的设计过程,但是在高效性和电路优化等方面跟手工设计仍有差距。

关键词:可重构;Impulse C;FPGA;高性能计算

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2009)04-0991-03

The Research on Reconfigurable Computing Programming Technology Based on Impulse C

MAO Xing-quan

(Jiangnan Institute of Computing Technology, Wuxi 214083,China)

Abstract: The research on reconfigurable computing takes up with highly flexible architecture for high performance computing. Reconfigurable platforms with FPGA instruments appear largely in recently years. The high-level programming technology of FPGA let the software engineers break away from the trouble of hardware and concentrate on the algorithmic functionality. The Impulse C development kit is a relatively simple and C-based approach which is used for hardware/software co-development. Combining with the hardware compilers, these tools form a whole processor/FPGA mixed means, and greatly simplify the design process of the reconfigurable component. But still, there is some gaps about efficiency and optimization need to fill.

Key words: reconfigurable; impulse C; FPGA; High performance computing

1 可重构计算技术

1.1 基于FPGA的可重构计算

随着电子、通信、科学计算等应用领域的不断发展,对高性能信息处理系统的需求日益增加。传统的基于通用处理器通过软件编程实现基本算法的方法和基于硬件的方法都无法完全满足这些需求。而可重构计算技术结合了通用微处理器的灵活性和专用ASIC的高效性,为满足各领域对高性能计算的需求提供了一条可能的途径。

可重构计算(Reconfigurable Computing)是指,在软件的控制下,利用系统中的可重用资源,根据应用的需要重新构造一个新的计算平台,达到接近专用硬件设计的高性能??[1]。而具有可重新配置电路功能特性的FPGA(Field-Programmable Gate Array)的出现,正好满足了可重构计算系统的需求。目前的可重构计算系统主要是基于FPGA的,以便针对不同的计算需求构造不同的硬件结构,实现高效的并行计算,提高电子信息系统的实时处理能力、自适应能力、可靠性、降低硬件系统的规模和功耗等等。

1.2 可重构系统的体系结构

为了取得上述性能上的优势,并且支持广泛的应用,可重构系统一般由通用微处理器和可重构部件联合组成。通用处理器控制可重构部件的运行并执行不能有效加速的代码,计算密集的核心代码被映射到可重构部件上执行,可重构部件担当通用微处理器的协处理器的角色[2]。

一个典型的可重构系统的结构是:通用处理器初始化可重构的硬件,为其送入必要的数据或者提供数据在存储器中的位置信息。可重构的计算单元独立于主处理器执行实际的计算任务,计算完成后返回结果。如图1所示。这种形式的耦合允许可重构部件在不受主处理器干扰的情况下运行大量的操作,并保持与主处理器同步。

1.3 FPGA的编程技术

使用FPGA作为可重构计算平台也存在着挑战。传统上,低层次的硬件描述必须采用VHDL或Verilog语言编写,这些语言通常不是软件编程人员的专长。

然而基于C语言的FPGA设计工具的出现,支持了比硬件描述语言更高级的编程抽象,使采用软件设计工具和标准C语言来实现绝大部分应用成为可能,特别是计算密集型的设计。

这些新的硬件编译工具允许对C语言应用程序进程处理和优化,生成FPGA网表格式的硬件设计,同时也包括对C语言做必要的扩展,以便于描述高并行、多进程的应用[4]。

有效使用这些工具和软硬件协同设计方法的关键在于对应用在软硬件之间进行划分,确立一个适合于高并行应用的编程模型,以及确立一个应用的结果,从而最大限度利用硬件并行优势[5]。

2 Impulse C开发平台

2.1 Impulse C编程模型

Impulse C就是一种基于C的硬件设计和软硬件混合设计语言,他能够抽象掉硬件和软件之间通信的许多细节,使得开发人员能够更加专注于应用的划分而不用担心硬件的底层细节。

Impulse C的编程模型是一个面向流的、软硬件混合式应用程序的通信顺序进程模型[3]。通过使用一些C兼容的扩展,一个应用程序被描述为一组通过流、信号、和共享存储器进行通信的进程。这些进程持续接收数据、进行计算、产生输出来完成应用程序的工作。

Impulse C编程模型的核心是进程和流。Impulse C致力于从算法到混合FPGA/处理器系统的映射,目的在于建立硬件进程在FPGA上的硬件实现,软件进程存在于微处理器中。硬件进程通过流、信号和存储器与软件进程相联系。如图2所示。对于被映射到硬件的进程,C语言被约束在它的一个子集里,而软件进程只受主机或目标C编译器的限制。

Impulse C编译器为硬件进程生成可综合HDL,以及实现特定的流、信号、存储器所必须的硬件之间的接口和硬件到软件的接口。该编译器可以执行指令调度、循环流水、和循环展开。它包含多种编译指令(在C中用语句#pragma来表达),这些编译指令能够调整优化结果,使其满足通常的面积/性能需求。

2.2 Impulse C的开发环境

Impulse Accelerated Technologies公司专门为加速超级计算应用而提供可编程FPGA的开发工具,他们推出的CoDeveloper开发工具为基于FPGA的可重构计算提供了一个软/硬件协同开发环境。CoDeveloper使用Impulse C库来支持多重并行处理,将基于C语言的设计在编译后以FPGA网表的形式建立硬件。

CoDeveloper开发环境包括:实现从C到RTL级HDL转换的CoBuilder,针对具体平台的自动生成软硬件接口的平台支持包(Platform Support Package,PSP),以及软硬件协同设计调试工具Application Manager和Application Monitor。

CoDeveloper使用Impulse C语言提供了对FPGA系统级的设计,对软/硬件划分,同时允许使用标准C构造编写和自动优化独立进程,具有最小的软件编程复杂度。同时具有在标准C开发环境下编译和调试的能力。

2.3 Impulse C的开发流程

Impulse C编译器能够将Impulse C进程转换成相应的硬件和软件二进制文件。在这个处理的过程中,需要执行一系列的步骤,其中一部分依赖于你所选择的平台对象。如图3所示。

对于软件进程,使用标准的交叉编译器和Impulse C提供的特定平台运行是库即可。硬件进程需要通过RTL生成器的分析,并通过几遍编译进行优化。在这个流程中,设计输入、初始的桌面仿真和调试是利用通常的C开发工具来完成的。在仿真的过程中,CoDeveloper会通过Application Monitor等调试工具监视Impulse C应用程序,指出其中的异常或设计缺陷。

3 在加速3-DES算法中的应用

3-DES算法是常用的加/解密算法,网络上可以找到它的公开源代码。其核心算法是对64位的数据块进行加密或解密,对于大量的数据,只要将该算法重复应用在这些64位块数据上就可以了。

数据流模型对该算法是非常适合的,因此我们用Impusle C库函数中的流接口来读取数据和输出数据。我们在顶层创建生产者和消费者进程,这样就可以向在FPGA上运行的硬件进程输入一些随机文本,并接受输出的加密解密算的结果。还要创建一个代表加密算法的进程和一个代表解密算法的进程。加密算法进程从生产者进程中接收配置数据和文本数据,然后把加密结果按照一次一个字符的方式写到输出流中。如图4所示。解密进程和加密进程实质是一样的,除了编译时参数不同以外。

算法是用标准C加上Impulse C的库来描述的,因此可以用标准桌面的调试工具和CoDeveloper Application Monitor进行设置和运行,并可观察数据流在系统各个不同的进程之间的流动,算法的结果可以在编译到FPGA平台之前进行验证。

用标准桌面开发工具仿真它的功能后,用Altera公司的DE2目标板,在混合FPGA/处理器硬件平台上实现了该应用。这个平台的开发套件包括了所用编译和综合到FPGA的开发工具。这个开发套件结合Impulse C编译器,包含了编译C源程序和执行应用所需要的所有工具。

在把加密程序编译成目标硬件的过程中,首先必须设计支持DE2平台的Platform Support Package文件,接着利用利用这个平台支持包处理相关的Impulse C源文件,产生相应的硬件和软件的接口文件。

然后用Altera的Quartus工具建立新的项目,CoDeveloper输出生成的硬件和软件文件给Quartus,整个系统用Quartus工具综合,并用SOPC Builder的工具生成bit文件,通过USB电缆下载到FPGA上运行验证。

在这个实验中,通过运行在通用处理器上的软件进程来获取测试时间,并与在通用处理器上运行的纯软件方式的加密算法所用时间作为对比。对同一块数据进行加密,混合平台上运行的时间约为0.014秒,通用处理器上的软件实现约为0.12秒,硬件实现比纯软件实现速度提高了8.6倍,这主要是由于硬件实现发挥了算法内层循环中的底层并行性的能力。

4 结论

本文介绍了基于FPGA的可重构计算平台的体系结构,以及在C语言的环境中对FPGA的编程技术,还对基于Impulse C库的CoDeveloper工具进行了详细的论述。在此基础上,通过3-DES加密算法的实例,对在CoDeveloper和Altera设计工具的环境下基于Impulse C的软硬件协同开发技术进行了深入的研究。

可重构计算是未来高性能计算的一个发展方向。采用高级语言对FPGA的进行编程,可以使开发人员把注意力集中在算法的描述上,并让软件设计师也能完成底层硬件的的设计工作。当然这些需要强大的可重构编译器的支持。未来,面向可重构计算的编程模型、编程语言及相关的编译器的设计还有待进一步研究。

参考文献:

[1] 罗金平,杜贵然,周兴铭.计算机体系结构的新发展:通用重构计算技术[J].计算机工程,1999(9):1.

[2] 王昭顺,王沁,曲英杰.可重构计算机体系结构[J].北京科技大学学报.2001,23(4):387-389.

[3] Katherine Cpmpton,Scott Hauck.Reconfiguralbe Computing:A Survey of Systems and Software.ACM Computing Surveys,2002,34(2):171-210.

[4] S. M. Loo, B. Earl Wells, N. Freije, J. Kulick. Handel-C for Rapid Prototyping of VLSI Coprocessors for Real Time Systems.IEEE 2002, 0-7803-7339-1.

毛兴权(1983-), 男,硕士研究生。研究方向:计算机编译技术。

上一篇:线性连续SISO系统极点配置算法的MATLAB实现 下一篇:通用题库管理系统开发