CN111860811A - 一种用于执行人工神经网络全连接层正向运算的装置和方法 - Google Patents

一种用于执行人工神经网络全连接层正向运算的装置和方法 Download PDF

Info

Publication number
CN111860811A
CN111860811A CN202010614867.1A CN202010614867A CN111860811A CN 111860811 A CN111860811 A CN 111860811A CN 202010614867 A CN202010614867 A CN 202010614867A CN 111860811 A CN111860811 A CN 111860811A
Authority
CN
China
Prior art keywords
module
unit
storage unit
operation module
data
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.)
Granted
Application number
CN202010614867.1A
Other languages
English (en)
Other versions
CN111860811B (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 CN202010614867.1A priority Critical patent/CN111860811B/zh
Publication of CN111860811A publication Critical patent/CN111860811A/zh
Application granted granted Critical
Publication of CN111860811B publication Critical patent/CN111860811B/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/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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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/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/08Learning methods
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Abstract

本公开提供了一种用于执行人工神经网络全连接层正向运算的装置,包括控制器单元、互连模块、主运算模块、以及多个从运算模块。使用该装置可以实现一层或多层人工神经网络全连接层的正向运算。对于每一层来说,首先对输入神经元进行加权求和计算出本层的中间结果向量,然后对该中间结果向量加偏置并激活得到输出神经元。将输出神经元作为下一层的输入神经元。

Description

一种用于执行人工神经网络全连接层正向运算的装置和方法
技术领域
本公开总体上涉及人工神经网络,具体地涉及一种用于执行人工神经网络全连接层正向运算的装置和方法。
背景技术
多层人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。人工神经网络涉及到多种算法,其中全连接层作为人工神经网络中的一种重要算法,被广泛的应用在各种人工神经网络模型中。
一种支持多层人工神经网络全连接层的正向运算的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的多层人工神经网络运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把多层人工神经网络正向运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销
另一种支持多层人工神经网络正向运算的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对多层人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。
公开内容
本公开的一个方面提供了一种用于执行人工神经网络全连接层正向运算的装置,所述装置用于执行人工神经网络全连接层正向运算的指令;所述装置包括控制器单元、互连模块、主运算模块、以及多个从运算模块,其中:
控制器单元用于将指令译码成控制信号,以控制互连模块、主运算模块以及多个从运算模块的行为;
主运算模块用于实现人工神经网络全连接层算法中的函数激活运算;
从运算模块用于实现人工神经网络全连接层算法中的输入神经元和权值的乘法和加法运算;
互连模块用于连接主运算模块和从运算模块,以用于所述主运算模块和所述从运算模块之间的数据传输。
本公开的另一个方面提供了一种使用上述装置执行人工神经网络全连接层正向运算的方法。
本公开还提供了一种电子装置,包括以上任一所述的装置。
该装置可以应用于以下(包括但不限于)场景中:数据处理装置、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示出了根据本公开实施例的用于执行人工神经网络全连接层正向运算的装置的整体结构的示例框图。
图2示意性示出了根据本公开实施例的用于执行人工神经网络全连接层正向运算的装置中H树模块(互连模块的一种实施方式)的结构。
图3示出了根据本公开实施例的用于执行人工神经网络全连接层正向运算的装置中主运算模块结构的示例框图。
图4示出了根据本公开实施例的用于执行人工神经网络全连接层正向运算的装置中从运算模块结构的示例框图。
图5示出了根据本公开实施例的神经网络全连接层正向运算过程的示例框图。
图6示出了根据一个实施例的单层人工神经网络全连接层正向运算的一种实施方法。
图7示出了根据本公开实施例的单层人工神经网络全连接层运算的流程图。
在所有附图中,相同的装置、部件、单元等使用相同的附图标记来表示。
具体实施方式
根据结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。
根据本公开实施例的多层人工神经网络全连接层正向运算,包括两层或者两层以上的多个神经元。对于每一层来说,输入神经元向量首先和权值向量进行点积运算,结果经过加偏置,以及激活函数运算得到输出神经元。其中,加偏置和激活操作都为可选操作,激活函数可以是sigmoid,tanh,relu,softmax中的任一个。
图1示出了根据本公开实施例的用于执行人工神经网络全连接层正向运算的装置的整体结构的示例框图。如图1所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路或忆阻器等)实现。
指令存储单元1通过数据访问单元3读入指令并存储读入的指令。指令存储单元1可以通过各种不同存储器件(SRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。
控制器单元2从指令存储单元1中读取指令,将指令译成控制其他模块行为的控制信号,所述其他模块例如包括数据访问单元3、主运算模块5和从运算模块6等。
数据访问单元3能够访问外部地址空间,直接向装置内部的各个存储单元写数据或指令,或从装置内部的各个存储单元向外部地址空间写数据。
互连模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓扑(如树状结构、环状结构、网格状结构、分级互连、总线结构等)。
图2示意性示出了互连模块4的一种实施方式:H树模块。H树模块4构成主运算模块5和多个从运算模块6之间的数据通路,并且是具有H树型的结构。H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在人工神经网络全连接层开始计算阶段,主运算模块5内的神经元数据通过H树模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,每个从运算模块输出的神经元的值会在H树模块中逐级拼成一个完整的由神经元组成的向量,作为中间结果向量。举例说明,假设装置中共有N个从运算模块,则中间结果向量按N分段,每段有N个元素,第i个从运算模块计算每段中的第i个元素。N个元素经过H树模块拼成长度为N的向量并返回给主运算模块。所以如果网络只有N个输出神经元,则每个从运算模块只需输出单个神经元的值,若网络有m*N个输出神经元,则每个从运算模块需输出m个神经元值。
图3示出了根据本公开实施例的用于执行人工神经网络全连接层正向运算的装置中主运算模块5的结构的示例框图。如图3所示,主运算模块5包括第一运算单元51、第一数据依赖关系判定单元52和第一存储单元53。
其中,第一运算单元51包括向量加法单元511以及激活单元512。第一运算单元51接收来自控制器单元的控制信号,完成主运算模块5的各种运算功能,向量加法单元511用于实现人工神经网络全连接层正向计算中的加偏置操作,该部件将偏置向量与通过所述互连模块4从从运算模块6传送回来的中间结果向量相加,输出为向量相加后的值,激活运算单元512用于实现人工神经网络全连接层激活函数操作。该部件的输入为通过所述互连模块4从从运算模块6传送回来的中间结果,或向量加法单元511的输出结果,输出为进行函数激活后的神经元向量。所述偏置向量可以是从外部地址空间读入的,也可以是存储在本地的。
第一数据依赖关系判定单元52是第一运算单元51读写第一存储单元53的端口,保证第一存储单元53中数据的读写一致性。同时,第一数据依赖关系判定单元52也负责将从第一存储单元53读取的数据通过互连模块4发送给从运算模块,而从运算模块6的输出数据通过互连模块4直接发送给第一运算单元51。控制器单元2输出的指令发送给第一运算单元51和第一数据依赖关系判定单元52,来控制其行为。
第一存储单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据。
图4示出了根据本公开实施例的用于执行人工神经网络全连接层正向运算的装置中从运算模块6的结构的示例框图。如图4所示,每个从运算模块6包括第二运算单元61、第二数据依赖关系判定单元62、第二存储单元63和第三存储单元64。
第二运算单元61接收控制器单元2发出的控制信号并进行点积运算,包括向量乘单元611,以及累加运算单元612。其中,向量乘单元611用于实现神经元向量和权值向量的对位乘法,累加运算单元612用于实现将向量的每一项累加到一起的操作。
第二数据依赖关系判定单元62负责计算过程中对第二存储单元63的读写操作。第二数据依赖关系判定单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的控制信号都会被存入第二数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
第二存储单元63缓存该从运算模块6的输入神经元向量数据和输出神经元值数据。
第三存储单元64缓存该从运算模块6在计算过程中需要的权值数据。根据本公开的实施例,每一个从运算模块6可以只存储全部输入神经元与部分输出神经元之间的权值。输出神经元按照从运算模块的个数N进行分段,每段的第n个输出神经元对应的权值存放在第n个从运算模块中。
从运算模块6实现人工神经网络全连接层正向运算过程中点积运算的并行性。人工神经网络全连接层的正向运算过程为y=f(wx+b),其中权值矩阵w和输入神经元向量in的乘法可以划分为不相关的并行计算子任务,in是列向量,每个从运算模块6可以只计算in列向量与权值矩阵w的对应行的点积,得到输出是中间结果向量的一维分量,这些一维分量在互连模块4中逐级拼接得到中间结果向量。所以计算过程变成了并行的计算部分和的过程和后面的拼接的过程。每个从运算模块6计算出输出神经元值,所有的输出神经元值在互连模块4中拼成得到中间结果向量。每个从运算模块6只需要计算出中间结果向量y中与本模块对应的输出神经元值即可。
根据本公开实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令完成每层人工神经网络的算术逻辑计算;
IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令负责清空当前装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部执行完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
图5示出了根据本公开实施例的人工神经网络全连接层正向运算过程的示例框图。在不同从运算模块6中,输入神经元向量分别与该从运算模块6的权值向量进行点积运算,得到对应的输出神经元值,所有这些输出神经元值组成中间结果向量,该中间结果向量经过激活运算、或通过加偏置向量以及激活运算,得到该层神经网络的最终输出神经元向量,公式描述为out=f(w*in+b),其中out输出神经元向量、in是输入神经元向量、b是偏置向量,w是权值矩阵,f是激活函数(acti ve)。每个从运算模块6的权值向量是权值矩阵中与该从运算模块6相对应的行向量。互连模块将输入神经元向量[in0,…,inN]发送给所有的从运算模块,暂存在神经元缓存单元中。对于第i个从运算模块,计算其相应的权值向量[w_i0,…,w_iN]与输入神经元向量的点积。从运算模块输出的结果经过互连模块拼成完整的中间结果向量并返回给主运算模块,在主运算模块中进行激活运算,或进行加偏置和激活运算,得到最后的输出神经元向量[out0,out1,out2,…,outN]。
图6示出根据一个实施例的单层人工神经网络全连接层正向运算的一种实施方法。该流程图描述利用本公开的装置和指令集实现图1所示的一种单层神经网络全连接层正向运算的过程。
步骤S1.1,将初始指令存放到指令存储单元1;
步骤S1.2,从指令存储单元1中读取一条指令;
步骤S1.3,对上述指令进行译码;
步骤S1.4,根据译码得到的控制信号,进行相应操作;
步骤S1.5,将操作结果写回到相应存储中。
在步骤S1.1中,可以存入初始化IO指令,用于搬运后续指令。
在步骤S1.2中,可读取的指令包括但不限于CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等。
在步骤S1.3中,根据指令的操作类型(CONFIG,COMPUTE,IO,NOP,JUMP,MOVE等)译码得到相应模块的控制信号。对于CONFIG指令,译码得到配置其余模块的配置信息。对于COMPUTE指令,译码得到主从运算模块的控制信号。对于IO指令,译码得到数据访问模块的控制信号。对于NOP指令,不产生实际控制信号,只用于清空当前装置内部所有控制信号存储队列中的控制信号,保证NOP指令之前的所有指令全部执行完毕。对于JUMP指令,得到跳转指令流的控制信号。对于MOVE指令,得到在装置内部搬运数据的控制信号。
在步骤S1.4中,上述模块2-6根据控制信号执行相应操作。以执行神经网络全连接层正向的COMPUTE指令为例,互连模块将输入神经元向量[in0,…,inN]发送给所有的从运算模块,暂存在第二存储单元63中。对于第i个从运算模块,计算其相应的权值向量[w_i0,…,w_iN]与输入神经元向量的点积。从运算模块输出的结果经过互连模块拼成完整的输出向量并返回给主运算模块,在主运算模块中进行激活运算或进行加偏置和激活运算,得到最后的输出神经元向量[out0,out1,out2,…,outN]。
在步骤S1.5中,各个模块将操作结果写回到相应存储单元中。以执行神经网络全连接层正向的运算为例,主运算模块得到的输出神经元向量被写回到第一存储单元53。
图7示出单层人工神经网络全连接层正向运算的另一种更详细的实施方法。
在步骤S2.1,在指令存储单元1处预先存入一条IO指令。
在步骤S2.2,运算开始,控制器单元2从指令存储单元1读取该条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取相应的所有人工神经网络全连接层运算指令,并将其存储在指令存储单元1中。
在步骤S2.3,控制器单元2接着从指令存储单元1读入下一条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入神经元向量、插值表、常数表和偏置等)至主运算模块5的第一存储单元53。
在步骤S2.4,控制器单元2接着从指令存储单元1读入下一条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取从运算模块6需要的权值矩阵数据。
在步骤S2.5,控制器单元2接着从指令存储单元读入下一条CONFIG指令,根据译出的控制信号,配置该层神经网络计算需要的各种常数。例如,第一运算单元51、61根据控制信号里的参数配置单元内部寄存器的值,所述参数包括例如激活函数需要的数据等。步骤S2.5为可选步骤,在一些情况下可以跳过步骤S2.5直接执行下面的步骤。
在步骤S2.6,控制器单元2接着从指令存储单元读入下一条COMPUTE指令,根据译出的控制信号,主运算模块5首先通过互连模块4将输入神经元向量发给各从运算模块6,保存至从运算模块6的第二存储单元63。
在步骤S2.7,根据COMPUTE指令译出的控制信号,从运算模块6的第二运算单元61从第三存储单元64读取权值向量(权值矩阵中对应于该从运算模块6的行向量),从第二存储单元63读取输入神经元向量,完成权值向量和输入神经元向量的点积运算,将中间结果通过互连模块返回。
在步骤S2.8,在互连模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间结果向量。
在步骤S2.9,主运算模块5得到互连模块4的返回值,根据COMPUTE指令译出的控制信号,从第一存储单元53读取偏置向量,与互连模块4返回的向量通过向量加单元512相加,然后激活单元511对相加结果做激活,并将最后的输出神经元向量写回至第一存储单元53中。
在步骤S2.10,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3将存储单元53中的输出神经元向量存至外部地址空间指定地址,运算结束。
对于多层神经网络全连接层,其实现过程与单层神经网络全连接层类似,当上一层人工神经网络全连接层执行完毕后,下一层的运算指令会将主运算模块中存储的上一层的输出神经元地址作为本层的输入神经元地址。同样地,指令中的权值地址和偏置地址也会变更至本层对应的地址。
通过采用用于执行人工神经网络全连接层正向运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络全连接层正向运算的支持。
通过采用针对多层人工神经网络全连接层正向运算的专用片上存储,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络全连接层正向运算性能瓶颈的问题。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
在前述的说明书中,参考其特定示例性实施例描述了本公开的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本公开的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。

Claims (18)

1.一种用于执行人工神经网络全连接层正向运算的装置,其特征在于,所述装置用于执行人工神经网络全连接层正向运算的指令,所述装置包括控制器单元、互连模块、主运算模块、以及多个从运算模块,其中:
控制器单元用于将指令译码成控制信号,以控制互连模块、主运算模块以及多个从运算模块的行为;
主运算模块用于实现人工神经网络全连接层算法中的函数激活运算;
从运算模块用于实现人工神经网络全连接层算法中的输入神经元和权值的乘法和加法运算;
互连模块用于连接主运算模块和从运算模块,以用于所述主运算模块和所述从运算模块之间的数据传输。
2.根据权利要求1所述的装置,其特征在于,所述互联模块还用于在神经网络全连接层正向运算开始之前,将主运算模块中的输入神经元传输到每一个从运算模块;以及在从运算模块的计算过程结束后,将各从运算模块的输出神经元拼成中间结果向量,传输回主运算模块,用于后续计算。
3.根据权利要求2所述的装置,其中所述后续计算包括对中间结果向量加偏置,然后执行激活操作。
4.根据权利要求1所述的装置,其特征在于,所述主运算模块包括第一存储单元、第一运算单元和第一数据依赖关系判定单元,其中:
第一存储单元用于缓存主运算模块在计算过程中用到的输入数据和输出数据;
第一数据依赖关系判定单元是第一运算单元读写第一存储单元的端口,以确保对第一存储单元的数据读写不存在一致性冲突。
5.根据权利要求1所述的装置,其特征在于,所述每个从运算模块包括第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元,其中:
第二运算单元用于接收控制器单元发出的控制信号并进行算数逻辑运算;
第二数据依赖关系判定单元用于计算过程中对第二存储单元和第三存储单元的读写操作,以确保对第二存储单元和第三存储单元的读写不存在一致性冲突;
第二存储单元缓存输入神经元以及该从运算模块计算得到的输出神经元;以及
第三存储单元缓存该从运算模块在计算过程中需要的权值。
6.根据权利要求1-5中任一项所述的装置,其中,所述多个从运算模块,用于根据相同的输入神经元和各自的权值,并行地计算出各自的输出神经元,每个从运算模块的权值是权值矩阵中与该从运算模块相对应的行向量。
7.根据权利要求4或5所述的装置,其中,第一数据依赖关系判定单元或第二数据依赖关系判定单元通过以下方式确保读写不存在一致性冲突:判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射。
8.根据权利要求1所述的装置,其特征在于,还包括数据访问单元和指令存储单元,其中,
所述数据访问单元用于执行外部地址空间与所述装置之间的数据或指令读写操作;
所述指令存储单元通过数据访问单元读入指令并存储读入的指令;
所述控制器单元用于从指令存储单元中读取指令,将指令译码成控制互连模块、主运算模块、多个从运算模块以及数据访问单元行为的控制信号。
9.根据权利要求1所述的装置,其特征在于,所述指令包括以下至少一种:
CONFIG指令,在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令,完成每层人工神经网络的算术逻辑计算;
IO指令,实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部地址空间;
NOP指令,用于清空当前装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部执行完毕;
JUMP指令,用于控制将要从指令存储单元读取的下一条指令地址的跳转,实现控制流的跳转;
MOVE指令,用于将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
10.根据权利要求1所述的装置,其中,所述互连模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路,互连模块为以下至少一种结构:树状结构、环状结构、网格状结构、分级互连和总线结构。
11.一种应用权利要求1-10任一所述的装置执行人工神经网络全连接层正向运算的方法,其特征在于包括:
利用控制器单元将指令译码成控制信号,以控制互连模块、主运算模块和多个从运算模块的行为;
利用主运算模块实现人工神经网络全连接层算法中的函数激活运算;
利用从运算模块实现人工神经网络全连接层算法中的输入神经元和权值的乘法和加法运算;
利用互连模块连接主运算模块和从运算模块,以用于所述主运算模块和所述从运算模块之间的数据传输。
12.根据权利要求11所述的方法,其特征在于,还包括:
在神经网络全连接层正向运算开始之前,利用所述互连模块将主运算模块中的输入神经元传输到每一个从运算模块;以及在从运算模块的计算过程结束后,利用所述互连模块将各从运算模块的输出神经元拼成中间结果向量,传输回主运算模块,用于后续计算。
13.根据权利要求12所述的方法,其特征在于,所述后续计算包括对中间结果向量加偏置,然后执行激活操作。
14.根据权利要求11所述的方法,其特征在于,还包括:
利用第一存储单元缓存主运算模块在计算过程中用到的输入数据和输出数据;
利用数据依赖关系判定单元作为第一运算单元读写第一存储单元的端口,以确保对第一存储单元的数据读写不存在一致性冲突。
15.根据权利要求11所述的方法,其特征在于,还包括:
利用第二运算单元接收控制器单元发出的控制信号并进行算数逻辑运算;
第二数据依赖关系判定单元用于计算过程中对第二存储单元和第三存储单元的读写操作,以确保对第二存储单元和第三存储单元的读写不存在一致性冲突;
利用第二存储单元缓存输入神经元以及该从运算模块计算得到的输出神经元;以及
利用第三存储单元缓存该从运算模块在计算过程中需要的权值。
16.根据权利要求11所述的方法,其特征在于,还包括:
利用多个从运算模块,根据相同的输入神经元和各自的权值,并行地计算出各自的输出神经元,每个从运算模块的权值是权值矩阵中与该从运算模块相对应的行向量。
17.根据权利要求14或15所述的方法,其特征在于,还包括:
第一数据依赖关系判定单元或第二数据依赖关系判定单元通过以下方式确保读写不存在一致性冲突:判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射。
18.一种电子装置,包括权利要求1-10任一所述的装置。
CN202010614867.1A 2016-04-27 2016-04-27 一种用于执行人工神经网络全连接层正向运算的装置和方法 Active CN111860811B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010614867.1A CN111860811B (zh) 2016-04-27 2016-04-27 一种用于执行人工神经网络全连接层正向运算的装置和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610270004.0A CN107315571B (zh) 2016-04-27 2016-04-27 一种用于执行全连接层神经网络正向运算的装置和方法
CN202010614867.1A CN111860811B (zh) 2016-04-27 2016-04-27 一种用于执行人工神经网络全连接层正向运算的装置和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201610270004.0A Division CN107315571B (zh) 2016-04-27 2016-04-27 一种用于执行全连接层神经网络正向运算的装置和方法

Publications (2)

Publication Number Publication Date
CN111860811A true CN111860811A (zh) 2020-10-30
CN111860811B CN111860811B (zh) 2024-01-16

Family

ID=60160564

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201610270004.0A Active CN107315571B (zh) 2016-04-27 2016-04-27 一种用于执行全连接层神经网络正向运算的装置和方法
CN201811221557.2A Active CN109375951B (zh) 2016-04-27 2016-04-27 一种用于执行全连接层神经网络正向运算的装置和方法
CN202010614867.1A Active CN111860811B (zh) 2016-04-27 2016-04-27 一种用于执行人工神经网络全连接层正向运算的装置和方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201610270004.0A Active CN107315571B (zh) 2016-04-27 2016-04-27 一种用于执行全连接层神经网络正向运算的装置和方法
CN201811221557.2A Active CN109375951B (zh) 2016-04-27 2016-04-27 一种用于执行全连接层神经网络正向运算的装置和方法

Country Status (5)

Country Link
US (1) US11373084B2 (zh)
EP (1) EP3451236A4 (zh)
KR (1) KR102486030B1 (zh)
CN (3) CN107315571B (zh)
WO (1) WO2017185387A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315571B (zh) 2016-04-27 2020-07-31 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络正向运算的装置和方法
CN109961136B (zh) * 2017-12-14 2020-05-19 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN107957975B (zh) * 2017-12-15 2021-01-05 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN109976809B (zh) * 2017-12-28 2020-08-25 中科寒武纪科技股份有限公司 调度方法及相关装置
CN111338776B (zh) * 2017-12-28 2023-11-28 中科寒武纪科技股份有限公司 调度方法及相关装置
CN109993289B (zh) * 2017-12-30 2021-09-21 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN110097181B (zh) * 2018-01-30 2023-07-11 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置和方法
CN110147249B (zh) * 2018-02-12 2021-02-09 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110163360B (zh) * 2018-02-13 2021-06-25 上海寒武纪信息科技有限公司 一种计算装置及方法
CN110264229A (zh) * 2018-03-12 2019-09-20 优估(上海)信息科技有限公司 基于全连接神经网络的二手车定价方法,装置,及系统
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US11068627B2 (en) 2018-08-09 2021-07-20 Zoox, Inc. Procedural world generation
US11423284B2 (en) * 2018-09-07 2022-08-23 Black Sesame Technologies, Inc Subgraph tile fusion in a convolutional neural network
CN111078286B (zh) * 2018-10-19 2023-09-01 上海寒武纪信息科技有限公司 数据通信方法、计算系统和存储介质
CN111079925B (zh) * 2018-10-19 2021-04-09 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN109711539B (zh) * 2018-12-17 2020-05-29 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN110020720B (zh) * 2019-04-01 2021-05-11 中科寒武纪科技股份有限公司 算子拼接方法及装置
CN110032450B (zh) * 2019-04-17 2021-04-20 中山大学 一种基于固态盘扩展内存的大规模深度学习方法及系统
CN111831328A (zh) * 2019-04-18 2020-10-27 华为技术有限公司 数据处理的方法及装置
WO2020240525A1 (en) * 2019-05-31 2020-12-03 Georgetown University Assessing diseases by analyzing gait measurements
CN110309911B (zh) * 2019-07-05 2021-01-05 安徽寒武纪信息科技有限公司 神经网络模型验证方法、装置、计算机设备和存储介质
CN112070220B (zh) * 2020-08-06 2023-01-17 北京大学 一种基于非线性器件的原位自激活神经网络电路及神经网络运算方法
CN113791996B (zh) * 2021-09-10 2024-02-06 中科寒武纪科技股份有限公司 集成电路装置、电子设备、板卡和计算方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524175A (en) * 1992-10-29 1996-06-04 Hitachi, Ltd. Neuro-computer system for executing a plurality of controlling algorithms
JP2000322400A (ja) * 1999-05-10 2000-11-24 Fuji Xerox Co Ltd 情報処理装置
US20100312736A1 (en) * 2009-06-05 2010-12-09 The Regents Of The University Of California Critical Branching Neural Computation Apparatus and Methods
CN102947818A (zh) * 2010-05-19 2013-02-27 加利福尼亚大学董事会 神经处理单元
CN105184366A (zh) * 2015-09-15 2015-12-23 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN107301453A (zh) * 2016-04-15 2017-10-27 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络正向运算装置和方法
CN109242094A (zh) * 2016-01-20 2019-01-18 北京中科寒武纪科技有限公司 用于执行人工神经网络正向运算的装置和方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5065339A (en) * 1990-05-22 1991-11-12 International Business Machines Corporation Orthogonal row-column neural processor
CN101299185B (zh) * 2003-08-18 2010-10-06 上海海尔集成电路有限公司 一种基于cisc结构的微处理器结构
FR2884008A1 (fr) * 2005-03-31 2006-10-06 France Telecom Systeme et procede de localisation de points d'interet dans une image d'objet mettant en oeuvre un reseau de neurones
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 キヤノン株式会社 演算処理装置及びその制御方法
US9015092B2 (en) * 2012-06-04 2015-04-21 Brain Corporation Dynamically reconfigurable stochastic learning apparatus and methods
US8918351B2 (en) * 2012-07-30 2014-12-23 International Business Machines Corporation Providing transposable access to a synapse array using column aggregation
US9147153B2 (en) * 2012-11-06 2015-09-29 Rockwell Automation Technologies, Inc. Empirical modeling with globally enforced general constraints
US9190053B2 (en) * 2013-03-25 2015-11-17 The Governing Council Of The Univeristy Of Toronto System and method for applying a convolutional neural network to speech recognition
CN103680496B (zh) * 2013-12-19 2016-08-10 百度在线网络技术(北京)有限公司 基于深层神经网络的声学模型训练方法、主机和系统
CN104077842B (zh) * 2014-07-02 2017-02-15 浙江大学 基于图像识别的自选餐厅自助付费装置及其使用方法
US10417525B2 (en) * 2014-09-22 2019-09-17 Samsung Electronics Co., Ltd. Object recognition with reduced neural network weight precision
US9411726B2 (en) * 2014-09-30 2016-08-09 Samsung Electronics Co., Ltd. Low power computation architecture
CN104376389B (zh) * 2014-12-10 2017-09-15 国电南京自动化股份有限公司 基于负载均衡的主从式微电网功率负荷预测系统及其方法
CN107315571B (zh) 2016-04-27 2020-07-31 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络正向运算的装置和方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524175A (en) * 1992-10-29 1996-06-04 Hitachi, Ltd. Neuro-computer system for executing a plurality of controlling algorithms
JP2000322400A (ja) * 1999-05-10 2000-11-24 Fuji Xerox Co Ltd 情報処理装置
US20100312736A1 (en) * 2009-06-05 2010-12-09 The Regents Of The University Of California Critical Branching Neural Computation Apparatus and Methods
CN102947818A (zh) * 2010-05-19 2013-02-27 加利福尼亚大学董事会 神经处理单元
CN105184366A (zh) * 2015-09-15 2015-12-23 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN109242094A (zh) * 2016-01-20 2019-01-18 北京中科寒武纪科技有限公司 用于执行人工神经网络正向运算的装置和方法
CN107301453A (zh) * 2016-04-15 2017-10-27 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络正向运算装置和方法

Also Published As

Publication number Publication date
CN109375951A (zh) 2019-02-22
CN109375951B (zh) 2020-10-09
US20190065934A1 (en) 2019-02-28
CN111860811B (zh) 2024-01-16
US11373084B2 (en) 2022-06-28
CN107315571B (zh) 2020-07-31
EP3451236A1 (en) 2019-03-06
EP3451236A4 (en) 2019-12-25
KR20190003611A (ko) 2019-01-09
WO2017185387A1 (zh) 2017-11-02
CN107315571A (zh) 2017-11-03
KR102486030B1 (ko) 2023-01-06

Similar Documents

Publication Publication Date Title
CN109375951B (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
CN111860813B (zh) 一种用于执行卷积神经网络正向运算的装置和方法
CN107832843B (zh) 一种信息处理方法及相关产品
CN107341541B (zh) 一种用于执行全连接层神经网络训练的装置和方法
CN111310904B (zh) 一种用于执行卷积神经网络训练的装置和方法
CN109358900B (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
CN109284825B (zh) 用于执行lstm运算的装置和方法
CN106991476B (zh) 用于执行人工神经网络正向运算的装置和方法
CN107316078B (zh) 用于执行人工神经网络自学习运算的装置和方法
CN107301454B (zh) 支持离散数据表示的人工神经网络反向训练装置和方法
CN107886166B (zh) 一种执行人工神经网络运算的装置和方法
CN111353588A (zh) 用于执行人工神经网络反向训练的装置和方法
CN107329733B (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
GR01 Patent grant
GR01 Patent grant