论文部分内容阅读
随着可用数据的增加,设备算力的提升以及算法的革新,人工神经网络在实际应用中取得了大量引人注目的成就。在这些网络中,长短期记忆网络(Long Short-Term Memory,LSTM)作为循环神经网络(Recurrent Neural Network,RNN)的一种变种,由于成功解决了长期依赖问题的困扰,在很多与序列数据相关的难题上取得了突破性的进展。研究并设计适用于这种网络的专用硬件加速器对充分利用它的优势有着重要的意义。并且,考虑到验证对于集成电路开发的重要作用,设计完成的加速器必须通过验证以证明没有偏离设计目标,确保功能正确。本文先以常规的RNN为代表,介绍了这一类神经网络的特点,并解释了长期依赖问题的成因。之后着重介绍了LSTM的网络结构,详细分析了其前向传播算法的计算流程,为之后的设计工作提供了理论基础。此外,文章还包括了对通用验证方法学(Universal Verification Methodology,UVM)中几个关键的核心理念的描述,介绍了之后的验证任务中将会频繁用到的方法和工具。随后,分别以LSTM网络中的矩阵向量乘法、激活函数、向量点乘作为设计重点,对每一种计算的实现方式、数据格式、精度要求进行了细致的思考,并结合算法计算密集,数据量多的特性,分别提出了提高计算并行度、扩展带宽等优化方案。在正式设计之前先使用SystemC语言为加速器建立模型,检查方案的可行性。然后再根据拟定的方案开始正式的设计工作,完成电路细节的实现。对设计代码进行逻辑综合,得到的门级网表规模为223206 instances,208万逻辑门。设计完成之后,按照UVM的规范,借助其丰富强大的验证功能,分别为设计中的各个模块搭建验证平台,并对它们的功能进行仿真验证,探查设计过程中的漏洞,修正错误的部分。之后,在模块层级的验证工作的基础上进行了整合和扩充,构建出适用于整个LSTM网络结构的系统级验证平台。在系统级别的验证过程中进行了多次仿真,利用平台的自动检查功能对比结果,统计分析不同情况下的数据信息,对加速器的行为进行确认。此外,还使用加速器运行了一个手写数字识别算法,当时钟频率为100MHz时,加速器每秒可计算1645张MNIST数据集的图片,识别准确率达到了98%,和软件的实现相同,且最大的数值误差仅为0.107。经过两部分各有侧重的验证,最终确定设计的硬件加速器能正确有效地提升LSTM前向传播算法的效率,实现了预期的目标。