FPGA并行计算抽象接口的设计与实现
扫描二维码
随时随地手机看文章
1 设计摘要
FPGA芯片具有可编程、可重配置、可并行计算的特点。随着摩尔定律的发展,计算科学已经步入并行化的时代,具有并行处理能力的CPU/GPU随即面世。而FPGA芯片凭借其并行计算的能力,已经可以轻松将科学计算、逻辑运算、ASIC设计等应用并行化,为了能将该特性普及化,本设计为基于C语言开发的程序开发了一个FPGA的并行计算接口,凡是以C语言设计的程序,均可通过调用本设计的接口,把复杂的算法、数值处理交给FPGA芯片完成,在不需要程序员学习FPGA知识以及使用FPGA开发工具的前提下,大大地减轻CPU的负荷以及从根本上提高了程序的执行效率,是FPGA并行化应用的一次全新尝试。
2 系统原理与技术特点
系统以基于PC机的Windows操作系统为基础,将FPGA芯片作为一个PCI Express总线设备,通过PCI Express总线与PC机的CPU通信,在Windows下开发该PCI Express设备的C程序驱动,提供函数接口供C程序调用。Windows下的C程序通过该驱动接口向PCI Express总线发送信号,接入PCI Express总线的FPGA芯片收到该信号后,根据信号的内容调用相应的片内模块进行相应的计算,依靠其并行化的特点,可以将大多数的算法与数值处理并行化,最后再将计算结果通过PCI Express总线返回给运行于PC机的C程序,从而实现C程序的并行化,此过程相当于使用外围的PCI Express设备为PC机的程序提供并行化的硬件加速服务。
传统的CPU都属于ASIC器件,存在设计过程复杂,灵活性不高,不可重配置的不足,而作为可重构计算的体系结构代表,FPGA在可重配置和并行运算方面具有独特的优势。
系统的技术特点有以下几点:
(1)并行化加速的实现无需使用新的编程语言和编译器;
(2)利用FPGA的可编程特性以及丰富的IP核资源,可实现多种类型计算的并行化,因此该硬件加速设备可适用于多个场合;
(3)可具有跨操作系统特性。只需开发相应操作系统(如Linux)下的PCI Express设备的驱动,便可在其他操作系统下使用FPGA的加速功能。
(4) PCI Express总线采用串行的全双工传输,提供高速的数据传输率。PCI Express规格从1条通道连接到32条通道连接,有非常强的伸缩性,以满足不同系统设备对数据传输带宽不同的需求。例如,PCI Express X1规格支持双向数据传输,每向数据传输带宽250MB/s,PCI Express X1已经可以满足主流声效芯片、网卡芯片和存储设备对数据传输带宽的需求,而速度更快的PCI Express X16,即16条点对点数据传输通道连接来取代传统的AGP总线,适合于需要大量复杂数学计算的应用。PCI Express X16也支持双向数据传输,每向数据传输带宽高达4GB/s,双向数据传输带宽有8GB/s之多,因此,选择PCI Express作为传输总线,不会存在系统瓶颈问题。
(5)PCI总线的资源占用情况
(6)用户在编写程序时,只需要include本文所提供的.h文件,便可调用.h头文件中提供的并行计算函数接口,同时将源代码与本文提供的对应C源文件文件共同编译,即可通过调用PCI总线接口驱动来完成所需的计算。
3 系统软件流程
上图所示为C程序一次调用并行计算接口的过程,C程序与FPGA芯片的通信通过PCI Express总线来完成。FPGA芯片根据接收到的信号来判断应该采用哪个独立模块来进行请求的计算。
上图所示为多进程程序在调用该并行接口时的过程。关键在于在向FPGA芯片发送请求信息时附带发出该请求的进程ID号,这样在接收总线发回的数据时才能根据进程号对号接收。
4 系统框架
上图所示为系统的组成结构。PC端主要有Windows下的PCI设备驱动(采用WinAPI编写)、PCI Express物理总线;FPGA端主要有PCI Express总线IP核、调度模块以及具体各种算法的Verilog HDL模块。
5 系统功能
5.1 PCI设备驱动程序功能
(1)读写FPGA芯片数据
(2)缓存请求与结果数据
(3)调度多进程请求与分配多个进程的计算结果
(4)异常处理
5.2 FPGA调度模块功能
(1)相应PCI总线请求,判断需要调用哪一个算法模块。
(2)根据请求类型调度相应的计算模块,并将请求的数据提供给该模块
(3)接收计算模块回应的计算结果,再通过PCI Express总线接口的IP核将数据回送给PC
5.3 FPGA PCI Express总线接口IP核功能
(1)通过PCI Express总线读写数据