CN107886166A - 一种执行人工神经网络运算的装置和方法 - Google Patents

一种执行人工神经网络运算的装置和方法 Download PDF

Info

Publication number
CN107886166A
CN107886166A CN201610865933.6A CN201610865933A CN107886166A CN 107886166 A CN107886166 A CN 107886166A CN 201610865933 A CN201610865933 A CN 201610865933A CN 107886166 A CN107886166 A CN 107886166A
Authority
CN
China
Prior art keywords
module
unit
neural network
operation module
artificial neural
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
CN201610865933.6A
Other languages
English (en)
Other versions
CN107886166B (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.)
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co 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 Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201610865933.6A priority Critical patent/CN107886166B/zh
Publication of CN107886166A publication Critical patent/CN107886166A/zh
Application granted granted Critical
Publication of CN107886166B publication Critical patent/CN107886166B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)

Abstract

本发明提供了一种执行人工神经网络运算的装置和方法,装置包括Clock Gating(时钟门控)单元、指令缓存单元、控制器单元、直接内存访问单元、互连模块、主运算模块以及多个从运算模块。使用该装置可以低功耗的实现多层人工神经网络的运算。在人工神经网络运算过程中,Clock Gating单元根据指令控制指令缓存单元、控制器单元、直接内存访问单元、互连模块、主运算单元以及多个从运算模块的时钟信号打开或者置0,保留具体运算相关单元的时钟信号,无关单元的时钟信号置0,从而减少了运算过程中参与工作模块的数量,实现低功耗执行人工神经网络。

Description

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

Claims (10)

1.一种执行人工神经网络运算的装置,其特征在于,包括:控制器单元、被控模块组和时钟门控单元;其中,
所述被控模块组与所述时钟门控单元连接,在所述时钟门控单元的控制下,所述被控模块组中参与人工神经网络运算的模块打开,被控模块组中不参与人工神经网络运算的模块关闭,降低人工神经网络运算的功耗。
2.如权利要求1所述的装置,其特征在于,
所述被控模块组的时钟信号经所述时钟门控单元连接至所述被控模块组,所述时钟门控单元通过控制所述被控模块组的时钟信号,实现所述被控模块组中参与人工神经网络运算的模块的打开、和不参与人工神经网络运算的模块的关闭。
3.如权利要求2所述的装置,其特征在于,
所述被控模块组包括:直接内存访问单元、互连模块、主运算模块和多个从运算模块。
4.如权利要求3所述的装置,其特征在于,
所述直接内存访问单元的输入时钟、互连模块的输入时钟、主运算模块的输入时钟和从运算模块的输入时钟分别输入时钟门控单元;
所述时钟门控单元输出直接内存访问单元的输出时钟、互连模块的输出时钟、主运算模块的输出时钟和从运算模块的输出时钟;
所述直接内存访问单元3的输出时钟连接至直接内存访问单元,所述互连模块的输出时钟连接至互连模块,所述主运算模块的输出时钟连接至主运算模块,所述从运算模块的输出时钟连接至从运算模块,所述控制器单2的控制信号连接至时钟门控单元;
所述时钟门控单元在控制信号的控制下,将输出时钟置0以将输出时钟对应的模块关闭,将输出时钟开启已将输出时钟对应的模块打开。
5.如权利要求3所述的装置,其特征在于,
所述主运算模块包括:主运算模块运算单元、主运算模块数据依赖关系判断单元和主运算模块神经元缓存单元。
6.如权利要求3所述的装置,其特征在于,
所述从运算模块包括:从运算模块运算单元、从运算模块数据依赖关系判定单元、从运算模块神经元缓存单元和权值缓存单元。
7.一种执行人工神经网络运算的方法,其利用权利要求1所述的执行人工神经网络运算的装置,其特征在于,包括:
进行人工神经网络初始化的步骤;
进行人工神经网络计算的步骤;
进行人工神经网络计算结果输出的步骤;
其中,在上述至少一个步骤中,打开参与人工神经网络运算的模块,关闭不参与人工神经网络运算的模块,降低人工神经网络运算的功耗。
8.如权利要求7所述的方法,其特征在于,所述进行人工神经网络初始化的步骤包括:
打开直接内存访问单元和主运算模块,关闭互连模块和从运算模块,直接内存访问单元从外部地址空间读取主运算模块的运算数据;
打开直接内存访问单元和从运算模块,关闭互连模块和主运算模块,直接内存访问单元从外部地址空间读取从运算模块的权值矩阵;
打开主运算模块和从运算模块,关闭直接内存访问单元和互连模块,配置人工神经网络运算的常数。
9.如权利要求7所述的方法,其特征在于,所述进行人工神经网络计算的步骤包括:
打开互连模块、主运算模块和从运算模块,关闭直接内存访问单元,主运算模块通过互连模块将输入神经元向量发送给从运算模块;
打开互连模块和从运算模块,关闭直接内存访问单元和主运算模块,从运算模块根据输入神经元向量和权值向量得到中间结果,并将中间结果返回互连模块;
打开互连模块,关闭直接内存访问单元、主运算模块和从运算模块,互连模块将各个从运算模块返回的中间结果逐级拼成完整的中间结果向量;
打开互连模块和主运算模块,关闭直接内存访问单元和从运算模块,互连模块将中间结果向量返回给主运算模块,主运算模块由中间结果向量得到输出神经元向量。
10.如权利要求7所述的方法,其特征在于,所述进行人工神经网络计算结果输出的步骤包括:
打开直接内存访问单元和主运算模块,关闭互连模块和从运算模块;直接内存访问单元将主运算模块的输出神经元向量存至外部地址空间。
CN201610865933.6A 2016-09-29 2016-09-29 一种执行人工神经网络运算的装置和方法 Active CN107886166B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610865933.6A CN107886166B (zh) 2016-09-29 2016-09-29 一种执行人工神经网络运算的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610865933.6A CN107886166B (zh) 2016-09-29 2016-09-29 一种执行人工神经网络运算的装置和方法

Publications (2)

Publication Number Publication Date
CN107886166A true CN107886166A (zh) 2018-04-06
CN107886166B CN107886166B (zh) 2020-02-21

Family

ID=61769362

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610865933.6A Active CN107886166B (zh) 2016-09-29 2016-09-29 一种执行人工神经网络运算的装置和方法

Country Status (1)

Country Link
CN (1) CN107886166B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108710943A (zh) * 2018-05-21 2018-10-26 南京大学 一种多层前馈神经网络并行加速器
CN111260069A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 数据处理装置、方法、芯片及电子设备
CN111258769A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 数据传输装置和方法
CN111507465A (zh) * 2020-06-16 2020-08-07 电子科技大学 一种可配置的卷积神经网络处理器电路
CN111523655A (zh) * 2019-02-03 2020-08-11 上海寒武纪信息科技有限公司 处理装置及方法
CN111767999A (zh) * 2019-04-02 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN112055862A (zh) * 2018-05-04 2020-12-08 苹果公司 可扩展神经网络处理引擎
US11494645B2 (en) * 2018-12-06 2022-11-08 Egis Technology Inc. Convolutional neural network processor and data processing method thereof

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1752894A (zh) * 2005-08-18 2006-03-29 复旦大学 信息安全SoC中基于门控时钟的动态功耗管理方法
CN101013477A (zh) * 2007-02-05 2007-08-08 凤凰微电子(中国)有限公司 一种实现高速大容量智能卡时钟管理的单元及方法
CN101114186A (zh) * 2006-07-26 2008-01-30 国际商业机器公司 用于控制多核心处理器中发热的方法和设备
CN101184092A (zh) * 2007-12-10 2008-05-21 华中科技大学 环境感知可重构的移动终端通信处理器
CN101581963A (zh) * 2009-06-19 2009-11-18 北京红旗胜利科技发展有限责任公司 一种降低cpu功耗的方法和一种cpu
CN105184366A (zh) * 2015-09-15 2015-12-23 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105468128A (zh) * 2014-07-30 2016-04-06 比亚迪股份有限公司 Soc内部功耗的管理方法和管理装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1752894A (zh) * 2005-08-18 2006-03-29 复旦大学 信息安全SoC中基于门控时钟的动态功耗管理方法
CN101114186A (zh) * 2006-07-26 2008-01-30 国际商业机器公司 用于控制多核心处理器中发热的方法和设备
CN101013477A (zh) * 2007-02-05 2007-08-08 凤凰微电子(中国)有限公司 一种实现高速大容量智能卡时钟管理的单元及方法
CN101184092A (zh) * 2007-12-10 2008-05-21 华中科技大学 环境感知可重构的移动终端通信处理器
CN101581963A (zh) * 2009-06-19 2009-11-18 北京红旗胜利科技发展有限责任公司 一种降低cpu功耗的方法和一种cpu
CN105468128A (zh) * 2014-07-30 2016-04-06 比亚迪股份有限公司 Soc内部功耗的管理方法和管理装置
CN105184366A (zh) * 2015-09-15 2015-12-23 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200143479A (ko) * 2018-05-04 2020-12-23 애플 인크. 스케일러블 뉴럴 네트워크 프로세싱 엔진
US11989640B2 (en) 2018-05-04 2024-05-21 Apple Inc. Scalable neural network processing engine
CN112055862B (zh) * 2018-05-04 2024-05-07 苹果公司 可扩展神经网络处理引擎
KR102572705B1 (ko) * 2018-05-04 2023-08-31 애플 인크. 스케일러블 뉴럴 네트워크 프로세싱 엔진
US11537838B2 (en) 2018-05-04 2022-12-27 Apple Inc. Scalable neural network processing engine
CN112055862A (zh) * 2018-05-04 2020-12-08 苹果公司 可扩展神经网络处理引擎
CN108710943A (zh) * 2018-05-21 2018-10-26 南京大学 一种多层前馈神经网络并行加速器
CN108710943B (zh) * 2018-05-21 2021-11-16 南京大学 一种多层前馈神经网络并行加速器
CN111258769B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据传输装置和方法
CN111260069B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理装置、方法、芯片及电子设备
CN111258769A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 数据传输装置和方法
CN111260069A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 数据处理装置、方法、芯片及电子设备
US11494645B2 (en) * 2018-12-06 2022-11-08 Egis Technology Inc. Convolutional neural network processor and data processing method thereof
CN111523655A (zh) * 2019-02-03 2020-08-11 上海寒武纪信息科技有限公司 处理装置及方法
CN111523655B (zh) * 2019-02-03 2024-03-29 上海寒武纪信息科技有限公司 处理装置及方法
CN111767999A (zh) * 2019-04-02 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN111767999B (zh) * 2019-04-02 2023-12-05 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN111507465B (zh) * 2020-06-16 2020-10-23 电子科技大学 一种可配置的卷积神经网络处理器电路
CN111507465A (zh) * 2020-06-16 2020-08-07 电子科技大学 一种可配置的卷积神经网络处理器电路

Also Published As

Publication number Publication date
CN107886166B (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
CN107886166B (zh) 一种执行人工神经网络运算的装置和方法
CN109376861B (zh) 一种用于执行全连接层神经网络训练的装置和方法
CN109284825B (zh) 用于执行lstm运算的装置和方法
CN107316078B (zh) 用于执行人工神经网络自学习运算的装置和方法
CN109375951B (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
CN111310904B (zh) 一种用于执行卷积神经网络训练的装置和方法
CN111860813B (zh) 一种用于执行卷积神经网络正向运算的装置和方法
CN107832843B (zh) 一种信息处理方法及相关产品
CN106991478B (zh) 用于执行人工神经网络反向训练的装置和方法
CN106991476B (zh) 用于执行人工神经网络正向运算的装置和方法
CN109358900B (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
WO2017185347A1 (zh) 用于执行循环神经网络和lstm运算的装置和方法
CN107301454B (zh) 支持离散数据表示的人工神经网络反向训练装置和方法
WO2017185248A1 (zh) 用于执行人工神经网络自学习运算的装置和方法
WO2018058452A1 (zh) 一种执行人工神经网络运算的装置和方法
WO2017185335A1 (zh) 一种用于执行batch normalization运算的装置和方法
CN107341546B (zh) 一种用于执行batch normalization运算的装置和方法
CN107329733B (zh) 用于执行pooling运算的装置和方法
CN111178492A (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
CN109993276B (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
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, scientific research complex, No. 6, South Road, Academy of Sciences, Haidian District, Beijing

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

GR01 Patent grant
GR01 Patent grant