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

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

Info

Publication number
CN109086877B
CN109086877B CN201811148189.3A CN201811148189A CN109086877B CN 109086877 B CN109086877 B CN 109086877B CN 201811148189 A CN201811148189 A CN 201811148189A CN 109086877 B CN109086877 B CN 109086877B
Authority
CN
China
Prior art keywords
data
unit
module
operation module
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811148189.3A
Other languages
English (en)
Other versions
CN109086877A (zh
Inventor
陈天石
韩栋
陈云霁
刘少礼
郭崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201811148189.3A priority Critical patent/CN109086877B/zh
Publication of CN109086877A publication Critical patent/CN109086877A/zh
Application granted granted Critical
Publication of CN109086877B publication Critical patent/CN109086877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Abstract

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

Description

一种用于执行卷积神经网络正向运算的装置和方法
技术领域
本发明总体上涉及人工神经网络,具体地涉及一种用于执行卷积神经网络正向运算的装置和方法。
背景技术
卷积神经网络是近年来广泛应用于模式识别、图像处理等领域的一种高效识别算法,它具有结构简单、训练参数少和适应性强、平移、旋转、缩放等特点。由于CNN/DNN的特征检测层通过训练数据进行学习,所以在使用CNN/DNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。
在已有的计算机领域应用中,与卷积运算相关的应用十分普遍。本发明专注于卷积神经网络,目前可以执行此种运算的主流装置如下:
在现有技术中,一种进行卷积神经网络运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行卷积神经网络运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行卷积神经网络运算时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈。
在另一种现有技术中,使用图形处理器(GPU)来进行向量计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行卷积神经网络运算。然而,上述方案中,GPU片上缓存太小,在进行大规模卷积神经网络运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
发明内容
(一)要解决的技术问题
本发明的目的在于,提供一种支持卷积神经网络的装置,解决现有技术中存在的受限于片间通讯、片上缓存不够等问题。
(二)技术方案
本发明的一个方面提供了一种用于执行卷积神经网络正向运算的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:
指令存储单元通过数据访问单元读入指令并存储读入的指令;
控制器单元从指令存储单元中读取指令,将指令译成控制其他模块行为的控制信号,所述其他模块包括数据访问单元、主运算模块和所述多个从运算模块;
数据访问单元执行外部地址空间与所述装置之间的数据或指令读写操作;
从运算模块用于实现卷积神经网络算法中的输入数据和卷积核的卷积运算;
互连模块用于所述主运算模块和所述从运算模块之间的数据传输,在神经网络全连接层正向运算开始之前,主运算模块通过互连模块将输入数据输送到每一个从运算模块,在从运算模块的计算过程结束后,互连模块逐级将各从运算模块的输出标量拼成中间向量,输送回主运算模块;
主运算模块将所有输入数据的中间向量拼接成中间结果,并对所述中间结果执行后续运算。
本发明的另一方面提供了一种使用上述装置执行单层人工神经网络卷积层正向运算的方法。
本发明的另一方面提供了一种使用上述装置执行多层人工神经网络卷积层正向运算的方法。
(三)有益效果
本发明提供的卷积神经网络运算装置及配套指令,将参与计算的输入数据和卷积核暂存在高速暂存存储器上(Scratchpad Memory)。在仅发送同一条指令的情况下,卷积神经网络运算单元中可以更加灵活有效地支持不同宽度的数据,并可以解决数据存储中的相关性问题,从而提升了包含大量卷积神经网络计算任务的执行性能,本发明采用的指令具有精简的格式,使得指令集使用方便、支持的向量长度灵活。
本发明可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是卷积神经网络算法的示意流程图。
图2是根据本发明实施例的支持卷积神经网络正向运算的装置的指令示意图。
图3示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置的整体结构的示例框图。
图4示意性示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中H树模块(互连模块一种实现方式)的结构。
图5示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中主运算模块结构的示例框图。
图6示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中从运算模块结构的示例框图。
图7示出了根据本发明实施例的单层卷积神经网络正向运算过程的示例框图。
具体实施方式
本发明提供一种卷积神经网络计算装置及配套指令集,包括存储单元、寄存器单元和卷积神经网络运算单元,存储单元中存储有输入输出数据和卷积核,寄存器单元中存储有输入输出数据和卷积核存储的地址,卷积神经网络运算单元根据卷积神经网络运算指令在寄存器单元中获取数据地址,然后,根据该数据地址在存储单元中获取相应的输入数据和卷积核,接着,根据获取的输入数据和卷积核进行卷积神经网络运算,得到卷积神经网络运算结果。本发明将参与计算的输入数据和卷积核暂存在外部存储空间(例如,高速暂存存储器)上,使得卷积神经网络运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量卷积神经网络计算任务的执行性能。
图1为卷积神经网络算法示意图,如图1所示,卷积神经网络包括输出数据及激活函数,输入数据层,和卷积核。
首先,其每一次的计算过程,首先需要依据卷积窗口,选取出输入数据层中对应的输入数据xi,然后将输入数据和卷积核进行加和运算。其输出数据的计算过程为s=s(∑wxi+b),即将卷积核w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出数据s。其中,卷积核和输入数据的乘法是向量乘法。
卷积窗口依据卷积核在X轴上的大小kx和在Y轴上的大小ky,在X轴尺寸为W和Y轴尺寸为H的输入数据上,从最开始选取出和卷积核同样大小的输入数据,然后依据卷积窗口的平移位矢Sx和Sy,以此先作水平平移,然后再做垂直平移,将全部输入数据做遍历。
图2是根据本发明实施例的指令集的格式示意图,如图2所示,卷积神经网络运算指令包括至少1个操作码和至少1个操作域,其中,操作码用于指示该卷积神经网络运算指令的功能,卷积神经网络运算单元通过识别该操作码可进行卷积神经网络运算,操作域用于指示该卷积神经网络运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,包括输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型。
指令集包含有不同功能的卷积神经网络COMPUTE指令以及CONFIG指令、IO指令、NOP指令、JUMP指令和MOVE指令。在一种实施例中,COMPUTE指令包括:
卷积神经网络sigmoid指令,根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做sigmoid激活;
卷积神经网络TanH指令,根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做TanH激活;
卷积神经网络ReLU指令,根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做ReLU激活;以及
卷积神经网络group指令,根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做卷积操作,然后将输出结果做激活。
COMPUTE指令也可以包括其他的运算指令,进行非线性激活和线性激活操作。
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数。
IO指令实现从外部存储空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间。
NOP指令负责清空当前装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图3是本发明实施例提供的卷积神经网络正向运算装置的结构示意图。如图3所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
指令存储单元1通过数据访问单元3读入指令并存储读入的指令。
控制器单元2从指令存储单元1中读取指令,将指令译成控制其他模块行为的控制信号并发送给其他模块如数据访问单元3、主运算模块5和从运算模块6等。
数据访问单元3能够访问外部地址空间,直接向装置内部的各个存储单元读写数据,完成数据的加载和存储。
互连模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓扑(如树状结构、环状结构、网格状结构、分级互连,总线结构等)。
图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的三维中间结果。
图5示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中主运算模块5的结构的示例框图。如图5所示,主运算模块5包括第一运算单元51、第一数据依赖关系判定单元52和第一存储单元53。
其中,第一运算单元51包括向量加法单元511以及激活单元512。第一运算单元51接收来自控制器单元的控制信号,完成主运算模块5的各种运算功能,向量加法单元511用于实现卷积神经网络正向计算中的加偏置操作,该部件将偏置数据与所述中间结果对位相加得到偏置结果,激活运算单元512对偏置结果执行激活函数操作。所述偏置数据可以是从外部地址空间读入的,也可以是存储在本地的。
第一数据依赖关系判定单元52是第一运算单元51读写第一存储单元53的端口,保证第一存储单元53中数据的读写一致性。同时,第一数据依赖关系判定单元52也负责将从第一存储单元53读取的数据通过互连模块4发送给从运算模块,而从运算模块6的输出数据通过互连模块4直接发送给第一运算单元51。控制器单元2输出的指令发送给计算单元51和第一数据依赖关系判定单元52,来控制其行为。
存储单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据。
图6示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中从运算模块6的结构的示例框图。如图4所示,每个从运算模块6包括第二运算单元61、数据依赖关系判定单元62、第二存储单元63和第三存储单元64。
第二运算单元61接收控制器单元2发出的控制信号并进行卷积运算。第二运算单元包括向量乘单元611和累加单元612,分别负责卷积运算中的向量乘运算和累加运算。
第二数据依赖关系判定单元62负责计算过程中对第二存储单元63的读写操作。第二数据依赖关系判定单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的控制信号都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
第二存储单元63缓存该从运算模块6的输入数据和输出标量数据。
第三存储单元64缓存该从运算模块6在计算过程中需要的卷积核数据。
图7是本发明实施例提供的卷积神经网络运算装置执行卷积神经网络的流程图,如图7所示,执行卷积神经网络指令的过程包括:
在步骤S1,在指令存储单元1的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制器单元2从指令存储单元1的首地址读取该条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取相应的所有卷积神经网络运算指令,并将其缓存在指令存储单元1中。
在步骤S3,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入数据、用于作快速的激活函数运算的插值表、用于配置运算器件参数的常数表、偏置数据等)至主运算模块5的第一存储单元53。
在步骤S4,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取从运算模块6需要的卷积核数据。
在步骤S5,控制器单元2接着从指令存储单元读入下一条CONFIG指令,根据译出的控制信号,装置配置该层神经网络计算需要的各种常数。例如,第一运算单元51、第二运算单元61根据控制信号里的参数配置单元内部寄存器的值,所述参数包括例如激活函数需要的数据。
在步骤S6,控制器单元2接着从指令存储单元读入下一条COMPUTE指令,根据译出的控制信号,主运算模块5首先通过互连模块4将卷积窗口内的输入数据发给各从运算模块6,保存至从运算模块6的第二存储单元63,之后,再依据指令移动卷积窗口。
在步骤S7,根据COMPUTE指令译出的控制信号,从运算模块6的运算单元61从第三存储单元64读取卷积核,从第二存储单元63读取输入数据,完成输入数据和卷积核的卷积运算,将中间结果通过互连模块4返回。
在步骤S8,在互连模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间向量。
在步骤S9,主运算模块5得到互连模块4返回的中间向量,卷积窗口遍历所有输入数据,主运算模块将所有返回向量拼接成中间结果,根据COMPUTE指令译出的控制信号,从第一存储单元53读取偏置数据,与中间结果通过向量加单元511相加得到偏置结果,然后激活单元512对偏置结果做激活,并将最后的输出数据写回至第一存储单元53中。
在步骤S10,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3将第一存储单元53中的输出数据存至外部地址空间指定地址,运算结束。
对于多层神经网络卷积层,其实现过程与单层神经网络卷积层类似,当上一层卷积神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输出数据地址作为本层的输入数据地址。同样地,指令中的卷积核和偏置数据地址也会变更至本层对应的地址。
通过采用用于执行卷积神经网络正向运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层卷积神经网络正向运算的支持。
通过采用针对多层卷积神经网络正向运算的专用片上缓存,充分挖掘了输入神经元和卷积核数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层卷积神经网络正向运算性能瓶颈的问题。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
在前述的说明书中,参考其特定示例性实施例描述了本发明的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本发明的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。

Claims (22)

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所述的方法,其特征在于,所述方法还包括:
所述数据依赖关系判定单元判断未执行的控制信号的第一数据与正在执行过程中的控制信号的第二数据之间是否存在依赖关系,如果不存在依赖关系,允许该未执行的控制信号立即执行,如果存在依赖关系;在与未执行的控制信号存在依赖关系的所有控制信号全部执行完成后,允许该未执行的控制信号执行。
CN201811148189.3A 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法 Active CN109086877B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811148189.3A CN109086877B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610282534.7A CN107329734B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法
CN201811148189.3A CN109086877B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201610282534.7A Division CN107329734B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法

Publications (2)

Publication Number Publication Date
CN109086877A CN109086877A (zh) 2018-12-25
CN109086877B true CN109086877B (zh) 2020-05-08

Family

ID=60161791

Family Applications (4)

Application Number Title Priority Date Filing Date
CN201811148189.3A Active CN109086877B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法
CN201710903509.0A Active CN107704267B (zh) 2016-04-29 2016-04-29 一种卷积神经网络运算指令及其方法
CN202010616975.2A Active CN111860813B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法
CN201610282534.7A Active CN107329734B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法

Family Applications After (3)

Application Number Title Priority Date Filing Date
CN201710903509.0A Active CN107704267B (zh) 2016-04-29 2016-04-29 一种卷积神经网络运算指令及其方法
CN202010616975.2A Active CN111860813B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法
CN201610282534.7A Active CN107329734B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法

Country Status (5)

Country Link
US (2) US10592801B2 (zh)
EP (1) EP3451157B1 (zh)
KR (1) KR102402111B1 (zh)
CN (4) CN109086877B (zh)
WO (1) WO2017185386A1 (zh)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109086877B (zh) 2016-04-29 2020-05-08 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络正向运算的装置和方法
US10908962B1 (en) * 2017-06-12 2021-02-02 Apple Inc. System and method to share GPU resources
CN109784125A (zh) * 2017-11-10 2019-05-21 福州瑞芯微电子股份有限公司 深度学习网络处理装置、方法及图像处理单元
US11468332B2 (en) * 2017-11-13 2022-10-11 Raytheon Company Deep neural network processor with interleaved backpropagation
CN109961136B (zh) * 2017-12-14 2020-05-19 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN111105024B (zh) * 2017-12-14 2024-03-01 中科寒武纪科技股份有限公司 神经网络处理器板卡及相关产品
WO2019114842A1 (zh) 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN109978157B (zh) * 2017-12-28 2020-06-02 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109978158B (zh) * 2017-12-28 2020-05-12 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109978155A (zh) * 2017-12-28 2019-07-05 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN111338776B (zh) * 2017-12-28 2023-11-28 中科寒武纪科技股份有限公司 调度方法及相关装置
CN109074335A (zh) * 2017-12-29 2018-12-21 深圳市大疆创新科技有限公司 数据处理方法、设备、dma控制器及计算机可读存储介质
CN109993292B (zh) 2017-12-30 2020-08-04 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
WO2019129302A1 (zh) 2017-12-30 2019-07-04 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN109993289B (zh) 2017-12-30 2021-09-21 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109993290B (zh) 2017-12-30 2021-08-06 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN110163349B (zh) * 2018-02-12 2021-03-23 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110147249B (zh) * 2018-02-12 2021-02-09 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110197263B (zh) * 2018-02-27 2020-10-09 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
WO2019190185A1 (ko) * 2018-03-30 2019-10-03 삼성에스디에스 주식회사 인공지능을 이용한 시계열 데이터 학습 및 분석 방법
CN108470211B (zh) * 2018-04-09 2022-07-12 郑州云海信息技术有限公司 一种卷积计算的实现方法、设备和计算机存储介质
US11941501B2 (en) * 2018-05-30 2024-03-26 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US11423284B2 (en) * 2018-09-07 2022-08-23 Black Sesame Technologies, Inc Subgraph tile fusion in a convolutional neural network
US10331983B1 (en) * 2018-09-11 2019-06-25 Gyrfalcon Technology Inc. Artificial intelligence inference computing device
CN109146065B (zh) * 2018-09-30 2021-06-08 中国人民解放军战略支援部队信息工程大学 二维数据的卷积运算方法及装置
CN110119807B (zh) * 2018-10-12 2021-11-09 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111026440B (zh) * 2018-10-09 2022-03-29 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110096310B (zh) * 2018-11-14 2021-09-03 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111047027A (zh) * 2018-10-12 2020-04-21 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111062483A (zh) * 2018-10-16 2020-04-24 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110096283A (zh) * 2018-10-12 2019-08-06 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111124497B (zh) * 2018-10-11 2022-03-29 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111079911B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111079915B (zh) * 2018-10-19 2021-01-26 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
US11354888B2 (en) * 2018-11-16 2022-06-07 GM Global Technology Operations LLC Method and apparatus for a neural network
CN111260045B (zh) * 2018-11-30 2022-12-02 上海寒武纪信息科技有限公司 译码器和原子指令解析方法
CN109558564B (zh) * 2018-11-30 2022-03-11 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
TWI696961B (zh) 2018-12-12 2020-06-21 財團法人工業技術研究院 深度神經網路硬體加速器與其操作方法
CN109726800B (zh) * 2018-12-29 2019-12-24 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN109736910A (zh) * 2019-01-14 2019-05-10 珠海格力电器股份有限公司 蒸汽处理方法和烹饪器具
US11526753B2 (en) * 2019-02-12 2022-12-13 Irida Labs S.A. System and a method to achieve time-aware approximated inference
CN109857460B (zh) * 2019-02-20 2021-09-21 南京华捷艾米软件科技有限公司 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及系统
CN111626399B (zh) * 2019-02-27 2023-07-28 中国科学院半导体研究所 卷积神经网络计算装置、数据计算方法
CN113396425B (zh) * 2019-03-25 2023-08-22 杭州飞步科技有限公司 加速方法、装置和片上系统
CN111831328A (zh) * 2019-04-18 2020-10-27 华为技术有限公司 数据处理的方法及装置
CN111966306A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
US20210089873A1 (en) * 2019-09-24 2021-03-25 Alibaba Group Holding Limited Apparatus and system for execution of neural network
CN111047036B (zh) * 2019-12-09 2023-11-14 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
CN110851787B (zh) * 2020-01-14 2020-05-08 中科寒武纪科技股份有限公司 合并指令处理方法、装置、电子设备和存储介质
US11568021B2 (en) 2020-02-21 2023-01-31 Alibaba Group Holding Limited Vector-vector multiplication techniques for processing systems
CN112348179B (zh) * 2020-11-26 2023-04-07 湃方科技(天津)有限责任公司 一种高效的卷积神经网络运算指令集架构构建方法及装置、服务器
CN112597079B (zh) * 2020-12-22 2023-10-17 上海安路信息科技股份有限公司 卷积神经网络加速器的数据回写系统
CN112799599B (zh) * 2021-02-08 2022-07-15 清华大学 一种数据存储方法、计算核、芯片和电子设备
CN112596684B (zh) 2021-03-08 2021-06-22 成都启英泰伦科技有限公司 一种用于语音深度神经网络运算的数据存储方法
CN114492781A (zh) * 2022-04-02 2022-05-13 苏州浪潮智能科技有限公司 一种硬件加速器及数据处理方法、系统、设备、介质
CN115393174B (zh) * 2022-10-27 2023-03-24 之江实验室 一种粗粒度的图像神经网络加速器指令集架构方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5204938A (en) * 1989-05-30 1993-04-20 Loral Aerospace Corp. Method of implementing a neural network on a digital computer
CN103150596A (zh) * 2013-02-22 2013-06-12 百度在线网络技术(北京)有限公司 一种反向传播神经网络dnn的训练系统
CN104809426A (zh) * 2014-01-27 2015-07-29 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
CN105184366A (zh) * 2015-09-15 2015-12-23 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583964A (en) * 1994-05-02 1996-12-10 Motorola, Inc. Computer utilizing neural network and method of using same
US6606614B1 (en) * 2000-08-24 2003-08-12 Silicon Recognition, Inc. Neural network integrated circuit with fewer pins
CN101299185B (zh) * 2003-08-18 2010-10-06 上海海尔集成电路有限公司 一种基于cisc结构的微处理器结构
CN1331092C (zh) * 2004-05-17 2007-08-08 中国科学院半导体研究所 模式识别专用神经网络计算机系统
US7747070B2 (en) * 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
JP5171118B2 (ja) * 2007-06-13 2013-03-27 キヤノン株式会社 演算処理装置及びその制御方法
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
CN102637157B (zh) * 2011-02-15 2014-12-03 郑磊 一种片上数字模板系统dtsoc
KR101382703B1 (ko) * 2012-08-28 2014-04-08 인하대학교 산학협력단 증강현실 기술과 대용량 데이터의 통합을 위한 상호작용 방법 및 장치
US9153230B2 (en) * 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator
US9811775B2 (en) * 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
CN103199806B (zh) * 2013-02-04 2015-12-02 中国科学院电子学研究所 对传感器信号处理的可编程的模拟单元
CN104346622A (zh) * 2013-07-31 2015-02-11 富士通株式会社 卷积神经网络分类器及其分类方法和训练方法
CN104063719B (zh) * 2014-06-27 2018-01-26 深圳市赛为智能股份有限公司 基于深度卷积网络的行人检测方法及装置
FR3025344B1 (fr) * 2014-08-28 2017-11-24 Commissariat Energie Atomique Reseau de neurones convolutionnels
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
CN109086877B (zh) 2016-04-29 2020-05-08 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络正向运算的装置和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5204938A (en) * 1989-05-30 1993-04-20 Loral Aerospace Corp. Method of implementing a neural network on a digital computer
CN103150596A (zh) * 2013-02-22 2013-06-12 百度在线网络技术(北京)有限公司 一种反向传播神经网络dnn的训练系统
CN104809426A (zh) * 2014-01-27 2015-07-29 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
CN105184366A (zh) * 2015-09-15 2015-12-23 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DianNao: A Small-Footprint High-Throughput Accelerator for Ubiquitous Machine-Learning;Tianshi Chen等;《In International Conference on Architectural Support for Programming Languages and Operating System》;20140305;第7-10页,图9 *

Also Published As

Publication number Publication date
WO2017185386A1 (zh) 2017-11-02
CN107329734A (zh) 2017-11-07
CN109086877A (zh) 2018-12-25
CN107704267A (zh) 2018-02-16
CN111860813B (zh) 2024-01-16
US20200110983A1 (en) 2020-04-09
CN111860813A (zh) 2020-10-30
KR102402111B1 (ko) 2022-05-25
CN107329734B (zh) 2020-08-07
EP3451157B1 (en) 2023-09-27
US10592801B2 (en) 2020-03-17
US20190073583A1 (en) 2019-03-07
CN107704267B (zh) 2020-05-08
EP3451157A1 (en) 2019-03-06
EP3451157A4 (en) 2020-01-15
KR20190003610A (ko) 2019-01-09

Similar Documents

Publication Publication Date Title
CN109086877B (zh) 一种用于执行卷积神经网络正向运算的装置和方法
CN109375951B (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
CN107832843B (zh) 一种信息处理方法及相关产品
CN111860812B (zh) 一种用于执行卷积神经网络训练的装置和方法
CN109358900B (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
CN109376861B (zh) 一种用于执行全连接层神经网络训练的装置和方法
CN109284825B (zh) 用于执行lstm运算的装置和方法
CN107886166B (zh) 一种执行人工神经网络运算的装置和方法
WO2017185336A1 (zh) 用于执行pooling运算的装置和方法
CN112070202B (zh) 一种融合图的生成方法、生成装置和计算机可读存储介质
EP3451240A1 (en) Apparatus and method for performing auto-learning operation of artificial neural network
CN111860772B (zh) 一种用于执行人工神经网络pooling运算的装置和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant