欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章
硬件加速是指利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性。
硬件加速实质上是通过增加运算并行性达到加速的目的的。
常常采用流水线和硬件复制的方法。
1 流水线
1.1 适合流水线的场景
如果某个设计的处理流程分为若干步骤,而且整个数据处理是“单向流”的,前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计的方法来提高系统的工作频率。
流水线的各个步骤处理由功能单一的各个单元完成,当数据沿着流水线方向依次通过所有功能单元时,即完成了所有的数据处理并输出。
由于流水线上各个功能单元能够并行工作,故只要保证下一功能单元的输入是上一功能单元的输出,则所有功能单元并行工作可以保证整个流水线的正常工作,而无需等到整个流水线吹了结束后才开始下一份数据的处理,进而保证数据充满了所有功能单元,提高了处理速率。
1.2 使用流水线的原因
所谓流水线(pipeline)设计,以汽车工业中的 流水生产线 举例说明。
在汽车生产的时候,假设分为 5 个阶段,每个阶段都需要 1 个工人花费 1 小时完成,因为后续的阶段必须等前面阶段完成后才能进行,所以如果一个人来工作时,总共需要 5 个小时才能完成一辆汽车。采用流水线方式,即在生产线上安排5个人每人负责一个阶段的任务,在进行后续阶段时,前面的阶段可以进行新的工作,那么每个小时都可以生产出一辆汽车了,生产效率提高了 5 倍。
可以看到,流水线之所以可以大大提高效率的原因在于&#x