CN117057403B - 一种运算模块、基于脉冲神经网络的加速器及方法 - Google Patents

一种运算模块、基于脉冲神经网络的加速器及方法 Download PDF

Info

Publication number
CN117057403B
CN117057403B CN202311304317.XA CN202311304317A CN117057403B CN 117057403 B CN117057403 B CN 117057403B CN 202311304317 A CN202311304317 A CN 202311304317A CN 117057403 B CN117057403 B CN 117057403B
Authority
CN
China
Prior art keywords
calculation result
operation module
target
calculation
module
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
CN202311304317.XA
Other languages
English (en)
Other versions
CN117057403A (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.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent 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 Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311304317.XA priority Critical patent/CN117057403B/zh
Publication of CN117057403A publication Critical patent/CN117057403A/zh
Application granted granted Critical
Publication of CN117057403B publication Critical patent/CN117057403B/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/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • 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
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供了一种运算模块、基于脉冲神经网络的加速器及方法,运算模块包括:所述输入端口,用于向数组单元传输特征数据;所述数组单元,用于获取所述运算模块当前指定的运算模式,从计算单元中选择与所述运算模式相匹配的目标计算单元,并将所述特征数据传输至所述目标计算单元;所述目标计算单元,用于根据所述特征数据进行计算,并将得到的目标计算结果传输至所述输出端口;所述输出端口,用于输出所述目标计算结果。本申请实施例提供的运算模块,通过增加的数组单元能够根据当前指定的运算模式选择相应的目标计算单元,从而使运算模块能够同时兼容乘加模式以及累加模式,有效提高了运算模块的使用率和计算效率,同时降低了硬件资源的消耗。

Description

一种运算模块、基于脉冲神经网络的加速器及方法
技术领域
本发明涉及脉冲神经网络加速领域,具体涉及一种运算模块、基于脉冲神经网络的加速器及方法。
背景技术
目前广泛使用的深度学习硬件加速器,由于针对的算法主要集中在矩阵卷积计算,因此全部采用了乘加器级联的硬件形式,具体结构如图1所示。所有的运算模块(CELL)只支持2个数据的运算操作,部分运算单元为了方便矩阵的乘加计算,设计了级联结构,支持2个数据的乘加,还有一个级联累加输入(如图2所示)。
基于此,该结构虽然方便的执行矩阵乘加运算,但是如果使用结构来进行特定计算,例如:累积加法,在并行计算条件下,由于运算模块不能兼容多个运算模式,导致需要大量的运算模块完成。最终使并行计算使用的硬件资源较多,且硬件资源使用率不高。
发明内容
有鉴于此,本发明实施例提供了一种运算模块、基于脉冲神经网络的加速器及方法,以解决现有运算模块不能兼容多个运算模式,导致并行计算使用的硬件资源较多,且硬件资源使用率不高问题。
第一方面,本发明实施例提供了一种运算模块,所述运算模块包括:输入端口,数组单元,计算单元以及输出端口;
所述输入端口,用于向数组单元传输特征数据;
所述数组单元,用于获取所述运算模块当前指定的运算模式,从计算单元中选择与所述运算模式相匹配的目标计算单元,并将所述特征数据传输至所述目标计算单元;
所述目标计算单元,用于根据所述特征数据进行计算,并将得到的目标计算结果传输至所述输出端口;
所述输出端口,用于输出所述目标计算结果。
本申请实施例提供的运算模块,通过增加的数组单元能够根据当前指定的运算模式选择相应的目标计算单元,从而使运算模块能够同时兼容乘加模式以及累加模式,有效提高了运算模块的使用率和计算效率,同时降低了硬件资源的消耗。
在本发明一个实施例中,所述计算单元包括乘法器以及累加器,所述乘法器的输入端与所述数组单元的输出端连接,所述累加器的输入端分别连接所述乘法器的输出端以及所述数组单元的输出端,所述累加器的输出端与所述输出端口连接。
在本发明一个实施例中,所述输入端口包括:第一输入端口以及第二输入端口,所述第一输入端口与所述数组单元连接,所述第二输入端口与所述累加器的输入端连接,其中,所述第二输入端口为级联输入端口。
在本发明一个实施例中,所述累加器包括:加法器组以及累加缓存,所述加法器组的输入端分别连接所述数组单元的输出端以及所述乘法器的输出端,所述加法器组的输出端连接所述累加缓存,所述累加缓存中包括多个寄存器,所述寄存器用于存储所述加法器组输出的计算结果。
在本发明一个实施例中,所述运算模式包括:乘加模式以及累加模式。
在本发明一个实施例中,在所述运算模式为乘加模式的情况下,所述第一输入端口,用于向所述数组单元传输第一特征数据;
所述数组单元,用于根据所述乘加模式将所述乘法器以及所述累加器作为所述目标计算单元,并将所述第一特征数据传输至所述乘法器;
所述乘法器,用于对所述第一特征数据进行运算,得到第一计算结果,并将所述第一计算结果传输至所述累加器中的加法器组;
所述加法器组,用于根据所述第一计算结果以及第二特征数据进行累加计算,得到目标计算结果,并将所述目标计算结果传递至所述累加器中的累加缓存,其中,所述第二特征数据为所述第二输入端口传输至所述累加器的特征数据;
所述累加缓存,用于将所述目标计算结果存储至相应的寄存器。
在本发明一个实施例中,在所述运算模式为累加模式的情况下,所述第一输入端口,用于向所述数组单元传输第一特征数据;
所述数组单元,用于根据所述累加模式将所述累加器作为所述目标计算单元,并将所述第一特征数据传输至所述累加器中的加法器组;
所述加法器组,用于根据所述第一特征数据以及第二特征数据进行累加计算,得到所述目标计算结果,并将所述目标计算结果存储至所述累加器中的累加缓存,其中,所述第二特征数据为所述第二输入端口传输至所述累加器的特征数据;
所述累加缓存,用于将所述目标计算结果存储至相应的寄存器。
在本发明一个实施例中,所述运算模块还包括:复位控制端口,所述复位控制端口分别连接所述累加缓存中的各个寄存器;
所述复位控制端口,用于基于脉冲信号生成复位指令,并将所述复位指令传递至所述累加器中的累加缓存,其中,所述脉冲信号在所述目标计算结果大于或等于预设阈值的情况下生成的;
所述累加缓存,用于响应所述复位指令,清除当前存储的计算结果。
第二方面,本发明实施例提供了一种基于脉冲神经网络的加速器,所述脉冲神经网络包括位于第一层级的多个第一运算模块以及位于第二层级的第二运算模块,每个所述第一运算模块的输出端与所述第二运算模块上的输入端一一对应,所述第一运算模块和所述第二运算模块为上述的运算模块;
所述第一运算模块,用于按照当前指定的运行模式对输入的目标特征数据进行运算,得到第一计算结果,并将所述第一计算结果传输至所述第二运算模块;
所述第二运算模块,用于按照当前指定的运行模式对各个所述第一运算模块输出的第一计算结果进行运算,得到第二计算结果,并基于所述第一计算结果以及所述第二计算结果输出脉冲信号。
在本发明一个实施例中,所述加速器还包括:处理模块,所述处理模块的输入端与所述第二运算模块的输出端连接;
所述处理模块,用于分别将所述第一计算结果与所述第二计算结果与预设阈值进行对比,得到对比结果,并根据所述对比结果执行相应的处理操作。
在本发明一个实施例中,所述处理模块,用于在所述对比结果为所述第一计算结果与所述第二计算结果中至少一个计算结果大于或等于所述预设阈值的情况下,输出相应数量的脉冲信号。
在本发明一个实施例中,所述处理模块,用于在所述对比结果为所述第一计算结果与所述第二计算结果中至少一个计算结果小于所述预设阈值的情况下,生成相应数量的运算指令,并发送所述运算指令至第一目标运算模块,其中,所述第一目标运算模块为第三计算结果对应的运算模块,所述第三计算结果为所述第一计算结果与所述第二计算结果中小于所述预设阈值的计算结果;
所述第一目标运算模块,用于响应所述运算指令,继续执行运算操作,直至得到的计算结果大于或等于所述预设阈值。
在本发明一个实施例中,所述处理模块,用于根据所述脉冲信号生成复位指令,发送所述复位指令至第二目标运算模块,其中,所述第二目标运算模块为第四计算结果对应的运算模块,所述第四计算结果为所述第一计算结果与所述第二计算结果中大于或等于所述预设阈值的计算结果;
所述第二目标运算模块,用于响应所述复位指令,将所述第二目标运算模块中累加缓存所缓存的计算结果清零。
本申请实施例将累加缓存设计成了可独立复位的多寄存器缓存结构,并在每个运算模块中增加复位控制端口来接收输出的脉冲信号,依据脉冲信号触发复位操作,将累加缓存中的计算结果清除,以此满足了加速器针对脉冲神经网络中计算结果清零的要求。由于生成脉冲信号的数量是根据大于或等于预设阈值的计算结果的数量确定的,同时各个运算单元都设有独立的用于接收脉冲信号的复位控制端口,所以各个运算单元的复位操作可以独立进行,互不影响。实现了计算结果的局部清除或全部清除,同时在局部清除中,也不会对延缓其他运算模块的计算过程,无需额外的等待的时间。有效提高了脉冲神经网络推理计算的加速能力。
第三方面,本发明实施例提供了一种基于脉冲神经网络的计算方法,所述方法包括:
获取目标特征数据;
将所述目标特征数据传输至脉冲神经网络,其中,所述脉冲神经网络包括位于第一层级的多个第一运算模块以及位于第二层级的第二运算模块;
通过所述第一运算模块按照当前指定的运算模式对输入的目标特征数据进行运算,得到第一计算结果,并将所述第一计算结果传输至所述第二运算模块;
通过所述第二运算模块按照当前指定的运算模式对各个所述第一运算模块输出的第一计算结果进行运算,得到第二计算结果;
基于所述第一计算结果以及所述第二计算结果输出脉冲信号。
在本发明一个实施例中,所述获取目标特征数据,包括:
获取多个原始特征数据以及脉冲神经网络的多个权重值;
从所述多个权重值中获取所述原始特征数据中各个特征对应的目标权重值;
利用所述目标权重值对所述原始特征数据中的特征进行替换,得到中间特征数据;
对各个所述中间特征数据中的特征进行重新排列,得到所述目标特征数据。
在本发明一个实施例中,所述基于所述第一计算结果以及所述第二计算结果输出脉冲信号,包括:
分别将所述第一计算结果与所述第二计算结果与预设阈值进行对比,得到对比结果;
在所述对比结果为所述第一计算结果与所述第二计算结果中至少一个计算结果大于或等于所述预设阈值的情况下,输出相应数量的脉冲信号。
在本发明一个实施例中,所述方法还包括:
将所述第一计算结果与所述第二计算结果中小于所述预设阈值的计算结果确定为第三计算结果,并将所述第三计算结果对应的运算模块确定为第一目标运算模块;
控制所述第一目标运算模块继续执行运算操作,直至得到的计算结果大于或等于所述预设阈值。
在本发明一个实施例中,所述方法还包括:
将所述第一计算结果与所述第二计算结果中大于或等于所述预设阈值的计算结果确定为第四计算结果,并将所述第四计算结果对应的运算模块确定为第二目标运算模块;
控制所述第二目标运算模块执行复位操作,其中,所述复位操作用于将所述第二目标运算模块中累加缓存所缓存的计算结果清零。
第四方面,本发明实施例提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的方法。
第五方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中脉冲阵列的示意图;
图2是现有技术中运算模块的内部结构和级联结构的示意图;
图3是根据本发明一些实施例的运算模块的结构示意图;
图4是根据本发明一些实施例的运算模块的结构示意图;
图5是根据本发明一些实施例的运算模块的结构示意图;
图6是根据本发明一些实施例的运算模块的结构示意图;
图7是根据本发明一些实施例的运算模块的结构示意图;
图8是根据本发明一些实施例的运算模块的结构示意图;
图9是根据本发明一些实施例的运算模块的结构示意图;
图10是根据本发明一些实施例的基于脉冲神经网络的加速器的结构示意图;
图11是根据本发明一些实施例的基于脉冲神经网络的计算方法的流程示意图;
图12是根据本发明一些实施例的权重值的示意图;
图13是根据本发明一些实施例的原始特征数据的示意图;
图14是根据本发明一些实施例的中间特征数据的示意图;
图15是根据本发明一些实施例的基于脉冲神经网络的计算过程的示意图;
图16是根据本发明实施例的基于脉冲神经网络的计算装置的结构框图;
图17是本发明实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明实施例,提供了一种运算模块、基于脉冲神经网络的加速器及方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
第一方面,本实施例中提供了一种运算模块,图3是根据本发明实施例的一种运算模块的结构示意图,如图3所示,运算模块,包括:输入端口10,数组单元20,计算单元30以及输出端口40;
输入端口10,用于向数组单元20传输特征数据。
数组单元20,用于获取运算模块当前指定的运算模式,从计算单元30中选择与运算模式相匹配的目标计算单元,并将特征数据传输至目标计算单元。
目标计算单元,用于根据特征数据进行计算,并将得到的目标计算结果传输至输出端口40。
输出端口40,用于输出目标计算结果。
在本申请实施例中,运算模式包括:乘加模式以及累加模式。
本申请实施例提供的运算模块,通过增加的数组单元能够根据当前指定的运算模式选择相应的目标计算单元,从而使运算模块能够同时兼容乘加模式以及累加模式,有效提高了运算模块的计算效率。
在本申请实施例中,如图4所示,计算单元包括乘法器301以及累加器302,乘法器301的输入端与数组单元20的输出端连接,累加器302的输入端分别连接乘法器301的输出端以及数组单元20的输出端,累加器302的输出端与输出端口40连接。
需要说明的是,通过将数组单元分别与累加器以及乘法器连接,便于数组单元根据不同的运算模式选择与累加器连通,还是选择与乘法器连通,从而提高了运算模块的计算效率。
在本申请实施例中,如图4所示,输入端口包括:第一输入端口101以及第二输入端口102,第一输入端口101与数组单元20连接,第二输入端口102与累加器302的输入端连接,其中,第二输入端口102为级联输入端口。
在本申请实施例中,如图4所示,累加器302包括:加法器组3021以及累加缓存3022,加法器组3021的输入端分别连接数组单元20的输出端以及乘法器301的输出端,加法器组3021的输出端连接累加缓存3022,累加缓存3022中包括多个寄存器,寄存器用于存储加法器组输出的计算结果。
需要说明的是,由于运算模块在计算过程中可能会计算出多个计算结果,因此将每次的计算结果进行存储,在计算完成后对累加缓存进行复位,从而保证累加缓存中每次保存的计算结果仅为当前计算过程的计算结果。
在本申请实施例中,在运算模式为乘加模式的情况下,运算模块首先进行乘法运算,再进行加法运算。此时运算模块的连接结构如图5所示:第一输入端口101与数组单元20的输入端连接,数组单元20的输出端与乘法器连接,乘法器301的输出端与累加器302中加法器组3021的输入端连接,加法器组3021的输出端与累加缓存3022连接,第二输入端口102与加法器组3021连接。具体运算过程如下:
第一输入端口101,用于向数组单元传输第一特征数据。
数组单元20,用于根据乘加模式将乘法器以及累加器作为目标计算单元,并将第一特征数据传输至乘法器。
乘法器301,用于对第一特征数据进行运算,得到第一计算结果,并将第一计算结果传输至累加器中的加法器组。
加法器组3021,用于根据第一计算结果以及第二特征数据进行累加计算,得到目标计算结果,并将目标计算结果传递至累加器中的累加缓存,其中,第二特征数据为第二输入端口传输至累加器的特征数据。
累加缓存3022,用于将目标计算结果存储至相应的寄存器。
作为一个示例,如图6所示,第一输入端口包括:第一输入端口A和第一输入端口B,数组单元包括:第一子单元a,第二子单元b。
第一输入端口A向第一子单元a输入特征数据A_48bit,第一输入端口B向第一子单元b输入特征数据B_48bit,第一子单元a向乘法器传输特征数据A_48bit,第二子单元b向乘法器301传输特征数据B_48bit。乘法器301基于特征数据A_48bit和特征数据B_48bit进行乘法运算,得到计算结果,并将计算结果传输至加法器组3021。加法器组3021基于第二输入端口C传输的特征数据C_48bit以及乘法器传输的计算结果进行累加运算,得到最终的目标计算结果,并将目标计算结果存储至累加缓存3022。累加缓存3022对目标计算结果进行存储。
需要说明的是,特征数据A_48bit,特征数据B_48bit以及特征数据C_48bit均由4组12bit的数据构成。将数据的位宽设置为12bit,是由于目前在利用运算模块进行计算时,传输至输入端口的多组特征数据通常为多组8bit数据,在后续进行计算时,经常会出现溢出的情况。因此本申请实施例将传输至输入端口的特征数据的位宽设置为12bit,便于后续对8bit的数据进行累加时,不会出现溢出,同时也无需额外的再设计进位链结构。
另外,在运算模块设定为乘加功能后,运算模块可作为通用乘加器使用,兼容其他深度学习网络加速硬件功能。同时还可通过级联正常实现通用深度学习网络的矩阵卷积计算。
在本申请实施例中,在运算模式为累加模式的情况下,运算模块只进行加法运算。此时,运算模块的连接结构如图7所示:第一输入端口101与数组单元20的输入端连接,数组单元20的输出端与累加器302中加法器组3021的输入端连接,加法器组3021的输出端与累加缓存3022连接。具体运算过程如下:
第一输入端口101,用于向数组单元20传输第一特征数据;
数组单元20,用于根据累加模式将累加器作为目标计算单元,并将第一特征数据传输至累加器中的加法器组3021;
加法器组3021,用于根据第一特征数据以及第二特征数据进行累加计算,得到目标计算结果,并将目标计算结果存储至累加器中的累加缓存3022,其中,第二特征数据为第二输入端口传输至累加器的特征数据;
累加缓存3022,用于将目标计算结果存储至相应的寄存器。
作为一个示例,如图8所示,第一输入端口包括:第一输入端口A和第一输入端口B,数组单元包括:第一子单元a,第二子单元b。第一输入端口A向第一子单元a输入特征数据A_48bit,第一输入端口B向第一子单元b输入特征数据B_48bit,第一子单元a向加法器组传输特征数据A_48bit,第二子单元b向加法器组传输特征数据B_48bit。同时第二输入端口C向加法器组传输特征数据C_48bit。加法器组基于特征数据A_48bit,特征数据B_48bit以及特征数据C_48bit进行累加运算,得到最终的目标计算结果,并将目标计算结果存储至累加缓存。累加缓存对目标计算结果进行存储。
需要说明的是,特征数据A_48bit,特征数据B_48bit以及特征数据C_48bit均由4组12bit的数据构成。将数据的位宽设置为12bit,是由于目前在利用运算模块进行计算时,传输至输入端口的多组特征数据通常为多组8bit数据,在后续进行计算时,经常会出现溢出的情况。因此本申请实施例将传输至输入端口的特征数据的位宽设置为12bit,便于后续对8bit的数据进行累加时,不会出现溢出,同时也无需额外的再设计进位链结构。
在本申请实施例中,如图9所示,运算模块还包括:复位控制端口50,复位控制端口50分别连接累加缓存中的各个寄存器;
复位控制端口50,用于基于脉冲信号生成复位指令,并将复位指令传递至累加器中的累加缓存3022,其中,脉冲信号在目标计算结果大于或等于预设阈值的情况下生成的;
累加缓存3022,用于响应复位指令,清除当前存储的计算结果。
需要说明的是,累加缓存中设置有4个寄存器,每个寄存器用于存储一个计算结果,因此复位指令为4bit(与寄存器数量相同)。
本申请实施例通过设置复位控制端口目的是为了接收脉冲信号,并根据脉冲信号生成复位指令,脉冲信号是该运算模块所在加速器在确定目标计算结果大于预设阈值的情况下生成的,以此表明运算模块当前所执行的计算过程结束,基于此,复位控制端口会根据脉冲信号生成复位指令,将复位指令传输至累加缓存,累加缓存根据复位指令将寄存器内存储的计算结果进行清除。
第二方面,本申请实施例还提供了一种基于脉冲神经网络的加速器,如图10所示,脉冲神经网络包括位于第一层级的多个第一运算模块100以及位于第二层级的第二运算模块200,每个第一运算模块100的输出端与第二运算模块200上的输入端一一对应,第一运算模块100和第二运算模块200为上述实施例的运算模块。
第一运算模块100,用于按照当前指定的运行模式对输入的目标特征数据进行运算,得到第一计算结果,并将第一计算结果传输至第二运算模块。
第二运算模块200,用于按照当前指定的运行模式对各个第一运算模块输出的第一计算结果进行运算,得到第二计算结果,并基于第一计算结果以及第二计算结果输出脉冲信号。
在本申请实施例中,位于第一层级的第一运算模块可以有三个,位于第二层级的第二运算模块有一个。通过三个第一运算模块计算中间结果,并将中间结果传输至第二运算模块,由第二运算模块计算总结果。以此通过四个运算模块级联无需额外的控制逻辑资源,链接方式简单。
本申请实施例通过将4个运算模块以层级结构排列,可以实现36(4个3×3)个8bit数据的累加器,平均每个运算模块可以执行9个8bit数据的不溢出的累加,极大的增强了每个运算模块利用效率,同时每个运算模块能够兼容乘加模式以及累加模式,进一步提高了加速器的计算效率。
在本申请实施例中,加速器还包括:处理模块300,处理模块300的输入端与第二运算模块的输出端连接;处理模块300,用于分别将第一计算结果与第二计算结果与预设阈值进行对比,得到对比结果,并根据对比结果执行相应的处理操作。
在本申请实施例中,处理模块300中包括阈值对比单元以及发送单元,阈值对比单元将第一计算结果与第二计算结果分别与预设阈值进行对比,得到对比结果,发送单元用于根据对比结果执行相应的处理操作。例如:位于第一层级的第一运算模块可以有三个,因此得到的第一计算结果有三个,第二计算结果有一个,此时阈值对比单元将三个第一计算结果与一个第二计算结果分别与预设阈值进行对比,得到四个对比结果。发送单元会根据对比结果执行相应的处理操作,如果对比结果为计算结果小于预设阈值,发送单元则不输出脉冲信号,此时相应的运算模块继续进行运算,直至得到的计算结果大于或等于阈值。如果对比结果为计算结果大于或等于预设阈值,发送模块会输出脉冲信号。
在本申请实施例中,处理模块300,用于在对比结果为第一计算结果与第二计算结果中任意一个计算结果大于或等于预设阈值的情况下,输出脉冲信号。
作为一个示例,第一计算结果包括:计算结果n1,计算结果n2,计算结果n3,第二计算结果为计算结果n4,如果计算结果n1,计算结果n2,计算结果n3,计算结果n4均大于或等于预设阈值,则处理模块会输出4个脉冲信号。
或者,如果计算结果n1和计算结果n2大于或等于预设阈值,则处理模块会输出2个脉冲信号。同理,处理模块输出1个脉冲信号或者3个脉冲信号与上述过程相似。
在本申请实施例中,处理模块300,用于在对比结果为第一计算结果与第二计算结果中任意一个计算结果小于预设阈值的情况下,生成运算指令,并发送运算指令至第一目标运算模块,其中,第一目标运算模块为第三计算结果对应的运算模块,第三计算结果为第一计算结果与第二计算结果中小于预设阈值的计算结果。
第一目标运算模块,用于响应运算指令,继续执行运算操作,直至得到的计算结果大于或等于预设阈值。
作为一个示例,第一计算结果包括:计算结果n1,计算结果n2,计算结果n3,第二计算结果为计算结果n4,如果计算结果n1,计算结果n2,计算结果n3,计算结果n4均小于预设阈值,则处理模块不输出脉冲信号,而输出运算指令至第一目标运算模块,第一目标运算模块包括:全部的第一运算模块和第二运算模块。此时第一目标运算模块继续根据运算指令执行相应的运算,直至得到的计算结果大于或等于预设阈值。
或者,如果计算结果n1和计算结果n2小于预设阈值,第一目标运算模块包括:计算结果n1和计算结果n2对应的第一运算模块。此时第一目标运算模块继续根据运算指令继续执行运算,直至得到的计算结果大于或等于预设阈值。
在本申请实施例中,处理模块,用于根据脉冲信号生成复位指令,发送复位指令至第二目标运算模块,其中,第二目标运算模块为第四计算结果对应的运算模块,第四计算结果为第一计算结果与第二计算结果中小于预设阈值的计算结果;
第二目标运算模块,用于响应复位指令,将第二目标运算模块中累加缓存所缓存的计算结果清零。
作为一个示例,第一计算结果包括:计算结果n1,计算结果n2,计算结果n3,第二计算结果为计算结果n4,如果计算结果n1,计算结果n2,计算结果n3,计算结果n4均大于或等于预设阈值,则处理模块会输出4个脉冲信号至第二目标运算模块,此时第二目标运算模块包括:全部的第一运算模块和第二运算模块,第二目标运算模块的复位控制端口接收到脉冲信号后,将脉冲信号发送至相应的累加缓存,以用于清除累加缓存中存储的计算结果。
或者,如果计算结果n1以及计算结果n2大于或等于预设阈值,则处理模块会输出2个脉冲信号至第二目标运算模块,此时第二目标运算模块包括:计算结果n1以及计算结果n2对应的第一运算模块。计算结果n1和计算结果n2对应的第一运算模块中的复位控制端口接收到脉冲信号后,将脉冲信号发送至相应的累加缓存,以用于清除累加缓存中存储的计算结果。最终,计算结果n1和计算结果n2对应的第一运算模块中累加缓存存储的计算结果被清除。计算结果n3对应的第一运算模块和计算结果n4对应的第二运算模块继续进行运算。同理,处理模块输出1个脉冲信号或者3个脉冲信号与上述过程相似。
本申请实施例将累加缓存设计成了可独立复位的多寄存器缓存结构,并在每个运算模块中增加复位控制端口来接收输出的脉冲信号,依据脉冲信号触发复位操作,将累加缓存中的计算结果清除,以此满足了加速器针对脉冲神经网络中计算结果清零的要求。由于生成脉冲信号的数量是根据大于或等于预设阈值的计算结果的数量确定的,同时各个运算单元都设有独立的用于接收脉冲信号的复位控制端口,所以各个运算单元的复位操作可以独立进行,互不影响。实现了计算结果的局部清除或全部清除,同时在局部清除中,也不会对延缓其他运算模块的计算过程,无需额外的等待的时间。有效提高了脉冲神经网络推理计算的加速能力。
第三方面,图11是本申请实施例提供的一种基于脉冲神经网络的计算方法的流程图,如图11所示,本申请实施例提供了一种基于脉冲神经网络的计算方法,方法包括:
步骤S11,获取目标特征数据。
本申请实施例提供的方法应用于基于脉冲神经网络的加速器,目标特征数据的获取方式具体包括以下步骤A1-A4:
步骤A1,获取多个原始特征数据以及脉冲神经网络的多个权重值。
在本申请实施例中,原始特征数据可以是预先输入的特征数据,3×3的原始特征数据,3×3的权重值为脉冲神经网络卷积核对应的权重,如图12所示,脉冲神经网络的权重值包括:w1,w2,w3,w4,w5,w6,w7,w8,w9。
步骤A2,从多个权重值中获取原始特征数据中各个特征对应的目标权重值。
在本申请实施例中,首先确定原始特征数据中特征值“1”的位置,并根据该位置从多个权重值中获取相应的目标权重值。
作为一个示例,3×3的原始特征数据中第一行为1,0,1。第二行为0,1,0。第三行为1,0,1。3×3的权重值第一行为w1,w2,w3。第二行为w4,w5,w6。第三行为w7,w8,w9。此时确定原始特征数据中特征值“1”的位置,并确定每个特征值“1”对应的目标权重值,最终可以得到:
第一行各个特征值“1,0,1”对应的权重值为:“w1,0,w3”;
第二行各个特征值“0,1,0”对应的权重值为:“0,w5,0”;
第三行各个特征值“1,0,1”对应的权重值为:“w7,0,w9”。
步骤A3,利用目标权重值对原始特征数据中的特征进行替换,得到中间特征数据。
在本申请实施例中,在从多个权重值中确定原始特征数据中各个特征值对应的目标权重值后,利用目标权重值对特征进行替换,需要说明的是,替换过程中只对原始特征数据中特征值“1”进行替换。
作为一个示例,如图13所示:
3×3的原始特征数据A:第一行为1,0,1。第二行为0,1,0。第三行为1,0,1。
3×3的原始特征数据B:第一行为1,0,0。第二行为0,1,0。第三行为1,0,0。
3×3的原始特征数据C:第一行为0,0,0。第二行为0,1,0。第三行为0,0,0。
3×3的原始特征数据D:第一行为1,0,0。第二行为1,1,0。第三行为1,0,1。
3×3的权重值第一行为w1,w2,w3。第二行为w4,w5,w6。第三行为w7,w8,w9。
利用权重值对原始特征数据A,原始特征数据B,原始特征数据C,原始特征数据D进行替换,得到后中间特征数据A’,中间特征数据B’,中间特征数据C’,中间特征数据D’,具体过程如图14所示:
3×3的中间特征数据A’:第一行为w1,0,w3。第二行为0,w5,0。第三行为w7,0,w9。
3×3的中间特征数据B’:第一行为w1,0,0。第二行为0,w5,0。第三行为w7,0,0。
3×3的中间特征数据C’:第一行为0,0,0。第二行为0,w5,0。第三行为0,0,0。
3×3的中间特征数据D’:第一行为w1,0,0。第二行为w4,w5,0。第三行为w7,0,w9。
步骤A4,对各个中间特征数据中的特征进行重新排列,得到目标特征数据。
在本申请实施例中,由于加速器中位于第一层级的第一运算模块有三个,每个运算模块有三个输入端口,因此对于四路并行的中间特征数据需要进行重新排列。具体的,重新排列的过程包括:依次从每一路中间特征数据中抽取一个特征值,得到9组目标特征数据,将9组目标特征数据依次传递至第一运算模块的输入端口。
作为一个示例,四路并行的中间特征数据如下:
3×3的中间特征数据E:第一行为a1,a2,a3。第二行为a4,a5,a6。第三行为a7,a8,a9。
3×3的中间特征数据F:第一行为a1,b2,b3。第二行为b4,b5,b6。第三行为b7,b8,b9。
3×3的中间特征数据G:第一行为c1,c2,c3。第二行为c4,c5,c6。第三行为c7,c8,c9。
3×3的中间特征数据H:第一行为d1,d2,d3。第二行为d4,d5,d6。第三行为d7,d8,d9。
在本申请实施例中,对上述中间特征数据E,中间特征数据F,中间特征数据G以及中间特征数据H进行重新排列,得到排列后的9组目标特征数据包括:
(1)a1,b1,c1,d1。(2)a2,b2,c2,d2。(3)a3,b3,c3,d3。
(4)a4,b4,c4,d4。(5)a5,b5,c5,d5。(6)a6,b6,c6,d6。
(7)a7,b7,c7,d7。(8)a8,b8,c8,d8。(9)a9,b9,c9,d9。
步骤S12,将目标特征数据传输至脉冲神经网络,其中,脉冲神经网络包括位于第一层级的多个第一运算模块以及位于第二层级的第二运算模块。
在本申请实施例中,脉冲神经网络包括位于第一层级的多个第一运算模块以及位于第二层级的第二运算模块。
作为一个示例,脉冲神经网络如图15所示,脉冲神经网络包括位于第一层级的第一运算模块(即运算模块1,运算模块2以及运算模块3)。第二层级的第二运算模块为运算模块4,其中,运算模块1,运算模块2以及运算模块3分别与运算模块4的输入端口连接。
此时得到的9组目标特征数据如下:
(1)a1,b1,c1,d1。(2)a2,b2,c2,d2。(3)a3,b3,c3,d3。
(4)a4,b4,c4,d4。(5)a5,b5,c5,d5。(6)a6,b6,c6,d6。
(7)a7,b7,c7,d7。(8)a8,b8,c8,d8。(9)a9,b9,c9,d9。
将(1)a1,b1,c1,d1输入至运算模块1的输入端口k1。
将(2)a2,b2,c2,d2输入至运算模块1的输入端口k2。
将(3)a3,b3,c3,d3输入至运算模块1的输入端口k3。
将(4)a4,b4,c4,d4输入至运算模块2的输入端口j1。
将(5)a5,b5,c5,d5输入至运算模块2的输入端口j2。
将(6)a6,b6,c6,d6输入至运算模块2的输入端口j3。
将(7)a7,b7,c7,d7输入至运算模块3的输入端口v1。
将(8)a8,b8,c8,d8输入至运算模块3的输入端口v2。
将(9)a9,b9,c9,d9输入至运算模块3的输入端口v3。
基于此通过设计4个层级排布的运算模块,可以实现36个(即4个3X3)8bit数据的累加,平均每个运算模块可以执行9个8bit的不溢出的累加,极大的增强了每个运算模块利用效率。有效提高了脉冲神经网络推理计算的加速能力。
步骤S13,通过第一运算模块按照当前指定的运算模式对输入的目标特征数据进行运算,得到第一计算结果,并将第一计算结果传输至第二运算模块。
作为一个示例,如图15所示,当前指定的运算模式以累加模式进行说明,第一运算模块包括:运算模块1,运算模块2以及运算模块3。第二运算模块为运算模块4。
运算模块1的输入端口k1通过数组单元将a1,b1,c1,d1传输至加速器组,运算模块1的输入端口k2通过数组单元将a2,b2,c2,d2传输至加速器组s1,运算模块1的输入端口k3将a3,b3,c3,d3传输至加速器组s1,加速器组s1基于a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,d3执行累加运算,并将计算结果q1传输至运算模块4。
运算模块2的输入端口j1通过数组单元将a4,b4,c4,d4传输至加速器组s2,运算模块1的输入端口j2通过数组单元将a5,b5,c5,d5传输至加速器组s2,运算模块2的输入端口j3将a6,b6,c6,d6传输至加速器组s2,加速器组基于a4,b4,c4,d4,a5,b5,c5,d5,a6,b6,c6,d6执行累加运算,并将计算结果q2传输至运算模块4。
运算模块3的输入端口v1通过数组单元将a7,b7,c7,d7传输至加速器组s3,运算模块1的输入端口v2通过数组单元将a8,b8,c8,d8传输至加速器组s3,运算模块1的输入端口v3将a9,b9,c9,d9传输至加速器组s3,加速器组基于a7,b7,c7,d7,a8,b8,c8,d8,a9,b9,c9,d9执行累加运算,并将计算结果q3传输至运算模块4。
第一计算结果包括:计算结果q1,计算结果q2,计算结果q3。
步骤S14,通过第二运算模块按照当前指定的运算模式对各个第一运算模块输出的第一计算结果进行运算,得到第二计算结果。
作为一个示例,如图15所示,运算模块4的输入端口u1接收运算模块1传输的计算结果q1,输入端口u2接收运算模块2传输的计算结果q2,输入端口u3接收运算模块3传输的计算结果q3。
运算模块4的输入端口u1将计算结果q1传递至加速器s4,运算模块4的输入端口u2将计算结果q2传递至加速器s4,运算模块4的输入端口u3将计算结果q3传递至加速器s4,加速器组s4基于计算结果q1,计算结果q2以及计算结果q3执行累加运算,得到最终的计算结果(即第二计算结果)。
步骤S15,基于第一计算结果以及第二计算结果输出脉冲信号。
在本申请实施例中,基于第一计算结果以及第二计算结果输出脉冲信号,包括:分别将第一计算结果与第二计算结果与预设阈值进行对比,得到对比结果;在对比结果为第一计算结果与第二计算结果中至少一个计算结果大于或等于预设阈值的情况下,输出相应数量的脉冲信号。
作为一个示例:如图15所示,运算模块4会将计算结果q1,计算结果q2,计算结果q3以及计算结果q4传递至处理模块r,处理模块r将计算结果q1,计算结果q2,计算结果q3以及计算结果q4分别与阈值进行对比,从而确定第一计算结果与第二计算结果是否大于阈值,如果大于预设阈值,则根据大于预设阈值的计算结果的数量生成脉冲信号。如果当前4个计算结果都大于预设阈值,则输出4个脉冲信号。如果当前3个计算结果都大于预设阈值,则输出3个脉冲信号。
本申请实施例提供的方法通过层级结构排列的运算模块,可以实现36(4个3×3)个8bit数据的累加器,平均每个运算模块可以执行9个8bit数据的不溢出的累加,增强了运算模块利用效率,同时每个运算模块能够支持不同的运算模式对特征数据进行计算,进一步提高了计算效率。
在本申请实施例中,方法还包括:将第一计算结果与第二计算结果中小于预设阈值的计算结果确定为第三计算结果,并将第三计算结果对应的运算模块确定为第一目标运算模块;控制第一目标运算模块继续执行运算操作,直至得到的计算结果大于或等于预设阈值。
作为一个示例,第一计算结果包括:计算结果q1,计算结果q2,计算结果q3,第二计算结果为计算结果q4,如果计算结果n1,计算结果n2,计算结果n3,计算结果n4均小于预设阈值,则处理模块不输出脉冲信号,而输出运算指令至第一目标运算模块,第一目标运算模块包括:全部的第一运算模块和第二运算模块。此时第一目标运算模块继续根据运算指令执行相应的运算,直至得到的计算结果大于或等于预设阈值。
或者,如果计算结果q1和计算结果q22小于预设阈值,第一目标运算模块包括:计算结果q1和计算结果q2对应的第一运算模块。此时第一目标运算模块继续根据运算指令继续执行运算,直至得到的计算结果大于或等于预设阈值。
在本申请实施例中,方法还包括:将第一计算结果与第二计算结果中大于或等于预设阈值的计算结果确定为第四计算结果,并将第四计算结果对应的运算模块确定为第二目标运算模块;控制第二目标运算模块执行复位操作,其中,复位操作用于将第二目标运算模块中累加缓存所缓存的计算结果清零。
作为一个示例,第一计算结果包括:计算结果q1,计算结果q2,计算结果q3,第二计算结果为计算结果q4,如果计算结果q1,计算结果q2,计算结果q3,计算结果q4均大于或等于预设阈值,则处理模块会输出4个脉冲信号至第二目标运算模块,此时第二目标运算模块包括:全部的第一运算模块和第二运算模块,第二目标运算模块的复位控制端口接收到脉冲信号后,将脉冲信号发送至相应的累加缓存,以用于清除累加缓存中存储的计算结果。
或者,如果计算结果q1以及计算结果q2大于或等于预设阈值,则处理模块会输出2个脉冲信号至第二目标运算模块,此时第二目标运算模块包括:计算结果q1以及计算结果q2对应的第一运算模块。计算结果q1和计算结果q2对应的第一运算模块中的复位控制端口接收到脉冲信号后,将脉冲信号发送至相应的累加缓存,以用于清除累加缓存中存储的计算结果。最终,计算结果q1和计算结果q2对应的第一运算模块中累加缓存存储的计算结果被清除。计算结果n3对应的第一运算模块和计算结果n4对应的第二运算模块继续进行运算。同理,处理模块输出1个脉冲信号或者3个脉冲信号与上述过程相似。
本申请实施例提供的方法通过对计算结果大于预设阈值的运算模块执行复位操作,以清除该运算模块中累加缓存所存储的计算结果,同时各个运算单元的复位操作可以独立进行,互不影响。实现了计算结果的局部清除或全部清除,同时在局部清除中,也不会对延缓其他运算模块的计算过程,无需额外的等待的时间。有效提高了脉冲神经网络推理计算的加速能力。
例如:运算模块1的计算结果达到阈值,会发出1个脉冲信号,同时输出的脉冲信号与运算模块1的复位控制端口连接,以此复位控制端口可以根据脉冲信号执行复位,即清除运算模块1中累加缓存中的计算结果,层级结构的4个运算模块中累加缓存所存储的计算结果,都可以通过脉冲信号清除,并不会影响其他运算模块中间结果的缓存结果。
在本实施例中还提供了一种基于脉冲神经网络的计算装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种基于脉冲神经网络的计算装置,如图16所示,包括:
获取模块21,用于获取目标特征数据;
传输模块22,用于将目标特征数据传输至脉冲神经网络,其中,脉冲神经网络包括位于第一层级的多个第一运算模块以及位于第二层级的第二运算模块;
第一运算模块23,用于通过第一运算模块按照当前指定的运行模式对输入的目标特征数据进行运算,得到第一计算结果,并将第一计算结果传输至第二运算模块;
第二运算模块24,用于通过第二运算模块按照当前指定的运行模式对各个第一运算模块输出的第一计算结果进行运算,得到第二计算结果;
输出模块24,用于基于第一计算结果以及第二计算结果输出脉冲信号。
在本申请实施例中,获取模块21,用于获取多个原始特征数据以及脉冲神经网络的多个权重值;从多个权重值中获取原始特征数据中各个特征对应的目标权重值;利用目标权重值对原始特征数据中的特征进行替换,得到中间特征数据;对各个中间特征数据中的特征进行重新排列,得到目标特征数据。
在本发明一个实施例中,输出模块24,用于分别将第一计算结果与第二计算结果与预设阈值进行对比,得到对比结果;在对比结果为第一计算结果与第二计算结果中任意一个计算结果大于或等于预设阈值的情况下,输出脉冲信号。
在本发明一个实施例中,一种基于脉冲神经网络的计算装置还包括:控制模块,用于将第一计算结果与第二计算结果中小于预设阈值的计算结果确定为第三计算结果,并将第三计算结果对应的运算模块确定为第一目标运算模块;控制第一目标运算模块继续执行运算操作,直至得到的计算结果大于或等于预设阈值。
在本发明一个实施例中,一种基于脉冲神经网络的计算装置还包括:复位模块,用于将第一计算结果与第二计算结果中大于或等于预设阈值的计算结果确定为第四计算结果,并将第四计算结果对应的运算模块确定为第二目标运算模块;控制第二目标运算模块执行复位操作,其中,复位操作用于将第二目标运算模块中累加缓存所缓存的计算结果清零。
请参阅图17,图17是本发明可选实施例提供的一种计算机设备的结构示意图,如图17所示,该计算机设备包括:一个或多个处理器1001、存储器2001,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。
处理器1001可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,所述存储器2001存储有可由至少一个处理器1001执行的指令,以使所述至少一个处理器1001执行实现上述实施例示出的方法。
存储器2001可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种小程序落地页的展现的计算机设备的使用所创建的数据等。此外,存储器2001可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器2001可选包括相对于处理器1001远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器2001可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器2001还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口3001,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (18)

1.一种运算模块,其特征在于,所述运算模块包括:输入端口,数组单元,计算单元以及输出端口,所述计算单元包括乘法器以及累加器,所述累加器包括:加法器组以及累加缓存,
所述输入端口,用于向数组单元传输特征数据;
所述数组单元,用于获取所述运算模块当前指定的运算模式,从计算单元中选择与所述运算模式相匹配的目标计算单元,并将所述特征数据传输至所述目标计算单元;
所述目标计算单元,用于根据所述特征数据进行计算,并将得到的目标计算结果传输至所述输出端口;
所述输出端口,用于输出所述目标计算结果;
所述运算模块还包括:复位控制端口,所述复位控制端口分别连接所述累加缓存中的各个寄存器;
所述复位控制端口,用于基于脉冲信号生成复位指令,并将所述复位指令传递至所述累加器中的累加缓存,其中,所述脉冲信号在所述目标计算结果大于或等于预设阈值的情况下生成的;
所述累加缓存,用于响应所述复位指令,清除当前存储的计算结果。
2.根据权利要求1所述的运算模块,其特征在于,所述乘法器的输入端与所述数组单元的输出端连接,所述累加器的输入端分别连接所述乘法器的输出端以及所述数组单元的输出端,所述累加器的输出端与所述输出端口连接。
3.根据权利要求2所述的运算模块,其特征在于,所述输入端口包括:第一输入端口以及第二输入端口,所述第一输入端口与所述数组单元连接,所述第二输入端口与所述累加器的输入端连接,其中,所述第二输入端口为级联输入端口。
4.根据权利要求3所述的运算模块,其特征在于,所述加法器组的输入端分别连接所述数组单元的输出端以及所述乘法器的输出端,所述加法器组的输出端连接所述累加缓存,所述累加缓存中包括多个寄存器,所述寄存器用于存储所述加法器组输出的计算结果。
5.根据权利要求4所述的运算模块,其特征在于,所述运算模式包括:乘加模式以及累加模式。
6.根据权利要求5所述的运算模块,其特征在于,在所述运算模式为乘加模式的情况下,所述第一输入端口,用于向所述数组单元传输第一特征数据;
所述数组单元,用于根据所述乘加模式将所述乘法器以及所述累加器作为所述目标计算单元,并将所述第一特征数据传输至所述乘法器;
所述乘法器,用于对所述第一特征数据进行运算,得到第一计算结果,并将所述第一计算结果传输至所述累加器中的加法器组;
所述加法器组,用于根据所述第一计算结果以及第二特征数据进行累加计算,得到目标计算结果,并将所述目标计算结果传递至所述累加器中的累加缓存,其中,所述第二特征数据为所述第二输入端口传输至所述累加器的特征数据;
所述累加缓存,用于将所述目标计算结果存储至相应的寄存器。
7.根据权利要求5所述的运算模块,其特征在于,在所述运算模式为累加模式的情况下,所述第一输入端口,用于向所述数组单元传输第一特征数据;
所述数组单元,用于根据所述累加模式将所述累加器作为所述目标计算单元,并将所述第一特征数据传输至所述累加器中的加法器组;
所述加法器组,用于根据所述第一特征数据以及第二特征数据进行累加计算,得到所述目标计算结果,并将所述目标计算结果存储至所述累加器中的累加缓存,其中,所述第二特征数据为所述第二输入端口传输至所述累加器的特征数据;
所述累加缓存,用于将所述目标计算结果存储至相应的寄存器。
8.一种基于脉冲神经网络的加速器,其特征在于,所述脉冲神经网络包括位于第一层级的多个第一运算模块以及位于第二层级的第二运算模块,每个所述第一运算模块的输出端与所述第二运算模块上的输入端一一对应,所述第一运算模块和所述第二运算模块为所述权利要求1-7任意一项所述的运算模块;
所述第一运算模块,用于按照当前指定的运行模式对输入的目标特征数据进行运算,得到第一计算结果,并将所述第一计算结果传输至所述第二运算模块;
所述第二运算模块,用于按照当前指定的运行模式对各个所述第一运算模块输出的第一计算结果进行运算,得到第二计算结果,并基于所述第一计算结果以及所述第二计算结果输出脉冲信号。
9.根据权利要求8所述的加速器,其特征在于,所述加速器还包括:处理模块,所述处理模块的输入端与所述第二运算模块的输出端连接;
所述处理模块,用于分别将所述第一计算结果与所述第二计算结果与预设阈值进行对比,得到对比结果,并根据所述对比结果执行相应的处理操作。
10.根据权利要求9所述的加速器,其特征在于,所述处理模块,用于在所述对比结果为所述第一计算结果与所述第二计算结果中至少一个计算结果大于或等于所述预设阈值的情况下,输出相应数量的脉冲信号。
11.根据权利要求9所述的加速器,其特征在于,所述处理模块,用于在所述对比结果为所述第一计算结果与所述第二计算结果中至少一个计算结果小于所述预设阈值的情况下,生成相应数量的运算指令,并发送所述运算指令至第一目标运算模块,其中,所述第一目标运算模块为第三计算结果对应的运算模块,所述第三计算结果为所述第一计算结果与所述第二计算结果中小于所述预设阈值的计算结果;
所述第一目标运算模块,用于响应所述运算指令,继续执行运算操作,直至得到的计算结果大于或等于所述预设阈值。
12.根据权利要求10所述的加速器,其特征在于,所述处理模块,用于根据所述脉冲信号生成复位指令,发送所述复位指令至第二目标运算模块,其中,所述第二目标运算模块为第四计算结果对应的运算模块,所述第四计算结果为所述第一计算结果与所述第二计算结果中大于或等于所述预设阈值的计算结果;
所述第二目标运算模块,用于响应所述复位指令,将所述第二目标运算模块中累加缓存所缓存的计算结果清零。
13.一种基于脉冲神经网络的计算方法,其特征在于,所述方法包括:
获取目标特征数据;
将所述目标特征数据传输至脉冲神经网络,其中,所述脉冲神经网络包括位于第一层级的多个第一运算模块以及位于第二层级的第二运算模块;
通过所述第一运算模块按照当前指定的运算模式对输入的目标特征数据进行运算,得到第一计算结果,并将所述第一计算结果传输至所述第二运算模块;
通过所述第二运算模块按照当前指定的运算模式对各个所述第一运算模块输出的第一计算结果进行运算,得到第二计算结果;
基于所述第一计算结果以及所述第二计算结果输出脉冲信号;
所述方法还包括:
将所述第一计算结果与所述第二计算结果中大于或等于所述预设阈值的计算结果确定为第四计算结果,并将所述第四计算结果对应的运算模块确定为第二目标运算模块;
控制所述第二目标运算模块执行复位操作,其中,所述复位操作用于将所述第二目标运算模块中累加缓存所缓存的计算结果清零。
14.根据权利要求13所述的方法,其特征在于,所述获取目标特征数据,包括:
获取多个原始特征数据以及脉冲神经网络的多个权重值;
从所述多个权重值中获取所述原始特征数据中各个特征对应的目标权重值;
利用所述目标权重值对所述原始特征数据中的特征进行替换,得到中间特征数据;
对各个所述中间特征数据中的特征进行重新排列,得到所述目标特征数据。
15.根据权利要求13所述的方法,其特征在于,所述基于所述第一计算结果以及所述第二计算结果输出脉冲信号,包括:
分别将所述第一计算结果与所述第二计算结果与预设阈值进行对比,得到对比结果;
在所述对比结果为所述第一计算结果与所述第二计算结果中至少一个计算结果大于或等于所述预设阈值的情况下,输出相应数量的脉冲信号。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
将所述第一计算结果与所述第二计算结果中小于所述预设阈值的计算结果确定为第三计算结果,并将所述第三计算结果对应的运算模块确定为第一目标运算模块;
控制所述第一目标运算模块继续执行运算操作,直至得到的计算结果大于或等于所述预设阈值。
17.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求13至16中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求13至16中任一项所述的方法。
CN202311304317.XA 2023-10-10 2023-10-10 一种运算模块、基于脉冲神经网络的加速器及方法 Active CN117057403B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311304317.XA CN117057403B (zh) 2023-10-10 2023-10-10 一种运算模块、基于脉冲神经网络的加速器及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311304317.XA CN117057403B (zh) 2023-10-10 2023-10-10 一种运算模块、基于脉冲神经网络的加速器及方法

Publications (2)

Publication Number Publication Date
CN117057403A CN117057403A (zh) 2023-11-14
CN117057403B true CN117057403B (zh) 2024-02-13

Family

ID=88657520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311304317.XA Active CN117057403B (zh) 2023-10-10 2023-10-10 一种运算模块、基于脉冲神经网络的加速器及方法

Country Status (1)

Country Link
CN (1) CN117057403B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018107476A1 (zh) * 2016-12-16 2018-06-21 华为技术有限公司 访存设备、计算设备和应用于卷积神经网络运算的设备
CN108665064A (zh) * 2017-03-31 2018-10-16 阿里巴巴集团控股有限公司 神经网络模型训练、对象推荐方法及装置
CN112488908A (zh) * 2020-12-18 2021-03-12 时擎智能科技(上海)有限公司 一种计算装置、计算方法、存储介质及终端
WO2022037257A1 (zh) * 2020-08-18 2022-02-24 腾讯科技(深圳)有限公司 卷积计算引擎、人工智能芯片以及数据处理方法
CN116720551A (zh) * 2023-08-02 2023-09-08 苏州浪潮智能科技有限公司 脉冲神经网络的卷积加速方法及卷积加速器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018107476A1 (zh) * 2016-12-16 2018-06-21 华为技术有限公司 访存设备、计算设备和应用于卷积神经网络运算的设备
CN108665064A (zh) * 2017-03-31 2018-10-16 阿里巴巴集团控股有限公司 神经网络模型训练、对象推荐方法及装置
WO2022037257A1 (zh) * 2020-08-18 2022-02-24 腾讯科技(深圳)有限公司 卷积计算引擎、人工智能芯片以及数据处理方法
CN112488908A (zh) * 2020-12-18 2021-03-12 时擎智能科技(上海)有限公司 一种计算装置、计算方法、存储介质及终端
CN116720551A (zh) * 2023-08-02 2023-09-08 苏州浪潮智能科技有限公司 脉冲神经网络的卷积加速方法及卷积加速器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种细粒度可重构的深度神经网络加速芯片;刘晏辰;刘洋;;半导体技术(01);第32-37页 *

Also Published As

Publication number Publication date
CN117057403A (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
CN107608715B (zh) 用于执行人工神经网络正向运算的装置及方法
US10949328B2 (en) Data flow graph computation using exceptions
US10872290B2 (en) Neural network processor with direct memory access and hardware acceleration circuits
US5524175A (en) Neuro-computer system for executing a plurality of controlling algorithms
CN110689126A (zh) 一种用于执行神经网络运算的装置
JPH0749770A (ja) 演算装置
CN110516810B (zh) 一种量子程序的处理方法、装置、存储介质和电子装置
CN115880132B (zh) 图形处理器、矩阵乘法任务处理方法、装置及存储介质
CN108845828B (zh) 一种协处理器、矩阵运算加速方法及系统
CN109710213A (zh) 一种稀疏矩阵加速计算方法、装置、设备及其系统
CN109739556B (zh) 一种基于多并行缓存交互及计算的通用深度学习处理器
CN110689045A (zh) 一种深度学习模型的分布式训练方法及装置
CN108053361B (zh) 多互连视觉处理器及采用其的图像处理方法
CN117057403B (zh) 一种运算模块、基于脉冲神经网络的加速器及方法
CN107678781B (zh) 处理器以及用于在处理器上执行指令的方法
EP4075280A1 (en) Technology for dynamically tuning processor features
CN112230994A (zh) 一种计算方法及相关产品
CN108255463B (zh) 一种数字逻辑运算方法、电路和fpga芯片
US8332596B2 (en) Multiple error management in a multiprocessor computer system
CN109343826B (zh) 一种面向深度学习的可重构处理器运算单元
CN111461340A (zh) 权重矩阵的更新方法、装置及电子设备
CN111124358A (zh) 一种序列累加器的运算方法和设备
TWI740761B (zh) 數據處理裝置、人工智能晶片
CN115329950A (zh) 一种神经元计算核及系统
CN111260536B (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
GR01 Patent grant
GR01 Patent grant