CN118036682A - 加法神经网络的存内计算实现方法、装置、设备及介质 - Google Patents
加法神经网络的存内计算实现方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN118036682A CN118036682A CN202311002683.XA CN202311002683A CN118036682A CN 118036682 A CN118036682 A CN 118036682A CN 202311002683 A CN202311002683 A CN 202311002683A CN 118036682 A CN118036682 A CN 118036682A
- Authority
- CN
- China
- Prior art keywords
- memory cell
- convolution
- nonvolatile memory
- matrix
- target
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 112
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 title claims abstract description 57
- 239000011159 matrix material Substances 0.000 claims abstract description 129
- 239000013598 vector Substances 0.000 claims abstract description 83
- 238000013507 mapping Methods 0.000 claims abstract description 39
- 239000000654 additive Substances 0.000 claims abstract description 34
- 230000000996 additive effect Effects 0.000 claims abstract description 34
- 238000012545 processing Methods 0.000 claims description 47
- 238000004590 computer program Methods 0.000 claims description 16
- 238000005265 energy consumption Methods 0.000 abstract description 10
- 230000000875 corresponding effect Effects 0.000 description 37
- 230000006870 function Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000013215 result calculation Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 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
- 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/50—Adding; Subtracting
-
- 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)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种加法神经网络的存内计算实现方法、装置、设备及介质。该方法包括按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中;通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征;其中,一个加法计算电路中包括一个进位运算电路和一个求和电路,进位运算电路或者求和电路均通过预充电感应放大器、逻辑单元、非易失性存储单元以及参考存储单元组合构建得到。本发明实施例的技术方案提供了一种以存内计算实现加法神经网络的新方式,在能耗和能效两方面对加法神经网络的运算进行有效提升。
Description
技术领域
本发明涉及计算机硬件领域,尤其涉及基于芯片的神经网络加速领域,具体涉及一种加法神经网络的存内计算实现方法、装置、计算机设备及存储介质。
背景技术
当前各种神经网络模型技术快速发展,在计算机视觉、图像分类、物体检测、目标跟踪和目标分割等应用领域取得了较好的成果。随着物联网技术的发展,传统的终端-云端模式无法传输大量的数据,许多物联网设备无法在云端进行数据处理。这就需要边缘AI(Artificial Intelligence,人工智能)设备可以在没有互联网的情况下,直接在传感器附近进行神经网络计算。这样通常会受到电池容量和芯片面积等的约束和限制,因此需要通过降低功耗和提高性能来完成复杂的神经网络的推断。
相关技术中,可以通过加法神经网络取代传统的卷积神经网络,最大限度降低运算复杂度。但是,加法神经网络在使用时,往往受限于“冯诺依曼瓶颈”的限制。也即,在实施计算时,需要从存储器中取出数据,传输到计算模块中进行计算,而后再写回存储器,如此反复的重复这个过程,导致存储器和计算模块之间进行频繁的数据访问,需要消耗较长的时间和较大的功耗。
因此,如何在加法神经网络的应用过程中,解决数据搬移的时间和能耗问题,实现对加法神经网络的加速,是目前有待解决的重要问题。
发明内容
本发明提供了一种加法神经网络的存内计算实现方法、装置、计算机设备及存储介质,提供了一种以存内计算实现加法神经网络的新方式,在能耗和能效两方面对加法神经网络的运算进行有效提升。
根据本发明实施例的一方面,提供了一种加法神经网络的存内计算实现方法,包括:
按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中;其中,目标向量和目标矩阵中的每个元素均为多比特数;
通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征;
其中,一个加法计算电路中包括一个进位运算电路和一个求和电路,进位运算电路或者求和电路均通过预充电感应放大器、逻辑单元、非易失性存储单元以及参考存储单元组合构建得到。
根据本发明实施例的另一方面,还提供了一种加法神经网络的存内计算实现装置,包括:
特征映射模块,用于按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中;其中,目标向量和目标矩阵中的每个元素均为多比特数;
存内计算模块,用于通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征;
其中,一个加法计算电路中包括一个进位运算电路和一个求和电路,进位运算电路或者求和电路均通过预充电感应放大器、逻辑单元、非易失性存储单元以及参考存储单元组合构建得到。
根据本发明实施例的另一方面,还提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的标准存储器和存算一体存储器;其中,
所述标准存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的加法神经网络的存内计算实现方法。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的加法神经网络的存内计算实现方法。
本发明实施例的技术方案,在按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中之后,使用带有加法计算电路的存算一体存储器,可以按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征,能够在像常规存储器执行读写操作的过程中,完成多比特度量函数和累加计算,通过将计算单元与存储阵列整合在一起的方式,在提升数据传输效率的同时,降低了能耗,相比传统冯诺依曼架构的神经网络加速器,能够有效提升网络运算的能效。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术提供的一种存算一体存储器中的非易失性存储单元的结构示意图;
图2是现有技术提供的一种存算一体存储器中的存储单元阵列的结构示意图;
图3是现有技术提供的一种存算一体存储器中读逻辑的功能实现示意图;
图4是现有技术提供的一种存算一体存储器中读逻辑的电路实现示意图;
图5是本发明实施例提供的一种进位运算电路的结构示意图;
图6是本发明实施例提供的一种求和电路的结构示意图;
图7是根据本发明实施例提供的一种加法神经网络的存内计算实现方法的流程图;
图8是本发明实施例的技术方案所适用的一种基于卷积层的特征映射示意图;
图9是本发明实施例的技术方案所适用的一种基于全连接层的特征映射示意图;
图10是根据本发明实施例提供的另一种加法神经网络的存内计算实现方法的流程图;
图11是本发明实施例的技术方案所适用的一种基于存内计算的度量函数计算过程的示意图;
图12是本发明实施例的技术方案所适用的一种基于存内计算的求和过程的示意图;
图13是根据本发明实施例提供的一种加法神经网络的存内计算实现装置的结构示意图;
图14是实现本发明实施例的加法神经网络的存内计算实现方法的电子设备的结构示意图;
图15是实现本发明实施例的加法神经网络的存内计算实现方法的电子设备中,用于实现存内计算的核心器件的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本发明各实施例的技术方案,首先将本发明的现有技术方案进行简单介绍。
首先,对加法神经网络的实现原理进行简单介绍。加法神经网络主要通过计算输入特征和权重之间距离,得到输出特征。经实验测试可得,加法神经网络可以获得与传统卷积神经网络相当的准确率。其中输入特征和输出特征的计算如下述公式所示:
其中,输入特征表示为Fin;W为滤波器权重;cin为特征通道数;d为输入特征的高度和宽度。负号是为了整顿输出结果,使其与距离正相关。
通过上述公式可知:通过对输入特征X减去权重Y再取绝对值的结果|X-Y|进行累加求和,可以得到与卷积运算近似的输出特征。
如前所述,在传统的计算平台中,上述加法神经网络仍然受限于“冯诺依曼瓶颈”的限制,存储器和计算模块分离,使其存在存储墙和功耗墙。存内计算打破了传统计算机的冯诺依曼架构的限制,将计算电路嵌入存储器中,存储和计算融为一体。这样的方式大幅度降低了数据迁移的时间成本和对存储器访存的能耗,用于实现高吞吐量的人工智能应用。多项研究表明,相比传统的冯诺依曼架构,这种架构在执行神经网络应用时,能降低大量的能耗,显著的提高系统的能效比,也即,提高了系统的能量的利用效率。存内计算分为数字计算和模拟计算两大类。模拟计算中需要设计较高精度的专用数模/模数转换器,需要占用较高的功耗和面积。
因此,亟需设计基于数字的非易失性随机存储器存内计算架构替代传统的冯诺依曼架构,解决数据搬移的时间和能耗问题,实现对加法神经网络的加速。
在本发明各实施例中,对现有的存算一体存储器进行了适应性的改进,使其可以在数据读写过程中,执行加法计算逻辑,以满足对加法神经网络的加速需求。
在本发明各实施例中所使用的存算一体存储器包括存储单元阵列,该存储单元阵列由多个非易失性存储单元列排布构成,每个非易失性存储单元列中包括多个纵向排列的非易失性存储单元。
在图1中示出了该非易失性存储单元的结构示意图。如图1所示,该非易失性存储单元为1T1R结构。该存储单元具体包括:一个晶体管(记为T)和一个非易失性存储器件(记为R)。
其中,非易失性存储器件R的阻值可以有两种状态,一种为高阻状态,一种为低阻状态,分别代表数据比特“0”和“1”。对于晶体管T,其栅极接字线(WL),漏极经非易失性存储器件后接位线(BL),源极接源线(SL),源线一般接地。在逻辑电路中,通常具有三个信号:(1)访问控制信号(记为A,通常从WL施加),用于对存储单元进行访问控制;(2)当前已存储的数据(记为Bi);(3)写入信号(记为C,通常从BL施加,可以是电流或电压)。根据这三个信号,存储单元下一个存储的数据(记为Bi+1)可以表达为
基于该表达式,写入信号C可以看作逻辑功能选择信号,决定了逻辑计算的功能函数,如当C等于“0”,“1”,以及(当前存储器的取反)时,存储单元下一个存储的数据Bi+1分别等于/>(“与”逻辑),A+Bi(“或”逻辑)以及/>(“异或”逻辑)。最终计算的结果(即Bi+1)直接存储在存储单元内。其中与当前存储器的值编码运算的另一个值为存储单元的字线A。其逻辑计算操作与存储器的正常读写操作基本一致。
进一步的,该存算一体存储器中的存储单元阵列包括至少一个参考存储单元列和多个非易失性存储单元列,参考存储单元列提供一列参考信号,用来比较参考判断数据的大小。相应的,如图2所示,通过字线、位线、源线可以将所有的非易失性存储单元组织在一起,并通过行译码器、列译码器、写驱动、读电路和读逻辑,形成完整的存储单元阵列。在上述正常的写驱动中,利用存储单元对数据逻辑计算,通过控制字线A的电压即可控制晶体管的开闭,从而控制存储单元的选择与否。更具体地,当字线A为高电平时,晶体管处于导通状态,存储单元可访问,可对其进行写操作;而当字线为低电平时,晶体管处于关闭状态,存储单元不可访问,亦不可写,从而不能进行改变对应的状态。对于1T1R的存储单元,通常需要施加两个信号:(1)访问控制信号(即是行地址译码,通常从字线A施加),用于对存储单元进行访问控制;(2)写入信号(通常从位线C施加,可以是电流或电压形式)。另外,存储单元中存储的数据为二进制数的一个二进制位。如图2所示,在最左边的那一列的器件上增加一列参考信号,用来读取数据的时候比较参考判断数据的大小。外围存储器阵列的并行结构,它也是存内计算的基本计算单元。这里我们以一个n×k的存储器阵列为例来说明其原理。除了一列参考存储单元,该阵列包含n×k个非易失性存储单元,有n个BL和SL,以及k组WL。共有n+1个独立的列写驱动器,它们可以并行地进行列写操作。列解码器的信号C(1-n)是欲写入存储器B中的数据,也是计算逻辑运算时的逻辑操作数。存储器阵列可以在典型的存储器模式或存内计算模式下工作。它可以通过配置写入和读取电路在两者之间自由切换。
进一步的,存储单元阵列的每一列上还配备了一个预充电感应放大器(PCSA)和CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)逻辑树(Logic Tree),以支持并行的读逻辑运算。本发明各实施例正是通过将上述预充电感应放大器、逻辑单元与一个或者多个非易失性存储单元进行组合,进而可以在读逻辑的执行过程中,实现加法计算逻辑中的进位计算以及求和计算。
具体的,在图3中示出了一种存算一体存储器中读逻辑的功能实现示意图。如图3所示,对于1T1R的数据获取,使用非易失性的预充电感应放大器获取对应的非易失性存储单元的值,其中一个为参考信号,另一个为待读取的数据。进一步的,在图4中具体示出了存算一体存储器中读逻辑的电路实现示意图。如图4所示,由于R0(Bi)和R1(REF)的电阻不同,导致其两条通路的放电的速度不同,从而可以通过预充电感应放大器得到对应的输出值,并保持不变。预充电感应放大器实现对应的正反数据的输出。该读操作的电路具有较好的扩展性,通过在预充电放大器和非易失性存储器中间增加一级或者多级逻辑电路,可实现对应的与‘&’,或‘|’,同或‘⊙’和异或等逻辑。
为了能将存内计算的思路应用在加法神经网络中,发明人结合相关技术提供的上述读逻辑电路,创造性的提出了在该存算一体存储器中的读逻辑中,加入加法计算电路的实现方式。
首先,可以通过下述四个公式对进位和求和的关系进行描述:
Zi=XZi-1+XY+YZi-1;
其中,S为X与Y的求和值,为S的反数据;Zi为第i个比特位置的进位值,Zi-1为第i-1个比特位置对第i个比特位置的进位值,/>为Zi的反数据。基于此,在本发明各实施例中,创造性的提出了一种基于图4是所示的存算一体存储器中读逻辑改进得到的进位和求和电路。上述进位和求和电路均是基于非易失性存储单元和CMOS逻辑树混合电路结构实现。
具体的,在构建得到求和电路时,可以通过控制预充电感应放大器的读取路径直接与参考信号比较来实现进位Zi的获取。巧妙的应用Zi是一个二进制量化的数字,只要X、Y以及Zi-1中,两个或更多的输入是“1”,则Zi是“1”;否则Zi是“0”。进而,我们使用读逻辑很容易的实现进位操作,同时Zi可以同时有效地输出。相应的,如图5所示,为了实现对Zi的计算,需要在读逻辑操作之前,将X、Y以及Zi-1三个数据存储在对应的同一列的非易失性存储单元中。同时设定该列的参考信号的数值为一个低阻两个高阻的并联电路和两个低阻一个高阻的并联电阻之间的数值。
相类似的,在图6中示出了求和电路的结构示意图。如图6所示,通过在CMOS逻辑树中加入两个XOR(异或)逻辑电路,并在这两个逻辑电路中分别输入X和前面通过图5计算得到的进位Zi,可以最终输出求和结果S和它的取反结果
也即,本发明各实施例所使用的存算一体存储器包括如图2所示的存储单元阵列,以及连接存储单元阵列的进位运算电路或求和运算电路;
存储单元阵列包括至少一个参考存储单元列和多个非易失性存储单元列,参考存储单元列提供一列参考信号,用来比较参考判断数据的大小,其中:
如图5所示,在所述进位运算电路中,将预充电感应放大器与非易失性存储单元列中的三个非易失性存储单元以及一个参考存储单元连接,各非易失性存储单元用于存储被加数、加数以及前一进位值,参考存储单元中存储的参考信号位于由一个低阻和两个高阻并联构成的第一电阻值与由两个低阻和一个高阻构成的第二电阻值之间;逻辑单元被设置为不执行逻辑运算,所述预充电感应放大器用于输出与下一进位值对应的正反逻辑;
如图6所示,在所述求和电路中,将预充电感应放大器与非易失性存储单元列中的一个非易失性存储单元以及一个参考存储单元连接,该非易失性存储单元用于存储所述加数,参考存储单元用于存储固定参考信号,逻辑单元被设置为两级异或逻辑运算电路,第一级异或逻辑运算电路用于输入所述被加数,第二级逻辑运算电路用于输入配对的所述进位运算电路中输出的所述下一进位值,所述预充电感应放大器用于输出所述被加数与所述加数的求和结果对应的正反逻辑。
综上,本发明各实施例在现有的存算一体存储器中读逻辑的电路实现的基础上,进一步实现了如图5和图6所示的进位和求和电路,为加法神经网络的存内计算提供有效的硬件准备。
相应的,图7为本发明实施例提供的一种加法神经网络的存内计算方法的流程图,本实施例可适用于使用本发明实施例提供的改进后的存算一体存储器进行加法神经网络的存内计算的情况,该方法可以由加法神经网络的存内计算装置来执行,该装置可以采用硬件和/或软件的形式实现,并一般可配置于使用该存算一体存储器的电子设备中。如图7所示,该方法包括:
S710、按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中;其中,目标向量和目标矩阵中的每个元素均为多比特数。
其中,该卷积运算类型可以为输入特征与设定卷积核进行卷积计算,此外,由于全连接计算可以理解为一种特殊形式的卷积,该卷积运算类型也可以为将输入特征通过全连接网络进行全连接计算。输入特征可以理解为需要进行卷积计算或者全连接计算的特征,卷积权重特征可以理解为卷积核的权重,或者是全连接网络的节点关系权重等,本实施例对此并不进行限制。
可以理解的是,不同的卷积运算类型,所需进行卷积操作的左右操作数也不尽相同,进而在使用如前所述的加法神经网络计算|X-Y|(差值的绝对值)的累加求和结果时,X和Y的取值也是不尽相同的。
相应的,需要首先根据卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中,以为后续计算提供数据准备。
在本实施例的一个可选的实施方式中,按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中,可以包括:
如果卷积运算类型为将第一通道的输入特征与第二通道的目标卷积核进行卷积计算(也即,基于卷积层的卷积计算),则将目标卷积核进行水平展开,得到目标向量;根据卷积输出特征的第一高度和第一宽度,以及目标卷积核的第二高度和第二宽度,确定待填充的映射矩阵的第三高度和第三宽度;其中,第三高度为第一高度和第一宽度的乘积,第三宽度为第二高度和第二宽度的乘积;从输入特征中分别获取与目标卷积核匹配的输入子特征,并将各输入子特征的水平展开结果分别填充至映射矩阵的每行中,得到目标矩阵。
为了便于描述,在图8中具体示出了一种基于卷积层的特征映射示意图。如图8所示,输入特征(Input Feature,也即Fin)为c通道的特征图,该特征图的宽度和高度均为h,卷积核为c通道的卷积权重特征(Weight,也即W),每个通道共具有t个卷积核。每个卷积核的卷积权重特征的宽度和高度均为d。上述c通道的输入特征和卷积核的卷积结果为t通道的卷积输出特征(Output,也即S),该卷积输出特征的高度为m,宽度为n。
相应的,输入特征和卷积权重特征的映射过程可以描述为:首先,获取第一通道的输入特征与第二通道的目标卷积核,该目标卷积核为图8中所示的由w1-w9组成的3*3卷积核。通过将目标卷积核进行水平展开,可以得到形如(w1 w2 w3 w4 w5 w6 w7 w8 w9)的目标向量。之后,由于卷积输出特征的第一高度和第一宽度均为4,目标卷积核的第二高度和第二宽度均为3,因此确定待填充的映射矩阵的第三高度为16,第三宽度为9。通过对第一通道的输入特征进行设定步长的窗口滑动,共可以得到16个输入子特征,也即Input(F1)、Input(F2)、……、Input(F16),对每个输入子特征进行水平展开得到9个子特征后,将每个水平展开结果分别填充至映射矩阵的每行的9个空位中,得到9*16的目标矩阵。
或者,在本实施例的另一个可选的实施方式中,按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至输入特征矩阵和卷积权重矩阵中,还可以包括:
如果卷积运算类型为将输入特征通过全连接网络进行全连接计算(也即,基于全连接层的卷积计算),则将输入特征进行水平展开,得到目标向量;将输入特征中的特征值数量分别作为高度和宽度,构建得到待填充的映射矩阵;根据所述全连接网络中前后全连接层中各节点之间的连接关系,将各节点关系权重分别填充至映射矩阵中,得到目标矩阵。
为了便于描述,在图9中示出了本发明实施例的技术方案所适用的一种基于全连接层的特征映射示意图。如图9所示,该全连接网络的输入特征为F1-F9。通过将上述9个输入特征进行水平展开,可以得到目标向量。之后,使用输入特征中的特征值数据的数目9,可以构建得到9*9的待填充的映射矩阵。可以理解的是,全连接网络可以包括多列,每一列包括的节点数量同样也为9。之后,可以根据全连接网络中前后全连接层中各节点之间的连接关系,共获取9*9个节点关系权重,也即w11-w99。通过将上述各节点关系权重分别填充至映射矩阵中,得到针对前后全连接层的目标矩阵。
S720、通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征。
其中,一个加法计算电路中包括一个进位运算电路和一个求和电路,进位运算电路或者求和电路均通过预充电感应放大器、逻辑单元、非易失性存储单元以及参考存储单元组合构建得到。
在前文的描述中,已经对本发明各实施例所使用的进位运算电路或者求和电路的结构进行描述,这里不再赘述。
需要说明的是,由于目标向量和目标矩阵中的每个元素均为多比特数,则对目标向量和目标矩阵进行存内计算的方式,涉及到多比特的度量函数的计算,这里的度量函数具体是指计算|X-Y|。
具体的,需要以目标向量中的第i列向量元素作为X,以目标矩阵第i列中的每个矩阵元素分别作为Y,计算得到目标矩阵中每个矩阵位置分别对应的|X-Y|的值,以得到新的目标矩阵。之后,需要将目标矩阵中的每一行中的每个多比特行元素进行累加求和,得到针对该与输入特征对应的卷积输出特征,也即,一个第三高度的列向量,之后,可以通过对该列向量进行处理,可以得到与第一高度和第一宽度对应的卷积输出特征,如前例所述的4*4的矩阵。
本发明实施例的技术方案,在按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中之后,使用带有加法计算电路的存算一体存储器,可以按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征,能够在像常规存储器执行读写操作的过程中,完成多比特度量函数和累加计算,通过将计算单元与存储阵列整合在一起的方式,在提升数据传输效率的同时,降低了能耗,相比传统冯诺依曼架构的神经网络加速器,能够有效提升网络运算的能效。
图10为本发明实施例提供的另一种加法神经网络的存内计算实现方法的流程图,本实施例以上述各实施例为基础进行细化,在本实施例中,对“通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征”的操作进行具体化。
相应的,如图10所示,该方法可以包括:
S1010、按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中。
其中,目标向量和目标矩阵中的每个元素均为多比特数。
S1020、从目标向量中获取多比特的当前处理向量元素。
S1030、将当前处理向量元素按位存储在所述存算一体存储器的第一非易失性存储单元行中,并对第一非易失性存储单元行进行符号位扩展。
S1040、构建与符号位扩展后的比特位数匹配的全0序列,并将全0序列存储在第二非易失性存储单元行中。
S1050、根据当前处理向量元素所在的向量位置,在目标矩阵中确定当前矩阵列。
S1060、从当前矩阵列中获取多比特的当前矩阵列元素,并将所述当前矩阵列元素按位存储在所述存算一体存储器的第三非易失性存储单元行中。
S1070、对第三非易失性存储单元行的每个比特位执行按位取反操作,并将取反结果存储在第四非易失性存储单元行中。
S1080、将比特值1存储在所述第二非易失性存储单元行的最低比特位处。
S1090、根据第一非易失性存储单元行、第二非易失性存储单元行和第四非易失性存储单元行中的每一列数据,采用所在列的进位运算电路串行更新所述第二非易失性存储单元行中的各比特位。
S10100、根据第一非易失性存储单元行、第四非易失性存储单元行以及第二非易失性存储单元行中的每一列数据,采用匹配的求和电路,并行计算得到当前处理向量元素与当前矩阵列元素的求差结果存储在第五非易失性存储单元行中。
S10110、根据所述第五非易失性存储单元行中扩展的符号位对所述求差结果进行取绝对值处理,得到当前卷积结果,并使用当前卷积结果更新当前矩阵列中的当前矩阵列元素。
为了便于描述,在图11中示出了本发明实施例的技术方案所适用的一种基于存内计算的度量函数计算过程的示意图。如图11所示,以目标向量和目标矩阵中的每个元素均为8-bit(比特)为例,介绍如何通过存算一体存储器中的进位运算电路和求和电路,计算得到以8-bit的当前处理向量元素为X,以8-bit的当前矩阵列元素为Y的度量函数|X-Y|。
其中,加法网络的核心是度量函数S(Fin,W)使用1维来衡量过滤器和输入特征之间的相似性。而减法可以通过其补码操作形式实现。减法通过转换成对应的相反值转换为对应的加法。本发明各实施例通过上述的“XOR”逻辑和移位操作来完成度量函数S和求和逻辑。
具体的,如图11所示,X[7:0]和Y[7:0]以补码的形式存储,并且计算也是按照补码进行操作,这样就可以像加法一样实现减法。在步骤0(Step0),将有符号的数据从8位扩展到9位,其中扩展位等于符号位,也即:X[8]=X[7],Y[8]=Y[7]。初始进位Z[8:0]为0。
在步骤1(Step1)中,将减法改为加法,通过Y[8:0]取反再加1的操作实现。其中,加1的结果放入Z[0]中。
在如本发明各实施例为存算一体存储器设计的电路中,翻转是“NOT”逻辑,这可以很容易地在读逻辑中实现。例如,可以将数据首先从各非易失性存储单元中读取出来,在获取预充电感应放大器输出的反数据后,将反数据重新写入至各非易失性存储单元中。
在步骤2(Step2)中,Z[8:1]是通过结合进位运算电路进行读操作一步步的实现。经过八次读写操作,我们可以得到所有的进位数Z[8:0]。
在步骤3(Step3)中,为了通过读逻辑并行实现S[8:0],需要将Y[8:0]和Z[8:0]移动到不同列中。
在步骤4(Step4)中,可以通过结合求和电路的读逻辑来获得结果S[8:0]。为了计算度量函数中的绝对值,符号位S[8]应该与S[7:0]的其余位进行“XOR”。具体的,外围计数器与S[8]相加(即,负数加“1”,正数加“0”)。如果S[8]=“1”,那么S[8:0]的绝对值就是翻转的S[8:0]加“1”;如果S[8]=“0”,那么S[8:0]的绝对值就是S[8:0]加“0”。
在步骤5(Step5)中,在得到S[8:0]绝对值之后,把符号位S[8]输出到外围计数器。
S10120、判断是否完成对当前处理向量元素与当前矩阵列中全部矩阵列元素之间的运算:若是,执行S10130;否则,返回执行S1060。
S10130、判断是否完成对目标向量中全部向量元素的运算:若是,执行S10140;否则,返回执行S1020。
S10140、通过所述存算一体存储器中的加法计算电路,按行将所述目标矩阵的每个矩阵行元素进行求和运算后,得到与输入特征对应的卷积输出特征。
在上述各实施例的基础上,通过所述存算一体存储器中的加法计算电路,按行将所述目标矩阵的每个矩阵行元素进行求和运算后,得到与输入特征对应的卷积输出特征,可以包括:
在所述目标矩阵中获取当前处理行,并在所述当前处理行中获取多比特的第一行元素和第二行元素;将所述第一行元素按位存储在所述存算一体存储器的第六非易失性存储单元行中,并对第六非易失性存储单元行进行符号位扩展;构建与符号位扩展后的比特位数匹配的全0序列,并将全0序列存储在第七非易失性存储单元行中;将第二行元素按位存储在所述存算一体存储器的第八非易失性存储单元行中;根据第六非易失性存储单元行、第七非易失性存储单元行和第八非易失性存储单元行中的每一列数据,采用所在列的进位运算电路串行更新所述第七非易失性存储单元行中的各比特位;根据第六非易失性存储单元行、第八非易失性存储单元行以及第七非易失性存储单元行中的每一列数据,采用匹配的求和电路,并行计算得到第一行元素和第二行元素的求和结果;将所述求和结果确定为新的第一行元素,并在所述当前处理行中获取新的多比特的第二行元素后,返回执行将所述第一行元素按位存储在所述存算一体存储器的第六非易失性存储单元行中的操作,直至完成对当前处理行的求和计算;返回执行在所述目标矩阵中获取当前处理行的操作,直至完成对所述目标矩阵中全部行的处理,以得到与输入特征对应的卷积输出特征。
具体的,在图12中示出了本发明实施例的技术方案所适用的一种基于存内计算的求和过程的示意图。
具体的,对于累积的这些绝对值是布尔逻辑计算的全加器。进而,可以通过使用存内计算的方式,计算上述各累加结果过。
相类似的,如图12所示,在步骤0中,可以将之前得到的数据从8位扩展到9位,S[8]=S[7];在步骤1中,使用串行操作来获得进位值Z[8:0];在步骤2中,可以将S2[8:0]和Z[8:0]移动到不同的列;在步骤3中,可以实现将S1和S2并行求和到S[8:0]中。
在上述各实施例的基础上,在得到与输入特征对应的卷积输出特征之后,还可以包括:
在针对多通道的输入特征得到多通道的卷积输出特征时,通过所述存算一体存储器中的加法计算电路,对所述多通道的卷积输出特征进行求和处理,得到与所述多通道的输入特征对应的最终卷积结果。
在本发明各实施例中,通过设计一个基于数字非易失性随机存储器存内计算的加法神经网络加速器。这种神经网络的主要运算形式计算输入特征和权重的度量函数,并将该度量函数的结果全部求和。通过设计其专用的高效的数字存内计算的方式加速其加法神经网络的度量函数和函数结果累加的运算。但是由于存内计算的特点,需要解决以下的技术问题。
1、对于数字存内计算,它除了可以像往常的存储器一样读写,还需要能在对应的数据映射下执行一个高吞吐量,低能耗的多比特的度量函数运算,其函数结果累加的运算。
2、在设计出对应的存储器在支持存取数据的同时,硬件高效的实现加法器网络卷积层和全连接层的存内计算高效的映射。
3、加法神经网络被映射到存内计算平台上,需要并行计算其度量函数和函数结果的累加运算。
需要最后说明的是,基于本发明各实施例所述的加法神经网络的存内计算实现方法,实验获取了8比特的VGG-8、ResNet-18和ResNet-50网络对应的能耗分别为1.65μJ、9.29μJ和42.46μJ。
进而,VGG-8、ResNet-18和ResNet-50的能量效率分别可以达到246.68Gops/W、387.38Gops/W和181.35Gops/W。与其他最先进的CPU、GPU和FPGA平台相比,本发明实施例所提出的实现方式在能耗和能效方面有很大的优势。在相同的数据集下,与CPU、GPU和FPGA相比,能量效率提高了1.45-66.78倍。
图13为本发明实施例提供的一种加法神经网络的存内计算装置的结构示意图。如图13所示,该装置包括:特征映射模块1310以及存内计算模块1320,其中:
特征映射模块1310,用于按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中;其中,目标向量和目标矩阵中的每个元素均为多比特数;
存内计算模块1320,用于通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征;
其中,一个加法计算电路中包括一个进位运算电路和一个求和电路,进位运算电路或者求和电路均通过预充电感应放大器、逻辑单元、非易失性存储单元以及参考存储单元组合构建得到。
本发明实施例的技术方案,在按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中之后,使用带有加法计算电路的存算一体存储器,可以按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征,能够在像常规存储器执行读写操作的过程中,完成多比特度量函数和累加计算,通过将计算单元与存储阵列整合在一起的方式,在提升数据传输效率的同时,降低了能耗,相比传统冯诺依曼架构的神经网络加速器,能够有效提升网络运算的能效。
在上述各实施例的基础上,特征映射模块1310,可以具体用于:
如果卷积运算类型为将第一通道的输入特征与第二通道的目标卷积核进行卷积计算,则将目标卷积核进行水平展开,得到目标向量;
根据卷积输出特征的第一高度和第一宽度,以及目标卷积核的第二高度和第二宽度,确定待填充的映射矩阵的第三高度和第三宽度;
其中,第三高度为第一高度和第一宽度的乘积,第三宽度为第二高度和第二宽度的乘积;
从输入特征中分别获取与目标卷积核匹配的输入子特征,并将各输入子特征的水平展开结果分别填充至映射矩阵的每行中,得到目标矩阵。
在上述各实施例的基础上,特征映射模块1310,可以具体用于:
如果卷积运算类型为将输入特征通过全连接网络进行全连接计算,则将输入特征进行水平展开,得到目标向量;
将输入特征中的特征值数量分别作为高度和宽度,构建得到待填充的映射矩阵;
根据所述全连接网络中前后全连接层中各节点之间的连接关系,将各节点关系权重分别填充至映射矩阵中,得到目标矩阵。
在上述各实施例的基础上,存算一体存储器可以包括存储单元阵列,以及连接存储单元阵列的进位运算电路或求和运算电路;
存储单元阵列可以包括至少一个参考存储单元列和多个非易失性存储单元列,参考存储单元列提供一列参考信号,用来比较参考判断数据的大小,其中:
在所述进位运算电路中,将预充电感应放大器与非易失性存储单元列中的三个非易失性存储单元以及一个参考存储单元连接,各非易失性存储单元用于存储被加数、加数以及前一进位值,参考存储单元中存储的参考信号位于由一个低阻和两个高阻并联构成的第一电阻值与由两个低阻和一个高阻构成的第二电阻值之间;逻辑单元被设置为不执行逻辑运算,所述预充电感应放大器用于输出与下一进位值对应的正反逻辑;
在所述求和电路中,将预充电感应放大器与非易失性存储单元列中的一个非易失性存储单元以及一个参考存储单元连接,该非易失性存储单元用于存储所述加数,参考存储单元用于存储固定参考信号,逻辑单元被设置为两级异或逻辑运算电路,第一级异或逻辑运算电路用于输入所述被加数,第二级逻辑运算电路用于输入配对的所述进位运算电路中输出的所述下一进位值,所述预充电感应放大器用于输出所述被加数与所述加数的求和结果对应的正反逻辑。
在上述各实施例的基础上,存内计算模块1320,可以具体用于:
从目标向量中获取多比特的当前处理向量元素;
将当前处理向量元素按位存储在所述存算一体存储器的第一非易失性存储单元行中,并对第一非易失性存储单元行进行符号位扩展;
构建与符号位扩展后的比特位数匹配的全0序列,并将全0序列存储在第二非易失性存储单元行中;
根据当前处理向量元素所在的向量位置,在目标矩阵中确定当前矩阵列;
从当前矩阵列中获取多比特的当前矩阵列元素,并将所述当前矩阵列元素按位存储在所述存算一体存储器的第三非易失性存储单元行中;
对第三非易失性存储单元行的每个比特位执行按位取反操作,并将取反结果存储在第四非易失性存储单元行中;
将比特值1存储在所述第二非易失性存储单元行的最低比特位处;
根据第一非易失性存储单元行、第二非易失性存储单元行和第四非易失性存储单元行中的每一列数据,采用所在列的进位运算电路串行更新所述第二非易失性存储单元行中的各比特位;
根据第一非易失性存储单元行、第四非易失性存储单元行以及第二非易失性存储单元行中的每一列数据,采用匹配的求和电路,并行计算得到当前处理向量元素与当前矩阵列元素的求差结果存储在第五非易失性存储单元行中;
根据所述第五非易失性存储单元行中扩展的符号位对所述求差结果进行取绝对值处理,得到当前卷积结果,并使用当前卷积结果更新当前矩阵列中的当前矩阵列元素;
返回执行从当前矩阵列中获取多比特的当前矩阵列元素的操作,直至完成当前处理向量元素与当前矩阵列中全部矩阵列元素之间的运算;
返回执行从目标向量中获取多比特的当前处理向量元素的操作,直至完成对目标向量中全部向量元素的运算,以得到更新后的目标矩阵;
通过所述存算一体存储器中的加法计算电路,按行将所述目标矩阵的每个矩阵行元素进行求和运算后,得到与输入特征对应的卷积输出特征。
在上述各实施例的基础上,存内计算模块1320,可以进一步具体用于:
在所述目标矩阵中获取当前处理行,并在所述当前处理行中获取多比特的第一行元素和第二行元素;
将所述第一行元素按位存储在所述存算一体存储器的第六非易失性存储单元行中,并对第六非易失性存储单元行进行符号位扩展;
构建与符号位扩展后的比特位数匹配的全0序列,并将全0序列存储在第七非易失性存储单元行中;
将第二行元素按位存储在所述存算一体存储器的第八非易失性存储单元行中;
根据第六非易失性存储单元行、第七非易失性存储单元行和第八非易失性存储单元行中的每一列数据,采用所在列的进位运算电路串行更新所述第七非易失性存储单元行中的各比特位;
根据第六非易失性存储单元行、第八非易失性存储单元行以及第七非易失性存储单元行中的每一列数据,采用匹配的求和电路,并行计算得到第一行元素和第二行元素的求和结果;
将所述求和结果确定为新的第一行元素,并在所述当前处理行中获取新的多比特的第二行元素后,返回执行将所述第一行元素按位存储在所述存算一体存储器的第六非易失性存储单元行中的操作,直至完成对当前处理行的求和计算;
返回执行在所述目标矩阵中获取当前处理行的操作,直至完成对所述目标矩阵中全部行的处理,以得到与输入特征对应的卷积输出特征。
在上述各实施例的基础上,还可以包括:最终卷积结果计算模块,用于:
在得到与输入特征对应的卷积输出特征之后,在针对多通道的输入特征得到多通道的卷积输出特征时,通过所述存算一体存储器中的加法计算电路,对所述多通道的卷积输出特征进行求和处理,得到与所述多通道的输入特征对应的最终卷积结果。
本发明实施例所提供的加法神经网络的存内计算装置可执行本发明任意实施例所提供的加法神经网络的存内计算方法,具备执行方法相应的功能模块和有益效果。
图14示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图14所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12、RAM 13以及存算一体存储器110通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如执行如本发明任意实施例所述的加法神经网络的存内计算实现方法。
也即:按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中;其中,目标向量和目标矩阵中的每个元素均为多比特数;通过存算一体存储器110中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征;其中,一个加法计算电路中包括一个进位运算电路和一个求和电路,进位运算电路或者求和电路均通过预充电感应放大器、逻辑单元、非易失性存储单元以及参考存储单元组合构建得到。
在一些实施例中,如本发明任意实施例所述的加法神经网络的存内计算实现方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的如本发明任意实施例所述的加法神经网络的存内计算实现方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行如本发明任意实施例所述的加法神经网络的存内计算实现方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
进一步的,在图15中示出了实现本发明实施例的加法神经网络的存内计算实现方法的电子设备中,用于实现存内计算的核心器件的结构示意图。
如图15所示,本发明各实施例的技术方案在电子设备的内部修改了传统冯诺依曼架构。具体的,它是由RISC_V外部协处理器实现的。计算单元被设计在外围的非易失性存储器中。控制单元只需要在从RISC_V获得这些指令后,将其解码并分配给外围非易失性存储器中。这些指令用于控制外围非易失性存储器中的本地读逻辑和写逻辑的基本操作。因此,它可以减少从外围非易失性存储器到RISC_V的长距离数据传输的时间和能耗。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种加法神经网络的存内计算实现方法,其特征在于,包括:
按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中;其中,目标向量和目标矩阵中的每个元素均为多比特数;
通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征;
其中,一个加法计算电路中包括一个进位运算电路和一个求和电路,进位运算电路或者求和电路均通过预充电感应放大器、逻辑单元、非易失性存储单元以及参考存储单元组合构建得到。
2.根据权利要求1所述的方法,其特征在于,按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中,包括:
如果卷积运算类型为将第一通道的输入特征与第二通道的目标卷积核进行卷积计算,则将目标卷积核进行水平展开,得到目标向量;
根据卷积输出特征的第一高度和第一宽度,以及目标卷积核的第二高度和第二宽度,确定待填充的映射矩阵的第三高度和第三宽度;
其中,第三高度为第一高度和第一宽度的乘积,第三宽度为第二高度和第二宽度的乘积;
从输入特征中分别获取与目标卷积核匹配的输入子特征,并将各输入子特征的水平展开结果分别填充至映射矩阵的每行中,得到目标矩阵。
3.根据权利要求1所述的方法,其特征在于,按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至输入特征矩阵和卷积权重矩阵中,包括:
如果卷积运算类型为将输入特征通过全连接网络进行全连接计算,则将输入特征进行水平展开,得到目标向量;
将输入特征中的特征值数量分别作为高度和宽度,构建得到待填充的映射矩阵;
根据所述全连接网络中前后全连接层中各节点之间的连接关系,将各节点关系权重分别填充至映射矩阵中,得到目标矩阵。
4.根据权利要求1-3任一项所述的方法,其特征在于,存算一体存储器包括存储单元阵列,以及连接存储单元阵列的进位运算电路或求和运算电路;
存储单元阵列包括至少一个参考存储单元列和多个非易失性存储单元列,参考存储单元列提供一列参考信号,用来比较参考判断数据的大小,其中:
在所述进位运算电路中,将预充电感应放大器与非易失性存储单元列中的三个非易失性存储单元以及一个参考存储单元连接,各非易失性存储单元用于存储被加数、加数以及前一进位值,参考存储单元中存储的参考信号位于由一个低阻和两个高阻并联构成的第一电阻值与由两个低阻和一个高阻构成的第二电阻值之间;逻辑单元被设置为不执行逻辑运算,所述预充电感应放大器用于输出与下一进位值对应的正反逻辑;
在所述求和电路中,将预充电感应放大器与非易失性存储单元列中的一个非易失性存储单元以及一个参考存储单元连接,该非易失性存储单元用于存储所述加数,参考存储单元用于存储固定参考信号,逻辑单元被设置为两级异或逻辑运算电路,第一级异或逻辑运算电路用于输入所述被加数,第二级逻辑运算电路用于输入配对的所述进位运算电路中输出的所述下一进位值,所述预充电感应放大器用于输出所述被加数与所述加数的求和结果对应的正反逻辑。
5.根据权利要求4所述的方法,其特征在于,通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征,包括:
从目标向量中获取多比特的当前处理向量元素;
将当前处理向量元素按位存储在所述存算一体存储器的第一非易失性存储单元行中,并对第一非易失性存储单元行进行符号位扩展;
构建与符号位扩展后的比特位数匹配的全0序列,并将全0序列存储在第二非易失性存储单元行中;
根据当前处理向量元素所在的向量位置,在目标矩阵中确定当前矩阵列;
从当前矩阵列中获取多比特的当前矩阵列元素,并将所述当前矩阵列元素按位存储在所述存算一体存储器的第三非易失性存储单元行中;
对第三非易失性存储单元行的每个比特位执行按位取反操作,并将取反结果存储在第四非易失性存储单元行中;
将比特值1存储在所述第二非易失性存储单元行的最低比特位处;
根据第一非易失性存储单元行、第二非易失性存储单元行和第四非易失性存储单元行中的每一列数据,采用所在列的进位运算电路串行更新所述第二非易失性存储单元行中的各比特位;
根据第一非易失性存储单元行、第四非易失性存储单元行以及第二非易失性存储单元行中的每一列数据,采用匹配的求和电路,并行计算得到当前处理向量元素与当前矩阵列元素的求差结果存储在第五非易失性存储单元行中;
根据所述第五非易失性存储单元行中扩展的符号位对所述求差结果进行取绝对值处理,得到当前卷积结果,并使用当前卷积结果更新当前矩阵列中的当前矩阵列元素;
返回执行从当前矩阵列中获取多比特的当前矩阵列元素的操作,直至完成当前处理向量元素与当前矩阵列中全部矩阵列元素之间的运算;
返回执行从目标向量中获取多比特的当前处理向量元素的操作,直至完成对目标向量中全部向量元素的运算,以得到更新后的目标矩阵;
通过所述存算一体存储器中的加法计算电路,按行将所述目标矩阵的每个矩阵行元素进行求和运算后,得到与输入特征对应的卷积输出特征。
6.根据权利要求5所述的方法,其特征在于,通过所述存算一体存储器中的加法计算电路,按行将所述目标矩阵的每个矩阵行元素进行求和运算后,得到与输入特征对应的卷积输出特征,包括:
在所述目标矩阵中获取当前处理行,并在所述当前处理行中获取多比特的第一行元素和第二行元素;
将所述第一行元素按位存储在所述存算一体存储器的第六非易失性存储单元行中,并对第六非易失性存储单元行进行符号位扩展;
构建与符号位扩展后的比特位数匹配的全0序列,并将全0序列存储在第七非易失性存储单元行中;
将第二行元素按位存储在所述存算一体存储器的第八非易失性存储单元行中;
根据第六非易失性存储单元行、第七非易失性存储单元行和第八非易失性存储单元行中的每一列数据,采用所在列的进位运算电路串行更新所述第七非易失性存储单元行中的各比特位;
根据第六非易失性存储单元行、第八非易失性存储单元行以及第七非易失性存储单元行中的每一列数据,采用匹配的求和电路,并行计算得到第一行元素和第二行元素的求和结果;
将所述求和结果确定为新的第一行元素,并在所述当前处理行中获取新的多比特的第二行元素后,返回执行将所述第一行元素按位存储在所述存算一体存储器的第六非易失性存储单元行中的操作,直至完成对当前处理行的求和计算;
返回执行在所述目标矩阵中获取当前处理行的操作,直至完成对所述目标矩阵中全部行的处理,以得到与输入特征对应的卷积输出特征。
7.根据权利要求2所述的方法,其特征在于,在得到与输入特征对应的卷积输出特征之后,还包括:
在针对多通道的输入特征得到多通道的卷积输出特征时,通过所述存算一体存储器中的加法计算电路,对所述多通道的卷积输出特征进行求和处理,得到与所述多通道的输入特征对应的最终卷积结果。
8.一种加法神经网络的存内计算实现装置,其特征在于,包括:
特征映射模块,用于按照卷积运算类型,将待卷积运算的输入特征和卷积权重特征分别映射至目标向量和目标矩阵中;其中,目标向量和目标矩阵中的每个元素均为多比特数;
存内计算模块,用于通过存算一体存储器中的加法计算电路,按照加法神经网络的运算逻辑,对目标向量和目标矩阵进行存内计算,得到与输入特征对应的卷积输出特征;
其中,一个加法计算电路中包括一个进位运算电路和一个求和电路,进位运算电路或者求和电路均通过预充电感应放大器、逻辑单元、非易失性存储单元以及参考存储单元组合构建得到。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的标准存储器和存算一体存储器;其中,
所述标准存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的加法神经网络的存内计算实现方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的加法神经网络的存内计算实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311002683.XA CN118036682A (zh) | 2023-08-09 | 2023-08-09 | 加法神经网络的存内计算实现方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311002683.XA CN118036682A (zh) | 2023-08-09 | 2023-08-09 | 加法神经网络的存内计算实现方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118036682A true CN118036682A (zh) | 2024-05-14 |
Family
ID=91003051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311002683.XA Pending CN118036682A (zh) | 2023-08-09 | 2023-08-09 | 加法神经网络的存内计算实现方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118036682A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118333119A (zh) * | 2024-06-13 | 2024-07-12 | 温州核芯智存科技有限公司 | 存算单元、存算方法、存内计算区块及神经网络电路组件 |
-
2023
- 2023-08-09 CN CN202311002683.XA patent/CN118036682A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118333119A (zh) * | 2024-06-13 | 2024-07-12 | 温州核芯智存科技有限公司 | 存算单元、存算方法、存内计算区块及神经网络电路组件 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754561A1 (en) | Reconfigurable memory compression techniques for deep neural networks | |
CN108701250B (zh) | 数据定点化方法和装置 | |
CN108153512B (zh) | 四步关联全加器 | |
CN107169563B (zh) | 应用于二值权重卷积网络的处理系统及方法 | |
Angizi et al. | IMCE: Energy-efficient bit-wise in-memory convolution engine for deep neural network | |
US11409438B2 (en) | Peripheral circuit and system supporting RRAM-based neural network training | |
CN109800876B (zh) | 一种基于NOR Flash模块的神经网络的数据运算方法 | |
KR20190073303A (ko) | 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스 | |
US11934798B2 (en) | Counter-based multiplication using processing in memory | |
EP3671748A1 (en) | In-memory computing for machine learning | |
CN111126579B (zh) | 一种适用于二值卷积神经网络计算的存内计算装置 | |
Bavandpour et al. | 3D-aCortex: An ultra-compact energy-efficient neurocomputing platform based on commercial 3D-NAND flash memories | |
CN108182959B (zh) | 基于阻变器件交叉阵列结构实现逻辑计算的方法 | |
CN118036682A (zh) | 加法神经网络的存内计算实现方法、装置、设备及介质 | |
TWI771014B (zh) | 記憶體電路及其操作方法 | |
CN112636745A (zh) | 逻辑单元、加法器以及乘法器 | |
JP2024525332A (ja) | 深さ方向畳み込みニューラルネットワーク(cnn)をサポートするメモリ内計算(cim)アーキテクチャ及びデータフロー | |
CN112906865A (zh) | 神经网络架构搜索方法、装置、电子设备及存储介质 | |
CN112182495A (zh) | 一种基于忆阻器的二元域矩阵运算电路 | |
CN114267391A (zh) | 机器学习硬件加速器 | |
Liu et al. | An energy-efficient mixed-bit CNN accelerator with column parallel readout for ReRAM-based in-memory computing | |
CN114579079A (zh) | 用于常数乘法的集成电路、操作其的方法和包括其的装置 | |
JP2024525333A (ja) | 深さ方向畳み込みのためのメモリ内計算アーキテクチャ | |
US12032959B2 (en) | Non-volatile memory die with latch-based multiply-accumulate components | |
US20240143541A1 (en) | Compute in-memory architecture for continuous on-chip learning |
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 |