【FPGA篇章八】FPGA硬件加速:详述FPGA的硬件加速器设计思想

摘要:
虽然采用流水线会增大资源的使用,但是它可以降低寄存器间的传播延时,保证系统维持高的系统时钟速度。在实际应用中,考虑到资源的使用和速度的要求,可以根据实际情况来选择流水线的级数以满足设计需要。“速度”是指在芯片上稳定运行时所能达到的最高频率。面积和速度这两个指标始终贯穿着FPGA的设计,是设计质量评价的最终标准。

欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章

【FPGA篇章八】FPGA硬件加速:详述FPGA的硬件加速器设计思想第1张

硬件加速是指利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性。

硬件加速实质上是通过增加运算并行性达到加速的目的的。

常常采用流水线硬件复制的方法。

1 流水线

1.1 适合流水线的场景

如果某个设计的处理流程分为若干步骤,而且整个数据处理是“单向流”的,前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计的方法来提高系统的工作频率。

流水线的各个步骤处理由功能单一的各个单元完成,当数据沿着流水线方向依次通过所有功能单元时,即完成了所有的数据处理并输出。

由于流水线上各个功能单元能够并行工作,故只要保证下一功能单元的输入是上一功能单元的输出,则所有功能单元并行工作可以保证整个流水线的正常工作,而无需等到整个流水线吹了结束后才开始下一份数据的处理,进而保证数据充满了所有功能单元,提高了处理速率。

1.2 使用流水线的原因

所谓流水线(pipeline)设计,以汽车工业中的 流水生产线 举例说明。

在汽车生产的时候,假设分为 5 个阶段,每个阶段都需要 1 个工人花费 1 小时完成,因为后续的阶段必须等前面阶段完成后才能进行,所以如果一个人来工作时,总共需要 5 个小时才能完成一辆汽车。采用流水线方式,即在生产线上安排5个人每人负责一个阶段的任务,在进行后续阶段时,前面的阶段可以进行新的工作,那么每个小时都可以生产出一辆汽车了,生产效率提高了 5 倍。

可以看到,流水线之所以可以大大提高效率的原因在于:传统的方式,某个阶段进行时,其他阶段是空闲等待的,浪费时间;而流水方式中,在处理后续阶段时,前面的阶段可以进行新的加工,每时每刻,每个工人都是在工作的,这就是流水线能提高生产效率的原因。

在电路上第一种方法就是总共有一个寄存器(reg1),单第二种方法会使用五个寄存器(reg1、reg2、reg3、reg4、reg5)

流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法
目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作能并行执行,所以能提高数据吞吐率(提高处理速度)。

1.3 简单的流水线例子

采用流水设计的方法就是:在较长的组合逻辑路径中插入 DFF(D触发器),将其分割为几个小的组合逻辑,新的 Tlogic 显然小于原来的 Tlogic,所以系统的时钟频率就可以提高了。
举例来说明:设计一个电路完成 i = (a + b + c + d) + (e + f + g + h) 运算。

下面是没有流水的设计:
【FPGA篇章八】FPGA硬件加速:详述FPGA的硬件加速器设计思想第2张

第一级 DFF 到第二级 DFF 之间数据路径的时延为:

Tff
 = Tco + Tlogic
    = Tco + 3*Tadder

下面是插入两级流水的设计:

【FPGA篇章八】FPGA硬件加速:详述FPGA的硬件加速器设计思想第3张

现在相邻的两级 DFF 之间的组合逻辑只有 1 级加法器,而不是原来的 3 级,这时数据路径的时延为:

Tff = Tco + Tlogic
    = Tco + Tadder

显然,采用流水后 Tff 更小,系统能够达到的工作时钟频率也就更高。数据传输时除了第一个数据的所耗时间为3*Tff ,其它数据所用时间均为Tff。

2 硬件复制

在某些FPGA设计中,需要很多重复设计的时候,这时候逻辑复制也就有用了。逻辑复制也可以说是并行计算,简单的说就是把相同的计算进行堆积,提高单位周期内的计算吞吐能力。

针对现在的神经网络计算展开说明硬件复制的高效之处。

比如说一个 3*3*ic*oc 的卷积核(kernel)对特征图(input feature map)进行卷积操作,即对应位置的点进行相乘相加计算,得出一个通道所有的点的计算过程,需要拿 同一个特征图oc个不同的3*3*ic卷积核 进行相同,因为计算模式相同,所以可以采取硬件复制的方式。

这样,就是等于复制了 oc 个计算模块,同时进行 oc 个并行计算,一次计算得到 oc 个输出。

3 总结

利用流水线的设计方法,可大大提高系统的工作速度。

这种方法可广泛运用于各种设计,特别是大型的、对速度要求较高的系统设计。

虽然采用流水线会增大资源的使用,但是它可以降低寄存器间的传播延时,保证系统维持高的系统时钟速度。

在实际应用中,考虑到资源的使用和速度的要求,可以根据实际情况来选择流水线的级数以满足设计需要。

这是一种典型的以面积换速度的设计方法。这里的“面积”主要是指设计所占用的FPGA逻辑资源数目,即利用所消耗的触发器(FF)和查找表(LUT)来衡量。“速度”是指在芯片上稳定运行时所能达到的最高频率。面积和速度这两个指标始终贯穿着FPGA的设计,是设计质量评价的最终标准。

免责声明:文章转载自《【FPGA篇章八】FPGA硬件加速:详述FPGA的硬件加速器设计思想》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java实现安全证书相关操作使用mpvue实现动态图片波浪图效果下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

FPGA基础知识关键点摘要

FPGA基础知识关键点摘要 一.组合逻辑和时序逻辑的区别:组合逻辑与输入直接实时相关,时序逻辑还必须在时钟上升沿出发后输出新值,有没有时钟输入是他们最大的区别!组合时序容易出现竞争冒险现象出现亚稳态,时序逻辑不会出现,且更容易达到时序收敛所以必须很好的掌握时序逻辑 设置不使用的 IO 为 为 in-tri 状态 RTL,Register Transfer...

高速AD中的LVDS和FPGA

通常情况下,模拟输入信号通过高速ADC的量化输出的数字信号需要交给FPGA进行处理。如果高速ADC采用LVDS输出,那么经量化处理过的数字信号将会有非常多的LVDS数据差分对。而LVDS数据接收端,接收到的LVDS差分数据对相互之间可能会存在非常小的一个时间差异,该时间差异往往是皮秒级别的,而随着高速ADC采样率的提升,目前大多数的高速ADC采样速率已...

风扇转速通过FPGA采样

1、风扇最大转速16000RPM,那么每一转需要时间60S/16000=0.00375S=375*10^4ns=T=T1+T2+T3+T4; 2、采样0.6S内的风扇detect信号的上升沿个数:0.6s/(375*10^4ns)=0.6*10^9ns/(375*10^4ns)=160 由于转数取最大值,所以T是最小的,那么160是最大计数个数,实际风扇规...

【设计经验】3、ISE中烧录QSPI Flash以及配置mcs文件的加载速度与传输位宽

一、软件与硬件平台        软件平台:               操作系统:Windows 7 64-bit               开发套件:ISE14.7        硬件平台:               FPGA型号:XC6SLX45-CSG324               QSPI Flash型号:W25Q128BV 二、背景介绍...

Android中的设计思想一

Android设计思想 直接上示例 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ xml布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/r...

FPGA综合工具--Synplify Pro的常用选项及命令

最近要用到Synplify,但以前没使用过,无基础,找到一篇帖子,隧保存下来。 本文转自:http://blog.sina.com.cn/s/blog_65fe490d0100v8ax.html Synplify 使用过程中最常用的选项及命令的介绍。一、 状态机相关(1)FSM Compiler Option  FSM Compiler是一个全局选项。勾选...