DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1178|回复: 0
打印 上一主题 下一主题

[待整理] FPGA并行计算抽象接口的设计与实现

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 16:15:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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 系统软件流程
       

        图 1 单次调用接口的软件流程

         

          上图所示为C程序一次调用并行计算接口的过程,C程序与FPGA芯片的通信通过PCI Express总线来完成。FPGA芯片根据接收到的信号来判断应该采用哪个独立模块来进行请求的计算。
           
       

        图 2 多进程C程序调用并行接口的流程

         

          上图所示为多进程程序在调用该并行接口时的过程。关键在于在向FPGA芯片发送请求信息时附带发出该请求的进程ID号,这样在接收总线发回的数据时才能根据进程号对号接收。
           
          4 系统框架

        图 3 系统框架

         

          上图所示为系统的组成结构。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总线读写数据
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-29 19:08 , 耗时 0.084847 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表