如何采用FPGA协处理器实现算法加速_第1页
如何采用FPGA协处理器实现算法加速_第2页
如何采用FPGA协处理器实现算法加速_第3页
如何采用FPGA协处理器实现算法加速_第4页
如何采用FPGA协处理器实现算法加速_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、如何采用FPGA协处理器实现算法加速作者:Gle nn Ste in er,高级工程经理,gle nn .stei nerxili Kunal She noy,设计工程师,ku nal.she noyxi lin Dan Isaacs,嵌入式处理总监,dan.isaacs赛灵思公司先进产品分部David Pellerin,首席技术官,david.pellerinImpulse Accelerated 技术公司当今的设计工程师受到面积、功率和成本的约束,不能采用GHz级的计算机实现嵌入式设计。在嵌入式系统中,通常是由相对数量较少的算法决定最大的运算需求。使用设计自动 化工具可以将这些算法快速转换

2、到硬件协处理器 中。然后,协处理器可以有效地连接到处理器,产生 “ GHz级的性能。本文主要研究了代码加速和代码转换到硬件协处理器的方法。我们还分析了通过一个涉及到基于辅助处理器单元 (APU)的实际图像显示案例的基准数据均衡决策的过程。该设计使 用了在一个平台FPGA中实现的一个嵌入式 PowerPC。协处理器的意义协处理器是一个处理单元,该处理单元与一个主处理单元一起使用来承担通常由主处理单元执行的运算。通常,协处理器功能在硬件中实现以替代几种软件指令。通过减少多种代 码指令为单一指令,以及在硬件中直接实现指令的方式,从而实现代码加速。最常用的协处理器是浮点单元 (FPU),这是与CPU紧

3、密结合的唯一普通协处理器。 没有通 用的协处理器库,即使是存在这样的库,将依然难以简单地将协处理器与一个CPU(例如Pentium 4)连接。Xilinx Virtex-4 FX FPGA 拥有一个或两个 PowerPC,每个都有一个 APU 接口。通过在 FPGA中嵌入一个处理器,现在就有机会在单芯片上实现完整的处理系统。带APU接口的PowerPC使得在FPGA中得以实现一个紧密结合的协处理器。因为频率 的需求以及管脚数量的限制,采用外部协处理器不大可行。因此可以创建一个直接连接到PowerPC的专用应用协处理器,大大地提高了软件速度。因为FPGA是可编程的,你可以快速地开发和测试连接到C

4、PU的协处理器解决方案。协处理器连接模型 协处理器有三种基本的形式:与 CPU 总线连接的、与 I/O 连接的和指令流水线连接 (Instruction Pipeline Connection) 。此外,还存在一些这些形式的混合形式。1. CPU 总线连接处理器总线连接加速器需要 CPU 在总线上移动数据以及发送命令。通常,单个数据处理 就需要很多的处理器时钟周期。因为总线仲裁以及总线驱动的时钟是处理器时钟的分频, 所以会降低数据处理速度。一个与总线连接的加速器可以包含一个存储器存取 (DMA) 引 擎。在增加额外的逻辑情况下, DMA 引擎允许协处理器工作在位于连接到总线的存储器 上的数据块

5、,独立于 CPU 。2. I/O 连接与 I/O 连接的加速器直接连接到一个专用的 I/O 端口。通常通过 GET 或 PUT 函数提供数 据和控制。因为缺少了仲裁、控制复杂度降低以及连接器件较少,因此这些接口的驱动时 钟通常比处理器总线更快。这种接口的一个较好的例子如 Xilinx Fast Simplex Link(FSL) 。 FSL 是一种简单的 FIFO 接口,可以连接到 Xilinx MicroBlaze 软核处理器或 Virtex-4 FX PowerPC 。与处理器总线接口中的数据移动相比,通过 FSL 移动的数据具有较低的延时 和更高的数据速率。3. 指令流水线连接指令流水线

6、连接加速器直接连接到 CPU 的计算内核。通过与指令流水线连接, CPU 不能 识别的指令可以由协处理器执行。 操作数、 结果以及状态直接从数据执行流水线向外传递, 或接收。单个运算可以实现两个操作数的处理,同时返回一个结果和状态。作为一个直接连接的接口, 连接道指令流水线的加速器可以用比处理器总线更快的时钟驱 动。 Xilinx 通过 APU 接口实现这种协处理器连接模型,对于典型的双操作数指令,在数据 控制和数据传输上可以缩减 10 倍的时钟周期。 APU 控制器还连接到数据缓存控制器,通 过它可以执行数据加载 /存储操作。因此,APU接口能在每秒内移动数百兆字节,接近DMA速度。I/O

7、连接加速器或指令流水线连接加速器可以与总线连接加速器结合起来。在增加额外的 逻辑条件下,可以创建一个加速器,这个加速器运行在一个位于总线连接存储器上的数据 块上,通过一个快速、低延时的接口接收命令并返回状态。在本文中介绍的 C-HDL 工具组可以实现总线连接和 I/O 连接加速器,它还能实现连接到 PowerPC 的 APU 接口的加速器。尽管 APU 连接是基于指令流水线的, C-HDL 工具组实 现了一种 I/O 流水线接口,该接口具有 I/O 连接加速器的典型性能。FPGA/PowerPC/APU 接口FPGA 允许硬件设计工程师利用单芯片上的处理器、解码逻辑、外设和协处理器实现一个 完

8、整的计算系统。 FPGA 可以包含数千到数十万的逻辑单元,可以从这些逻辑单元实现一 个处理器,如 Xilinx PicoBlaze 或 MicroBlaze 处理器,或者可以是一个或者更多的硬逻辑单元(如Virtex-4 FX PowerPC)。大量的逻辑单元使你可以实现数据处理单元,这些单元 与处理器系统一起工作,由处理器对其进行控制或监控。FPGA作为一种可重复编程的单元,允许你在设计过程中进行编程并对其进行测试。如果你发现了一个设计缺陷,你可以立即对其进行重新编程设计。FPGA还允许你实现硬件运算功能,而这在以前的实现成本是很高的。CPU流水线与FPGA逻辑之间紧密结合,这样就可以创建高

9、性能软件加速器。图1的模块框图显示了 PowerPC、集成的APU控制器以及一个与之相连的协处理器。来 自高速缓存或存储器中的指令可以立即出现在CPU解码器和APU控制器上,如果 CPU能识别指令,则运行这些指令。否则,APU控制器或用户创建的协处理器可以对指令做出 应答并执行指令。一个或者两个操作数被传递到协处理器,并返回一个结果或状态。APU接口还支持用一个指令发送一个数据单元。数据单元的大小范围从一个字节到4个32位的字。通过一个结构协处理器总线 (FCB),可以将一个或多个协处理器连接到APU接口。连接到总线的协处理器范围包括现存的内核(例如FPU)到用户创建的协处理器。一个协处理器可

10、以连接到FCB用于控制和状态运算,并连接到一个处理器总线,实现直接存储器数据块 访问以及DMA数据传递。一种简化的连接方案,例如FSL,也可以在FCB和协处理器之间使用,在牺牲一定性能的条件下实现FIFO数据和控制通信。为展示指令流水线连接加速器的性能优势,我们采用一个处理器总线连接FPU首先实现了一个设计,然后采用APU/FCB连接的FPU实现设计。表1总结了两种实现方式下有限脉冲响应(FIR)滤波器的性能。如表1中所反映的一样,连接到一个指令流水线的FPU使软件浮点运算速度增加30倍,而APU接口相比于总线连接 FPU来说改善了近 4倍。ImplementationPerformanceS

11、oftware Implementation2 MFLOPSFPU Connected to Processor Bus16MFLOPSFPU Connected to APU Interface via FCB60 MFLOPS表1 :未加速与加速的浮点性能C代码转换到 HDL采用C到HDL的转换工具将 C代码转换到HDL加速器是一种创建硬件协处理器的高效 方法。图2所示以及下面详述的步骤总结了C到HDL转换的过程:图2: C-HDL设计流程1. 使用标准C工具实现应用程序或算法。开发一种软件测试向量(test bench)用于基线性能和正确性(主机或台式电脑仿真)测试。使用一种编译器(例如

12、gprof)来开始确定关键的函 数。2. 确定是否浮点到定点转换适当。使用库或宏来辅助这种转换,使用一个基线测试向量 来分析性能和准确性。使用编译器来重新评估关键函数。3. 使用C到HDL转换工具(如Impulse C),在每个关键功能上重复,以实现:将算法分割成并行的进程;创建硬件 /软件进程接口(流、共享存储器、信号);对关键的代码段(例如 内部代码循环)进行自动优化和并行化;使用桌面电脑仿真、周期准确的C仿真以及实际的在系统测试对得到的并行算法进行测试和验证。4. 使用C到HDL转换工具将关键的代码段转换到HDL协处理器。5. 将协处理器连接到 APU接口用于最终的测试。Impulse

13、: C 到 HDL 转换工具如图3所示的Impulse C 通过结合使用 C兼容库函数与Impulse CoDeveloper C 代码到 硬件的编译器,使嵌入式系统设计工程师能创建高度并行的、FPGA加速的应用。ImpulseC通过使用定义完好的数据通信、消息传递和同步处理机制,简化了硬件/软件混合应用设计。Impulse C提供了 C代码(例如循环流水线处理、展开和运算符调度)的自动优化以及交互式工具,允许你对每个周期的硬件行为进行分析。* .nXI4 Ir*MEM 24 h= scan.G 吕匚HLYfrXRE i.*|ilr |/ jTA31V|far H-Q; KM31E; l* f

14、图 3. Impulse CImpulse C设计用于面向数据流的应用,但是它也具有足够的灵活性来支持其他的编程模 型,包括使用共享存储器。这一点很重要,因为基于FPGA不同的应用具有不同的性能和数据要求。在一些应用中,通过块存储器读和写在嵌入式处理器和FPGA之间转移数据是有意义的;在其它的情况下,流传数通信信道可能提供更高的性能。可以快速建模、编译 和评估可选的算法的能力对于实现某个应用最佳的结果来说,非常重要。到目前为止,Impulse C库包含以新数据类型和预定义的函数调用形式的最少C语言扩展。使用Impulse C函数调用,你可以定义多个并行程序段(调用进程),并使用流、信号和其他机

15、制描述它们的互连。Impulse C编译器将这些C语言进程转换并优化成:可以综合到FPGA 的较低级 HDL ,或可以通过广泛存在的 C 交叉编译器编译到支持的微处理器上标 准 C( 带相关的库调用 ) 。完整的 CoDeveloper 开发环境包括与标准 C 编译器和调试器 ( 包括微软公司的 Visual Studio 和 GCC/GDB) 兼容的台式电脑仿真库。使用这些库, Impulse C 程序设计工程师能 编译和执行他们用于算法验证和调试目的的应用程序。 C 程序设计工程师还能检验并行进 程,分析数据移动, 并利用 CoDeveloper Application Monitor解决

16、进程到进程的通信问题。在编译时, Impulse C 应用的输出是一组硬件和软件源文件, 用于输入到 FPGA 综合工具。 这些文件包括:1. 用于描述编译硬件进程的自动产生的 HDL 文件;2. 用于描述连接硬件进程到系统总线所需的流、信号和存储器组件的自动产生的 HDL 文 件;3. 自动产生的软件组件 (包括运行时间库 )用于建立任何硬件 /软件流连接的软件端;4. 附加文件,包括脚本文件,用于输入产生的应用程序到目标 FPGA 布局布线环境。这 种编译进程的结果是一个完整的应用,包括需要的硬件 /软件接口,用于在基于 FPGA 的 编程平台上实现。设计实例图 4 所示的 Mandelb

17、rot 图是一种经典的不规则几何图形,该图形广泛用在科学和工程学 界用于仿真无序事件,例如天气。不规则图形也用于产生纹理和在视频显示应用上成像。Mandelbrot 图像描述为自相似性。 放大图形的局部, 可以获得类似于整个图形的另外一个 图形。m IMTWCE M C-TO-WLMandelbrot图形是硬件/软件协同设计的理想选择,因为它具有单个运算密集的函数。通 过将关键的函数转移到硬件实现将大大地增加整个系统的速度,使这个关键函数更快。Mandelbrot应用还能清楚地区分硬件和软件进程,使用C-HDL工具很容易实现。本文使用CoDeveloper工具组作为 C-HDL工具组用于该设计

18、实例,而且只修改了软件 Mandelbrot C程序以使其与C-HDL工具兼容。其中的改变包括:将软件项目分割成不同 的进程(顺序执行的独立单元);函数接口转换(硬件到软件)到流;增加编译器指令来对产 生的硬件进行优化。我们随后使用CoDeveloper工具组来创建 Pcore协处理器,将该协处理器输入到 Xilinx Platform Studio(XPS) 。利用XPS,我们将PC连接到PowerPC APU 控制器接口,并测试系统。Xilinx公司的应用说明资料 XAPP901中提供了该设计的全面描述和设计文件,并提供下载。同时,用户指南 UG096提供一种实现设计实例的逐步设计指导。我们对Mandelbrot图像纹理问题、图像滤波应用和三倍DES加密的性能改善进行了测量。性能改善显示了从 11倍到34倍的加速,在表 2中做出了总结。应席只用 PowerPC (300MHZJPowerPC* 协处理嚣 (300/50MHZ)加遽效果(Mandelbroi/MK秒T 2秒17x边沿检测)0 14O0H2Wllx三倍的DES)20.067934x夷2丰通过协址理器扯速器的算法麵速性能赋比本文小结受功率、尺寸和成本的约束,你可能需要做出一个并非理想的处理器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论