实现基于FPGA的硬件算法加速器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

宝鸡文理学院学报(自然科学版),第26卷,第2期,第1542155页,2006年6月

Journal of Baoji University of Arts and Sciences(Natural Science),Vol.26,No.2,pp.1542155,J un.2006

实现基于FPGA的硬件算法加速器3

叶淑群,陈鸿鹏,梁士坤

(广东医学院物理与电子学实验室,广东湛江524023)

摘 要:目的 通过具体的方法和示例,说明使用FPG A来实现硬件算法加速是一种较好的方法。方法 通过采用FPG A实现CRC算法的硬件加速器与采用传统的软件优化相比较,说明FPG A的优越性。结果 基于FPGA的硬件算法加速器,既可提高系统的计算能力,也可节约成本,缩小系统体积。结论 根据目标系统的功能需求,使用FPG A来实现硬件算法加速是一种有效、简便、经济的方法。

关键词:硬件算法加速器;FP GA处理器;CRC外围电路

中图分类号:TP36 文献标识码:A 文章编号:100721261(2006)022******* The hardw are arithmetic accelerator based on FPGA

YE Shu2qun,CH EN Hong2peng,L IAN G Shi2kun

(Dept.Phys.&Electronics Lab.,Guangdong Medical College,Zhanjiang524023,Guangdong,China)

Abstract:Aim To demonst rate t hat FP GA is a better met hod to accelerate hardware arit hmetic t hrough so me met hods and examples.Methods The advantages of FP GA were illust rated t hrough comparing t he t raditional software and FP GA.R esults FP GA met hod can imp rove system comp uta2 tional abilities,economize t he cost and decrease t he volume.Conclusion FP GA met hod is an effec2 tive,convenient and economic met hod to ware arit hmetic.

K ey w ords:hardware arit hmetic accelerator;FP GA p rocessor;CRC external circuit

当设计者无法从算法中获得最佳性能并且采用软件方法也行不通时,可以通过硬件和软件重新划分来进行加速。FP GA[1]实现软件模块和硬件模块的相互交换,而不必改变处理器或进行板级变动。

从代码中获得最佳性能的方法包括优化算法、使用查找表法、将一切都转换为本地字长尺寸、使用注册变量、解开循环甚至可能采用汇编代码等。如果所有这些方法均不行,可以转向更快的处理器,采用一个不同的处理器架构,或将代码一分为二通过2个处理器并行处理。利用可编程逻辑作为硬件加速的基础[2],不仅可将那些对时间有严格要求的代码段转换为能够以5~100倍速度运行的函数调用,而且是一种可供软件开发之用的标准工具。

低成本可编程逻辑在嵌入式系统中应用得越来越普遍,这为系统设计者提供了一个无需对处理器或架构进行大的改动即可获得更高性能的可选方案。可编程逻辑可将计算密集型功能转换为硬件加速功能。从软件的角度看,这只是简单地将一个函数调用做进一个定制的硬件模块中,但运行速度要比通过汇编语言优化的相同代码或将算法转换为查找表要快得多。1 硬件加速

硬件加速是指利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性。从软件的角度看,与硬件加速模块接口就跟调用一个函数一样。唯一的区别在于此函数驻留在硬件中,对调用函数是透明的。硬件在执行各种操作时要快得多,如执行复杂的数学功能和将数据从一个地方转移到另一个地方,及多次执行同样的操纵。

系统设计中采用FP GA,在设计周期的任何时候都可以添加定制的硬件。设计者可以立刻编写软件代码,并在最终定稿之前在硬件部分上运行。还可以采取增量法来决定哪部分代码用硬件而不用软件。FP GA供应商所提供的开发工具可实现硬件和软件之间的无缝切换。这些都可为总线逻辑和中断逻辑生成HDL代码,并根据系统配置定制软件库及include文件。

2 定制指令和硬件外围电路方式

硬件加速模块有2种实现方式。其一是定制指令,它几乎可在每个可配置处理器中实现,这是采用可配置处理

3收稿日期:2005209227,修回日期:2006201211.E2mail:shuqunye@;shuqunye@ 作者简介:叶淑群(19682),女,福建南安人,实验师,研究方向:物理学实验教学及其研究.

器的主要优点。如图1所示,定制指令是作为算术逻辑单元(AL U )的扩展而添加的,处理器只知道定制指令就像其它指令一样,拥有自己的操作代码。至于C 代码[3],宏可自动生成,使用该定制指令就跟调用函数一样。

如果定制指令需要几个时钟周期才能完成并要连续调用它,则可用流水线式定制指令来实现。这样可在每个时钟周期产生一个结果,只是开始时有些延迟。

硬件加速模块的另一种实现方式是硬件外围电路。在这一方式下,数据不是传递给软件函数,而是写入存储器映射的硬件外围电路中。计算是在CPU 之外完成的,因此在外围电路工作的同时CPU 可以继续运行代码,而代替软件算法的只是一个普通的硬件外围电路。与定制指令的不同之处是硬件外围电路可访问系统中其它外围电路或存储器

,无须CPU 介入。

图1 带定制指令的可配置处理器架构根据硬件需要做什么和怎么工作及需要的时间可决定采用那种方式。对于那些在几个周期内可完成的操作,定制指令更好些,因为它性价比高。对于需要执行几个指令来写入控制寄存器、状态寄存器和数据寄存器,且需要一个指令来读取结果。采用外围电路比较好,因它不会影响CPU 流水线,也可采用前面所述的流水线式定制指令,外定制指令需要有限数目的操作数,并返回一个结果。根据处理器指令集架构的不同,操作数也各异,对某些操纵,这显得很麻烦,如果需要硬件从存储器或存储器中的其它外围电路读出和写入,则采用硬件外围电路,因定制指令无法访问总线。

3 选择代码

当需要优化C 语言代码以满足某些速度要求时,要运行一个代码仿制工具,或亲自检查该代码以便了解代码哪个部分导致系统停滞[4]。这需要熟悉代码以便找出瓶颈所在及优化方法,一种方法是采用本地字大小的变量和带预先计算值的查找表,及通用软件算法优化。这可产生快几倍的执行速度。另一种方法是用汇编语言编写。过去这种方法可获得很好的提高,但现今的编译器在优化C 算法上已能得到很好的效果,因此这种性能的提高是有限的。如果需要显著的性能提高,传统的软件算法优化技巧是不够的。利用硬件实施的算法比软件实施要强,要确定将哪些代码转为硬件,这涉及到系统的计算速度和消耗芯片面积的最优化问题,在实际的应用中可不必将整个软件

模块转换为硬件,只选择那些在硬件中运行得特别快的操作,比如将数据从一处复制到另一处和大量的数学运算以及任何运行多次的循环。如果一个任务由几个数学运算组成,还可考虑在硬件中加速整个任务,有时,仅加速任务中的一个操作就可满足性能要求。下面用具体的实例加以说明。

4 实例:CRC 算法的硬件加速

硬件加速可进行大量且重复的计算,循环冗余校验

(CRC )算法或任何"校验和"算法。下面通过一个CRC 算

法的优化过程来探讨如何实现硬件加速。

首先,利用传统的软件技巧来优化算法,然后将其转向定制指令以加速算法。CRC 算法可用来校验数据在传输过程中是否被破坏。它们具有很高的检错率,且不会对数据吞吐量造成太大影响,因CRC 校验位被添加进数据信息中。但CRC 算法比一些简单的校验和算法有更大的计算量要求。一般来说,发送端对要被发送的消息执行

CRC 算法,并将CRC 结果添加进该消息中,消息的接收

端对包括CRC 结果在内的消息执行同样的CRC 操作。如果接收端的结果与发送端的不同,这说明数据被破坏了。CRC 算法是一种密集的数学运算,涉及到二元模数除法(modulo 22division ),即数据消息被16或32位多项式(取决于所用CRC 标准)除所得的余数。这种操作可通过异或和移位的迭代过程来实现,当采用16位多项式时,

相当于每数据字节要执行数百条指令,如果发送数百个字节,计算量就会高达数万条,因此,任何优化都会大幅提高吞吐量。

4.1 传统的软件优化

利用传统的软件技巧来优化CRC 算法。因CRC 操作中的一个操作数,即多项式(除数)是常数,字节宽CRC 操作的所有可能结果都可以预先计算并存储在一个查找表中,通过一个读查找表动作就可让操作按逐个字节执行下去。采用这一算法时,需要将这些预先计算好的值存储在存储器中。选择ROM 或RAM 都可以,只在启动CRC 计算之前将存储器初始化就行。查找表有256个字节,表中每个字节位置包含一个CRC 结果,共有256种可能的8位消息(与多项式大小无关)。

4.2 采用定制指令方法

CRC 算法由连续的异或和移位操作构成,用很少的

逻辑即可在硬件中简单实现。由于这一硬件模块需几个周期来计算CRC ,故采用定制指令来实现CRC 计算要比采用外围电路更好。此外,无须涉及系统中任何其它外围电路或存储器。仅需要一个微处理器(可配置微处理器)来支持定制指令即可,在硬件中实现时,算法应该每次执行16或32位计算,这取决于所采用的CRC 标准。如采用CRC 2CCIT T 标准(16位多项式),最好每次执行16位计算。如采用8位微处理器,效率可能不太高,因装载操作数值及返回CRC 值需要额外的周期。

(下转第168页)

5

51第2期叶淑群等 实现基于FP GA 的硬件算法加速器

相关文档
最新文档