CN116402106B - 神经网络加速方法、神经网络加速器、芯片及电子设备 - Google Patents
神经网络加速方法、神经网络加速器、芯片及电子设备 Download PDFInfo
- Publication number
- CN116402106B CN116402106B CN202310666477.2A CN202310666477A CN116402106B CN 116402106 B CN116402106 B CN 116402106B CN 202310666477 A CN202310666477 A CN 202310666477A CN 116402106 B CN116402106 B CN 116402106B
- Authority
- CN
- China
- Prior art keywords
- binary
- neural network
- bit
- vectors
- log
- 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
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 113
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000001133 acceleration Effects 0.000 title claims abstract description 15
- 239000013598 vector Substances 0.000 claims abstract description 184
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 38
- 238000009825 accumulation Methods 0.000 claims abstract description 32
- 230000004044 response Effects 0.000 claims abstract description 5
- 239000003990 capacitor Substances 0.000 claims description 30
- 238000000605 extraction Methods 0.000 claims description 8
- 230000000295 complement effect Effects 0.000 claims description 7
- 229910002056 binary alloy Inorganic materials 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 5
- 238000003491 array Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 102000016917 Complement C1 Human genes 0.000 description 2
- 108010028774 Complement C1 Proteins 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及神经网络加速方法、加速器、芯片及电子设备,所述方法包括:响应于数据接收指令,接收二进制向量形式的待处理数据;响应于神经网络运算指令,对所述的二进制向量基于神经网络算法进行运算处理;所述的对所述的二进制向量基于神经网络算法进行运算处理,包括,对所述的二进制向量进行点积运算,包括:对m元素n bit的二进制向量中的所有元素进行按位提取,获得n个m元素的单bit向量;将所述的n个m元素的单bit向量分别与m元素x bit向量相乘;将所述向量相乘的结果按位进行加法运算,然后进行移位操作;最后将所述移位操作的结果送入二进制累加器进行累加获得处理结果。本申请可以提高神经网络的运算效率并降低功耗。
Description
技术领域
本申请涉及人工智能技术领域,尤其是涉及一种神经网络加速方法、神经网络加速器、芯片及电子设备。
背景技术
近年来,随着大数据技术的不断发展,尤其是人工智能领域需要大数据的支撑,神经网络算法在越来越多的领域得到了广泛的应用,比如自动驾驶、AR、VR、模式识别、图像分析、智能机器人等等。
所以,诸多领域需要用到神经网络加速器(NPU,Neural-network ProcessingUnit),相较于传统的中央处理器CPU以及图形处理器GPU,NPU具有更高数量级的并行计算单元。
面对所述的大数据处理场景,为了更快的获得处理结果,并节约成本,那么对神经网络算法的运算速度和功耗就提出了更高的要求。而现有的神经网络处理装置实现神经网络运算中的点积运算时,对于多元素多bit向量的运算效率非常低,同时功耗较高,从而导致利用所述神经网络算法进行数据处理的效率较低,同时功耗较高。因此有待进一步改进。
发明内容
为了提高神经网络处理装置的运算效率,同时降低其功耗,本申请提供一种神经网络加速方法、神经网络加速器、芯片及电子设备。
第一方面,本申请提供的一种神经网络加速方法采用如下的技术方案:
一种神经网络加速方法,包括:
响应于数据接收指令,接收二进制向量形式的待处理数据,所述二进制向量为m元素n bit的向量,所述的m、n为任意整数;响应于神经网络运算指令,对所述的二进制向量基于神经网络算法进行运算处理;
或响应于数据接收指令,接收二进制向量形式的待处理数据,并将所述待处理数据存入存储器中,所述二进制向量为m元素n bit的向量,所述的m、n为任意整数;调取所述存储器中的二进制向量,对所述的二进制向量基于神经网络算法进行运算处理;
其中,所述的对所述的二进制向量基于神经网络算法进行运算处理,包括,对所述的二进制向量进行点积运算,具体包括:
对m元素n bit的二进制向量中的所有元素进行按位提取,获得n个m元素的单bit向量;
将所述的n个m元素的单bit向量分别与m元素x bit向量相乘;
将所述向量相乘的结果按位进行加法运算,然后进行移位操作(即乘以权重);
将所述移位操作的结果送入二进制累加器进行累加获得处理结果。
通过采用上述方法步骤,尤其是对m元素n bit的二进制向量中的所有元素进行按位提取,获得n个m元素的单bit向量,然后再将所述的n个m元素的单bit向量分别与m元素xbit向量相乘,再将所述向量相乘的结果按位进行加法运算,然后进行移位操作,并送入二进制累加器进行累加,使得对于多元素多bit向量的整个二进制点积处理的过程更加简单、高效,从而大大提升了对所述的二进制向量基于神经网络算法进行运算处理的运算效率,同时降低了系统功耗。
优选的,在步骤将所述向量相乘的结果按位进行加法运算和进行移位操作之间,还包括:
将所述加法运算结果用二进制表示;
对所述用二进制表示的结果进行按位提取。
通过采用上述技术方案,从而使得对所述的二进制向量基于神经网络算法进行运算处理时,可以更加高效、低功耗的处理无符号二进制向量与无符号二进制向量的点积运算。
优选的,在步骤将所述移位操作的结果送入二进制累加器进行累加之前,还包括:
对送入二进制累加器的以补码表示的二进制数据进行位数扩展操作。
通过采用上述技术方案,从而使得对所述的二进制向量基于神经网络算法进行运算处理时,可以处理无符号二进制向量与有符号二进制向量的点积运算。
优选的,具体需要扩展的位数y通过以下方法获得:y=。
通过采用上述技术方案,从而可以获得满足需求的扩展位数,同时减少系统开销。
优选的,在步骤对所述用二进制表示的结果进行按位提取之后,还包括:对最高位按位取反加1。
通过采用上述技术方案,从而使得对所述的二进制向量基于神经网络算法进行运算处理时,可以处理有符号二进制向量与有符号二进制向量的点积运算。
优选的,所述的n≥4,m≥5时,采用本申请的技术方案可以大大提升对所述的二进制向量基于神经网络算法进行运算处理的运算效率,同时降低系统功耗。
第二方面,本申请提供的一种神经网络加速器采用如下的技术方案:
一种神经网络加速器,包括:
数据接收及处理模块,用于响应于数据接收指令,接收二进制向量形式的待处理数据;或响应于数据接收指令,接收二进制向量形式的待处理数据,并将所述待处理数据存入存储器中;所述二进制向量为m元素n bit的向量,所述的m、n为任意整数;
神经网络处理模块,与所述的数据接收及处理模块连接,用于响应于神经网络运算指令,对所述的二进制向量基于神经网络算法进行运算处理;或响应于神经网络运算指令,调取所述存储器中的二进制向量,对所述的二进制向量基于神经网络算法进行运算处理;
所述的神经网络处理模块包括:
m*n单bit乘法器,用于将n个m元素的单bit向量分别与m元素x bit向量相乘;所述的n个m元素的单bit向量由对m元素n bit的二进制向量中的所有元素进行按位提取获得;
n路m输入混合信号加法器,与所述m*n单bit乘法器相连,用于将所述向量相乘的结果按位进行加法运算;
移位寄存器,与所述n路m输入混合信号加法器相连,用于对n路m输入混合信号加法器的输出结果进行移位操作;
二进制累加器,与移位寄存器相连,用于对移位寄存器的输出结果进行累加获得处理结果。
通过采用以上技术方案,尤其是利用所述的m*n单bit乘法器、n路m输入混合信号加法器、移位寄存器及二进制累加器,从而使得神经网络算法中对于多元素多bit向量的二进制点积处理的过程更加简单、高效,进而大大提升了对所述的二进制向量基于神经网络算法进行运算处理的运算效率,同时降低了系统功耗。
优选的,所述的n路m输入混合信号加法器包括:n个单路m输入混合信号累加器,所述的单路m输入混合信号累加器包括并联连接的电容、与各个电容一端分别串联连接的选择开关和信号输入端口以及与各个电容另一端分别连接的比较器;利用所述的信号输入端口将m个输入值通过电容电荷的方式采样到电容阵列上,电容阵列上的总电荷等效于m个输入累加的结果;再利用逐次逼近型ADC原理,结合选择开关和比较器,将所述电容阵列上的总电荷转换为累加结果的二进制输出,输出时从高位到低位依次输出。
通过采用上述技术方案来实现n路m输入混合信号加法器,其与m*n单bit乘法器都是基于存内计算硬件实现,属于存算一体的架构,因而不需要额外单独的累加器,节省了面积和功耗。
更优选的 ,所述的利用逐次逼近型ADC原理,结合选择开关和比较器,将所述电容阵列上的总电荷转换为累加结果的二进制输出,输出时从高位到低位依次输出,包括:
将所述电容阵列与所有信号输入端口以及电源(Vcm)断开,将m个电容组合成log2m位二进制权重电容阵列,上极板全接在一起连到比较器的负向输入端,比较器的正向输入端连接所述电源(Vcm);
将第 [(log2m)-1]位接“1”,低于[(log2m)-1]位全部接“0”;读取比较器输出端Out的值,若Out=1,则第 [(log2m)-1]位保持为1;若Out=0,则第 [(log2m)-1]位变为0;第[(log2m)-1]位的值确定后,在后续的步骤中保持不变;(1相当于接通电源,0相当于接地)
将第 [(log2m)-2]位接“1”,低于 [(log2m)-2]位全部接“0”;读取比较器输出端Out的值,若Out=1,则第 [(log2m)-2]位保持为1;若Out=0,则第 [(log2m)-2]位变为0;第[(log2m)-2]位的值确定后,在后续的步骤中保持不变;
以此类推,直至得到最低位的值;
以上步骤中依次输出的Out值则为累加结果的由高位到低位的二进制输出。
优选的,所述的神经网络处理模块还包括:
选择电路,所述的选择电路分别与n路m输入混合信号加法器和移位寄存器相连,用于控制取反使能作用的开启或关闭。
通过采用以上技术方案,从而使得神经网络加速器能够同时适用于无符号向量与无符号向量的点积运算、有符号向量与有符号向量的点积运算以及有符号向量与无符号向量的点积运算,可根据实际的需求进行模式选择。
优选的,所述的神经网络处理模块还包括:二进制位数扩展电路,所述的二进制位数扩展电路包括buffer和高位选择器,低位直接原值输入经buffer输出,高位选择器根据输入是无符号或有符号数,将0或者输入最高位的值输出,高低位共同实现将nbit二进制数扩展为ybit二进制数,其中y>n。
通过采用上述技术方案,从而使得本申请的神经网络加速器能够实现进行有符号向量与无符号向量的点积运算,并且电路简单,成本低。
第三方面,本申请提供的一种芯片采用如下的技术方案:
一种芯片,包括前述的神经网络加速器。
第四方面,本申请提供的一种电子设备采用如下的技术方案:
一种电子设备,包括如前述的神经网络加速器或者如前述的芯片。
综上所述,本申请包括以下至少一种有益技术效果:
本申请中,尤其是对m元素n bit的二进制向量中的所有元素进行按位提取,获得n个m元素的单bit向量,然后再将所述的n个m元素的单bit向量分别与m元素x bit向量相乘,再将所述向量相乘的结果按位进行加法运算,然后进行移位操作,并送入二进制累加器进行累加,使得对于多元素多bit向量的整个二进制点积处理的过程更加简单、高效,从而大大提升了对所述的二进制向量基于神经网络算法进行运算处理的运算效率,同时降低了系统功耗。
本申请中,在步骤将所述向量相乘的结果按位进行加法运算和进行移位操作之间,通过采用步骤将所述加法运算结果用二进制表示;对所述用二进制表示的结果进行按位提取,从而使得对所述的二进制向量基于神经网络算法进行运算处理时,可以更加高效、低功耗的处理无符号二进制向量与无符号二进制向量的点积运算。
本申请的神经网络加速器实现了“两无符号向量点积运算”,“无符号数与有符号向量点积运算”和“双有符号向量点积运算”,并在单个系统实现了同时支持。
附图说明
图1是本申请的一种实施例中的神经网络加速方法的方法流程图。
图2是本申请的一种实施例中的两个无符号二进制向量点积算法的方法流程图。
图3是本申请的另一种实施例中的两个无符号二进制向量点积算法的方法流程图。
图4是本申请的另一种实施例中的无符号二进制向量与有符号二进制向量的点积算法的方法流程图。
图5是本申请的另一种实施例中的两个有符号二进制向量的点积算法的方法流程图。
图6是本申请的一种实施例中的神经网络处理模块的示意框图。
图7是本申请实施例的工作原理中采用方法1的示例计算方法流程图。
图8是本申请实施例的工作原理中采用方法2的示例计算方法流程图。
图9是本申请实施例的工作原理中采用方法3的示例计算方法流程图。
图10是本申请实施例的工作原理中采用方法4的示例计算方法流程图。
图11-图12是单路m输入混合信号累加器的电路原理图。
图13是二进制位数扩展电路的电路原理图。
具体实施方式
以下结合附图1-图13对本申请作进一步详细说明。
在很多数据的处理中,尤其是在神经网络的运算处理中,需要实现2个向量[A0,A1,A2,...,An-1]和[W0,W1,W2,...,Wn-1]的点积运算:“A0*W0+A1W1+A2*W2+...+An-1*Wn-1”,而用电子系统实现时,数据通常只能以二进制的形式存储和运算,所以需要实现相应二进制向量的点积运算。点积运算最简单的实现方式是基于已有的基本运算单元:“二进制乘法器”和“累加器”,将需要的乘法和累加运算逐步实现,但用这种通用运算单元实现点积的计算是非常低效且高功耗的,也即使得神经网络算法的计算比较低效且高功耗。为了实现更高效率和更低功耗的神经网络运算,可以采用本申请的以下技术方案。
本申请实施例公开一种神经网络加速方法。参照图1,一种神经网络加速方法,包括:
S1’,响应于数据接收指令,接收二进制向量形式的待处理数据,所述二进制向量为m元素n bit的向量,所述的m、n为任意整数;
S2’,响应于神经网络运算指令,对所述的二进制向量基于神经网络算法进行运算处理;
或
S1,响应于数据接收指令,接收二进制向量形式的待处理数据,并将所述待处理数据存入存储器中,所述二进制向量为m元素n bit的向量,所述的m、n为任意整数;
S2,调取所述存储器中的二进制向量,对所述的二进制向量基于神经网络算法进行运算处理;
其中,步骤S2’或S2中所述的对所述的二进制向量基于神经网络算法进行运算处理,包括,对所述的二进制向量进行点积运算,具体包括(如图2所示):
S21,对m元素n bit的二进制向量中的所有元素进行按位提取,获得n个m元素的单bit向量;
S22,将所述的n个m元素的单bit向量分别与m元素x bit向量相乘;
S23,将所述向量相乘的结果按位进行加法运算,然后进行移位操作(即乘以权重);
S24,将所述移位操作的结果送入二进制累加器进行累加获得处理结果。
通过以上步骤实现的向量点乘运算,相对于传统的点积运算方法,减少了运算过程、大大提高了运算效率、且降低了系统功耗,进而提高了神经网络处理装置的运算效率,同时降低了其功耗。
为了进一步提升神经网络处理装置的运算效率,同时降低其功耗,在步骤S23中,将所述向量相乘的结果按位进行加法运算和进行移位操作之间,还包括(如图3所示):
将所述加法运算结果用二进制表示;
对所述用二进制表示的结果进行按位提取。
为了使得神经网络处理装置能够同时实现对无符号向量与有符号向量的高效、低功耗的点积运算,在步骤S24中将所述移位操作的结果送入二进制累加器进行累加之前,还包括(如图4所示):
对送入二进制累加器的以补码表示的二进制数据进行位数扩展操作。
在某一实施例中,具体需要扩展的位数y可通过以下方法获得:y=。
在其他实施例中,还可以在此基础上,进一步增加冗余位。
进一步的,为了使得神经网络处理装置能够同时实现对有符号向量与有符号向量的高效、低功耗的点积运算,在步骤对所述用二进制表示的结果进行按位提取之后,如图5所示,还包括:对最高位按位取反加1。
本实施例还公开一种神经网络加速器。一种神经网络加速器,包括:
数据接收及处理模块,用于响应于数据接收指令,接收二进制向量形式的待处理数据;或响应于数据接收指令,接收二进制向量形式的待处理数据,并将所述待处理数据存入存储器中;所述二进制向量为m元素n bit的向量,所述的m、n为任意整数;
神经网络处理模块,与所述的数据接收及处理模块连接,用于响应于神经网络运算指令,对所述的二进制向量基于神经网络算法进行运算处理;或响应于神经网络运算指令,调取所述存储器中的二进制向量,对所述的二进制向量基于神经网络算法进行运算处理;
所述的神经网络处理模块(如图6所示)包括:
m*n单bit乘法器,用于将n个m元素的单bit向量分别与m元素x bit向量相乘;所述的n个m元素的单bit向量由对m元素n bit的二进制向量中的所有元素进行按位提取获得;
n路m输入混合信号加法器,与所述m*n单bit乘法器相连,用于将所述向量相乘的结果按位进行加法运算;
移位寄存器,与所述n路m输入混合信号加法器相连,用于对n路m输入混合信号加法器的输出结果进行移位操作;
二进制累加器,与移位寄存器相连,用于对移位寄存器的输出结果进行累加获得处理结果。
在一种实施例中,所述的n路m输入混合信号加法器包括:n个单路m输入混合信号累加器,所述的单路m输入混合信号累加器(如图11-图12所示)包括并联连接的电容、与各个电容一端分别串联连接的选择开关和信号输入端口以及与各个电容另一端分别连接的比较器;利用所述的信号输入端口将m个输入值通过电容电荷的方式采样到电容阵列上,电容阵列上的总电荷等效于m个输入累加的结果;再利用逐次逼近型ADC原理,结合选择开关和比较器,将所述电容阵列上的总电荷转换为累加结果的二进制输出,输出时从高位到低位依次输出。
具体的说,所述的利用逐次逼近型ADC原理,结合选择开关和比较器,将所述电容阵列上的总电荷转换为累加结果的二进制输出,输出时从高位到低位依次输出,包括:
将所述电容阵列与所有信号输入端口以及电源(Vcm)断开,将m个电容组合成log2m位二进制权重电容阵列,上极板全接在一起连到比较器的负向输入端,比较器的正向输入端连接所述电源(Vcm);
将第 [(log2m)-1]位接“1”(即如图12所示,将B [log 2 (m)-1] 接“1”),低于[(log2m)-1]位全部接“0”;读取比较器输出端Out的值,若Out=1,则第 [(log2m)-1]位保持为1;若Out=0,则第 [(log2m)-1]位变为0;第 [(log2m)-1]位的值确定后,在后续的步骤中保持不变;(1相当于接通电源,0相当于接地)
将第 [(log2m)-2]位接“1”,低于 [(log2m)-2]位全部接“0”;读取比较器输出端Out的值,若Out=1,则第 [(log2m)-2]位保持为1;若Out=0,则第 [(log2m)-2]位变为0;第[(log2m)-2]位的值确定后,在后续的步骤中保持不变;
以此类推,直至得到最低位的值,即将B [0] 接“1”,其它更低位全部接“0”,读取比较器输出端Out的值,若Out=1,则B [0]保持为1;若Out=0,则B [0]变为0;
以上步骤中依次输出的Out值则为累加结果的由高位到低位的二进制输出。
为了使得神经网络加速器能够同时适用于无符号向量与无符号向量的点积运算、有符号向量与有符号向量的点积运算以及有符号向量与无符号向量的点积运算,可根据实际的需求进行模式选择,所述的神经网络处理模块还包括:
选择电路,所述的选择电路分别与n路m输入混合信号加法器和移位寄存器相连,用于控制取反使能作用的开启或关闭。
上述的神经网络加速器中,在进行有符号向量与无符号向量的点积运算时,所述的神经网络处理模块还包括:二进制位数扩展电路,如图13所示,所述的二进制位数扩展电路包括buffer和高位选择器,低位直接原值输入经buffer输出,高位选择器根据输入是无符号或有符号数,将0或者输入最高位的值输出,高低位共同实现将nbit二进制数扩展为ybit二进制数,其中y>n;图中,若i 为无符号数,则sign_en=0, o [n]~o [y-1]=0;若i 为有符号数补码,则sign_en=1, o [n]~o [y-1]=i[n-1]。
本申请实施例还公开一种芯片。一种芯片,包括上述任一项所述的神经网络加速器。
本发明提供的包括上述神经网络加速器的芯片,可以是感存算一体的芯片或者是其它功能的芯片。值得说明的是,本发明提供的神经网络加速器也可以以芯片的形式存在。
本申请实施例还公开一种电子设备。一种电子设备,包括如上述的神经网络加速器或者如上述的芯片。
本申请实施例中的对所述的二进制向量进行点积运算的实施原理为:
假设需要实现2个向量[A0,A1,A2]和[W0,W1,W2]的点积运算:“A0*W0+A1W1+A2*W2+...+An-1*Wn-1”,其中,。
对应的转化为二进制向量,即三元素3bit向量进行点积运算时,通过“二进制乘法器”和“累加器”,将需要的乘法和累加运算逐步实现,需要3次2个3-bit数的乘法运算以及3次加法运算,相当于6次移位操作和9次累加操作;而采用本申请中的技术方案——S21,对m元素n bit的二进制向量中的所有元素进行按位提取,获得n个m元素的单bit向量;S22,将所述的n个m元素的单bit向量分别与m元素x bit向量相乘;S23,将所述向量相乘的结果按位进行加法运算,然后进行移位操作(即乘以权重);S24,将所述移位操作的结果送入二进制累加器进行累加获得处理结果,进行计算时(简称方法1),如图7所示,即假设m=n=3,需要9次乘法(移位)操作, 6次累加操作,外加9个单bit二输入乘法器进行乘法运算以及9次3个单bit数相加操作。由此可知,三元素3bit向量进行点积运算时采用本申请中的技术方案,优势还不太明显。
但是当n=4,m=5时,采用传统的“二进制乘法器”和“累加器”实现点积运算,需要15次乘法运算以及19次累加运算;而采用本申请的方法1进行运算时,仅需12乘法运算和11次累加运算,因而当n≥4,m≥5时,采用本申请的技术方案可以大大提升对所述的二进制向量基于神经网络算法进行运算处理的运算效率,同时降低系统功耗。
进一步的,可推导得到:当对m元素n bit向量与m元素n bit向量进行点积运算时,采用传统的乘法和累加运算,需要m次2个n-bit数的乘法运算以及m次加法运算,相当于m*(n-1)次移位操作和m*n次累加操作;采用本申请的步骤S21-S24的技术方案后,需要n*n次乘法(移位)运算, n*n-1次累加运算,外加m*n个单bit二输入乘法器以及n2次m个单bit数相加。以m=64, n=8为例,传统方法需要448次移位操作和511次累加操作;而采用本申请的步骤S21-S24的技术方案后,需要64次移位操作,63次累加操作,外加64*8个单bit二输入乘法器以及8*8次64个单bit数相加操作。通过对比可以明显判断,本申请的技术方案中,需要的移位操作和累加操作相比传统乘法累加器大大减少,效率提升约7~8倍。由此可知,对于m和n较大的场景下,采用本申请的技术方案可以大大提升对所述的二进制向量基于神经网络算法进行运算处理的运算效率,同时降低系统功耗。
在以上处理方法的基础上,为了进一步提升神经网络处理装置的运算效率,同时降低其功耗,在步骤S23中,将所述向量相乘的结果按位进行加法运算和进行移位操作之间,还可包括:将所述加法运算结果用二进制表示;对所述用二进制表示的结果进行按位提取(简称方法2)。具体的,如在前述内容的基础上,进一步以上处理后,如图8所示,乘法(移位)运算从9次变为6次,累加从8次变为5次。
进一步的,可推导得到:当对m元素n bit向量与m元素n bit向量进行点积运算时,采用本申请的步骤S21-S24的技术方案及步骤“将所述加法运算结果用二进制表示;对所述用二进制表示的结果进行按位提取”后,需要⌈log2(m+1) ⌉*n次乘法(移位)运算,⌈log2(m+1) ⌉*n-1次累加运算,以及m*n个二输入单bit乘法器以及n2次m个单bit数相加操作。
对比传统方法、方法1及方法2的向量点积处理效率,如表1和表2所示:
表1 运算效率对比(m=64, n=8)
表2运算效率对比(m=32, n=8)
由此可知:相比传统算法,本申请中的方法1和方法2需要的额外m*n个二输入单bit乘法器以及n2次m个单bit数相加操作,而这两个功能可以用混合信号处理单元实现(比如基于SRAM的混合信号存算一体单元),其并不会影响移位和累加部分的运算效率,运算效率也依旧由移位和累加的次数决定。因此,本申请通过采用方法1和方法2,可以大大提高多元多bit向量的点积运算效率,尤其是采用方法2,可以在方法1的基础上,进一步提高多元素多bit向量的点积运算效率。
在方法1的基础上,进一步的,对于无符号向量与有符号向量的点积运算,如:。
需要在方法2的基础上,根据最终累加结果可能的最大范围对送入累加器的补码进行位数扩展(简称方法3),然后再参与运算。
整个运算过程图9所示。
对于有符号向量[A0,A1,A2,...,Am-1]和[W0,W1,W2,...,Wm-1]的点积运算,如:。
对应的二进制向量点积运算,在具体计算时,在方法3的基础上,在步骤对所述用二进制表示的结果进行按位提取之后,对最高位按位取反加1(简称方法4),即可获得最终结果。根据所述示例,具体的点积运算流程示意图如图10所示。其中,图10中,需要加入的两个常数可以乘权重之前加,也可以在最后的累加器加进去。上述的方法流程图中,算法中高低位的运算顺序不是固定的,而是可以变化的。图10中,对于有符号向量和有符号向量的点积运算模式下,进行位数扩展补位的时候,补0或补1是根据原二进制数决定的,负数(即最高位为1)扩展时需要补1,正数(即最高位为0)扩展时需要补0。
本发明提供的神经网络加速器可以应用于诸多AI领域,例如包括本发明提供的神经网络加速器的存算处理系统可以为基于感存算一体技术架构实现的模数混合AI视觉芯片,该AI视觉芯片具有更低功耗与更高的能效比。本发明提供的神经网络加速器可应用于自动驾驶、AR、VR、激光雷达,还可广泛应用于智能手机、平板电脑、可穿戴电子装备、智能家居电子产品、工业或医疗或电池供电类等一系列对低功耗与高能效比有需求的应用领域。
以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的方法、结构、原理所做的等效变化,均应涵盖于本申请的保护范围之内。
Claims (11)
1.一种神经网络加速方法,其特征在于,包括:
响应于数据接收指令,接收二进制向量形式的待处理数据,所述二进制向量为m元素nbit的向量,所述的m和n均为任意整数;响应于神经网络运算指令,对所述的二进制向量基于神经网络算法进行运算处理;
或响应于数据接收指令,接收二进制向量形式的待处理数据,并将所述待处理数据存入存储器中,所述二进制向量为m元素n bit的向量,所述的m、n为任意整数;调取所述存储器中的二进制向量,对所述的二进制向量基于神经网络算法进行运算处理;
其中,所述的对所述的二进制向量基于神经网络算法进行运算处理,包括,对所述的二进制向量进行点积运算,包括:
对m元素n bit的二进制向量中的所有元素进行按位提取,获得n个m元素的单bit向量;
将所述的n个m元素的单bit向量分别与m元素x bit向量相乘;所述的x为任意整数;
将所述向量相乘的结果按位进行加法运算,得到、/>,……,/>,其中,/>的权重为/>,/>的权重为/>,/>的权重为/>;
将所述加法运算结果用二进制表示;
对所述用二进制表示的结果进行按位提取,得到多个单bit向量、/>,……,,/>、/>,……,/>,……,/>、/>,……,/>,然后对所述的多个单bit向量进行移位操作;其中,进行移位时,/>的权重与/>的权重相同,/>的权重为/>的权重乘以/>,/>的权重为/>的权重乘以/>,以此类推,/>的权重与/>的权重相同,/>的权重为/>的权重乘以/>,/>的权重为/>的权重乘以/>;
将所述移位操作的结果送入二进制累加器进行累加获得处理结果。
2.根据权利要求1所述的神经网络加速方法,其特征在于,在步骤将所述移位操作的结果送入二进制累加器进行累加之前,还包括:
对送入二进制累加器的以补码表示的二进制数据进行位数扩展操作。
3.根据权利要求2所述的神经网络加速方法,其特征在于,所述的进行位数扩展操作,具体需要扩展的位数y通过以下方法获得:y=。
4.根据权利要求2所述的神经网络加速方法,其特征在于,在步骤对所述用二进制表示的结果进行按位提取之后,还包括:对最高位按位取反加1。
5.根据权利要求1所述的神经网络加速方法,其特征在于,所述的n≥4,m≥5。
6.一种神经网络加速器,其特征在于,包括:
数据接收及处理模块,用于响应于数据接收指令,接收二进制向量形式的待处理数据;或响应于数据接收指令,接收二进制向量形式的待处理数据,并将所述待处理数据存入存储器中;所述二进制向量为m元素n bit的向量,所述的m、n为任意整数;
神经网络处理模块,与所述的数据接收及处理模块连接,用于响应于神经网络运算指令,对所述的二进制向量基于神经网络算法进行运算处理;或响应于神经网络运算指令,调取所述存储器中的二进制向量,对所述的二进制向量基于神经网络算法进行运算处理;
所述的神经网络处理模块包括:
m*n单bit乘法器,用于将n个m元素的单bit向量分别与m元素x bit向量相乘;所述的n个m元素的单bit向量由对m元素n bit的二进制向量中的所有元素进行按位提取获得;
n路m输入混合信号加法器,与所述m*n单bit乘法器相连,用于将所述向量相乘的结果按位进行加法运算;
移位寄存器,与所述n路m输入混合信号加法器相连,用于对n路m输入混合信号加法器的输出结果进行移位操作;
二进制累加器,与移位寄存器相连,用于对移位寄存器的输出结果进行累加获得处理结果;
其中,所述的n路m输入混合信号加法器包括:
n个单路m输入混合信号累加器,所述的单路m输入混合信号累加器包括并联连接的m个电容阵列、与各个电容一端分别串联连接的选择开关和信号输入端口以及与各个电容另一端分别连接的比较器和电源;
进行工作时,将所述的电源接通,利用所述的信号输入端口将m个输入值通过电容电荷的方式采样到电容阵列上,电容阵列上的总电荷等效于m个输入累加的结果;
再利用逐次逼近型ADC原理,结合选择开关和比较器,将所述电容阵列上的总电荷转换为累加结果的二进制输出,输出时从高位到低位依次输出。
7.根据权利要求6所述的神经网络加速器,其特征在于,所述的利用逐次逼近型ADC原理,结合选择开关和比较器,将所述电容阵列上的总电荷转换为累加结果的二进制输出,输出时从高位到低位依次输出,包括:
将所述电容阵列与所有信号输入端口以及电源断开,将m个电容组合成log2m位二进制权重电容阵列,上极板全接在一起连到比较器的负向输入端,比较器的正向输入端连接所述电源;
将第 [(log2m)-1]位接“1”,低于[(log2m)-1]位全部接“0”;读取比较器输出端Out的值,若Out=1,则第 [(log2m)-1]位保持为1;若Out=0,则第 [(log2m)-1]位变为0;第[(log2m)-1]位的值确定后,在后续的步骤中保持不变;
将第 [(log2m)-2]位接“1”,低于 [(log2m)-2]位全部接“0”;读取比较器输出端Out的值,若Out=1,则第 [(log2m)-2]位保持为1;若Out=0,则第 [(log2m)-2]位变为0;第[(log2m)-2]位的值确定后,在后续的步骤中保持不变;
以此类推,直至得到最低位的值;
以上步骤中依次输出的Out值则为累加结果的由高位到低位的二进制输出。
8.根据权利要求6所述的神经网络加速器,其特征在于,所述的神经网络处理模块还包括:
选择电路,所述的选择电路分别与n路m输入混合信号加法器和移位寄存器相连,用于控制取反使能作用的开启或关闭。
9.根据权利要求6所述的神经网络加速器,其特征在于,所述的神经网络处理模块还包括:二进制位数扩展电路,所述的二进制位数扩展电路包括buffer和高位选择器,低位直接原值输入经buffer输出,高位选择器根据输入是无符号或有符号数,将0或者输入最高位的值输出,高低位共同实现将nbit二进制数扩展为ybit二进制数,其中y>n。
10.一种芯片,其特征在于,包括权利要求6-9任一项所述的神经网络加速器。
11.一种电子设备,其特征在于,包括如权利要求6-9任一项所述的神经网络加速器或者如权利要求10所述的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310666477.2A CN116402106B (zh) | 2023-06-07 | 2023-06-07 | 神经网络加速方法、神经网络加速器、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310666477.2A CN116402106B (zh) | 2023-06-07 | 2023-06-07 | 神经网络加速方法、神经网络加速器、芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116402106A CN116402106A (zh) | 2023-07-07 |
CN116402106B true CN116402106B (zh) | 2023-10-24 |
Family
ID=87018357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310666477.2A Active CN116402106B (zh) | 2023-06-07 | 2023-06-07 | 神经网络加速方法、神经网络加速器、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116402106B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4991131A (en) * | 1987-10-06 | 1991-02-05 | Industrial Technology Research Institute | Multiplication and accumulation device |
CN104572010A (zh) * | 2013-10-11 | 2015-04-29 | 京微雅格(北京)科技有限公司 | 基于fpga芯片的乘法器 |
CN110070178A (zh) * | 2019-04-25 | 2019-07-30 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
CN111431536A (zh) * | 2020-05-18 | 2020-07-17 | 深圳市九天睿芯科技有限公司 | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 |
CN112529171A (zh) * | 2020-12-04 | 2021-03-19 | 中国科学院深圳先进技术研究院 | 一种存内计算加速器及其优化方法 |
CN114127680A (zh) * | 2019-07-15 | 2022-03-01 | 脸谱科技有限责任公司 | 支持用于高效乘法的替代数字格式的系统和方法 |
CN114816335A (zh) * | 2022-06-28 | 2022-07-29 | 之江实验室 | 一种忆阻器阵列符号数乘法实现方法、装置及设备 |
CN115629734A (zh) * | 2022-10-27 | 2023-01-20 | 杭州智芯科微电子科技有限公司 | 并行向量乘加器的存内计算装置和电子设备 |
CN115668229A (zh) * | 2020-06-12 | 2023-01-31 | 华为技术有限公司 | 用于经训练神经网络的低资源计算块 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11922131B2 (en) * | 2020-10-08 | 2024-03-05 | Applied Materials, Inc. | Scalable, multi-precision, self-calibrated multiplier-accumulator architecture |
-
2023
- 2023-06-07 CN CN202310666477.2A patent/CN116402106B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4991131A (en) * | 1987-10-06 | 1991-02-05 | Industrial Technology Research Institute | Multiplication and accumulation device |
CN104572010A (zh) * | 2013-10-11 | 2015-04-29 | 京微雅格(北京)科技有限公司 | 基于fpga芯片的乘法器 |
CN110070178A (zh) * | 2019-04-25 | 2019-07-30 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
CN114127680A (zh) * | 2019-07-15 | 2022-03-01 | 脸谱科技有限责任公司 | 支持用于高效乘法的替代数字格式的系统和方法 |
CN111431536A (zh) * | 2020-05-18 | 2020-07-17 | 深圳市九天睿芯科技有限公司 | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 |
CN115668229A (zh) * | 2020-06-12 | 2023-01-31 | 华为技术有限公司 | 用于经训练神经网络的低资源计算块 |
CN112529171A (zh) * | 2020-12-04 | 2021-03-19 | 中国科学院深圳先进技术研究院 | 一种存内计算加速器及其优化方法 |
CN114816335A (zh) * | 2022-06-28 | 2022-07-29 | 之江实验室 | 一种忆阻器阵列符号数乘法实现方法、装置及设备 |
CN115629734A (zh) * | 2022-10-27 | 2023-01-20 | 杭州智芯科微电子科技有限公司 | 并行向量乘加器的存内计算装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116402106A (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110288086B (zh) | 一种基于Winograd的可配置卷积阵列加速器结构 | |
Wang et al. | Low power convolutional neural networks on a chip | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN112434801B (zh) | 一种按照比特精度进行权重拆分的卷积运算加速方法 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN112286864B (zh) | 加速可重构处理器运行的稀疏化数据处理方法及系统 | |
CN111694544B (zh) | 多位复用乘加运算装置、神经网络运算系统以及电子设备 | |
CN111382860A (zh) | 一种lstm网络的压缩加速方法及fpga加速器 | |
CN111240746A (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN110515587B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111008691B (zh) | 一种权值和激活值都二值化的卷积神经网络加速器架构 | |
CN112862091B (zh) | 一种基于快速卷积的资源复用型神经网络硬件加速电路 | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
CN116402106B (zh) | 神经网络加速方法、神经网络加速器、芯片及电子设备 | |
CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113031912A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN111258544A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN209879493U (zh) | 乘法器 | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN210109863U (zh) | 乘法器、装置、神经网络芯片及电子设备 | |
CN210006031U (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 |