CN107688853B - 一种用于执行神经网络运算的装置及方法 - Google Patents

一种用于执行神经网络运算的装置及方法 Download PDF

Info

Publication number
CN107688853B
CN107688853B CN201610635286.XA CN201610635286A CN107688853B CN 107688853 B CN107688853 B CN 107688853B CN 201610635286 A CN201610635286 A CN 201610635286A CN 107688853 B CN107688853 B CN 107688853B
Authority
CN
China
Prior art keywords
neural network
network processing
data
unit
processing 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
CN201610635286.XA
Other languages
English (en)
Other versions
CN107688853A (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 CN202010074555.6A priority Critical patent/CN111310893B/zh
Priority to CN201610635286.XA priority patent/CN107688853B/zh
Priority to PCT/CN2017/095810 priority patent/WO2018024232A1/zh
Priority to EP17836414.7A priority patent/EP3496007B1/en
Priority to TW106126471A priority patent/TWI767925B/zh
Publication of CN107688853A publication Critical patent/CN107688853A/zh
Priority to US16/268,468 priority patent/US11120331B2/en
Application granted granted Critical
Publication of CN107688853B publication Critical patent/CN107688853B/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/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • 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

Abstract

本公开提供了一种用于执行神经网络运算的装置及方法,装置包括片上互联模块和与该片上互联模块通信连接的多个神经网络处理模块,神经网络处理模块能够通过片上互联模块从其它神经网络处理模块中读写数据。在多核多层人工神经网络运算中,要将每一层神经网络运算进行划分,进而由多个神经网络处理模块进行运算,得到各自的运算结果数据,多个神经网络处理单元还将各自的运算结果数据进行数据交换。

Description

一种用于执行神经网络运算的装置及方法
技术领域
本公开属于神经网络运算领域,尤其涉及一种用于执行神经网络运算的装置及方法。
背景技术
多层人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。人工神经网络涉及到多种算法,其中使用多核多层神经网络处理器来执行神经网络运算,被广泛的应用在各种人工神经网络模型中以及各种使用神经网络的场景中。
一种支持多核多层神经网络运算的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的多核多层人工神经网络运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把人工神经网络运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销
另一种支持多核多层人工神经网络运算的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。
发明内容
(一)要解决的技术问题
有鉴于此,本公开提供一种用于执行神经网络运算的装置及方法,能以低开销的方式实现一层或多层多核多层人工神经网络的运算,并且运算性能高效。
(二)技术方案
本公开提供一种用于执行神经网络运算的装置及方法,装置包括片上互联模块和与该片上互联模块通信连接的多个神经网络处理模块,神经网络处理模块能够通过片上互联模块从其它神经网络处理模块中读写数据。在多核多层人工神经网络运算中,要将每一层神经网络运算进行划分,进而由多个神经网络处理模块进行运算,得到各自的运算结果数据,多个神经网络处理单元还将各自的运算结果数据进行数据交换。例如每进行一层神经网络计算之后,每个神经网络处理模块只计算得到了部分输出数据,而在执行下一层神经网络运算时,每个神经网络处理模块还会需求来自于其他神经网络处理模块的数据,因此每个神经网络处理的需要将自己计算得到的运算结果数据发送给对应的神经网络处理模块,用以使之计算下一层的神经网络。
用于执行神经网络运算的装置中,神经网络处理模块能够通过片上互联模块从其它神经网络处理模块中读写数据,还可从本地读写数据。
进一步,神经网络处理模块包括神经网络处理单元和高速存储单元;神经网络处理单元用于读写数据,高速存储单元用于存储本地数据。
进一步,用于执行神经网络运算的装置还包括外部存储模块,神经网络处理模块还能够通过片上互联模块从外部存储模块中读写数据。
进一步,神经网络处理单元包括指令队列、高速缓存单元、IO读取单元和神经网络运算单元,其中:
进一步,指令队列存储有运算指令,IO读取单元根据运算指令从该神经网络处理单元的外部读取数据,并将读取的数据缓存至高速缓存单元中,神经网络运算单元根据该运算指令从高速缓存单元中读取所缓存的数据,并执行神经网络运算,得到运算结果数据;
进一步,神经网络处理单元还包括同步关系单元,指令队列还存储有数据送达指令,神经网络运算单元向其它神经网络运算单元发送数据后,所述神经网络运算单元所对应的同步关系单元执行数据送达指令,以向其它神经网络运算单元所对应的同步关系单元发送一数据送达信号。
进一步,指令队列还存储有数据依赖指令,所述神经网络运算单元收到其其它神经网络运算单元所发送的数据后,其对应的同步关系单元执行所述数据依赖指令以检测是否是收到数据送达信号,若是,则继续执行执行指令队列中的指令,否则阻塞指令队列。
进一步,指令队列还存储有数据同步指令,神经网络处理单元中的同步关系单元通过执行所述数据同步指令,以向其它神经网络处理单元中的同步关系单元发送一同步信号,以强制多个神经网络处理单元做同步操作。
进一步,片上互联模块包括一级互联模块和与该一级互联模块通信连接的多个二级互联模块,一级互联模块还与所述外部存储模块通信连接,所述多个二级互联模块与多个神经网络处理模块一一对应,其中,每个二级互联模块分别与相应神经网络处理模块中的神经网络处理单元和高速存储单元通信连接。
本公开还提供一种用于执行单层神经网络运算的方法,包括:
S1,多个神经网络处理模块中的每个神经网络处理模块直接从本地读取数据,和/或通过片上互联模块从其它神经网络处理模块中读取数据,其中,多个神经网络处理模块与该片上互联模块通信连接;
S2,每个神经网络处理模块根据读取的数据进行单层神经网络的部分运算,得到各自的运算结果数据;
S3,每个神经网络处理模块将各自的运算结果数据进行本地存储和/或通过片上互联模块将各自的运算结果数据写入至其他神经网络处理模块中。
进一步,步骤S3中,每个神经网络处理模块将各自的运算结果写入至其它神经网络处理模块中后,向其它特定的神经网络处理模块发送一数据送达信号。
本公开还提供一种用于执行多层神经网络运算的方法,对于每一层神经网络运算,执行上述步骤S1-S3,并将该层各神经网络处理模块得到的运算结果数据用于下一层神经网络运算。
(三)有益效果
本公开所提供的用于执行神经网络运算的装置及方法,具有以下优点:
1、由于采用多核神经网络处理模块,允许单层的神经网络将任务划分,在多个神经网络处理模块上执行,并且采用了专用指令,允许在执行多层神经网络的时候,可以在多个神经网络处理器之间相互传输计算得到的数据,故能实现多层多核的神经网络运算。
2、由于采用多核神经网络处理模块,解决了在执行多核多层神经网络处理运算的时候,单个处理器处理性能不足的问题,具有显著加速多核多层神经网络运算的效果。
3、由于采用了专用的数据指令,有效的解决了在执行多核多层神经网络时,其多个处理器之间需要交互大量数据的问题,具有显著加速多核多层神经网络运算的效果。
附图说明
图1是本公开提供的用于执行神经网络运算的装置的结构示意图。
图2是本公开中神经网络处理模块的结构示意图。
图3是本公开中外部存储模块的结构示意图。
图4是本公开中神经网络处理单元的结构示意图。
图5是本公开中片上互联模块的结构示意图。
图6是本公开执行一层全连接层运算实施例的流程图。
具体实施方式
本公开提供的用于执行人工神经网络运算的装置可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
图1是本公开提供的用于执行神经网络运算的装置的结构示意图,如图1所示,装置包括多个神经网络处理模块10及一个片上互联模块20,多个神经网络处理模块10与该片上互联模块20通信连接,其中:
神经网络处理模块10能够通过片上互联模块30从其它神经网络处理模块10中读写数据,还可从本地读写数据。当要执行神经网络运算时,每个神经网络处理模块10作为一个核执行相应的运算,其运算所需的数据可直接从本地直接获取,也可通过片上互联模块20与其他神经网络处理模块10通信,以从其他神经网络处理模块10处读取运算所需的数据。各个神经网络处理模块10读取运算所需的数据后,执行相应的运算,得到各自的运算结果数据,在单层神经网络运算中,各个神经网络处理模块10可将各自的运算结果数据汇总至一个神经网络处理模块10中进行累加,以得到最终结果数据。在多层神经网络运算中,当层各个神经网络处理模块10计算得到运算结果数据,可能在下一层作为运算所需的数据被其他神经网络处理模块10使用,这样在当层神经网络运算完毕后,各个神经网络处理模块10会进行数据交互,以准备进行下一层神经网络运算。
图2是本公开中神经网络处理模块的结构示意图,如图2所示,神经网络处理模块10包括神经网络处理单元11和高速存储单元12;神经网络处理模块10在进行神经网络运算时,神经网络处理单元11直接从与其对应的高速储存单元12中读取数据,和/或通过片上互联模块20从其它神经网络处理模块10中的神经网络处理单元11中读取数据,和/或通过片上互联模块20从其它神经网络处理模块10中的高速存储单元12中读取数据;每个神经网络处理模块10中的神经网络处理单元11根据读取的数据进行神经网络运算,得到各自的运算结果数据;在完成运算后,神经网络处理单元11将运算结果数据直接写入至与其对应的高速储存单元12中,和/或通过片上互联模块20将运算结果数据写入至其它神经网络处理模块10中的神经网络处理单元11中,和/或通过片上互联模块20将运算结果数据写入至其它神经网络处理模块10中的高速存储单元12中。总之,神经网络处理单元11可直接从其对应的高速储存单元获取数据,也可以通过片上互联模块20获取其它位置的数据,这样避免了反复向内存读取数据,降低了内存访问带宽。
如图3所示,本公开提供的用于执行神经网络运算的装置还包括外部存储模块30,其与片上互联模块20通信连接,神经网络处理模块10还能够通过片上互联模块从外部存储模块中读写数据,利用外部存储模块30,可以从外界向装置中导入新的数据,装置执行的最终执行结果数据也可以写入至外部存储模块30,以供外部导出。其中,外部存储模块30可以通过硬件来实现(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路或忆阻器等)。
图4是本公开中神经网络处理单元11的结构示意图,如图4所示,神经网络处理单元11包括指令队列111、神经网络运算单元112、IO读取单元113、高速缓存单元114和同步关系单元115。指令队列111存储有多种类型的指令,神经网络处理单元11根据不同的指令执行不同的操作。下表为各类指令的描述:
指令名称 操作码1 操作码2 操作码3 操作码4 操作码5 ……
ACK 0/1 0/1 0/1 0/1 0/1 ……
FENCE 0/1 0/1 0/1 0/1 0/1 ……
SYNC 0/1 0/1 0/1 0/1 0/1 ……
COMPUTE MLP addr1 size1 addr2 size2 ……
IO src dest size
指令包括指令名称以及多个操作码:
数据送达指令,指令名称为ACK,其中各个操作码分别表示是否向该神经网络处理单元11发送数据送达信号(ACK信号),神经网络处理单元11向其他神经网络处理单元11写入数据后,执行数据送达指令以发送数据送达信号给对应的神经网络处理单元11,以表明数据已经传输到位;
数据依赖指令,指令名称为FENCE,其中各个操作码表示是否检查来自该神经网络处理单元11的ACK信号;神经网络处理单元11执行数据依赖指令以检测其所有依赖的数据是否已经到达本神经网络处理单元。
数据同步指令,指令名称为SYNC,其中各个操作码表示该神经网络处理单元是否参与同步操作,神经网络处理单元11执行数据同步指令用以强制多个神经网络处理单元11做同步操作,即当多个神经网络都执行到当前指令后,这些神经网络处理单元才可以执行之后的指令;
运算指令,指令名称为COMPUTE,其中第一个操作码表示具体的计算任务,如MLP,CONV,POOL等,其余操作码用来表示输入输出数据的地址和大小,以及神经网络计算指令的配置信息。
输入输出指令,指令名称为IO,其中的操作码分别表示搬运数据的起始地址,结束地址以及数据大小的信息,神经网络处理单元11执行输入输出指令以与其余模块之间进行通信数据。
IO读取单元根据113根据指令队列111中的运算指令从该神经网络处理单元11的外部(如高速存储单元12、其他神经网络处理单元11等)读取数据,并将读取的数据缓存至高速缓存单元114中,神经网络运算单元112根据该运算指令从高速缓存单元114中读取所缓存的数据,并执行神经网络运算,得到相应的运算结果数据;
神经网络运算单元112将运算结果数据写入至高速缓存单元114中,当需要将运算结果数据发送中外部(其他神经网络处理单元11等)时,IO读取单元113从高速缓存单元114中读取运算结果数据,并将运算结果数据写入到该神经网络处理单元11的外部。
图5是本公开中片上互联模块的结构示意图,如图5所示,片上互联20模块包括一级互联模块21和与该一级互联模块通信连接的多个二级互联模块22,一级互联模块21还与外部存储模块30通信连接,多个二级互联模块22与多个神经网络处理模块10一一对应,其中,每个二级互联模块22分别与相应神经网络处理模块中的神经网络处理单元11和高速存储单元12通信连接。具体的,二级的互联模块22一个端口连接神经网络处理单元11,一个端口连接该神经网络处理单元对应的高速存储单元12,另一个端口连接一级互联模块21,一级互联模块21将多个二级互联模块22和外部存储模块30连接,用以保证这些模块之间的数据通路。这样,可以在保证各个神经网络处理单元11以及高速存储单元12和外部存储模块30之间相互通信,并且占用较小的面积开销。
采用本公开以上所描述的装置,可执行单层神经网络运算,包括:
S1,每个神经网络处理模块10根据其自身指令队列11中存储的计算指令,根据指令中操作码所指示的地址,直接从本地读取数据,和/或通过片上互联模块20从其它神经网络处理模块10中读取数据;
S2,每个神经网络处理模块10根据读取的数据进行单层神经网络的部分运算,得到各自的运算结果数据;
S3,每个神经网络处理模块10将各自的运算结果数据进行本地存储和/或通过片上互联模块20将各自的运算结果数据写入至其他神经网络处理模块10中。
对于多层神经网络运算,其实现过程与单层神经网络类似,当上一层人工神经网络执行完毕后,在下一层运算时,每个神经网络处理模块10根据新的运算指令从新的地址读取新的数据进行计算,并且依据新的指令在多核(即多个神经网络处理模块10)之间分配计算任务。对于每一层神经网络运算,执行上述步骤S1-S3,并将该层各神经网络处理模块10得到的运算结果数据用于下一层神经网络运算。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图6是本公开执行一层全连接层运算实施例的流程图,其执行过程如图6所示:
步骤1:依据运算指令COMPUTE,每个神经网络处理单元11从对应的高速存储单元12中读取数据,分别计算得到全连接层的部分运算结果数据。
在每个神经网络处理单元11中,指令队列111将运算指令COMPUTE发送至神经网络运算单元112和IO读取单元113,神经网络运算单元112根据运算指令COMPUTE中的指令名称,确定将要执行一层全连接层运算,具体的,IO读取单元113根据运算指令COMPUTE中的地址从其对应的高速存储单元12中读取运算所需数据,并将读取的数据存储于高速缓存单元114中,神经网络运算单元112从高速缓存单元114中读取相应的数据,然后根据读取的数据执行运算指令COMPUTE,以进行全连接层的部分运算,得到全连接层的部分运算结果数据作为输出数据。
步骤2:依据输入输出指令IO,每个神经网络处理单元11将自己计算的到的部分运算结果数据通过片上互联模块20发送给相应的神经网络处理单元11。由于每个神经网络处理单元11只计算出部分运算结果数据,因此其需要将该部分输出数据发送给相应的神经网络处理单元11进行加和运算。
具体的,步骤1中神经网络运算单元112将计算得到的部分运算结果数据存储于高速缓存单元114中,指令队列111将输入输出指令IO发送给IO读取单元113后,IO读取单元113执行输出指令IO,以将存储于高速缓存单元114中的部分运算结果数据读取,并发送至外部的相应的神经网络处理单元11。这里需要说明的是,每个神经网络处理单元11可能会将部分运算结果数据发送至一个对应的神经网络处理单元11中,也可能发送至多个对应的神经网络处理单元11中,也就是说,每个神经网络处理单元11也可能收到一个神经网络处理单元11发送的部分运算结果数据,也可能收到多个神经网络处理单元11发送的部分运算结果数据。
步骤3:每个神经网络处理单元11将自己计算的到的部分运算结果数据发送给相应的神经网络处理单元11后,需要执行数据送达指令ACK,以向对应的神经网络处理单元11发送数据送达信号。每个神经网络处理单元11需要向接受其发送数据的神经网络处理单元11发送数据送达信号,用以表明其数据依赖关系。
步骤4:依据数据依赖指令FENCE,每个神经网络处理单元11检测其发送数据送达信号是否到达相应的神经网络处理单元11,如果没有到达,则等待对应的数据送达信号到达相应的神经网络处理单元11。对于每个将要进行加和运算神经网络处理单元11,只有其收到所有其他神经网络处理单元11所发送的数据送达信号时,才表明其所需要的输入数据全部到达,从而执行加和运算。
步骤5:依据运算指令COMPUTE,每个的神经网络处理单元11汇集其他神经网络处理单元11的部分运算结果数据后,联合上自身运算所得的部分运算结果数据进行加和运算,得到最终的运算结果数据。
步骤6:依据输入输出指令IO,每个神经网络处理单元11将计算得到的最终的运算结果数据作为输出数据写入外部存储模块30中。在每个神经网络处理单元11中,将最终的运算结果数据写入外部存储模块30中的执行过程与步骤2类似,在此就不再赘述。
综上所述,本公开提供的装置和指令集,解决了CPU和GPU运算性能不足、前端译码开销大的问题,能有效支持多层人工神经网络运算,同时,针对多核多层人工神经网络运算采用专用片上存储,充分挖掘了神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络全连接层正向运算性能瓶颈的问题。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (20)

1.一种用于执行神经网络运算的装置,其中,包括片上互联模块和与该片上互联模块通信连接的多个神经网络处理模块,其中:
所述神经网络处理模块配置为通过所述片上互联模块从其它神经网络处理模块中读写数据;
所述神经网络处理模块包括神经网络处理单元,所述神经网络处理单元包括同步关系单元和神经网络运算单元,神经网络运算单元向其它神经网络运算单元发送数据后,所述神经网络运算单元所对应的同步关系单元用于执行数据送达指令,根据数据送达指令的多个操作码以向其它神经网络运算单元所对应的同步关系单元发送数据送达信号;其中,所述数据送达指令包括多个操作码,其中各个操作码分别表示是否向对应的神经网络处理单元发送数据送达信号。
2.根据权利要求1所述的用于执行神经网络运算的装置,其中,所述神经网络处理模块采用从本地读写数据。
3.根据权利要求2所述的用于执行神经网络运算的装置,其中,所述神经网络处理模块包括神经网络处理单元和高速存储单元;
所述神经网络处理单元用于读写数据,所述高速存储单元用于存储本地数据。
4.根据权利要求1-3任意一项所述的用于执行神经网络运算的装置,其中,还包括外部存储模块,所述神经网络处理模块还能够通过所述片上互联模块从所述外部存储模块中读写数据。
5.根据权利要求2所述的用于执行神经网络运算的装置,其中,所述神经网络处理单元还包括指令队列、高速缓存单元和IO读取单元,其中:
所述指令队列存储有运算指令,所述IO读取单元根据所述运算指令从该神经网络处理单元的外部读取数据,并将读取的数据缓存至所述高速缓存单元中,所述神经网络运算单元根据该运算指令从所述高速缓存单元中读取所缓存的数据,并执行神经网络运算,得到运算结果数据;
所述神经网络运算单元将所述运算结果数据写入至所述高速缓存单元中,所述IO读取单元从所述高速缓存单元中读取所述运算结果数据,并将所述运算结果数据写入到该神经网络处理单元的外部。
6.根据权利要求5所述的用于执行神经网络运算的装置,其中,所述指令队列还存储有数据送达指令。
7.根据权利要求6所述的用于执行神经网络运算的装置,其中,所述指令队列还存储有数据依赖指令,所述数据依赖指令包括多个操作码,其中各个操作码表示是否检查来自该神经网络处理单元的数据送达信号,所述神经网络运算单元收到其它神经网络运算单元所发送的数据后,其对应的同步关系单元执行所述数据依赖指令以检测是否是收到数据送达信号,若是,则继续执行执行指令队列中的指令,否则阻塞指令队列。
8.根据权利要求6所述的用于执行神经网络运算的装置,其中,所述指令队列还存储有数据同步指令,所述数据同步指令包括多个操作码,其中各个操作码表示该神经网络处理单元是否参与同步操作,神经网络处理单元中的同步关系单元通过执行所述数据同步指令,以向其它神经网络处理单元中的同步关系单元发送一同步信号,以强制多个神经网络处理单元做同步操作。
9.根据权利要求6所述的用于执行神经网络运算的装置,其中,所述指令队列还存储有运算指令,其中第一个操作码表示具体的计算任务,其余操作码用来表示输入输出数据的地址和大小,以及神经网络计算指令的配置信息。
10.根据权利要求6所述的用于执行神经网络运算的装置,其中,所述指令队列还存储有输入输出指令,其中的操作码分别表示搬运数据的起始地址,结束地址以及数据大小的信息,神经网络处理单元执行输入输出指令以与其余模块之间进行通信数据。
11.根据权利要求4所述的用于执行神经网络运算的装置,其中,所述片上互联模块包括一级互联模块和与该一级互联模块通信连接的多个二级互联模块,所述一级互联模块还与所述外部存储模块通信连接,所述多个二级互联模块与所述多个神经网络处理模块一一对应,其中,每个二级互联模块分别与相应神经网络处理模块中的神经网络处理单元和高速存储单元通信连接。
12.一种用于执行单层神经网络运算的方法,其中,包括:
多个神经网络处理模块中的每个神经网络处理模块直接从本地读取数据,和/或通过片上互联模块从其它神经网络处理模块中读取数据,其中,多个神经网络处理模块与该片上互联模块通信连接;
每个神经网络处理模块根据读取的数据进行单层神经网络的部分运算,得到各自的运算结果数据;
每个神经网络处理模块将各自的运算结果数据进行本地存储和/或通过所述片上互联模块将各自的运算结果数据写入至其他神经网络处理模块中;
所述神经网络处理模块包括神经网络处理单元,所述神经网络处理单元包括同步关系单元和神经网络运算单元,神经网络运算单元向其它神经网络运算单元发送数据后,所述神经网络运算单元所对应的同步关系单元用于执行数据送达指令,根据数据送达指令的多个操作码以向其它神经网络运算单元所对应的同步关系单元发送数据送达信号;其中,所述数据送达指令包括多个操作码,其中各个操作码分别表示是否向对应的神经网络处理单元发送数据送达信号。
13.根据权利要求12所述的用于执行单层神经网络运算的方法,其中,每个神经网络处理模块将各自的运算结果写入至其它神经网络处理模块中后,向其它特定的神经网络处理模块发送一数据送达信号。
14.根据权利要求12所述的用于执行单层神经网络运算的方法,包括:
依据运算指令,每个神经网络处理单元从对应的高速存储单元中读取数据,分别计算得到全连接层的部分运算结果数据。
15.根据权利要求14所述的用于执行单层神经网络运算的方法,还包括:依据输入输出指令,每个神经网络处理单元将自己计算的到的部分运算结果数据通过片上互联模块发送给相应的神经网络处理单元,将该部分输出数据发送给相应的神经网络处理单元进行加和运算。
16.根据权利要求15所述的用于执行单层神经网络运算的方法,每个神经网络处理单元将自己计算得到的部分运算结果数据发送给相应的神经网络处理单元后,需要执行数据送达指令,以向对应的神经网络处理单元发送数据送达信号,每个神经网络处理单元需要向接受其发送数据的神经网络处理单元发送数据送达信号,用以表明其数据依赖关系。
17.根据权利要求16所述的用于执行单层神经网络运算的方法,依据数据依赖指令,每个神经网络处理单元检测其发送数据送达信号是否到达相应的神经网络处理单元,如果没有到达,则等待对应的数据送达信号到达相应的神经网络处理单元;对于每个将要进行加和运算神经网络处理单元,只有其收到所有其他神经网络处理单元所发送的数据送达信号时,才表明其所需要的输入数据全部到达,从而执行加和运算。
18.根据权利要求17所述的用于执行单层神经网络运算的方法,依据运算指令COMPUTE,每个的神经网络处理单元汇集其他神经网络处理单元的部分运算结果数据后,联合上自身运算所得的部分运算结果数据进行加和运算,得到最终的运算结果数据。
19.根据权利要求18所述的用于执行单层神经网络运算的方法,依据输入输出指令IO,每个神经网络处理单元将计算得到的最终的运算结果数据作为输出数据写入外部存储模块中。
20.一种用于执行多层神经网络运算的方法,其中,对于每一层神经网络运算,执行如权利要求12所述的方法,并将该层各神经网络处理模块得到的运算结果数据用于下一层神经网络运算。
CN201610635286.XA 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法 Active CN107688853B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN202010074555.6A CN111310893B (zh) 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法
CN201610635286.XA CN107688853B (zh) 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法
PCT/CN2017/095810 WO2018024232A1 (zh) 2016-08-05 2017-08-03 用于执行神经网络运算的装置及方法
EP17836414.7A EP3496007B1 (en) 2016-08-05 2017-08-03 Device and method for executing neural network operation
TW106126471A TWI767925B (zh) 2016-08-05 2017-08-04 一種用於執行神經網絡運算的裝置及方法
US16/268,468 US11120331B2 (en) 2016-08-05 2019-02-05 Device and method for executing neural network operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610635286.XA CN107688853B (zh) 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010074555.6A Division CN111310893B (zh) 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法

Publications (2)

Publication Number Publication Date
CN107688853A CN107688853A (zh) 2018-02-13
CN107688853B true CN107688853B (zh) 2020-01-10

Family

ID=61073469

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010074555.6A Active CN111310893B (zh) 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法
CN201610635286.XA Active CN107688853B (zh) 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010074555.6A Active CN111310893B (zh) 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法

Country Status (5)

Country Link
US (1) US11120331B2 (zh)
EP (1) EP3496007B1 (zh)
CN (2) CN111310893B (zh)
TW (1) TWI767925B (zh)
WO (1) WO2018024232A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108289177B (zh) * 2018-02-13 2020-10-16 北京旷视科技有限公司 信息交互方法、装置及系统
WO2019165940A1 (zh) * 2018-02-27 2019-09-06 上海寒武纪信息科技有限公司 集成电路芯片装置、板卡及相关产品
CN111767996B (zh) * 2018-02-27 2024-03-05 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
CN110197266B (zh) * 2018-02-27 2020-08-04 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
CN110297779A (zh) * 2018-03-23 2019-10-01 余晓鹏 一种内存难解性算法的解决方法
US20190325295A1 (en) * 2018-04-20 2019-10-24 International Business Machines Corporation Time, space, and energy efficient neural inference via parallelism and on-chip memory
US11663461B2 (en) 2018-07-05 2023-05-30 International Business Machines Corporation Instruction distribution in an array of neural network cores
CN110825440B (zh) * 2018-08-10 2023-04-14 昆仑芯(北京)科技有限公司 指令执行方法和装置
CN109542830B (zh) * 2018-11-21 2022-03-01 北京灵汐科技有限公司 一种数据处理系统及数据处理方法
CN111258652B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258636B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258770B (zh) * 2018-11-30 2023-10-10 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258645B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258647B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258635B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258637B (zh) * 2018-11-30 2022-08-05 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
US11126912B2 (en) * 2018-12-11 2021-09-21 Mipsology SAS Realigning streams of neuron outputs in artificial neural network computations
CN111382857B (zh) * 2018-12-29 2023-07-18 上海寒武纪信息科技有限公司 任务处理装置、神经网络处理器芯片、组合装置以及电子设备
CN109919310B (zh) * 2019-01-15 2021-05-18 中国科学院信息工程研究所 一种面向深度学习训练任务的gpu内存优化方法及系统
CN111767078A (zh) * 2019-04-02 2020-10-13 上海寒武纪信息科技有限公司 数据运行方法、装置和相关产品
CN111488969B (zh) * 2020-04-03 2024-01-19 北京集朗半导体科技有限公司 基于神经网络加速器的执行优化方法及装置
WO2022143917A1 (zh) * 2020-12-31 2022-07-07 中科寒武纪科技股份有限公司 片间通信的电路、方法和系统
CN113673701A (zh) * 2021-08-24 2021-11-19 安谋科技(中国)有限公司 神经网络模型的运行方法、可读介质和电子设备
CN115526302B (zh) * 2022-08-19 2023-07-25 北京应用物理与计算数学研究所 基于异构多核处理器的多层神经网络计算方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005012877A2 (en) * 2003-08-01 2005-02-10 Dna Twopointo Inc. Systems and methods for antibody engineering
CN101527010A (zh) * 2008-03-06 2009-09-09 上海理工大学 人工神经网络算法的硬件实现方法及其系统
WO2015021016A1 (en) * 2013-08-05 2015-02-12 Board Of Trustees Of The University Of Alabama Systems, methods and devices for vector control of permanent magnet synchronous machines using artificial neural networks
CN105229675A (zh) * 2013-05-21 2016-01-06 高通股份有限公司 尖峰网络的高效硬件实现

Family Cites Families (19)

* 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
WO1991018351A1 (en) * 1990-05-22 1991-11-28 International Business Machines Corporation Pyramid learning architecture neurocomputer
US7388862B2 (en) * 2003-06-19 2008-06-17 Cisco Technology, Inc. Technique for notifying EIGRP neighbors when destroying adjacencies in a computer network
CN101534165B (zh) * 2009-03-31 2013-03-13 江南大学 一种混沌神经网络保密通信电路
JP5387147B2 (ja) * 2009-06-03 2014-01-15 日本電気株式会社 病理画像診断システム、病理画像処理方法、病理画像診断プログラム
US8346883B2 (en) * 2010-05-19 2013-01-01 International Business Machines Corporation Effecting hardware acceleration of broadcast operations in a parallel computer
CN101882238B (zh) * 2010-07-15 2012-02-22 长安大学 基于sopc的小波神经网络处理器
CN102193518B (zh) * 2011-05-13 2013-04-24 南京理工大学 基于基底神经节的fpga仿生智能控制芯片
US8935513B2 (en) * 2012-02-08 2015-01-13 International Business Machines Corporation Processor performance improvement for instruction sequences that include barrier instructions
US9087301B2 (en) * 2012-12-21 2015-07-21 International Business Machines Corporation Hardware architecture for simulating a neural network of neurons
GB201310859D0 (en) * 2013-06-18 2013-07-31 Cambridge Entpr Ltd Rational method for solubilising proteins
CN104899640B (zh) * 2014-07-21 2019-09-10 徐志强 神经网络的模拟装置及方法
CN105373829B (zh) * 2014-09-02 2018-05-04 北京大学 一种全连接神经网络结构
ES2738319T3 (es) * 2014-09-12 2020-01-21 Microsoft Technology Licensing Llc Sistema informático para entrenar redes neuronales
US20160342887A1 (en) * 2015-05-21 2016-11-24 minds.ai inc. Scalable neural network system
CN104978601B (zh) * 2015-06-26 2017-08-25 深圳市腾讯计算机系统有限公司 神经网络模型训练系统和方法
US10878320B2 (en) * 2015-07-22 2020-12-29 Qualcomm Incorporated Transfer learning in neural networks
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN107563497B (zh) * 2016-01-20 2021-03-19 中科寒武纪科技股份有限公司 用于稀疏人工神经网络的计算装置和运算方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005012877A2 (en) * 2003-08-01 2005-02-10 Dna Twopointo Inc. Systems and methods for antibody engineering
CN101527010A (zh) * 2008-03-06 2009-09-09 上海理工大学 人工神经网络算法的硬件实现方法及其系统
CN105229675A (zh) * 2013-05-21 2016-01-06 高通股份有限公司 尖峰网络的高效硬件实现
WO2015021016A1 (en) * 2013-08-05 2015-02-12 Board Of Trustees Of The University Of Alabama Systems, methods and devices for vector control of permanent magnet synchronous machines using artificial neural networks

Also Published As

Publication number Publication date
WO2018024232A1 (zh) 2018-02-08
EP3496007A4 (en) 2020-03-25
CN111310893B (zh) 2023-11-21
US11120331B2 (en) 2021-09-14
CN107688853A (zh) 2018-02-13
TW201805858A (zh) 2018-02-16
TWI767925B (zh) 2022-06-21
EP3496007A1 (en) 2019-06-12
US20190171932A1 (en) 2019-06-06
EP3496007B1 (en) 2022-10-05
CN111310893A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN107688853B (zh) 一种用于执行神经网络运算的装置及方法
CN107704267B (zh) 一种卷积神经网络运算指令及其方法
US11531540B2 (en) Processing apparatus and processing method with dynamically configurable operation bit width
CN109032669B (zh) 神经网络处理装置及其执行向量最小值指令的方法
CN107315571B (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
CN109376861B (zh) 一种用于执行全连接层神经网络训练的装置和方法
CN111857820B (zh) 一种用于执行矩阵加/减运算的装置和方法
CN110610236A (zh) 一种用于执行神经网络运算的装置
US20200097793A1 (en) Processing apparatus and processing method
CN111126590B (zh) 一种人工神经网络运算的装置及方法
CN109711540B (zh) 一种计算装置及板卡
CN111651204B (zh) 一种用于执行向量最大值最小值运算的装置和方法
CN111368967B (zh) 一种神经网络计算装置和方法
CN111860772B (zh) 一种用于执行人工神经网络pooling运算的装置和方法
CN111367567B (zh) 一种神经网络计算装置和方法
CN111368986B (zh) 一种神经网络计算装置和方法
CN111368987A (zh) 一种神经网络计算装置和方法
CN111368990A (zh) 一种神经网络计算装置和方法
CN113918220A (zh) 流水线控制方法、运算模块及相关产品
CN112394995A (zh) 半精度浮点转短整形指令处理装置、方法及相关产品
CN112394994A (zh) 半精度浮点转八位整形指令处理装置、方法及相关产品
CN111368985A (zh) 一种神经网络计算装置和方法
CN114691083A (zh) 矩阵乘法电路、方法及相关产品
CN114692847A (zh) 数据处理电路、数据处理方法及相关产品

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

Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

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

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant