CN117933327A - 处理装置、处理方法、芯片及电子装置 - Google Patents
处理装置、处理方法、芯片及电子装置 Download PDFInfo
- Publication number
- CN117933327A CN117933327A CN202410018233.8A CN202410018233A CN117933327A CN 117933327 A CN117933327 A CN 117933327A CN 202410018233 A CN202410018233 A CN 202410018233A CN 117933327 A CN117933327 A CN 117933327A
- Authority
- CN
- China
- Prior art keywords
- data
- multiplier
- module
- multiplication
- storage
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 16
- 238000003672 processing method Methods 0.000 title description 5
- 238000013528 artificial neural network Methods 0.000 claims abstract description 48
- 238000004364 calculation method Methods 0.000 claims abstract description 12
- 239000013598 vector Substances 0.000 claims description 29
- 238000000034 method Methods 0.000 claims description 25
- 230000000946 synaptic effect Effects 0.000 claims description 20
- 230000004927 fusion Effects 0.000 claims description 9
- 239000011159 matrix material Substances 0.000 claims description 7
- 210000002569 neuron Anatomy 0.000 claims description 3
- 238000007792 addition Methods 0.000 claims 18
- 230000003139 buffering effect Effects 0.000 claims 1
- 239000000203 mixture Substances 0.000 claims 1
- 230000001133 acceleration Effects 0.000 abstract description 3
- 241001442055 Vipera berus Species 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 238000009825 accumulation Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 210000000225 synapse Anatomy 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开涉及一种处理装置,包括:存储部分,用于存储数据,所述数据包括神经网络的待运算数据;运算部分,用于对待运算数据进行运算,包括采用加法器和/或多类型乘法器对待运算数据进行加速计算;控制部分,用于控制存储部分和运算部分,包括根据待运算数据进行加速运算。本公开所述的装置具有灵活性强、可配置程度高、运算速度快、功耗低等优点。
Description
技术领域
本公开涉及计算机领域,进一步涉及一种人工智能领域。
背景技术
随着大数据时代的来临,神经网络算法成为了近些年人工智能领域的一个研究热点,在模式识别、图像分析、智能机器人等方面都得到了广泛的应用。但是,由于该算法常用于处理大数据的情况,其中又包含多层的结构,大量的运算,使其对运算速度和运算规格提出了更高的要求。一方面给运算器的运算规模和运算速度提出了要求,因为面对大量的数据和神经网络算法中大量的运算,运算器要能够快速地完成所需的运算的任务,这就给运算器的速度提出了要求。另一方面,给运算器的动态可配置性提出了要求,这是因为在运算时,大量的运算数据,其数据规格未必相同,层与层之间的数据位宽和数据数量也不一定相同。同时,在能够容忍一定范围的精度损失的情况下,数据位宽的降低能够有效提高运算器的运算效率。在精度和效率二者的权衡需求下,增加了数据位宽的多样性和运算过程中数据位宽的动态可变性,所以运算器需要具有动态可配置性,满足不同的数据规格和不同的数据位宽的要求。
在现有技术中,一种实现神经网络的方式是直接在通用处理器(CPU)或者图形处理器(GPU)上进行运算,这种方法或者因其结构因兼顾通用性,故无法针对神经网络的运算进行有效加速,或者因其片上缓存太小,无法满足大量的神经网络的运算的要求。另一种实现方式就是在现场可编程逻辑门阵列(FPGA)或者专用集成电路(ASIC)上面针对神经网络进行设置和运算,但是一方面,FPGA的主频过低,能耗较大,对神经网络运算进行可配置编程的时候受限于FPGA本身的资源,故并不利于对神经网络运算进行加速,也不能够满足不同的数据规格和数据位宽的要求;另一方面,即使利用ASIC对神经网络进行设计并加速,但是这些装置都大多都受限于其存储装置和运算装置,只能支持固定长度的数据存储和运算,无法动态配置不同位宽的数据间的运算,灵活性不足。
公开内容
(一)要解决的技术问题
本公开的目的在于,提供一种计算位宽动态可配置的处理装置及方法,以解决以上所述的至少一项技术问题
(二)技术方案
根据本公开的一方面,提供一种计算位宽动态可配置的处理装置,包括:
存储部分,用于存储数据,所述数据包括神经网络的待运算数据;
运算部分,用于对神经网络的待运算数据进行运算,包括采用加法器和乘法器对不同计算位宽的神经网络的待运算数据进行计算;以及
控制部分,用于控制存储部分和运算部分,包括根据待运算数据确定运算部分的乘法器和加法器的类型以进行运算。
根据本公开的另一方面,提供一种芯片,所述芯片包括上述的装置。
根据本公开的再一方面,提供一种芯片封装结构,包括上述的芯片芯片。
根据本公开的又一方面,提供一种一种板卡,包括上述的芯片封装结构。
根据本公开的另外一方面,提供一种电子装置,包括上述的板卡。
根据本公开的另外又一方面,提供一种计算位宽动态可配置的神经网络处理器方法,包括步骤:
控制部分生成控制指令,传送给存储部分和运算部分;
存储部分根据接收的控制指令,向运算部分输入神经网络的待运算数据;
运算部分根据接收的控制指令,选择第一运算模块中的对应类型的乘法器和加法器;
运算部分根据输入的待运算数据和神经网络参数以及控制指令,对不同计算位宽的神经网络的待运算数据进行运算。
(三)有益效果
本公开提供的计算位宽动态可配置的处理装置和方法,通过将存储针对神经网络的特点进行分块存储管理,在第一运算模块能够利用不同位宽数据的运算特点进行有效的加速,并且通过控制模块进行合理调度,可采用流水线的方式并行执行,进一步降低运行所需时间,从而能够有效根据不同的需求对神经网络算法进行加速,能够动态配置计算位宽,满足不同需求的运算,具有灵活性强、可配置程度高、运算速度快、功耗低等优点。本公开装置能够加速卷积神经网络的运算过程,减少片内片外的数据交换,节约存储空间,不包含在线学习阶段;还能够加速大规模卷积神经网络的运算过程。通过采用基础乘法器、稀疏乘法器和/或融合向量乘法器改变运算顺序,大大减少了对移位值的计数操作从而有效提高了性能功耗比。
附图说明
图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是本公开提供的一个实施例的融合向量乘法器进行向量乘法的装置的结构示意图。这里,我们假定计算向量和/>的内积值,将相应维度的数据送入乘法器中等待运算,如图8所示。这里,要求/>和/>的维度相同,均为(N+1),但是每一维度的位宽不一定相同,同时假定每次取n位进行运算,其中n为大于1且不大于/>的一个维度的位宽的正整数。首先,取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进行说明。首先我们假定和/>的维度为8,即N=7,/> 的位宽为8位,即/>的每一维度均为8位,即Ai={ai7…ai1ai0},其中i=0,1,……,7;/>的位宽为4位,即/>的每一维度均为4位,即Bi={bi3bi2bi1bi0},其中i=0,1,……,7。那么向量内积
采用基础乘法器或上述的基础或稀疏乘法器(假定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,将乘积送入一个加法树中进行加法运算,得到最终的向量内积的结果,即在阶段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 (10)
1.一种处理装置,其特征在于包括:
存储部分,用于存储数据,所述数据包括神经网络的待运算数据,所述存储部分包括用于存储神经网络的待运算数据的输入存储模块和突触存储模块,其中所述突触存储模块包括用于存储多个突触参数的多个突触存储子模块;
运算部分,用于对神经网络的待运算数据进行运算,包括采用加法器和乘法器对不同计算位宽的神经网络的待运算数据进行计算,其中所述运算部分包括多个运算单元,每个运算单元分别对应连接多个突触存储子模块中的一个或多个,在运算时,输入存储模块向所有的运算单元传递输入数据,突触存储模块向对应的运算单元传递突触数据,运算单元进行运算后,将结果写入输出存储模块;以及
控制部分,用于控制存储部分和运算部分,包括根据待运算数据确定运算部分的乘法器和加法器的类型以进行运算。
2.根据权利要求1所述的装置,其特征在于,所述存储部分还包括:
神经元存储模块,用于存储神经元参数;
缓存模块,用于数据的缓冲存储;
输出存储模块,用于存储运算结果,所述输出存储模块还包括:用于存储中间运算结果的中间结果存储子模块和用于存储最终运算结果的最终结果存储子模块。
3.根据权利要求1-2任一所述的装置,其特征在于,所述运算部分包括:
第一运算模块,所述第一运算模块包括:
加法器,以及基础乘法器、稀疏乘法器和/或融合向量乘法器,以加速神经网络中的不同位宽数据的运算;其中,所述基础乘法器用于将乘数分为多个低位宽数据分别与被乘数相乘后累加的运算,所述稀疏乘法器用于在乘数和/或被乘数用稀疏方式进行表示的情况下进行乘法运算,所述融合向量乘法器用于向量间的乘法运算。
4.根据权利要求1-3任一所述的装置,其特征在于,所述不同计算位宽的数据的运算包括:点积、矩阵间乘法、加法、乘法混合加法;矩阵和向量的乘法、加法、乘法混合加法;矩阵和常数的乘法、加法、乘法混合加法;向量间的乘法、加法、乘法混合加法;向量与常数的乘法、加法、乘法混合加法;常数与常数的乘法、加法、乘法混合加法;比较选择最大/小值,以及可以拆分为乘法、加法、或乘加混合的运算。
5.根据权利要求3-4任一所述的装置,其特征在于,所述运算部分还包括第二运算模块,用于进行包括非线性运算、除法运算、单独的加法运算或单独的乘法运算,其中,所述第一运算模块包括乘法器子模块和加法树子模块;所述第二运算模块、乘法器子模块以及加法树子模块采用流水线的方式并行执行。
6.一种芯片,其特征在于,所述芯片包括权利要求1-5中任一权利要求的装置。
7.一种电子装置,其特征在于,所述电子装置包括权利要求6的芯片。
8.一种使用处理装置的方法,其特征在于包括步骤:
控制部分生成控制指令,传送给存储部分和运算部分,其中,所述存储部分包括用于存储神经网络的待运算数据的输入存储模块和突触存储模块,所述突触存储模块包括用于存储多个突触参数的多个突触存储子模块;
存储部分根据接收的控制指令,向运算部分输入神经网络的待运算数据,其中所述运算部分包括多个运算单元,每个运算单元分别对应连接多个突触存储子模块中的一个或多个,在运算时,输入存储模块向所有的运算单元传递输入数据,突触存储模块向对应的运算单元传递突触数据,运算单元进行运算后,将结果写入输出存储模块;
运算部分根据接收的控制指令,选择第一运算模块中的对应类型的乘法器和加法器;
运算部分根据输入的待运算数据和神经网络参数以及控制指令,对不同计算位宽的神经网络的待运算数据进行运算,运算结果送回存储部分。
9.根据权利要求8所述的方法,其特征在于,运算部分根据输入的待运算数据和神经网络参数以及控制指令,对神经网络待运算数据采用加法器,以及基础乘法器、稀疏乘法器和/或融合向量乘法器进行运算。
10.根据权利要求8所述的方法,其特征在于,还包括在运算部分进行非线性运算、除法运算、单独的加法运算或单独的乘法运算,采用所述基础乘法器进行运算包括:将乘数分为多个低位宽数据分别与被乘数相乘后累加,采用所述稀疏乘法器进行运算包括:在乘数和/或被乘数的用稀疏表示的方式进行表示的情况下进行乘法运算,采用所述融合向量乘法器进行运算包括:进行向量间的乘法或内积运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410018233.8A CN117933327A (zh) | 2017-04-21 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410018233.8A CN117933327A (zh) | 2017-04-21 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
CN201710269106.5A CN108734281B (zh) | 2017-04-21 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710269106.5A Division CN108734281B (zh) | 2017-04-19 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117933327A true CN117933327A (zh) | 2024-04-26 |
Family
ID=63934146
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410020777.8A Pending CN117933314A (zh) | 2017-04-21 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
CN201711468817.1A Active CN108733348B (zh) | 2017-04-21 | 2017-04-21 | 融合向量乘法器和使用其进行运算的方法 |
CN201710269106.5A Active CN108734281B (zh) | 2017-04-19 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
CN202410018233.8A Pending CN117933327A (zh) | 2017-04-21 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410020777.8A Pending CN117933314A (zh) | 2017-04-21 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
CN201711468817.1A Active CN108733348B (zh) | 2017-04-21 | 2017-04-21 | 融合向量乘法器和使用其进行运算的方法 |
CN201710269106.5A Active CN108734281B (zh) | 2017-04-19 | 2017-04-21 | 处理装置、处理方法、芯片及电子装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11507350B2 (zh) |
CN (4) | CN117933314A (zh) |
Families Citing this family (11)
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 | 深圳比特微电子科技有限公司 | 乘累加电路、包含该乘累加电路的处理器和计算装置 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0813143A3 (en) | 1989-11-13 | 1998-01-28 | Harris Corporation | Sign extension in plural-bit recoding multiplier |
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 |
US6742012B2 (en) * | 2000-12-27 | 2004-05-25 | Arm Limited | Apparatus and method for performing multiplication operations |
WO2005109221A2 (en) | 2004-05-03 | 2005-11-17 | Silicon Optix | A 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 | 北京大学深圳研究生院 | 执行比较运算的方法和装置 |
CN101782893B (zh) * | 2009-01-21 | 2014-12-24 | 上海芯豪微电子有限公司 | 可重构数据处理平台 |
US8468191B2 (en) | 2009-09-02 | 2013-06-18 | Advanced Micro Devices, Inc. | Method and system for multi-precision computation |
CN101706712B (zh) * | 2009-11-27 | 2011-08-31 | 北京龙芯中科技术服务中心有限公司 | 浮点向量乘加运算装置和方法 |
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 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
EP2733842B1 (en) * | 2012-11-15 | 2018-07-04 | ABB Schweiz AG | Controlling an electrical converter |
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 | 南京中兴软件有限责任公司 | 统计计数设备及其实现方法、具有统计计数设备的系统 |
WO2016054264A1 (en) * | 2014-09-30 | 2016-04-07 | 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 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
CN106447035B (zh) * | 2015-10-08 | 2019-02-26 | 上海兆芯集成电路有限公司 | 具有可变率执行单元的处理器 |
US10346350B2 (en) | 2015-10-08 | 2019-07-09 | Via Alliance Semiconductor Co., Ltd. | Direct execution by an execution unit of a micro-operation loaded into an architectural register file by an architectural instruction of a processor |
CN105426160B (zh) | 2015-11-10 | 2018-02-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN107506828B (zh) * | 2016-01-20 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 用于稀疏连接的人工神经网络计算装置和方法 |
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编码器 |
-
2017
- 2017-04-21 CN CN202410020777.8A patent/CN117933314A/zh active Pending
- 2017-04-21 CN CN201711468817.1A patent/CN108733348B/zh active Active
- 2017-04-21 CN CN201710269106.5A patent/CN108734281B/zh active Active
- 2017-04-21 CN CN202410018233.8A patent/CN117933327A/zh active Pending
-
2019
- 2019-11-27 US US16/697,603 patent/US11507350B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN108734281B (zh) | 2024-08-02 |
CN108733348B (zh) | 2022-12-09 |
CN117933314A (zh) | 2024-04-26 |
CN108734281A (zh) | 2018-11-02 |
CN108733348A (zh) | 2018-11-02 |
US11507350B2 (en) | 2022-11-22 |
US20200097793A1 (en) | 2020-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108734281B (zh) | 处理装置、处理方法、芯片及电子装置 | |
US11531541B2 (en) | Processing apparatus and processing method | |
CN109032669B (zh) | 神经网络处理装置及其执行向量最小值指令的方法 | |
EP3557484A1 (en) | Neural network convolution operation device and method | |
JP6846534B2 (ja) | 計算装置と計算方法 | |
CN109656867B (zh) | Slam运算装置和方法 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN110163359A (zh) | 一种计算装置及方法 | |
CN116796812A (zh) | 可编程并行处理装置、神经网络芯片和电子设备 | |
CN109389213B (zh) | 存储装置及方法、数据处理装置及方法、电子装置 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
CN111367567B (zh) | 一种神经网络计算装置和方法 | |
Yin et al. | A reconfigurable accelerator for generative adversarial network training based on FPGA | |
CN115081602A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 | |
CN118690805A (zh) | 处理装置和处理方法 | |
CN115079927A (zh) | 暂存卷积结果的缓存、计算装置、集成电路装置及板卡 | |
CN110276447A (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 |