Intel® FPGA SDK for OpenCL™ Pro Edition: 最佳实践实践指南

ID 683521
日期 9/26/2022
Public
文档目录

1.1. FPGA概述

现场可编程门阵列(FPGA)是集成电路,您可以对其反复配置以执行无限多的功能。
一个FPGA由几个小的计算单元组成。通过编程计算单元并将它们连接起来就可将定制数据路径直接构建到架构中,如下图所示。数据流(Data flow)被直接编程到架构中。
图 1. FPGA架构

使用FPGA时,低级别操作(如,位屏蔽(bit masking),移位(shifting)和加法)都是可配置的。此外,您还能以任何顺序组装这些操作。要实现计算流水线,FPGA通过一个可重新配置连接的网络,将查找表(LUT)、寄存器、片上存储器和运算硬件(如数字信号处理器(DSP)块)的组合集成起来。因此,FPGA实现了高级别的可编程性。LUT负责实现各种逻辑功能。例如,重新编程LUT可将逐位(bit-wise) AND逻辑函数运算更改为逐位XOR逻辑函数运算。

使用FPGA实现算法加速的主要好处是它们支持广泛,异构以及独特的流水线实现。该表征与许多不同类型的处理单元形成对比,例如对称多处理器(symmetric multiprocessors), DSP和图形处理器单元(GPU)。在这几类器件中,是通过多次重复同一通用计算硬件实现并行性。然而在FPGA中,您可以通过仅复制您算法工作中的逻辑实现并行性。

处理器实现的指令集限制每时钟周期执行的工作量。例如,大多数处理器没有可以执行如下C代码的专用指令:

E = (((A + B) ^ C) & D) >> 2;

如果没有用于此C代码实例的专用指令,那么CPU,DSP或GPU必须执行多条指令才能进行操作。相比而言,您或许可以将FPGA视作一个硬件平台,它可以实现您的软件算法所需要的任何指令集。您可以配置FPGA来执行一连串的操作,以在单个时钟周期内实现上述代码示例。FPGA实现将专用加法硬件与LUT连接起来,以执行逐位(bit-wise)XOR和AND运算。然后,该器件使用其可编程的连接执行2个两位右移而不消耗任何硬件资源。该操作的结果随后成为后续操作的一部分从而形成复杂流水线。