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

下载本文档

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

文档简介

1、采用fpga协处理器实现算法加速当今的设计工程师受到面积、功率和成本的约束,不能采纳ghz级的计算机实现设计。在嵌入式系统中,通常是由相对数量较少的算法打算最大的运算需求。用法设计工具可以将这些算法迅速转换到硬件协处理中。然后,协处理器可以有效地衔接处处理器,产生“ghz”级的性能。本文主要讨论了代码加速和代码转换到硬件协处理器的办法。我们还分析了通过一个涉及到基于辅助处理器单元(apu)的实际图像显示案例的基准数据均衡决策的过程。该设计用法了在一个平台中实现的一个嵌入式powerpc。协处理器的意义协处理器是一个处理单元,该处理单元与一个主处理单元一起用法来担当通常由主处理单元执行的运算。通

2、常,协处理器功能在硬件中实现以替代几种软件命令。通过削减多种代码命令为单一命令,以及在硬件中挺直实现命令的方式,从而实现代码加速。最常用的协处理器是浮点单元(fpu),这是与cpu紧密结合的唯一一般协处理器。没有通用的协处理器库,即使是存在这样的库,将依旧难以容易地将协处理器与一个cpu(例如pentium 4)衔接。 virtex-4 fx fpga拥有一个或两个powerpc,每个都有一个apu接口。通过在fpga中嵌入一个处理器,现在就有机会在单芯片上实现完整的处理系统。带apu接口的powerpc使得在fpga中得以实现一个紧密结合的协处理器。由于频率的需求以及管脚数量的限制,采纳外部

3、协处理器不大可行。因此可以创建一个挺直衔接到powerpc的专用应用协处理器,大大地提高了软件速度。由于fpga是可编程的,你可以迅速地开发和测试衔接到cpu的协处理器解决计划。协处理器衔接模型协处理器有三种基本的形式:与cpu衔接的、与i/o衔接的和命令流水线衔接(instruction pipeline connection)。此外,还存在一些这些形式的混合形式。1. cpu总线衔接处理器总线衔接加速器需要cpu在总线上移动数据以及发送指令。通常,单个数据处理就需要无数的处理器时钟周期。由于总线仲裁以及总线驱动的时钟是处理器时钟的分频,所以会降低数据处理速度。一个与总线衔接的加速器可以包含

4、一个存储器存取(dma)引擎。在增强额外的规律状况下,dma引擎允许协处理器工作在位于衔接到总线的存储器上的数据块,自立于cpu。2. i/o衔接与i/o衔接的加速器挺直衔接到一个专用的i/o端口。通常通过get或put函数提供数据和控制。由于缺少了仲裁、控制复杂度降低以及件较少,因此这些接口的驱动时钟通常比处理器总线更快。这种接口的一个较好的例子如xilinx fast simplex link(fsl)。fsl是一种容易的fifo接口,可以衔接到xilinx microblaze软核处理器或virtex-4 fx powerpc。与处理器总线接口中的数据移动相比,通过fsl移动的数据具有较

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

6、速度。i/o衔接加速器或命令流水线衔接加速器可以与总线衔接加速器结合起来。在增强额外的规律条件下,可以创建一个加速器,这个加速器运行在一个位于总线衔接存储器上的数据块上,通过一个迅速、低延时的接口接收指令并返回状态。在本文中介绍的c-hdl工具组可以实现总线衔接和i/o衔接加速器,它还能实现衔接到powerpc的apu接口的加速器。尽管apu衔接是基于命令流水线的,c-hdl工具组实现了一种i/o流水线接口,该接口具有i/o衔接加速器的典型性能。 fpga/powerpc/apu接口fpga允许硬件设计工程师利用单芯片上的处理器、解码规律、外设和协处理器实现一个完整的计算系统。fpga可以包含

7、数千到数十万的规律单元,可以从这些规律单元实现一个处理器,如xilinx picoblaze或microblaze处理器,或者可以是一个或者更多的硬规律单元(如virtex-4 fx powerpc)。大量的规律单元使你可以实现数据处理单元,这些单元与处理器系统一起工作,由处理器对其举行控制或监控。fpga作为一种可重复编程的单元,允许你在设计过程中举行编程并对其举行测试。假如你发觉了一个设计缺陷,你可以立刻对其举行重新编程设计。fpga还允许你实现硬件运算功能,而这在以前的实现成本是很高的。cpu流水线与fpga规律之间紧密结合,这样就可以创建高性能软件加速器。图1:powerpc、集成的a

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

9、b用于控制和状态运算,并衔接到一个处理器总线,实现挺直存储器数据块拜访以及dma数据传递。一种简化的衔接计划,例如fsl,也可以在fcb和协处理器之间用法,在牺牲一定性能的条件下实现fifo数据和控制通信。为展示命令流水线衔接加速器的性能优势,我们采纳一个处理器总线衔接fpu首先实现了一个设计,然后采纳apu/fcb衔接的fpu实现设计。表1总结了两种实现方式下有限脉冲响应(fir)的性能。如表1中所反映的一样,衔接到一个命令流水线的fpu使软件浮点运算速度增强30倍,而apu接口相比于总线衔接fpu来说充实了近4倍。表1:未加速与加速的浮点性能c代码转换到hdl采纳c到hdl的转换工具将c代

10、码转换到hdl加速器是一种创建硬件协处理器的高效办法。图2所示以及下面详述的步骤总结了c到hdl转换的过程:图2:c-hdl设计流程1. 用法标准c工具实现应用程序或算法。开发一种软件测试向量(test bench)用于基线性能和正确性(主机或台式电脑)测试。用法一种编译器(例如gprof)来开头确定关键的函数。2. 确定是否浮点到定点转换适当。用法库或宏来辅助这种转换,用法一个基线测试向量来分析性能和精确性。用法编译器来重新评估关键函数。3. 用法c到hdl转换工具(如impulse c),在每个关键功能上重复,以实现:将算法分割成并行的进程;创建硬件/软件进程接口(流、分享存储器、信号);

11、对关键的代码段(例如内部代码循环)举行自动优化和并行化;用法桌面电脑仿真、周期精确的c仿真以及实际的在系统测试对得到的并行算法举行测试和验证。4. 用法c到hdl转换工具将关键的代码段转换到hdl协处理器。5. 将协处理器衔接到apu接口用于终于的测试。impulse:c到hdl转换工具3所示的impulse c通过结合用法c兼容库函数与impulse codeveloper c代码到硬件的编译器,使嵌入式系统设计工程师能创建高度并行的、fpga加速的应用。impulse c通过用法定义完好的数据通信、消息传递和同步处理机制,简化了硬件/软件混合应用设计。impulse c提供了c代码(例如循

12、环流水线处理、绽开和运算符调度)的自动优化以及交互式工具,允许你对每个周期的硬件行为举行分析。图3. impulse cimpulse c设计用于面对数据流的应用,但是它也具有足够的灵便性来支持其他的编程模型,包括用法分享存储器。这一点很重要,由于基于fpga不同的应用具有不同的性能和数据要求。在一些应用中,通过块存储器读和写在嵌入式处理器和fpga之间转移数据是故意义的;在其它的状况下,流传数通信信道可能提供更高的性能。可以迅速建模、编译和评估可选的算法的能力对于实现某个应用最佳的结果来说,十分重要。到目前为止,impulse c库包含以新数据类型和预定义的函数调用形式的最少扩展。用法imp

13、ulse c函数调用,你可以定义多个并行程序段(调用进程),并用法流、信号和其他机制描述它们的互连。impulse c编译器将这些c语言进程转换并优化成:可以综合到fpga的较低级hdl,或可以通过广泛存在的c交错编译器编译到支持的微处理器上标准c(带相关的库调用)。完整的codeveloper开发环境包括与标准c编译器和调试器(包括微软公司的visual studio和gcc/gdb)兼容的台式电脑仿真库。用法这些库,impulse c程序设计工程师能编译和执行他们用于算法验证和调试目的的应用程序。c程序设计工程师还能检验并行进程,分析数据移动,并利用codeveloper applicat

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

15、规章几何图形,该图形广泛用在科学和工程学界用于仿真无序大事,例如天气。不规章图形也用于产生纹理和在视频显示应用上成像。mandelbrot图像描述为自相像性。放大图形的局部,可以获得类似于囫囵图形的另外一个图形。图4:mandelbrot图mandelbrot图形是硬件/软件协同设计的抱负挑选,由于它具有单个运算密集的函数。通过将关键的函数转移到硬件实现将大大地增强囫囵系统的速度,使这个关键函数更快。mandelbrot应用还能清晰地区别硬件和软件进程,用法c-hdl工具很简单实现。本文用法codeveloper工具组作为c-hdl工具组用于该设计实例,而且只修改了软件mandelbrot c

16、程序以使其与c-hdl工具兼容。其中的转变包括:将软件项目分割成不同的进程(挨次执行的自立单元);函数接口转换(硬件到软件)到流;增强编译器命令来对产生的硬件举行优化。我们随后用法codeveloper工具组来创建pcore协处理器,将该协处理器输入到xilinx platform studio(xps)。利用xps,我们将pc衔接到powerpc apu控制器接口,并测试系统。xilinx公司的应用解释资料xapp901中提供了该设计的全面描述和设计文件,并提供下载。同时,用户指南ug096提供一种实现设计实例的逐步设计指导。我们对mandelbrot图像纹理问题、图像滤波应用和三倍des加密的性能充实举行了测量。性能充实显示了从11倍到34倍的加速,在表2中做出了总结。表2:通过协处理器加速器的算法加速性能对照本文小结受功率、尺寸和成本的约束,你可能需要做出一个并非抱负的处理器挑选,通常所挑选处理器性能比期望的性能低。当软件代码不能运行足够快时,协处理器代码加速

温馨提示

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

评论

0/150

提交评论