针对卷积神经网络硬件加速器的调试模块的制作方法

文档序号:14774590发布日期:2018-06-23 02:45阅读:1130来源:国知局
针对卷积神经网络硬件加速器的调试模块的制作方法

本发明涉及计算机领域的硬件加速器调试模块,尤其指一种针对卷积神经网络的硬件加速器调试模块。



背景技术:

卷积神经网络CNN(Convolutional Neural Networks)受神经科学研究的启发,经过长达20多年的演变,CNN在计算机视觉、人工智能领域越来越突出。CNN已经广泛用于图像识别,因为它能模仿生物视觉神经的行为获得很高识别准确率。一个典型CNN由两部分组成:特征提取器和分类器。特征提取器过滤输入图像,产生表示图像不同特征(这些特征可能包括拐角,线,圆弧等,对位置和形变不敏感)的低维向量。向量送入分类器(通常基于传统的人工神经网络),得到向量对应的输入图像属于某个类别(不同的分类任务有不同的类型集合,如人脸识别任务中,每个人都代表一个类别)的可能性。

CNN作为一种前馈网络结构,网络层之间具有高度的独立性:各层网络计算独立,层间无数据反馈。因此,CNN是一种高度并行的网络结构。但通用处理器的为执行逻辑处理和事务处理而优化的特性并不适合用来挖掘CNN的并行性,基于软件方式的CNN神经网络在实时性和功耗方面都不能满足应用的需求。为了充分挖掘卷积神经网络固有的并行性,越来越多的研究者开始采用现场可编程门阵列FPGA(Field Programmable Gate Array)开发基于CNN神经网络的应用。FPGA作为一种可编程器件,具有计算资源丰富、灵活可配、开发周期短、高性能等优点。

目前广泛采用的FPGA设计的CNN加速器(即卷积神经网络硬件加速器)的结构如图1所示,整个加速器主要由四个部分组成,PCIE(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)接口、DDR(Double Data Rate,双倍速率同步动态随机存储器)模块、传输控制模块和CNN模块。

PCIE接口与上位机(用于给CNN加速器发送指令和数据并进行观测的计算机)、DDR模块、传输控制模块相连。PCIE接口接收来自上位机的原始数据(图像数据与CNN网络权值数据),通过DMA(Direct Memory Access,直接内存存取)方式将原始数据写入DDR模块中。PCIE接口接收来自上位机的启动信号,将启动信号发送给传输控制模块。在计算结束后,PCIE接口接收来自传输控制模块的结束信号,并通过DMA方式从DDR模块中读取计算结果,再将结束信号和计算结果传输给上位机。

DDR模块与PCIE接口、传输控制模块相连。DDR模块接收来自PCIE接口的原始数据,将原始数据分批传输给传输控制模块。DDR模块接收来自传输控制模块的计算结果,将计算结果传输给PCIE接口。

传输控制模块与PCIE接口、DDR模块、CNN模块相连。传输控制模块接收来自DDR模块的原始数据,将原始数据传输给CNN模块;传输控制模块接收来自PCIE模块的启动信号,启动CNN模块的计算;在CNN模块计算完成之后,传输控制模块接收来自CNN模块的计算结果,将计算结果传输给DDR模块,并将结束信号传输给PCIE接口。另外,传输控制模块有一个用于调试的调试接口。

CNN模块与传输控制模块相连。CNN模块接收来自传输控制模块的原始数据,使用原始数据进行计算,并将计算结果传回传输控制模块。

由卷积神经网络加速器的结构可知,基于FPGA的CNN硬件加速结构复杂,信号繁多,且最大数据位宽高达512比特,一旦出现问题调试起来非常麻烦。传统的加探针的调试方法,所能采样的信号的位数是有限的,一般在1000到2000比特,因此高达512比特的数据位宽,会导致最多只能采样两三个数据。同时采样窗口大小也是有限的,一般只能采样1024-2048个周期,而整体计算需要上百万周期,如果加探针的观测数据的位宽太大,或者是有观测数据在关键路径上,都会引起整个系统的延迟变大,进而导致程序运行错误,所得到的波形图也会出错,导致难以定位错误位置,因此仅仅依靠探针已经不能满足调试需要。



技术实现要素:

本发明要解决的技术问题是提供一种针对卷积神经网络硬件加速器的调试模块,一方面增大定位准确性,一方面降低调试难度。

本发明搭建在传输控制模块和DDR模块之间,如图2所示。它的主要工作是从传输控制模块的调试接口接收观测数据,并保存起来,在全部的计算过程完成之后,再将保存的观测数据写入DDR模块中。其中观测数据可以是任何用户想要获得的数据,可以是输入的图片数据、CNN网络的权值、计算的中间结果等等。根据之前的描述,这样上位机就能通过PCIE接口从DDR模块读取这一部分观测数据,进行进一步的检验。

本发明由DRAM(Dynamic Random Access Memory,动态随机存取存储器)、FIFO(First Input First Output,先进先出队列)、读DRAM计数模块、写DRAM计数模块和数据对齐模块组成。本发明可采用现场可编程门阵列FPGA设计。

FIFO是一个读写异步FIFO,其空信号可表明FIFO是否为空,FIFO为空时空信号有效,FIFO不为空时空信号无效,用于沟通调试模块与DDR模块间不同的时钟域。FIFO的数据位宽等于DDR模块的数据位宽,FIFO的深度等于写FIFO数据的数量,保证FIFO不会溢出。FIFO与数据对齐模块、读DRAM计数模块、DDR模块相连,它从读DRAM计数模块接收写FIFO数据有效信号(即读DRAM数据有效信号),从数据对齐模块接收写FIFO数据,当写FIFO数据有效信号有效时,将写FIFO数据写入FIFO中。FIFO的空信号经过一个非门连接在FIFO的读使能信号端上,当FIFO不为空即空信号无效时,读使能信号有效,此时置读FIFO数据有效信号为有效,并向DDR模块传输读FIFO数据。

采用本发明对卷积神经网络硬件加速器进行调试的方法是:

第一步,选取CNN加速器传输控制模块的观测数据。CNN模块计算过程中的数据都能从传输控制模块中获取,因此只需将想要观测的数据连接至传输控制模块的调试接口即可。

第二步,将调试模块的写DRAM数据有效信号线与CNN加速器传输控制模块的调试接口相连以获取观测数据,将调试模块的计算完成信号线与传输控制模块中的计算完成信号相连。

第三步,根据观测数据的位宽以及数量,配置读DRAM计数模块和写DRAM计数模块的计数上限值和计数位宽、DRAM和FIFO的数据位宽和深度。

第四步,根据第三步配置的读DRAM数据位宽和FIFO数据位宽,配置数据对齐模块的拼接参数m和补零参数w。

第五步,将FIFO的读FIFO数据线、读FIFO数据有效信号线与DDR模块相连。

第六步,上位机通过PCIE接口发送启动信号,CNN加速器开始运算,调试模块的写地址信号和读地址信号均初始化为0。

第七步,当写DRAM数据有效信号有效时,写DRAM计数模块进行计数,对写地址信号进行加一,并置写使能信号、第一使能信号有效,控制写DRAM数据(即调试模块获得的观测数据)写入DRAM中。

第八步,当计算完成信号有效时,读DRAM计数模块开始计数,置第二使能信号为有效,对读地址信号进行加一,向数据对齐模块传输读DRAM数据,同时,置读DRAM数据有效信号有效。

第九步,数据对齐模块根据拼接参数m和补零参数w,对读DRAM数据进行拼接补零,得到写FIFO数据并传输给FIFO。

第十步,当写FIFO数据有效信号有效时,写FIFO数据写入FIFO之中。当FIFO空信号无效时,FIFO的读使能信号有效,FIFO置读FIFO数据有效信号为有效,将读FIFO数据传输给DDR模块。

第十一步,DDR模块将从FIFO得到的读FIFO数据通过DMA方式,经过PCIE接口传输至上位机显示。上位机对读FIFO数据进行分析,检验CNN加速器是否运行正确。

与现有技术相比,采用本发明可以达到以下技术效果:

(1)本发明DRAM的数据位宽和深度根据所需观测数据信号的位宽和数量设置,FIFO的数据位宽根据DDR的数据位宽设置,数据深度根据写FIFO数据的数量设置,摆脱了采样窗口大小的限制,大大增加了调试过程中所获得的信息量,降低了调试难度。

(2)本发明调试模块电路规模小,几乎不会影响系统的延迟,因此得到的结果准确性更高。

(3)本发明能够更加准确方便地定位问题位置,CNN模块计算过程中的数据都能从传输控制模块中获取,因此只需将想要观测的数据连接至传输控制模块的调试接口,在CNN加速器运行结束后就能在上位机对观测数据进行检验。

附图说明

图1是背景技术所述现有卷积神经网络硬件加速器的逻辑结构图。

图2是本发明的使用场景示意图。

图3是本发明的逻辑结构图。

具体实施方式

图2是本发明的使用场景示意图。如图2所示,本发明搭建在传输控制模块和DDR模块之间,它的主要工作是从传输控制模块的调试接口接收观测数据,并保存起来,在全部的计算过程完成之后,再将保存的观测数据写入DDR模块中。上位机通过PCIE接口从DDR模块读取这一部分观测数据,进行进一步的检验。

图3是本发明的逻辑结构图。

本发明由DRAM、FIFO、读DRAM计数模块、写DRAM计数模块和数据对齐模块组成。

FIFO是一个读写异步FIFO,其空信号可表明FIFO是否为空,FIFO为空时空信号有效,FIFO不为空时空信号无效,用于沟通调试模块与DDR模块间不同的时钟域。FIFO的读写数据位宽等于DDR模块的数据位宽,FIFO的深度等于写FIFO数据的数量,保证FIFO不会溢出。FIFO与数据对齐模块、读DRAM计数模块、DDR模块相连,它从读DRAM计数模块接收写FIFO数据有效信号(即读DRAM数据有效信号),从数据对齐模块接收写FIFO数据,当写FIFO数据有效信号有效时,将写FIFO数据写入FIFO中。FIFO的空信号经过一个非门连接在FIFO的读使能信号端上,当FIFO不为空即空信号无效时,读使能信号有效,此时置读FIFO数据有效信号为有效,并向DDR模块传输读FIFO数据。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1