1.The Need for Representative Benchmarks
评估 FPGA 体系结构的想法主要依赖于使用一个计算机辅助设计 / 计算机辅助设计(CAD)流程来使用一组基准电路来量化提议的体系结构变化的面积和性能增益。 这通常是一个调整 FPGA 体系结构的迭代过程,修改 CAD 工具以理解和适应体系结构的变化,然后量化99映射到新体系结构的基准电路的面积和延迟结果。 很明显,在这个过程中基准电路的选择对架构决策有直接的影响。 因此,一个基准集需要有一个广泛的和同时具有代表性的应用程序,以确保 FPGA 结构针对目标用例进行了优化,而不会损失其通用性和灵活性。 当我们第一次设定目标去探索 DL 应用的 FPGA 体系结构的变化时,我们发现现今在 FPGA 研究中常用的基准测试集[150,112,97]并不包括这个快速增长领域的任何代表性的基准测试电路。 除此之外,很少有用于 DL 或 CNN 加速器的开源 FPGA 实现。 大多数开源实现都使用高级综合文件[34,135] ,这与 VPR [88]等学术 FPGA CAD 工具不兼容,因此不能用作 FPGA 体系结构探索的基准。 据我们所知,DNNWeaver 是基于 fpga 的 CNN 推理的唯一开源寄存器传输语言(RTL)实现[119]。 然而,仅仅依赖于这个基准,我们可能会得出并不广泛适用的体系结构结论。
2.Three Representative Benchmarks
这促使我们为 CNN 推理实现了三种最先进的计算体系结构(CAs) ,我们在本文中使用了这些体系结构,并希望它们能够成为一个用于 FPGA 体系结构研究的开源 DL 硬件基准套件的开端。 这些基准测试还允许我们在受控条件下(例如 RTL 实现、相同的 FPGA 平台、相同的权重和**精度等)对 FPGA 与 ASIC 的效率差距进行研究,以便进行公平比较,并了解这些比较如何随 ca 的结构差异而变化。 在本章中,我们首先从文献中提出的众多体系结构中讨论了选择这三种特定 ca 的原因。 然后,我们将详细描述这三个 ca 中的每一个,它们的独特特性以及为了我们的研究目的而添加的扩展。
3.Selection of Computing Architectures
我们使用可参数化的 SystemVerilog 实现了三个高度优化的先进 ca,以加速 RTL 中的 CNN 推理任务。 我们将这三个 ca 称为类 asu [91,90]、类 intel-dla [11]和类 chain-nn [136]。 我们实现了执行2.2.1小节中描述的3个 CNN 模型的所有层所需的硬件计算块: AlexNet、 VGG-16和 ResNet-50。 我们还实现了控制逻辑,从读取片上缓冲区的输入特征和权重开始运行 ca,将它们转移到计算块,并将最终结果写入输出特征缓冲区。 根据文献[91,11,136]中提出的最优设计点,设置了每个嵌套卷积循环的片上缓冲区大小和并行因子。 为了一致性和公平比较,我们还为所有三个具有16位特性和8位权重的 ca 使用了定点数据表示法,如文[91]所示。 我们认为外部存储器接口和直接存储器访问引擎超出了这项工作的范围,因为它们不影响我们试图得出的结构性结论,目前的 FPGA 结构在加速 CNNs 的计算瓶颈。 然而,当我们假设任何我们指定作为性能模型输入的外部内存接口为所有 ca 的性能建模时,我们考虑外部内存传输。
3.1ASU-like CA
这个 CA 是由亚利桑那州立大学(ASU)的 Ma 等人在[91]中提出的,然后在[90]中扩展以支持最近 CNN 模型中使用的 ELTWISE 和 BNORM 层。 这个 CA 的核心,如图3.1所示,是一个三维 MAC 单元阵列的大小 POM POX POY,可以计算 CONV 和 FC 层。
3.11 Input, Output and Weight Buffers**
3.12Convolution Engine**
3.13卷积循环计算**
3.2 Intel-DLA-like CA
3.21 Input, Output and Weight Buffers
这个 CA 使用双缓冲的“流缓冲器” ,这样一个 CONV 层的输入特性从一个缓冲器读取,其输出存储在另一个缓冲器中,然后作为下一层的输入缓冲器。 这两个缓冲区在每一层之后继续作为输入和输出缓冲区互换角色,而不需要在外部存储器中存储任何中间结果。 在计算最后一个 CONV 层之后,在开始计算 FC 层之前存储在片外存储器中。 每个 PE 包含本地权重缓冲区。
3.22 Winograd Transform
3.23 Convolution Engine
3.3 Chain-NN-like CA
3.31 Input, Output and Weight Buffers
此 CA 将输入特性映射分为奇数列和偶数列,并使用两个单独的输入缓冲区来存储它们。 两个输入缓冲区为每个子链的第一个 PE 提供输入(即每9个、25个和121个 PE 中的第一个 PE,分别实现内核大小33、55和1111的卷积)。 存在 NsubbMAX 输出缓冲区,每个缓冲区存储一个子链产生的输出,其中 NsubbMAX Nchain / (33)是使 因为3*3是用在 AlexNet CONV 层的最小的内核大小。
3.32 Convolution Engine
4.Validation Against Published Results**
5.Summary
在这一章中,我们详细介绍了我们实施作为研究基准的三个CA。 我们将这三个 CA 扩展到最初发表在[91,11,136]的版本之外,这样每个 CA 对于 AlexNet,VGG-16和 ResNet-50模型都有三个变体。 我们实现了所有的计算模块,片上功能和权重缓冲区以及控制逻辑在每个 CA。 我们没有实现任何外部存储器控制器,因为我们认为片外通信超出了我们在本论文中提出的体系结构研究的范围,但我们确实为每个 CA 建立了一个包括外部存储器带宽限制的性能模型。 我们的所有实现都是在可参数化的 SystemVerilog 中实现的,因此我们可以根据需要轻松地更改数据位宽度、片上缓冲区大小和其他参数。 实现这些 ca 的好处是双重的: 首先,它们使我们能够研究现场可编程门阵列与专用集成电路的效率差距,以便进行 CNN 推断,从而突出下一章中介绍的现有 FPGA 体系结构中的瓶颈,并且它们也用于评估我们在第5章中提出的 DSP 块变化。 其次,它们是构建一个完整的开源 DL 硬件体系结构基准测试套的第一步,可用于未来的 FPGA 体系结构研究