一种用于执行卷积神经网络正向运算的装置和方法转让专利

申请号 : CN201811148189.3

文献号 : CN109086877B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈天石韩栋陈云霁刘少礼郭崎

申请人 : 中科寒武纪科技股份有限公司

摘要 :

本发明提供了一种执行卷积神经网络的装置,其中装置部分包括了指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块。使用该装置可以实现一层或多层人工神经网络卷积层的正向运算。对于每一层来说,首先对输入神经元向量依据卷积窗口进行数据选择,然后与卷积核进行卷积运算,计算出本层的中间结果,然后对该中间结果加偏置并激活得到输出数据。将输出数据作为下一层的输入数据。

权利要求 :

1.一种用于执行卷积神经网络正向运算的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及从运算模块,其中:数据访问单元,用于执行外部地址空间与所述装置之间的数据或指令读写操作;

指令存储单元,用于存储所述数据访问单元读取的指令;

控制器单元,用于从所述指令存储单元中读取指令,将指令译成控制其他模块行为的控制信号,所述其他模块包括:数据访问单元、主运算模块和所述从运算模块;

互连模块,用于连接所述主运算模块和所述从运算模块;

主运算模块,用于将输入数据通过互连模块发送给从运算模块;

所述从运算模块,用于将输入数据与该从运算模块对应的卷积核做卷积运算得到标量数据;

所述互连模块,还用于依据从运算模块的标量数据合并得到包含N个元素的中间向量,将中间向量发送给主运算模块;

主运算模块,用于依据中间向量得到中间结果,并对所述中间结果执行后续运算。

2.根据权利要求1所述的装置,其特征在于,所述从运算模块为多个,所述互连模块,具体用于将多个从运算模块的标量数据合并成中间向量;

所述主运算模块,具体用于将所有中间向量拼接得到中间结果。

3.根据权利要求2所述的装置,其特征在于,

所述主运算模块,具体用于将所述中间结果与偏置数据相加得到偏置结果,将该偏置结果执行激活操作。

4.根据权利要求3所述的装置,其特征在于,

所述激活操作的激活函数为sigmoid,tanh,relu,softmax中的任一个或线性函数。

5.根据权利要求2所述的装置,其中,所述互连模块为以下任一种结构:树状结构、环状结构、网格状结构、分级互连、总线结构。

6.根据权利要求5所述的装置,其特征在于,所述互连模块为树状结构,所述树状结构为二叉树通路;所述二叉树通路包括:多个节点;

其中,每个节点将上游的数据同样地发给下游的两个节点,以及将下游的两个节点返回的数据进行合并后返回给上游的节点。

7.根据权利要求2所述的装置,其中,主运算模块包括:第一存储单元、第一运算单元和第一数据依赖关系判定单元,其中:第一存储单元,用于缓存主运算模块在计算过程中用到的输入数据和输出数据;

第一运算单元完成主运算模块的各种运算功能;

所述第一数据依赖关系判定单元,用于从第一存储单元读取输入数据,并将所述输入数据发送给互连模块;以及接收互连模块的中间向量,将中间向量发送到第一运算单元。

8.根据权利要求7所述的装置,其特征在于,所述第一运算单元包括:向量加法单元和激活运算单元;

所述向量加法单元,用于将偏置数据与所述中间结果对位相加得到偏置结果;

所述激活运算单元,用于将所述偏置结果执行激活函数操作。

9.根据权利要求2所述的装置,其中,每个从运算模块包括:第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元,其中:第二数据依赖关系判定单元,用于对第二存储单元和第三存储单元的执行读写操作;

第二存储单元,用于缓存输入数据以及该从运算模块计算得到的输出标量;

第三存储单元,用于缓存该从运算模块在计算过程中需要的卷积核;

第二运算单元,用于接收控制器单元发出的控制信号,依据所述控制信号对输入数据以及卷积核执行卷积操作得到输出标量。

10.根据权利要求9所述的装置,其特征在于,所述第二运算单元包括:向量乘单元和累加单元;

所述向量乘单元,用于执行卷积运算中的向量乘运算;

所述累加单元,用于执行卷积运算中的累加运算。

11.根据权利要求7或9所述的装置,其特征在于,

所述数据依赖关系判定单元,具体用于判断未执行的控制信号的第一数据与正在执行过程中的控制信号的第二数据之间是否存在依赖关系,如果不存在依赖关系,允许该未执行的控制信号立即执行,如果存在依赖关系;在与未执行的控制信号存在依赖关系的所有控制信号全部执行完成后,允许该未执行的控制信号执行。

12.一种执行卷积神经网络正向运算的方法,其特征在于,所述方法应用于卷积神经网络正向运算装置,所述装置包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及从运算模块,所述方法包括如下步骤:数据访问单元执行外部地址空间与所述装置之间的数据或指令读写操作;指令存储单元存储所述数据访问单元读取的指令;

控制器单元从所述指令存储单元中读取指令,将指令译成控制其他模块行为的控制信号,所述其他模块包括:数据访问单元、主运算模块和所述从运算模块;

主运算模块将输入数据通过互连模块发送给从运算模块;所述从运算模块,将输入数据与该从运算模块对应的卷积核做卷积运算得到标量数据;所述互连模块依据从运算模块的标量数据合并得到包含N个元素的中间向量,将中间向量发送给主运算模块;

主运算模块依据中间向量得到中间结果,并对所述中间结果执行后续运算。

13.根据权利要求12所述的方法,其特征在于,所述从运算模块为多个,所述互连模块依据从运算模块的标量数据得到中间向量,所述主运算模块依据中间向量得到中间结果具体包括:所述互连模块将多个从运算模块的标量数据合并成中间向量;所述主运算模块将所有中间向量拼接得到中间结果。

14.根据权利要求13所述的方法,其特征在于,所述对所述中间结果执行后续运算具体包括:所述主运算模块将所述中间结果与偏置数据相加得到偏置结果,将该偏置结果执行激活操作。

15.根据权利要求14所述的方法,其特征在于,所述激活操作的激活函数为sigmoid,tanh,relu,softmax中的任一个或线性函数。

16.根据权利要求13所述的方法,其中,所述互连模块为以下任一种结构:树状结构、环状结构、网格状结构、分级互连、总线结构。

17.根据权利要求16所述的方法,其特征在于,所述互连模块为树状结构,所述树状结构为二叉树通路;所述二叉树通路包括:多个节点;所述方法具体包括:每个节点将上游的数据同样地发给下游的两个节点,以及将下游的两个节点返回的数据进行合并后返回给上游的节点。

18.根据权利要求13所述的方法,其中,主运算模块包括:第一存储单元、第一运算单元和第一数据依赖关系判定单元,所述方法具体包括:第一存储单元缓存主运算模块在计算过程中用到的输入数据和输出数据;第一运算单元完成主运算模块的各种运算功能;

所述第一数据依赖关系判定单元从第一存储单元读取输入数据,并将所述输入数据发送给互连模块;以及接收互连模块的中间向量,将中间向量发送到第一运算单元。

19.根据权利要求18所述的方法,其特征在于,所述第一运算单元包括:向量加法单元和激活运算单元;所述方法具体包括:所述向量加法单元将偏置数据与所述中间结果对位相加得到偏置结果;

所述激活运算单元将所述偏置结果执行激活函数操作。

20.根据权利要求13所述的方法,其中,每个从运算模块包括:第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元,所述方法具体包括:第二数据依赖关系判定单元对第二存储单元和第三存储单元的执行读写操作;第二存储单元缓存输入数据以及该从运算模块计算得到的输出标量;第三存储单元缓存该从运算模块在计算过程中需要的卷积核;

第二运算单元接收控制器单元发出的控制信号,依据所述控制信号对输入数据以及卷积核执行卷积操作得到输出标量。

21.根据权利要求20所述的方法,其特征在于,所述第二运算单元包括:向量乘单元和累加单元;所述方法具体包括:所述向量乘单元执行卷积运算中的向量乘运算;所述累加单元执行卷积运算中的累加运算。

22.根据权利要求18或20所述的方法,其特征在于,所述方法还包括:所述数据依赖关系判定单元判断未执行的控制信号的第一数据与正在执行过程中的控制信号的第二数据之间是否存在依赖关系,如果不存在依赖关系,允许该未执行的控制信号立即执行,如果存在依赖关系;在与未执行的控制信号存在依赖关系的所有控制信号全部执行完成后,允许该未执行的控制信号执行。

说明书 :

一种用于执行卷积神经网络正向运算的装置和方法

技术领域

[0001] 本发明总体上涉及人工神经网络,具体地涉及一种用于执行卷积神经网络正向运算的装置和方法。

背景技术

[0002] 卷积神经网络是近年来广泛应用于模式识别、图像处理等领域的一种高效识别算法,它具有结构简单、训练参数少和适应性强、平移、旋转、缩放等特点。由于CNN/DNN的特征检测层通过训练数据进行学习,所以在使用CNN/DNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。
[0003] 在已有的计算机领域应用中,与卷积运算相关的应用十分普遍。本发明专注于卷积神经网络,目前可以执行此种运算的主流装置如下:
[0004] 在现有技术中,一种进行卷积神经网络运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行卷积神经网络运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行卷积神经网络运算时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈。
[0005] 在另一种现有技术中,使用图形处理器(GPU)来进行向量计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行卷积神经网络运算。然而,上述方案中,GPU片上缓存太小,在进行大规模卷积神经网络运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。

发明内容

[0006] (一)要解决的技术问题
[0007] 本发明的目的在于,提供一种支持卷积神经网络的装置,解决现有技术中存在的受限于片间通讯、片上缓存不够等问题。
[0008] (二)技术方案
[0009] 本发明的一个方面提供了一种用于执行卷积神经网络正向运算的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:
[0010] 指令存储单元通过数据访问单元读入指令并存储读入的指令;
[0011] 控制器单元从指令存储单元中读取指令,将指令译成控制其他模块行为的控制信号,所述其他模块包括数据访问单元、主运算模块和所述多个从运算模块;
[0012] 数据访问单元执行外部地址空间与所述装置之间的数据或指令读写操作;
[0013] 从运算模块用于实现卷积神经网络算法中的输入数据和卷积核的卷积运算;
[0014] 互连模块用于所述主运算模块和所述从运算模块之间的数据传输,在神经网络全连接层正向运算开始之前,主运算模块通过互连模块将输入数据输送到每一个从运算模块,在从运算模块的计算过程结束后,互连模块逐级将各从运算模块的输出标量拼成中间向量,输送回主运算模块;
[0015] 主运算模块将所有输入数据的中间向量拼接成中间结果,并对所述中间结果执行后续运算。
[0016] 本发明的另一方面提供了一种使用上述装置执行单层人工神经网络卷积层正向运算的方法。
[0017] 本发明的另一方面提供了一种使用上述装置执行多层人工神经网络卷积层正向运算的方法。
[0018] (三)有益效果
[0019] 本发明提供的卷积神经网络运算装置及配套指令,将参与计算的输入数据和卷积核暂存在高速暂存存储器上(Scratchpad Memory)。在仅发送同一条指令的情况下,卷积神经网络运算单元中可以更加灵活有效地支持不同宽度的数据,并可以解决数据存储中的相关性问题,从而提升了包含大量卷积神经网络计算任务的执行性能,本发明采用的指令具有精简的格式,使得指令集使用方便、支持的向量长度灵活。
[0020] 本发明可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。

附图说明

[0021] 图1是卷积神经网络算法的示意流程图。
[0022] 图2是根据本发明实施例的支持卷积神经网络正向运算的装置的指令示意图。
[0023] 图3示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置的整体结构的示例框图。
[0024] 图4示意性示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中H树模块(互连模块一种实现方式)的结构。
[0025] 图5示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中主运算模块结构的示例框图。
[0026] 图6示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中从运算模块结构的示例框图。
[0027] 图7示出了根据本发明实施例的单层卷积神经网络正向运算过程的示例框图。

具体实施方式

[0028] 本发明提供一种卷积神经网络计算装置及配套指令集,包括存储单元、寄存器单元和卷积神经网络运算单元,存储单元中存储有输入输出数据和卷积核,寄存器单元中存储有输入输出数据和卷积核存储的地址,卷积神经网络运算单元根据卷积神经网络运算指令在寄存器单元中获取数据地址,然后,根据该数据地址在存储单元中获取相应的输入数据和卷积核,接着,根据获取的输入数据和卷积核进行卷积神经网络运算,得到卷积神经网络运算结果。本发明将参与计算的输入数据和卷积核暂存在外部存储空间(例如,高速暂存存储器)上,使得卷积神经网络运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量卷积神经网络计算任务的执行性能。
[0029] 图1为卷积神经网络算法示意图,如图1所示,卷积神经网络包括输出数据及激活函数,输入数据层,和卷积核。
[0030] 首先,其每一次的计算过程,首先需要依据卷积窗口,选取出输入数据层中对应的输入数据xi,然后将输入数据和卷积核进行加和运算。其输出数据的计算过程为s=s(∑wxi+b),即将卷积核w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出数据s。其中,卷积核和输入数据的乘法是向量乘法。
[0031] 卷积窗口依据卷积核在X轴上的大小kx和在Y轴上的大小ky,在X轴尺寸为W和Y轴尺寸为H的输入数据上,从最开始选取出和卷积核同样大小的输入数据,然后依据卷积窗口的平移位矢Sx和Sy,以此先作水平平移,然后再做垂直平移,将全部输入数据做遍历。
[0032] 图2是根据本发明实施例的指令集的格式示意图,如图2所示,卷积神经网络运算指令包括至少1个操作码和至少1个操作域,其中,操作码用于指示该卷积神经网络运算指令的功能,卷积神经网络运算单元通过识别该操作码可进行卷积神经网络运算,操作域用于指示该卷积神经网络运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,包括输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型。
[0033] 指令集包含有不同功能的卷积神经网络COMPUTE指令以及CONFIG指令、IO指令、NOP指令、JUMP指令和MOVE指令。在一种实施例中,COMPUTE指令包括:
[0034] 卷积神经网络sigmoid指令,根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做sigmoid激活;
[0035] 卷积神经网络TanH指令,根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做TanH激活;
[0036] 卷积神经网络ReLU指令,根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做ReLU激活;以及
[0037] 卷积神经网络group指令,根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做卷积操作,然后将输出结果做激活。
[0038] COMPUTE指令也可以包括其他的运算指令,进行非线性激活和线性激活操作。
[0039] CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数。
[0040] IO指令实现从外部存储空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间。
[0041] NOP指令负责清空当前装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
[0042] JUMP指令负责控制将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
[0043] MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
[0044] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0045] 图3是本发明实施例提供的卷积神经网络正向运算装置的结构示意图。如图3所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
[0046] 指令存储单元1通过数据访问单元3读入指令并存储读入的指令。
[0047] 控制器单元2从指令存储单元1中读取指令,将指令译成控制其他模块行为的控制信号并发送给其他模块如数据访问单元3、主运算模块5和从运算模块6等。
[0048] 数据访问单元3能够访问外部地址空间,直接向装置内部的各个存储单元读写数据,完成数据的加载和存储。
[0049] 互连模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓扑(如树状结构、环状结构、网格状结构、分级互连,总线结构等)。
[0050] 图4示意性示出了互连模块4的一种实施方式:H树模块。互连模块4构成主运算模块5和多个从运算模块6之间的数据通路,是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在卷积神经网络开始计算阶段,主运算模块5内的神经元数据通过互连模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,当从运算模块的计算过程完成后,每个从运算模块输出的神经元的值会在互连模块中逐级拼成一个完整的由神经元组成的向量。举例说明,假设装置中共有N个从运算模块,则输入数据xi被发送到N个从运算模块,每个从运算模块将输入数据xi与该从运算模块相应的卷积核做卷积运算,得到一标量数据,各从运算模块的标量数据被互连模块4合并成一个含有N个元素的中间向量。假设卷积窗口总共遍历得到A*B个(X方向为A个,Y方向为B个,X、Y为三维正交坐标系的坐标轴)输入数据xi,则对A*B个xi执行上述卷积操作,得到的所有向量在主运算模块中合并得到A*B*N的三维中间结果。
[0051] 图5示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中主运算模块5的结构的示例框图。如图5所示,主运算模块5包括第一运算单元51、第一数据依赖关系判定单元52和第一存储单元53。
[0052] 其中,第一运算单元51包括向量加法单元511以及激活单元512。第一运算单元51接收来自控制器单元的控制信号,完成主运算模块5的各种运算功能,向量加法单元511用于实现卷积神经网络正向计算中的加偏置操作,该部件将偏置数据与所述中间结果对位相加得到偏置结果,激活运算单元512对偏置结果执行激活函数操作。所述偏置数据可以是从外部地址空间读入的,也可以是存储在本地的。
[0053] 第一数据依赖关系判定单元52是第一运算单元51读写第一存储单元53的端口,保证第一存储单元53中数据的读写一致性。同时,第一数据依赖关系判定单元52也负责将从第一存储单元53读取的数据通过互连模块4发送给从运算模块,而从运算模块6的输出数据通过互连模块4直接发送给第一运算单元51。控制器单元2输出的指令发送给计算单元51和第一数据依赖关系判定单元52,来控制其行为。
[0054] 存储单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据。
[0055] 图6示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中从运算模块6的结构的示例框图。如图4所示,每个从运算模块6包括第二运算单元61、数据依赖关系判定单元62、第二存储单元63和第三存储单元64。
[0056] 第二运算单元61接收控制器单元2发出的控制信号并进行卷积运算。第二运算单元包括向量乘单元611和累加单元612,分别负责卷积运算中的向量乘运算和累加运算。
[0057] 第二数据依赖关系判定单元62负责计算过程中对第二存储单元63的读写操作。第二数据依赖关系判定单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的控制信号都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
[0058] 第二存储单元63缓存该从运算模块6的输入数据和输出标量数据。
[0059] 第三存储单元64缓存该从运算模块6在计算过程中需要的卷积核数据。
[0060] 图7是本发明实施例提供的卷积神经网络运算装置执行卷积神经网络的流程图,如图7所示,执行卷积神经网络指令的过程包括:
[0061] 在步骤S1,在指令存储单元1的首地址处预先存入一条IO指令。
[0062] 在步骤S2,运算开始,控制器单元2从指令存储单元1的首地址读取该条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取相应的所有卷积神经网络运算指令,并将其缓存在指令存储单元1中。
[0063] 在步骤S3,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入数据、用于作快速的激活函数运算的插值表、用于配置运算器件参数的常数表、偏置数据等)至主运算模块5的第一存储单元53。
[0064] 在步骤S4,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取从运算模块6需要的卷积核数据。
[0065] 在步骤S5,控制器单元2接着从指令存储单元读入下一条CONFIG指令,根据译出的控制信号,装置配置该层神经网络计算需要的各种常数。例如,第一运算单元51、第二运算单元61根据控制信号里的参数配置单元内部寄存器的值,所述参数包括例如激活函数需要的数据。
[0066] 在步骤S6,控制器单元2接着从指令存储单元读入下一条COMPUTE指令,根据译出的控制信号,主运算模块5首先通过互连模块4将卷积窗口内的输入数据发给各从运算模块6,保存至从运算模块6的第二存储单元63,之后,再依据指令移动卷积窗口。
[0067] 在步骤S7,根据COMPUTE指令译出的控制信号,从运算模块6的运算单元61从第三存储单元64读取卷积核,从第二存储单元63读取输入数据,完成输入数据和卷积核的卷积运算,将中间结果通过互连模块4返回。
[0068] 在步骤S8,在互连模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间向量。
[0069] 在步骤S9,主运算模块5得到互连模块4返回的中间向量,卷积窗口遍历所有输入数据,主运算模块将所有返回向量拼接成中间结果,根据COMPUTE指令译出的控制信号,从第一存储单元53读取偏置数据,与中间结果通过向量加单元511相加得到偏置结果,然后激活单元512对偏置结果做激活,并将最后的输出数据写回至第一存储单元53中。
[0070] 在步骤S10,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3将第一存储单元53中的输出数据存至外部地址空间指定地址,运算结束。
[0071] 对于多层神经网络卷积层,其实现过程与单层神经网络卷积层类似,当上一层卷积神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输出数据地址作为本层的输入数据地址。同样地,指令中的卷积核和偏置数据地址也会变更至本层对应的地址。
[0072] 通过采用用于执行卷积神经网络正向运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层卷积神经网络正向运算的支持。
[0073] 通过采用针对多层卷积神经网络正向运算的专用片上缓存,充分挖掘了输入神经元和卷积核数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层卷积神经网络正向运算性能瓶颈的问题。
[0074] 前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
[0075] 在前述的说明书中,参考其特定示例性实施例描述了本发明的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本发明的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。