CN108733348B - 融合向量乘法器和使用其进行运算的方法 - Google Patents

融合向量乘法器和使用其进行运算的方法 Download PDF

Info

Publication number
CN108733348B
CN108733348B CN201711468817.1A CN201711468817A CN108733348B CN 108733348 B CN108733348 B CN 108733348B CN 201711468817 A CN201711468817 A CN 201711468817A CN 108733348 B CN108733348 B CN 108733348B
Authority
CN
China
Prior art keywords
multiplier
result
multiplicand
bit
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711468817.1A
Other languages
English (en)
Other versions
CN108733348A (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.)
Cambrian Xi'an Integrated Circuit Co ltd
Original Assignee
Cambrian Xi'an Integrated Circuit 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 Cambrian Xi'an Integrated Circuit Co ltd filed Critical Cambrian Xi'an Integrated Circuit Co ltd
Priority to CN201711468817.1A priority Critical patent/CN108733348B/zh
Publication of CN108733348A publication Critical patent/CN108733348A/zh
Priority to US16/697,603 priority patent/US11507350B2/en
Application granted granted Critical
Publication of CN108733348B publication Critical patent/CN108733348B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • 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/50Adding; 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/52Multiplying; Dividing
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • G06N3/065Analogue 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本公开涉及一种融合向量乘法器,用于向量间内积运算,其中待运算的向量为乘数向量
Figure DDA0001530815880000011
和被乘数
Figure DDA0001530815880000012
Figure DDA0001530815880000013
Figure DDA0001530815880000014
的维度均为N+1,包括:N+1个乘法子单元,分别用于对向量每一维度进行乘法操作,每次取乘数向量每一维度低n位进行乘法操作,每次取出n位后,该n位从乘数向量的每一维度的二进制数中移出,其中,n大于1且小于N+1;加法树,每次对N+1个乘法子单元同次操作后的结果进行相加;结果寄存器,寄存加法树每次相加的结果,并送入加法树参与下次运算。

Description

融合向量乘法器和使用其进行运算的方法
技术领域
本公开涉及计算机领域,进一步涉及融合向量乘法器和使用其进行运算的方法。
背景技术
随着大数据时代的来临,神经网络算法成为了近些年人工智能领域的一个研究热点,在模式识别、图像分析、智能机器人等方面都得到了广泛的应用。但是,由于该算法常用于处理大数据的情况,其中又包含多层的结构,大量的运算,使其对运算速度和运算规格提出了更高的要求。一方面给运算器的运算规模和运算速度提出了要求,因为面对大量的数据和神经网络算法中大量的运算,运算器要能够快速地完成所需的运算的任务,这就给运算器的速度提出了要求。另一方面,给运算器的动态可配置性提出了要求,这是因为在运算时,大量的运算数据,其数据规格未必相同,层与层之间的数据位宽和数据数量也不一定相同。同时,在能够容忍一定范围的精度损失的情况下,数据位宽的降低能够有效提高运算器的运算效率。在精度和效率二者的权衡需求下,增加了数据位宽的多样性和运算过程中数据位宽的动态可变性,所以运算器需要具有动态可配置性,满足不同的数据规格和不同的数据位宽的要求。
在现有技术中,一种实现神经网络的方式是直接在通用处理器(CPU)或者图形处理器(GPU)上进行运算,这种方法或者因其结构因兼顾通用性,故无法针对神经网络的运算进行有效加速,或者因其片上缓存太小,无法满足大量的神经网络的运算的要求。另一种实现方式就是在现场可编程逻辑门阵列(FPGA)或者专用集成电路(ASIC)上面针对神经网络进行设置和运算,但是一方面,FPGA的主频过低,能耗较大,对神经网络运算进行可配置编程的时候受限于FPGA本身的资源,故并不利于对神经网络运算进行加速,也不能够满足不同的数据规格和数据位宽的要求;另一方面,即使利用ASIC对神经网络进行设计并加速,但是这些装置都大多都受限于其存储装置和运算装置,只能支持固定长度的数据存储和运算,无法动态配置不同位宽的数据间的运算,灵活性不足。
公开内容
(一)要解决的技术问题
本公开的目的在于,提供一种计算位宽动态可配置的处理装置及方法,以解决以上所述的至少一项技术问题
(二)技术方案
根据本公开的一方面,提供一种融合向量乘法器,用于向量间内积运算,其中待运算的向量为乘数向量
Figure BDA0001530815860000021
和被乘数
Figure BDA0001530815860000022
Figure BDA0001530815860000023
Figure BDA0001530815860000024
Figure BDA0001530815860000025
的维度均为N+1,特征在于包括:
N+1个乘法子单元,分别用于对向量每一维度进行乘法操作,每次取乘数向量每一维度低n位进行乘法操作,每次取出n位后,该n位从乘数向量的每一维度的二进制数中移出,其中,n大于1且小于N+1;
加法树,每次对N+1个乘法子单元同次操作后的结果进行相加;
结果寄存器,寄存加法树每次相加的结果,并送入加法树参与下次运算。
在进一步的实施方案中,每一所述乘法子单元包括用于每次移出乘数低n位的第一移位寄存器。
在进一步的实施方案中,每一所述乘法子单元还包括用于对每次进行乘法操作后的结果进行移位的第二移位寄存器。
在进一步的实施方案中,每一所述乘法子单元包括输入选择电路,用于每次输入被乘数向量
Figure BDA0001530815860000026
中对应维度的数以及乘数向量
Figure BDA0001530815860000027
对应维度的低n位,乘数的低n位值分别与被乘数做“与”运算,送入所述第二移位寄存器。
在进一步的实施方案中,所述n为2。
在进一步的实施方案中,所述第二移位寄存器进行移位按照如下方式:如输入的数据为第i次操作的n位中的j位运算结果,则当次数据左移位数为:(i-1)*n+(j-1);其中i介于1和
Figure BDA0001530815860000028
之间,
Figure BDA0001530815860000029
表示向下取整;j介于1至n之间。
根据本公开的再一方面,提供一种使用以上任一所述融合向量乘法器进行运算的方法,包括:
将所述乘数向量
Figure BDA0001530815860000031
和被乘数
Figure BDA0001530815860000032
各自对应的维度分别送入乘法子单元进行运算,其中每一乘法子单元对向量每一维度进行乘法操作,每次取乘数向量每一维度低n位进行乘法操作,每次取出n位后,该n位从乘数向量的每一维度的二进制数中移出,其中,n大于1且小于N+1;
采用加法树每次对N+1个乘法子单元同次操作后的结果进行相加;
应用结果寄存器寄存加法树每次相加的结果,并送入加法树参与下次运算,直至乘数为0。
在进一步的实施方案中,还包括:在每次乘法子单元运算时,通过第一移位寄存器每次移出乘数低n位;以及通过第二移位寄存器对每次进行乘法操作后的结果进行移位。
在进一步的实施方案中,所述第二移位寄存器进行移位按照如下方式:如输入的数据为第i次操作的n位中的j位运算结果,则当次数据左移位数为:(i-1)*n+(j-1);其中i介于1和
Figure BDA0001530815860000033
之间,
Figure BDA0001530815860000034
表示向下取整;j介于1至n之间。
根据本公开的再一方面,提供一种神经网络运算装置,包括以上任一所述的融合向量乘法器。所述第二移位寄存器进行移位按照如下方式:如输入的数据为第i次操作的n位中的j位运算结果,则当次数据左移位数为:(i-1)*n+(j-1);其中i介于1和
Figure BDA0001530815860000035
之间,
Figure BDA0001530815860000036
表示向下取整;j介于1至n之间。
(三)有益效果
本公开提供的融合向量乘法器可以有效利用数据的稀疏性,只进行有效的运算,即非0数据之间的运算。从而减少了无效的运算,加快运算速度,提高了性能功耗比。。通过采用基础乘法器、稀疏乘法器和/或融合向量乘法器改变运算顺序,大大减少了对移位值的计数操作从而有效提高了性能功耗比。
附图说明
图1是本公开一实施例提供的计算位宽动态可配置的神经网络处理器的处理装置的结构示意图。
图2是本公开另一实施例提供的计算位宽动态可配置的神经网络处理器的处理装置结构示意图。
图3是本公开再一实施例提供的计算位宽动态可配置的神经网络处理器的结构示意图。
图4是本公开又一实施例提供的计算位宽动态可配置的神经网络处理器的另一个实施例的结构示意图。
图5是本公开提供的一个实施例的基础乘法器装置的结构示意图。
图6是本公开提供的一个实施例的稀疏乘法器装置的结构示意图。
图7是本公开提供的一个实施例的基础乘法器或稀疏乘法器进行向量乘法的装置的结构示意图。
图8是本公开提供的一个实施例的融合向量乘法器进行向量乘法的装置的结构示意图。
图9是本公开提供的融合向量乘法器装置和其他乘法器装置具体实施流程的结构示意图。
图10是本公开一实施例提供的计算位宽动态可配置的神经网络处理器的方法流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图1是本公开实施例提供的计算位宽动态可配置的神经网络处理器的处理装置的结构示意图。如图1所示,本装置主要分为三个部分,控制部分、运算部分和存储部分。控制部分向运算部分和存储部分发出控制信号,来控制二者的运行,协调二者间的数据传输。存储部分用于存储相关数据,相关数据包括运算结果,输入数据(包括神经网络的待运算数据和控制指令)、神经网络参数和查找表,还可以包括中间结果、最终结果、神经元、突触、待缓存数据等等,可以根据需求不同,对具体的存储数据内容、存储组织方式和存取调用方式进行不同的规划。运算部分包含多种运算器,用于数据的运算,包括加法器、基础乘法器、稀疏乘法器和/或融合向量乘法器,其中,运算器能够满足不同计算位宽的数据进行运算,根据不同的需求,可以进行不同位宽的运算数据之间的运算。
图2是本公开一个实施例的神经网络处理器的装置的结构示意图。如图2所示,本装置的结构为,控制部分连接存储部分的每个模块或子模块和运算部分,由一个先进先出队列和一个控制处理器组成,先进先出队列用于存储控制信号,控制处理器用于取出待执行的控制信号,对控制逻辑进行分析后,对存储部分和运算部分进行控制和协调。存储部分分为三个模块,输入存储模块、输出存储模块、突触存储模块,其中输出存储模块可以用于存储中间结果和最终结果。运算部分主要用于加速卷积层、全连接层或/和池化(pooling)层的运算,故运算部分也主要分为三个模块,乘法器模块、加法树模块和进行非线性运算模块(如,该模块可以完成sigmoid函数运算),三个模块可以采用流水线的方式并行执行。本装置能够加速卷积神经网络的运算过程,减少片内片外的数据交换,节约存储空间。
图3是本公开另一个实施例的神经网络处理器的处理装置的结构示意图。如图3所示,本装置的结构为,控制部分连接存储部分的每个模块和运算部分,由一个先进先出队列和一个控制处理器组成,先进先出队列用于存储控制信号,控制处理器用于取出待执行的控制信号,对控制逻辑进行分析后,对存储部分和运算部分进行控制和协调。存储部分主要包含输入存储模块、输出存储模块和突触存储模块。本装置中,将突触存储模块分为多个模块,同时,配置多个运算单元。每一次运算的时候,输入存储模块向所有的运算单元传递输入数据,突触存储模块向对应的运算单元传递突触数据,运算模块进行运算后,将结果写到输出存储模块中。这样,在参数多的大规模运算当中,明显提高了运算效率。本装置能够有效加速卷积神经网络的运算过程,尤其适用于网络规模比较大,参数比较多的情况。
图4是本公开再一个实施例的神经网络处理器的装置的结构示意图。如图4所示,本装置的结构为,控制部分连接存储部分的每个模块和运算部分,由一个指令队列和一个解码器组成,每一次执行新的指令时,从指令队列中取出一条新的指令,送入解码器,通过解码器进行解码,将控制信息送入每个存储模块和运算模块。存储部分包括四个模块,输入存储模块、输出存储模块、突触存储模块和缓存模块,其中输出存储模块可以用于存储中间结果和最终结果。其中,每一次输入存储模块和突触存储模块向运算部分传递数据,都是先将数据传入缓存模块中,再送入相应的运算模块中,同样的,当运算模块运算完毕,将结果也是先送入缓存模块中,再从缓存模块写入输出存储模块。运算部分主要由多个运算模块组成,包括第一运算模块和第二运算模块。运算模块间可以并行执行相关运算,也可以相互传递数据,从而降低具有局部性的数据的重用距离,进一步提高运算速度。第一运算模块主要用于加速神经网络算法中相同或不同计算位宽的线性运算,包括:矩阵间乘法、加法、乘法混合加法;矩阵和向量;矩阵和常数;向量间;向量与常数;常数与常数,还可以用于比较运算、选择最大/小值等,优选的运算包括点积、矩阵乘法和/或矩阵加法运算。第二运算模块用于完成上述第一运算模块中未完成的运算,包括非线性运算、除法运算、单独的加法运算或单独的乘法运算。这样的好处是能够根据控制指令,在计算过程中,对数据动态调整位宽,从而使得运算部分、存储部分的硬件利用率能够得到进一步提升。
图5是本公开的又一实施例的用于本装置的基础乘法器装置示意图,能够满足计算位宽动态可配置的要求。如图5所示,M位的被乘数和N位的乘数,其中M,N均为正整数,也就是说,这里的被乘数和乘数的位数可以相等,也可以不相等。将乘数的低n位(n为正整数,且1<n≤N)输入至输入选择中,当乘数的低n值分别与被乘数做“与”运算,即乘数该位值为1,则取被乘数本身,否则取0。同时,将乘数送入第一移位寄存器中进行移位,将低n位移出,则下一次再输入至输入选择中的为新的低n位。输入选择后的结果向上输入到第二移位寄存器进行相应的移位,再送入加法树中进行累加。这里进行累加的是进行输入选择并进行移位后的数据和之前进行累加的结果。得到结果后作为中间结果存入结果寄存器。待下一次被乘数进行输入选择后进行移位时,结果寄存器取出中间结果送入加法树(器)中进行累加。当乘数全为0时,乘法运算结束。
为更清楚的表明该基础乘法器的运算流程,我们给出一个具体实施例,假定被乘数为10111011,即M=8,乘数为1011,即N=4。
当n=2时,即每次移动2位的时候,该运算过程如下:首先,取出乘数的最低2位的11,和被乘数一起送入输入选择单元,选择均为被乘数本身,送入第一移位寄存器,最低位对应的选择出的被乘数无需移位,即10111011,次低位对应的选择出的被乘数左移1位,即101110110,送入加法树中,由于之前没有数字相加,故送入结果寄存器的为10111011与101110110的和,即1000110001。而后,乘数右移2位后取其最低2位,即10,和被乘数一起送入输入选择单元中,得到0和10111011,而后通过移位寄存器,0左移了2位还是0,10111011左移3位为10111011000,和结果寄存器中的1000110001一起送入加法树中进行运算,得到100000001001,送入结果寄存器中。此时,乘数右移2位,全部为0,即运算结束,结果寄存器中即为最终结果,即100000001001。
图6是本公开提供的一实施例用于本装置的稀疏乘法器装置示意图,能够满足要求的计算位宽动态可配置的要求。顾名思义,稀疏乘法器针对稀疏运算的情况,即当乘数或者被乘数用稀疏表示的方式表示出1的位置时,可以进一步提高了运算的有效性,加快运算速度。如图6所示,M位的被乘数和N位的乘数,其中M,N均为正整数,也就是说,这里的被乘数和乘数的位数可以相等,也可以不相等。这里,乘数用稀疏表示的方法,用绝对或相对位置的方式表示该乘数中1的位置。这里,我们的运算部分是可配置的,故当采用不同的表示方法进行运算时,运算器内部的装置可以根据需求进行配置。譬如,可以当结果寄存器进行累加时无需移位,那么可以规定此时和结果寄存器相接的移位寄存器不工作,此时乘数的移位信息也可以不传递到该移位寄存器中。相关具体细节均可以根据需要做相应的调整,来完成对被乘数的移位和对结果的累加等相关具体细节。
为更清楚的表明该稀疏乘法器的运算流程,我们给出一个具体实施例,假定被乘数为10111011,即M=8,乘数为00100010,即N=8。当采用绝对的表示方式来表示乘数,那么用绝对位置表示出乘数中1的位置,假定我们把数的最右侧一位称为第0位,第0位的左侧一位称为第1位,以此类推。那么,该乘数表示为(1,5)。同时,我们要求该实施例中的与结果寄存器相连的移位寄存器不工作,乘数的数据无需传递给该移位寄存器。那么首先取出乘数的第一个数,即1,表示在第1位处有一个1。将被乘数送入移位寄存器,然后移动1位后为101110110送入加法器。由于之前数字相加,故送入结果寄存器的结果为101110110。而后取出乘数的下一个1的位置,即5,和被乘数一起送入移位寄存器。在移位寄存器中,将被乘数右移5位,得到1011101100000,送入加法器。同时取出结果寄存器中的结果101110110,由于采用的这种绝对表示的方法无需进行移位,故可直接将该结果送入加法器进行累加,得到1100011010110。累加后的结果再次送入结果寄存器。此时,乘数中的1都已经计算完毕,故运算结束。如果采用相对的方式表示乘数,并定义其表示方法为从最高位(最左边)的第一个不为0的数字开始,到最低位,每两个不为0的数字间相距的位数。对于00100010,在第一个不为0的数字和下一个不为0的数字之间相距4位,在第二个不为0的数字到最低位,相距1位,故表示为(4,1)。这里,我们要求该实施例中的与结果寄存器相连的和与被乘数相连的移位寄存器均需要工作。首先,取出乘数的第一个数字4,送入两个移位寄存器中,那么将被乘数右移4位,和结果寄存器中的数据右移4位后送入加法器中进行累加。此时结果寄存器的数据为0,故得到累加结果101110110000,送入结果寄存器保存。而后,取出乘数的第二个数字1,那么将该值送入移位寄存器中,得到101110110和1011101100000,送入加法器进行累加,得到结果1100011010110。该结果再次送入结果寄存器。此时,乘数中的1都已经计算完毕,故运算结束。这样,可以有效利用数据的稀疏性,只进行有效的运算,即非0数据之间的运算。从而减少了无效的运算,加快运算速度,提高了性能功耗比。
图8是本公开提供的一个实施例的融合向量乘法器进行向量乘法的装置的结构示意图。这里,我们假定计算向量
Figure BDA0001530815860000101
Figure BDA0001530815860000102
的内积值,将相应维度的数据送入乘法器中等待运算,如图8所示。这里,要求
Figure BDA0001530815860000103
Figure BDA0001530815860000104
的维度相同,均为(N+1),但是每一维度的位宽不一定相同,同时假定每次取n位进行运算,其中n为大于1且不大于
Figure BDA0001530815860000105
的一个维度的位宽的正整数。首先,取B0的低n位和A0同时送入第一个输入选择中,将B0的低n位分别与A0做与运算,得到的选择的结果送入后面的移位寄存器进行移位。取移位后,将结果送入加法树中。在此过程中,每个维度都和第一维度进行着相同的操作。而后通过加法树,对这些维度送入的数据进行累加,并将结果寄存器中的值送入加法树中,一同进行累加,得到累加后的结果再送入结果寄存器中。在运算的同时,每一维度的Bi(i=0,1,……,N)值送入移位寄存器中右移n位后,重复上述操作,即取移位后的Bi(i=0,1,……,N)值的最低n位和对应的Ai(i=0,1,……,N)值一起送入输入选择中进行选择,再送入移位寄存器中进行移位,而后送入加法树中进行累加。不断重复该过程直到每一维度的Bi(i=0,1,……,N)值全为0,运算结束,此时结果寄存器中的数据即为所求的最终结果。利用该乘法器能够灵活的配置待运算数据的位宽,无需在每进行一组数据乘法时就需要重新对被乘数移位位数进行计数的过程。同时,当数据位数比较低或者向量位数比较高的时候,能够极大地利用数据低位宽、向量高维度的特性,可以采用流水线的方式并行执行该过程,降低运行所需时间,进一步加快运算速度,提高性能功耗比。
我们可以采用多种方式来完成向量的内积运算,结合图7、图8和图9进行说明。首先我们假定
Figure BDA0001530815860000111
Figure BDA0001530815860000112
的维度为8,即N=7,
Figure BDA0001530815860000115
Figure BDA0001530815860000116
Figure BDA0001530815860000113
的位宽为8位,即
Figure BDA0001530815860000114
的每一维度均为8位,即Ai={ai7…ai1ai0},其中i=0,1,……,7;
Figure BDA0001530815860000117
的位宽为4位,即
Figure BDA0001530815860000118
的每一维度均为4位,即Bi={bi3bi2bi1bi0},其中i=0,1,……,7。那么向量内积
Figure BDA0001530815860000119
Figure BDA00015308158600001110
采用基础乘法器或上述的基础或稀疏乘法器(假定n为2,即每次乘数移动2位)时的运算流程分为两个阶段:首先分别计算各自分量的乘积,然后再进行求和,如图7所示。具体的说,对于某一维度Ai和Bi进行计算,移位计数器清零。第一个时钟周期取Bi的最低两位bi0,bi1,输入选择、移位、送入加法器,得到Ai*bi0bi1的值,并将移位计数器加2;第二个时钟周期,Bi右移2位后取最低两位得到最低位bi2,bi3,输入选择、移位得到Ai*bi2bi3,将结果与之前的和相加,得到最终结果Ai*bi0bi1bi2bi3,即得到该维度的最终结果Ai*Bi。进行下一维度的运算,输入Ai+1和Bi+1,移位计数器清零……直到每一维度运算完毕,得到(A0*B0,A1*B1,……,A7*B7),阶段1运算完毕。而后,在阶段2,将乘积送入一个加法树中进行加法运算,得到最终的向量内积的结果,即
Figure BDA00015308158600001111
在阶段1中,可以选择1个乘法器,依次计算每个维度;也可以提供多个乘法器并行运算,在一个乘法器中完成一个维度的运算,如图7所示。当采用多个乘法器时,每个维度的乘数Bi的移位值都需要重新进行计数。该阶段的乘法器采用上述的基础乘法器或者稀疏乘法器均可。
利用融合向量乘法器,是直接整体进行水平方式的累加运算,其结构如图8所示,将每一维度的一个分量的乘积运算完毕即送入加法树中进行累加,直到运算完毕,得到最终结果。其运算流程如图9的椭圆形框所示,第一个时钟周期,每一维计算得到Ai*bi0(i=0,1,……,7)的乘积,送入加法树中累加,计算结果送入结果寄存器,移位计数器加1;第二个时钟周期,每一维根据移位计数器计算得到2*Ai*bi1(i=0,1,……,7)的乘积,和结果寄存器的数据一同送入加法树中累加,移位计数器加1;第三个时钟周期,每一维根据移位计数器计算得到4*Ai*bi2(i=0,1,……,7)的乘积,和结果寄存器的数据一同送入加法树中累加,移位计数器加1;最后,第四个时钟周期,计算得到8*Ai*bi3(i=0,1,……,7)的乘积,和结果寄存器的数据一同送入加法树中累加,得到最终结果。因此我们在4个运算周期之后就得到了所需要的结果,运算过程中,共移位3次。而一般的乘法器,每个数据运算都需要进行移位操作,即,在有4个操作数的情况下,共需要4*3=12次移位操作。所以,我们的设计,通过改变运算顺序,大大减少了对移位值的计数操作从而有效提高了性能功耗比。
综上所述,利用该装置和方法能够明显提高神经网络的运算速度,同时具有动态可配置性,满足数据位宽的多样性和运算过程中数据位宽的动态可变性的相关要求,具有灵活性强、可配置程度高、运算速度快、功耗低等优点。
在一个实施例里,本公开公开了一个芯片,其包括了上述神经网络处理器。
在一个实施例里,本公开公开了一个芯片封装结构,其包括了上述芯片。
在一个实施例里,本公开公开了一个板卡,其包括了上述芯片封装结构。
在一个实施例里,本公开公开了一个电子装置,其包括了上述板卡。
电子装置包括但不限于数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
根据本公开实施例的另一方面,还提供一种计算位宽动态可配置的神经网络处理器的方法,参见图10所示,包括步骤:
S0:控制部分生成控制指令,传送给存储部分和运算部分;
S1:存储部分根据接收的控制指令,向运算部分输入神经网络的待运算数据;
S2:运算部分根据接收的控制指令,选择第一运算模块中的对应类型的乘法器和加法器;
S3:运算部分根据输入的待运算数据和神经网络参数以及控制指令,对不同计算位宽的神经网络的待运算数据进行运算。
进一步的,步骤S3中第一运算模块包括采用加法器,以及基础乘法器、稀疏乘法器和/或融合向量乘法器对神经网络的待运算数据进行运算。
本公开所提供的实施例中,应理解到,所揭露的相关装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述部分或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个部分或模块可以结合或者可以集成到一个系统,或一些特征可以忽略或者不执行。
本领域技术人员可以知晓,以上各功能单元/模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (5)

1.一种稀疏乘法器,用于稀疏数据的乘法运算,其中,乘数或者被乘数用稀疏方式表示,所述乘数或者被乘数用稀疏方式表示包括用绝对位置或者相对位置表示所述乘数或者所述被乘数中比特值为1的位置,特征在于,所述稀疏乘法器包括:输入选择电路、与被乘数连接的移位寄存器、加法器、结果寄存器及与所述结果寄存器连接的移位寄存器;
当所述乘数采用绝对位置的方式表示时,所述乘数表示为(a1,a2,…,ak,…),所述k为大于0的整数,所述ak用于表征以二进制表示所述乘数的比特序列中,从右到左第k个取值为1的比特位在所述比特序列中的位置,所述输入选择 电路,用于从所述乘数(a1,a2,…,ak,…)中选择一个数据a,送入与所述被乘数相连接的移位寄存器中;
所述与所述被乘数相连接的移位寄存器,用于将所述被乘数向左移a位,并将移位后的结果送入所述加法器;
所述加法器,用于对移位后的结果和所述结果寄存器中存储的数据进行累加,并将累加后的结果送入所述加法器。
2.根据权利要求1所述的稀疏乘法器,其特征在于,所述稀疏乘法器还包括与所述结果寄存器连接的移位寄存器;
当所述乘数采用相对位置的方式表示时,所述乘数可以表示为(a1,a2,…,as,…),所述s为大于0的整数,所述as用于表征以二进制表示所述乘数的比特序列中,从左到右第s个取值为1的比特位与第s-1个取值为1的比特位之间间隔的比特位的数量;
所述选择输入电路,用于从所述乘数(a1,a2,…,as,…)中选择一个数据ax,送入与所述被乘数相连接的移位寄存器和与所述结果寄存器相连接的移位寄存器中;
所述与所述被乘数相连接的移位寄存器,用于将所述被乘数向右移ax位,并将移位后的结果送入所述加法器;
所述与结果寄存器相连接的移位寄存器,用于将所述结果寄存器中存储的数据向右移ax位,并将移位后的结果送入所述加法器;
所述加法器,用于对与被乘数相连接的移位寄存器输出的移位后的结果和与所述结果寄存器相连接的移位寄存器输出的移位后的结果中存储的数据进行累加,并将累加后的结果送入所述加法器。
3.根据权利要求1所述的稀疏乘法器,其特征在于,所述乘数与所述被乘数的位数相同或者不相同。
4.一种神经网络运算装置,其特征在于包括权利要求1-3任一所述的稀疏乘法器。
5.一种芯片,包括权利要求4所述的神经网络运算装置。
CN201711468817.1A 2017-04-21 2017-04-21 融合向量乘法器和使用其进行运算的方法 Active CN108733348B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201711468817.1A CN108733348B (zh) 2017-04-21 2017-04-21 融合向量乘法器和使用其进行运算的方法
US16/697,603 US11507350B2 (en) 2017-04-21 2019-11-27 Processing apparatus and processing method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710269106.5A CN108734281A (zh) 2017-04-21 2017-04-21 处理装置、处理方法、芯片及电子装置
CN201711468817.1A CN108733348B (zh) 2017-04-21 2017-04-21 融合向量乘法器和使用其进行运算的方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201710269106.5A Division CN108734281A (zh) 2017-04-19 2017-04-21 处理装置、处理方法、芯片及电子装置

Publications (2)

Publication Number Publication Date
CN108733348A CN108733348A (zh) 2018-11-02
CN108733348B true CN108733348B (zh) 2022-12-09

Family

ID=63934146

Family Applications (4)

Application Number Title Priority Date Filing Date
CN202410018233.8A Pending CN117933327A (zh) 2017-04-21 2017-04-21 处理装置、处理方法、芯片及电子装置
CN201711468817.1A Active CN108733348B (zh) 2017-04-21 2017-04-21 融合向量乘法器和使用其进行运算的方法
CN202410020777.8A Pending CN117933314A (zh) 2017-04-21 2017-04-21 处理装置、处理方法、芯片及电子装置
CN201710269106.5A Pending CN108734281A (zh) 2017-04-19 2017-04-21 处理装置、处理方法、芯片及电子装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202410018233.8A Pending CN117933327A (zh) 2017-04-21 2017-04-21 处理装置、处理方法、芯片及电子装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202410020777.8A Pending CN117933314A (zh) 2017-04-21 2017-04-21 处理装置、处理方法、芯片及电子装置
CN201710269106.5A Pending CN108734281A (zh) 2017-04-19 2017-04-21 处理装置、处理方法、芯片及电子装置

Country Status (2)

Country Link
US (1) US11507350B2 (zh)
CN (4) CN117933327A (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200117981A1 (en) * 2018-10-11 2020-04-16 International Business Machines Corporation Data representation for dynamic precision in neural network cores
JP7174243B2 (ja) * 2018-12-21 2022-11-17 富士通株式会社 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
CN109740733B (zh) * 2018-12-27 2021-07-06 深圳云天励飞技术有限公司 深度学习网络模型优化方法、装置及相关设备
CN110598858A (zh) * 2019-08-02 2019-12-20 北京航空航天大学 基于非易失性存内计算实现二值神经网络的芯片和方法
CN110572593B (zh) * 2019-08-19 2022-03-04 上海集成电路研发中心有限公司 一种3d堆叠式图像传感器
CN112541581A (zh) * 2019-09-23 2021-03-23 阿里巴巴集团控股有限公司 一种加速计算单元和加速计算系统
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
CN112612447B (zh) * 2020-12-31 2023-12-08 安徽芯纪元科技有限公司 一种矩阵计算器及基于该矩阵计算器的全连接层计算方法
CN112988112B (zh) * 2021-04-27 2021-08-10 北京壁仞科技开发有限公司 点积计算装置
CN113821701B (zh) * 2021-10-14 2023-09-26 厦门半导体工业技术研发有限公司 提升电路访问效率的方法及装置
CN116700670B (zh) * 2023-08-08 2024-04-05 深圳比特微电子科技有限公司 乘累加电路、包含该乘累加电路的处理器和计算装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706712A (zh) * 2009-11-27 2010-05-12 北京龙芯中科技术服务中心有限公司 浮点向量乘加运算装置和方法
EP2733842A1 (en) * 2012-11-15 2014-05-21 ABB Technology AG Controlling an electrical converter
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69032391T2 (de) 1989-11-13 1998-10-29 Harris Corp Mehrere Bit umkodierender Multiplizierer
US5355436A (en) * 1992-10-05 1994-10-11 The Research Foundation, State University Of New York At Buffalo Single layer neural network circuit for performing linearly separable and non-linearly separable logical operations
US20050257026A1 (en) 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
CN100492415C (zh) 2007-04-20 2009-05-27 哈尔滨工程大学 柴油机运行数据记录方法
CN101359453A (zh) * 2007-07-31 2009-02-04 奇美电子股份有限公司 数据处理装置与其数据处理方法
WO2009037684A2 (en) * 2007-09-19 2009-03-26 Provost Fellows And Scholars Of The College Of The Holy And Undivided Trinity Of Queen Elizabeth Near Dublin Sparse matrix by vector multiplication
CN101527010B (zh) * 2008-03-06 2011-12-07 上海理工大学 人工神经网络算法的硬件实现方法及其系统
US8521801B2 (en) 2008-04-28 2013-08-27 Altera Corporation Configurable hybrid adder circuitry
CN101309430A (zh) * 2008-06-26 2008-11-19 天津市亚安科技电子有限公司 基于fpga的视频图像预处理器
CN101685388B (zh) 2008-09-28 2013-08-07 北京大学深圳研究生院 执行比较运算的方法和装置
US8468191B2 (en) 2009-09-02 2013-06-18 Advanced Micro Devices, Inc. Method and system for multi-precision computation
WO2013095592A1 (en) 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for vector compute and accumulate
CN102750127B (zh) * 2012-06-12 2015-06-24 清华大学 一种协处理器
US9213523B2 (en) * 2012-06-29 2015-12-15 Intel Corporation Double rounded combined floating-point multiply and add
CN103699360B (zh) 2012-09-27 2016-09-21 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
CN103019656B (zh) * 2012-12-04 2016-04-27 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
US9563401B2 (en) 2012-12-07 2017-02-07 Wave Computing, Inc. Extensible iterative multiplier
US9110657B2 (en) 2013-01-21 2015-08-18 Tom Yap Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture
CN103106183A (zh) * 2013-01-29 2013-05-15 福建天晴数码有限公司 基于mapreduce的大规模稀疏矩阵乘法运算的方法
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9513907B2 (en) 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US9495155B2 (en) 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
CN105207794B (zh) 2014-06-05 2019-11-05 南京中兴软件有限责任公司 统计计数设备及其实现方法、具有统计计数设备的系统
US9930117B2 (en) * 2014-09-30 2018-03-27 Interactic Holdings, Llc Matrix vector multiply techniques
CN104699458A (zh) 2015-03-30 2015-06-10 哈尔滨工业大学 定点向量处理器及其向量数据访存控制方法
US10262259B2 (en) 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
CN105005911B (zh) 2015-06-26 2017-09-19 深圳市腾讯计算机系统有限公司 深度神经网络的运算系统及运算方法
CN105068787A (zh) * 2015-08-28 2015-11-18 华南理工大学 一种稀疏矩阵向量乘法的异构并行计算方法
CN106485321B (zh) * 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 具有架构神经网络执行单元的处理器
US10474627B2 (en) 2015-10-08 2019-11-12 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
CN105426160B (zh) 2015-11-10 2018-02-23 北京时代民芯科技有限公司 基于sprac v8指令集的指令分类多发射方法
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN106447034B (zh) 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN106452459A (zh) * 2016-11-04 2017-02-22 荣成市鼎通电子信息科技有限公司 二级全并行输入循环左移的ldpc编码器
CN106385264A (zh) * 2016-11-16 2017-02-08 荣成市鼎通电子信息科技有限公司 二级部分并行输入累加左移的ldpc编码器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706712A (zh) * 2009-11-27 2010-05-12 北京龙芯中科技术服务中心有限公司 浮点向量乘加运算装置和方法
EP2733842A1 (en) * 2012-11-15 2014-05-21 ABB Technology AG Controlling an electrical converter
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法

Also Published As

Publication number Publication date
CN117933327A (zh) 2024-04-26
CN108734281A (zh) 2018-11-02
US11507350B2 (en) 2022-11-22
CN108733348A (zh) 2018-11-02
US20200097793A1 (en) 2020-03-26
CN117933314A (zh) 2024-04-26

Similar Documents

Publication Publication Date Title
CN108733348B (zh) 融合向量乘法器和使用其进行运算的方法
US11531541B2 (en) Processing apparatus and processing method
CN111221578B (zh) 计算装置以及计算方法
CN109032669B (zh) 神经网络处理装置及其执行向量最小值指令的方法
CN110458279B (zh) 一种基于fpga的二值神经网络加速方法及系统
CN111178521A (zh) 计算装置以及方法
CN109656867B (zh) Slam运算装置和方法
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
CN110163358A (zh) 一种计算装置及方法
CN110276447A (zh) 一种计算装置及方法
Xiao et al. FPGA-based scalable and highly concurrent convolutional neural network acceleration
CN109389213B (zh) 存储装置及方法、数据处理装置及方法、电子装置
CN108960415B (zh) 处理装置和处理系统
CN111178492B (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
CN111367567B (zh) 一种神经网络计算装置和方法
CN114692847B (zh) 数据处理电路、数据处理方法及相关产品
CN115438777A (zh) 对神经元数据执行Winograd卷积正变换的装置
CN115081602A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN115438778A (zh) 执行Winograd卷积的集成电路装置
CN115079927A (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
TA01 Transfer of patent application right

Effective date of registration: 20221118

Address after: 710116 floor 24, office building 3, runjing Yiyuan, the junction of Haojing Avenue and Hanchi 1st Road, Fengdong new town, Xi'an, Shaanxi Province

Applicant after: Cambrian (Xi'an) integrated circuit Co.,Ltd.

Address before: 201203 room 1004, building 1, 2290 Zuchongzhi Road, Pudong New Area, Shanghai

Applicant before: SHANGHAI CAMBRICON INFORMATION TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant