一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络电路的制作方法

2022-02-22 07:20:16 来源:中国专利 TAG:


1.本技术涉及神经网络领域,并且更具体地,涉及一种神经网络电路。


背景技术:

2.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,ai基础理论等。
3.非易失存储器交叉矩阵(non-violate memory crossbar,nvm crossbar)由于其自身的结构适合用来加速向量-矩阵乘法,且功耗、面积低,因此,可以被用作神经网络的加速器,且具有广泛前景。nvm crossbar实际上是模拟计算,而在实际的应用中的其他操作(存储、激活)等需要用数字电路实现。故需要一些周边辅助电路作为vmm与其他数字电路间的接口。该周边辅助电路可以包括但不限于:移位相加器(shift and add,s a)、层内移位相加器(intra-layer shift and add,intra-layer s a)、数字-模拟转换器(digital-to-analog converter,dac)、模拟-数字转换器(analog-to-digital converter,adc)。
4.相关的技术方案中,一方面,由于神经网络的规模,结构都不相同,所以对计算资源的需求也不相同。硬件电路要适配所有要支持的神经网络,则需要按照最大规模的规格进行设计,这个会在很大程度上造成设计的浪费。另一方面,传统架构中的周边电路一般都是由互补金属氧化物半导(complementary metal oxide semiconductor,cmos)电路实现,其功耗比大。


技术实现要素:

5.本技术提供一种神经网络电路,可以根据不同的需求进行配置,从而使得该神经网络电路实现至少两种不同的电路功能。
6.第一方面,提供了一种神经网络电路,包括:第一计算电路,包括至少两个存算单元交叉阵列和至少一组开关电路;控制器,用于控制所述至少一组开关电路,使得所述第一计算电路实现至少两种不同的电路功能。
7.上述技术方案中,该神经网络电路可以根据不同的需求进行配置,从而使得该神经网络电路实现至少两种不同的电路模块的功能。这样,一方面,可以避免由于各种专用电路的使用所造成的电路设计的浪费。另一方面,通过交叉阵列实现一些周边辅助电路,由于交叉阵列本身具有功耗低、面积小的优势,因此,还可以减少芯片的功耗。
8.在第一方面的一种可能的实现方式中,所述第一计算电路实现下述电路功能中的至少两种:移位相加器、模拟-数字转换器adc、数字-模拟转换器dac和向量-矩阵乘法器
vmm。
9.在第一方面的另一种可能的实现方式中,所述第一计算电路包括:第一存算单元交叉阵列,包括n行m列个第一存算单元;第二存算单元交叉阵列,包括p行q列个第二存算单元;以及第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关,所述第一组开关电路用于控制所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间的连通。
10.在第一方面的另一种可能的实现方式中,所述第一计算电路用于实现移位相加器的功能,其中:所述控制器,用于控制所述第一组开关电路处于断开状态,所述第一组开关电路处于断开状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间不连通;所述第一存算单元交叉阵列,用于通过第1行至第n-1行的字线接收第一组数据,根据所述第1行至第n-1行的存算单元中存储的第一权重和所述第一组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第n行字线用于输出所述第一计算结果,所述第一权重用于指示所述第一组数据待移位的位数,所述第一计算结果用于指示所述第一组数据进行移位后累加的计算结果。
11.实际应用中,在一种情况下,所述第一存算单元交叉阵列可以实现周期内移位相加器的功能。第一存算单元交叉阵列用于通过第1行至第n-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的前一个存算单元交叉阵列的多个位线上的输出。第一存算单元交叉阵列基于其存算单元中存储的第一权重对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为周期内移位相加器的输出结果。
12.在又一种情况下,第一存算单元交叉阵列可以实现周期间移位相加器的功能。第一存算单元交叉阵列用于通过第1行至第n-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的前一个存算单元交叉阵列的多个周期内移位相加器的输出结果,第一存算单元交叉阵列对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为周期间移位相加器的输出结果
13.在第一方面的另一种可能的实现方式中,所述第二存算单元交叉阵列,用于通过第1行至第p-1行的字线接收第二组数据,根据所述第1行至第p-1行的存算单元中存储的第二权重和所述第二组数据获得第二计算结果,其中,所述第二存算单元交叉阵列中的第p行字线用于输出所述第二计算结果,所述第二权重用于指示所述第二组数据待移位的位数,所述第二计算结果用于指示所述第二组数据进行移位后累加的计算结果。
14.在第一方面的另一种可能的实现方式中,所述第一计算电路用于实现vmm的功能,所述控制器,用于控制所述第一组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通;所述第一计算电路,用于通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第三组数据,并基于存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第三权重对所述第三组数据执行矩阵乘操作,获得第三计算结果,所述第一存算单元交叉阵列以及第二存储单元交叉阵列的位线用于输出所述第三计算结果。
15.在第一方面的另一种可能的实现方式中,所述第一计算电路还包括:多个电流电压转换电路,第二组开关电路,其中,所述多个电流电压转换电路,包括连接于所述第二存
算单元交叉阵列中的每条位线的输出端的电流电压转换电路;所述第二组开关电路,包括用于连接所述多个电流电压转换电路和所述第二存算单元交叉阵列的位线的多个第二开关,所述第二组开关电路用于控制所述多个电流电压转换电路和所述第二存算单元交叉阵列之间的连通;所述控制器,还用于控制所述第二组开关电路处于闭合状态,所述第二组开关电路处于闭合状态表示所述第二存算单元交叉阵列和所述多个电流转电压电路之间连通;所述多个电流电压转换电路,用于将所述第三计算结果转换为电压信号进行输出.
16.在第一方面的另一种可能的实现方式中,所述第一计算电路还包括:多个反相器,包括连接于所述第一存算单元交叉阵列和所述第二存算单元交叉阵列中的每条位线的反相器;第三组开关电路,包括用于连接所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列的多个第三开关,所述第三组开关电路用于控制所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列之间的连通。
17.在第一方面的另一种可能的实现方式中,所述第一计算电路用于实现adc,所述控制器,用于控制所述第一组开关电路和所述第三组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通,所述第三组开关电路处于闭合状态表示所述第一存算单元交叉阵列、所述第二存算单元交叉阵列和所述多个反相器之间连通;所述第一计算电路,用于通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第四组数据,根据所述第四组数据以及存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第四权重获得第四计算结果,其中,所述第四权重用于指示将所述第四组数据转换为数字信号过程中需要移位的位数,所述多个反相器用于对所述第四计算结果进行非线性处理,以获得将所述第四组数据转换为数字信号的转换结果。
18.在第一方面的另一种可能的实现方式中,所述第一计算电路用于实现dac的功能,所述控制器,用于控制所述第一组开关电路处于断开状态,所述第一组开关电路处于断开状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间不连通;所述第一存算单元交叉阵列,用于通过第1行至第n-1行的字线接收第五组数据,根据所述第1行至第n-1行的存算单元中存储的第五权重和所述第五组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第n行字线用于输出所述第五计算结果,所述第五权重用于指示将所述第五组数据转换为模拟信号的过程中待移位的位数,所述第五计算结果用于指示将所述第五组数据转换为模拟信号后的处理结果。
附图说明
19.图1为本技术提供的一种神经网络系统100的结构示意图。
20.图2为本技术提供的一种神经网络芯片中计算节点的示意性框图。
21.图3是神经网络与神经网络阵列之间的映射关系的示意图。
22.图4是本技术提供的一种可能的权重矩阵示意图。
23.图5是本技术提供的一种神经网络电路的示意图。
24.图6是本技术提供的一种s a的功能框图。
25.图7是本技术提供的一种第一存算单元交叉阵列的示意图。
26.图8是本技术提供的一种层间s a的功能框图。
27.图9是本技术提供的一种dac的功能框图。
具体实施方式
28.下面将结合附图,对本技术中的技术方案进行描述。
29.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,ai基础理论等。
30.在ai领域中,深度学习是一种基于深层次的人工神经网络(artificial neural network,ann)算法的学习技术。人工神经网络(artificial neural network,ann),简称为神经网络(neural network,nn)或类神经网络。在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutional neural network,cnn)、多层感知器(multilayer perceptron,mlp)、循环神经网络(recurrent neural network,rnn)、深度神经网络(deep neural network,dnn)等神经网络。
31.神经网络的训练过程是一种以数据为中心的任务,需要计算硬件具有高性能、低功耗的处理能力。基于传统冯诺依曼架构的计算由于存储单元和计算单元相分离,需要大量数据搬移,无法实现高能效的处理。
32.下面结合图1描述本技术的系统架构图。
33.图1为本技术实施例提供的一种神经网络系统100的结构示意图。如图1所示,神经网络系统100可以包括主机105以及神经网络电路110。
34.神经网络电路110通过主机接口与主机105连接。主机接口可以包括标准的主机接口以及网络接口(network interface)。例如,主机接口可以包括快捷外设互联标准(peripheral component interconnect express,pcie)接口。
35.作为示例,如图1所示,神经网络电路110可以通过pcie总线与主机105连接。因此,数据通过pcie总线输入至神经网络电路110中,并通过pcie总线接收神经网络电路110处理完成后的数据。并且,主机105也可以通过主机接口监测神经网络电路110的工作状态。
36.主机105可以包括处理器1052以及内存1054。需要说明的是,除了图1所示的器件外,主机105还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
37.处理器(processor)1052是主机105的运算核心和控制核心(control unit)。处理器1052中可以包括多个处理器核(core)。处理器1052可以是一块超大规模的集成电路。在处理器1052中安装有操作系统和其他软件程序,从而使得处理器1052能够实现对内存1054、缓存、磁盘及外设设备(如图1中的神经网络电路)的访问。可以理解的是,在本技术实施例中,处理器1052中的core例如可以是中央处理器(central processing unit,cpu),还可以是其他特定集成电路(application specific integrated circuit,asic)。
38.应理解,本技术实施例中的处理器1052还可以为其他通用处理器、数字信号处理
multiplier,vmm)211。vmm 211也可以称为存算单元交叉矩阵(crossbar)。vmm 211是一个较大的nvm交叉阵列,用于计算向量-矩阵乘法,是整个加速器的核心。dnn的权值被写在vmm 211的交叉阵列上。
46.本技术实施例对上述存算单元不作具体限定,可以包括但不限于:非易失存储器(non-violate memory,nvm)、忆阻器(memristor)、静态ram(static ram,sram)、nor flash、磁性ram(magnetism ram,mram)、铁电栅场效应晶体管(ferroelectric gate field-effect transistors,fefet)、电化学ram(electrochemistry ram,ecram)。其中,忆阻器可以包括但不限于:阻变式随机访问存储器(resistive random-access memory,reram)、导电桥接ram(conductive-bridging ram,cbram)、相变存储器(phase-change memory,pcm)。
47.为了便于下文的理解,下面先结合图3和图4,对vmm 211进行详细描述。
48.图3所示的vmm 211为m
×
n的交叉阵列,其中,vmm 211中可以包括多个nvm(例如,g
1,1
,g
1,2
等),每一列的nvm的位数据线(bit line,bl)连接在一起,每一行的nvm的源数据线(source line,sl)连接在一起。
49.在本技术实施例中,可以通过nvm的电导值来表示神经网络中神经元的权重。具体的,作为示例,可以将图4所示的权重矩阵中的每个元素通过位于bl与sl交点的nvm的电导值来表示。例如,图3的g
1,1
表示图4中的权重元素w
0,0
,图3的g
1,2
表示图4中的权重元素w
0,1
等。
50.nvm的电导值不同可以表示忆阻器单元存储的神经网络中神经元的权重不同。
51.在执行神经网络计算的过程中,可以通过加载到bl的电压值来表示n个输入数据vi,例如图3中的:v1,v2,v3,

vn。输入数据可以通过电压表示,从而使得加载到忆阻器的输入数据与nvm存储的权重值实现点乘运算,得到如图3中所示的m个输出数据。所述m个输出数据可以通过sl的电流表示,例如图3中的:i1,i2,

im。
52.应理解,加载到vmm 211的电压值的实现方式有多种,本技术实施例对此不做具体限定。例如,可以通过电压的脉冲幅值来表示,又如,还可以通过电压的脉冲宽度来表示,又如,还可以通过电压的脉冲个数来表示,又如,还可以通过电压的脉冲个数与电压的脉冲幅值的结合来表示。
53.需要说明的是,上文中以一个神经网络阵列为例,对神经网络阵列完成神经网络中相应的乘累加计算的过程进行了详细的描述。在实际应用中,是由多个神经网络阵列共同完成完整的神经网络所需要的乘累加计算的。
54.多个神经网络阵列中的一个神经网络阵列可以和一个神经网络层对应,该神经网络阵列用于实现一个神经网络层的计算。或者,多个神经网络阵列可以和一个神经网络层对应,用于实现该一个神经网络层的计算。或者,多个神经网络阵列中的一个神经网络阵列可以和多个神经网络层对应,用于实现该多个神经网络层的计算。
55.由于vmm 211实际上是模拟计算,而在实际的应用中的其他操作(存储、激活)等需要用数字电路实现。故需要一些周边辅助电路作为vmm 211与其他数字电路间的接口。该周边辅助电路可以包括但不限于:移位相加器(shift and add,s a)、层间移位相加器(intra-layer shift and add,intra-layer s a)、数字-模拟转换器(digital-to-analog converter,dac)、模拟-数字转换器(analog-to-digital converter,adc)。
56.参见图2,每个cu 210中还包括:dac 212、adc 213、s a 214。作为示例,dnn的激励值从缓存(buffer)读取后进入cu 210内,经由dac 212转换成模拟信号后输入到vmm 211中,在vmm 211计算完成后,计算结果被adc 213量化成数字信号。之后经过s a 214电路进行移加操作,此时cu 210内计算完成。cu 210内的计算结果随后在计算节点200内经过intra-layer s a 220和激活函数230计算后存入缓存(buffer),以供下一层的vmm计算。
57.下面分别对上述电路(例如,dac 212、adc 213、s a 214、intra-layer s a 220)的功能进行详细描述。
58.1、dac 212
59.在逻辑上直接与vmm 211相连,与vmm 211的输入相连,用于将数字信号转换成模拟信号输入到vmm 211中。例如,将一个4比特的数字信号0010转换为一个模拟电平。
60.2、adc 213
61.在逻辑上直接与vmm 211相连,与vmm 211的输出相连,用于将vmm 211输出的模拟信号转换成数字信号供其他数字计算电路处理。例如,将模拟电平转换为数字信号。
62.3、s a 214
63.s a 214在adc 213之后执行计算,按照s a 213电路的功能,可以分成周期内s a以及周期间s a。
64.周期内s a,由于vmm 211的每个单元可写的比特数有限,每个权值被量化分组后写在同一个字线上相邻的几个存储单元(例如,nvm单元)中。因此,要对vmm 211的几个相邻位线上输出的结果进行移位相加操作,该过程可以称为周期内s a。具体的,以8比特量化权值为例,假设每个nvm单元可写2个比特,那么一个权值被分写在4个nvm单元中,周期内s a需要将这4个字线上输出的结果移位相加。
65.周期间s a,传统加速器中的所使用的dac的分辨率小于dnn的量化比特数,激励值同样被量化分组,并分多个计算周期输入到vmm 211中。因此,同样要对这些周期的周期内s a的结果进行移位相加操作,该过程可以称为周期间s a。具体的,以8比特量化权值为例,假设dac分辨率为1比特,那么一组激励要分8个周期输入,周期间s a要将上个周期结果移1位后与本周期的周期内s a的结果相加。在8个周期后周期间s a将输出完整s a后的结果。
66.4、intra-layer s a 220
67.dnn一个层的权值矩阵远大于vmm 211的交叉阵列大小,因此dnn一个层的权值矩阵被分写在多个vmm 211上,这些vmm 211计算的结果要相加才能得到完整的向量-矩阵乘法的结果。这个相加操作由intra-layer s a电路完成。具体的,以4个vmm为例,需要将处于同一列上的两个vmm的结果分别相加才能得到完整的向量-矩阵乘法结果。
68.相关的技术方案中,一方面,由于神经网络的规模,结构都不相同,所以对计算资源的需求也不相同。硬件电路要适配所有要支持的神经网络,则需要按照最大规模的规格进行设计,这个会在很大程度上造成设计的浪费。例如,conv1-1层的计算节点内三个模块的比例为vmm:s a:adc=1:1:1。而conv5-3层的计算节点内三个模块的比例为vmm:s a:adc=36:1:1。那么,如果完全按照最多的情况(conv1-1)配备,则会造成s a和adc的浪费。另一方面,传统架构中的周边电路一般都是由互补金属氧化物半导(complementary metal oxide semiconductor,cmos)电路实现,其功耗比大。
69.本技术实施例提供了一种神经网络电路,该神经网络电路可以根据不同的需求进
行配置,从而使得该神经网络电路实现至少两种不同的电路功能。这样,一方面,可以避免由于各种专用电路的使用所造成的电路设计的浪费。另一方面,通过交叉阵列实现一些周边辅助电路,由于存算单元交叉阵列本身具有功耗低、面积小的优势,因此,还可以减少芯片的功耗。
70.作为示例,上述至少两种不同的电路可以包括但不限于以下中的至少两种:dac、s a、intra-layer s a、vmm以及adc。
71.下面结合图5,对本技术实施例提供的一种神经网络电路500进行详细描述。
72.神经网络电路500中包括第一计算单元和控制器。其中,第一计算单元中包括至少两个存算单元交叉阵列和至少一组开关电路。控制器用于控制至少一组开关电路,使得所述计算电路实现至少两种不同的电路功能。
73.作为示例,上述第一计算电路可以实现下述电路功能中的至少两种:移位相加器、模拟-数字转换器adc、数字-模拟转换器dac和向量-矩阵乘法器vmm。
74.下面以图5所示的神经网络电路500为例,结合具体的例子,对第一计算电路实现上述电路功能中的至少两种的具体过程进行详细描述。
75.应理解,下面的例子仅仅是为了帮助本领域技术人员理解本技术实施例,而非要将申请实施例限制于具体数值或具体场景。本领域技术人员根据所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本技术实施例的范围内。
76.(1)、下面对第一计算电路实现移位相加器的功能的具体过程进行详细描述。
77.应理解,可以假设在神经网络架构中,神经网络中权重的量化比特为q比特,第一存算单元交叉阵列、第二存算单元交叉阵列的大小为n
×
n,每个存算单元交叉阵列中的存算单元(例如,nvm单元)上可存储的大小为qc比特,与存算单元交叉阵列的输入连接的dac的分辨率为qd比特。
78.1、神经网络电路配置
79.神经网络电路中的第一计算电路可以包括:第一存算单元交叉阵列,第二存算单元交叉阵列,第一组开关电路,
80.第一存算单元交叉阵列,包括n行m列个第一存算单元;
81.第二存算单元交叉阵列,包括p行q列个第二存算单元;
82.第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关,所述第一组开关电路用于控制所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间的连通。
83.神经网络电路中的控制器用于控制所述第一组开关电路处于断开状态,其中,该第一组开关电路处于断开状态表示第一存算单元交叉阵列和所述第二存算单元交叉阵列之间不连通。
84.也就是说,控制器控制将第一组开关电路处于断开状态,第一计算电路中的第一存算单元交叉阵列以及第二存算单元交叉阵列为两个独立的存算单元交叉阵列,每个存算单元交叉阵列可以分别实现移位相加器的功能。
85.以第一存算单元交叉阵列实现移位相加器的功能为例,第一存算单元交叉阵列用于通过第1行至第n-1行的字线接收第一组数据,根据所述第1行至第n-1行的存算单元中存储的第一权重和所述第一组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中
的第n行字线用于输出所述第一计算结果,所述第一权重用于指示所述第一组数据待移位的位数,第一计算结果用于指示所述第一组数据进行移位后累加的计算结果。
86.以第二存算单元交叉阵列实现移位相加器的功能为例,第二存算单元交叉阵列用于通过第1行至第p-1行的字线接收第二组数据,根据所述第1行至第p-1行的存算单元中存储的第二权重和所述第二组数据获得第二计算结果,其中,所述第二存算单元交叉阵列中的第p行字线用于输出所述第二计算结果,所述第二权重用于指示所述第二组数据待移位的位数,所述第二计算结果用于指示所述第二组数据进行移位后累加的计算结果。
87.2、交叉矩阵的存算单元(例如,nvm)中存储的权值的配置
88.为了便于描述,下面以第一存算单元交叉阵列实现移位相加器的功能为例进行说明。
89.应理解,移位相加器s a实现的功能可以包括但不限于:周期内s a,周期间s a,层间s a。具体的,可以根据接收到的不同来源的数据以及存算单元交叉阵列的存算单元中存储的不同的权重值,从而实现不同的s a的功能。
90.作为一种示例,第一存算单元交叉阵列实现周期内s a的功能。第一存算单元交叉阵列用于通过第1行至第n-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的前一个存算单元交叉阵列的多个位线上的输出。第一存算单元交叉阵列基于其存算单元中存储的第一权重对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为周期内s a的输出结果。
91.具体的,第一存算单元交叉阵列中的条位线的输入ai分别乘以对应的权重然后相加可以得到第一存算单元交叉阵列输出的电压b。因此,第一存算单元交叉阵列中的存算单元存储的第一权重是根据每个存算单元交叉阵列中的存算单元(例如,nvm单元)上可存储的比特数qc确定的。
92.下面对确定第一存算单元交叉阵列中的存算单元存储的第一权重的具体实现方式进行说明。
93.实现周期内s a功能的一种可能的目标函数如公式(1)所示。
[0094][0095]
其中,b表示第一存算单元交叉阵列输出的电压;
[0096]ai
表示第一存算单元交叉阵列中属于同个权值的第i条位线的输出,
[0097]
以q=8,qc=2,qd=4为例,实现周期内s a功能的目标函数如公式(2)所示,实现周期内s a的功能框图如图6所示。
[0098][0099]
参见图6,a0,a1,a2,a3分别作为第一存算单元交叉阵列中的4条位线的输入,并分
别将该4条位线的输入移动qc·
i位后相加,得到第一存算单元交叉阵列输出的电压。具体的,将a0,a1,a2,a3分别移动0位、2位、4位、6位后相加,得到第一存算单元交叉阵列输出的电压b。
[0100]
本技术实施例中,可以将第一存算单元交叉阵列看作两个相连的nvm交叉阵列xb1和xb2。如图7所示,其中,第一存算单元交叉阵列的最后一行可以看作是xb2,其余行可以看作是xb1。
[0101]
图7所示的第一存算单元交叉阵列的输入电压和输出电压之间的对应关系如公式(3)所示。
[0102][0103]
其中,v
out
表示第一存算单元交叉阵列的输出电压,例如,第一存算单元交叉阵列的最后一行字线上的输出电压;
[0104]vin,i
表示第一存算单元交叉阵列的第i个输入电压,例如,第一存算单元交叉阵列中除最后一行字线之外的其他第i条字线上的输入电压;
[0105]
表示第一存算单元交叉矩阵xb1中第i行第k列上存算单元(例如,nvm)的电导值;
[0106]
表示第一存算单元交叉矩阵xb2中第k列上存算单元(例如,nvm)的电导值;
[0107]
m表示第一存算单元交叉矩阵xb1的字线数量。
[0108]
为了将图7所示的第一存算单元交叉阵列部署成可以实现上述周期内s a的功能,可以根据公式(1)所示的周期内的s a的目标函数来配置公式(3)中的以及从而使得第一存算单元交叉阵列可以实现周期内的s a的功能。
[0109]
作为示例,可以将构造以及的问题转换成二次型混合整数约束规划(mixture integer quadratic constrained programming,miqcp)可行解的问题。通过求解器获得所有的电导(例如,和)的解,并将上述电导的解写入第一存算单元交叉阵列中对应的各个存算单元(例如,nvm)中。
[0110]
下面对获得所有的电导(例如,和)的解的具体实现过程进行详细描述。
[0111]
由于每个存算单元(例如,nvm)可写的电导是离散值,所以电导(例如,和)的解实际上可以是每个存算单元(例如,nvm)的电导等级。上述问题的变量为每个存算单元(例如,nvm)的电导等级和其中,表示交叉矩阵xb1中第i行第k列上存算单元(例如,nvm)的电导等级,表示交叉矩阵xb2中第k列上存算单元(例如,nvm)的电导等级。
[0112]
上述问题的约束条件包括:
[0113]
(1)由于每个存算单元(例如,nvm)的电导状态有限,因此可以限定以qc=2作为示例,l可以取3,也就是说,2-bit的nvm单元可写0-3的电导等级。
[0114]
(2)电路的输出与目标函数需要保持一致:其中,numeri为目标
函数中权值的分子。比如,对于公式(2)所示的周期内s a,numer
3,2,1,0
=64,16,4,1。
[0115]
(3)对公式(3)增加限制条件:对于所有的k均相等。
[0116]
本技术实施例中,可以根据上述约束条件,求得第一存算单元交叉阵列中所有的电导(例如,和)的解,并将上述电导的解写入第一存算单元交叉阵列中对应的各个存算单元(例如,nvm)中。这样,第一存算单元交叉阵列可以实现周期内s a的功能。
[0117]
另一种示例,第一存算单元交叉阵列实现周期间s a的功能。第一存算单元交叉阵列用于通过第1行至第n-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的前一个存算单元交叉阵列的多个周期内s a的输出结果,第一存算单元交叉阵列对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为周期间s a的输出结果。
[0118]
具体的,第一存算单元交叉阵列需要将当前周期内s a的输出电压b与前一个周期内s a的输出电压r
i-1
右移qd位后相加,得到当前周期间s a的输出结果ri。因此,第一存算单元交叉阵列中的存算单元存储的第一权重是根据与存算单元交叉阵列的输入连接的dac的分辨率为qd确定的。
[0119]
下面对确定第一存算单元交叉阵列中的存算单元存储的第一权重的具体实现方式进行说明。
[0120]
实现周期间s a功能的一种可能的目标函数如公式(4)所示。
[0121][0122]
其中,ri表示当前周期间s a的输出电压;
[0123]ri-1
表示前一个周期内s a的输出电压。
[0124]
以q=8,qc=2,qd=4为例,实现周期间s a功能的目标函数如公式(5)所示,实现周期间s a的功能框图如图6所示。
[0125][0126]
参见图6,b作为当前周期内s a的输出电压,r
i-1
作为前一个周期内s a的输出电压,需要将r
i-1
移动位后和b相加,得到当前周期间s a的输出结果ri。具体的,将r
i-1
移动0.0625位后和b相加,得到当前周期间s a的输出结果ri。
[0127]
为了将图7所示的第一存算单元交叉阵列部署成可以实现上述周期间s a的功能,可以根据公式(4)所示的周期间的s a的目标函数来配置公式(3)中的以及从而使得第一存算单元交叉阵列可以实现周期间s a的功能。具体的实现方式请参考上文中的描述,此处不再赘述。
[0128]
作为另一种示例,第一存算单元交叉阵列实现层间s a的功能。第一存算单元交叉阵列用于通过第1行至第n-1行的字线接收第一组数据,第一组数据为与所述第一存算单元
交叉阵列相连的多个存算单元交叉阵列的输出。第一存算单元交叉阵列对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为层间s a的输出结果。
[0129]
具体的,层间s a用于将多个vmm的计算结果相加,其功能框图如图8所示,v
in,1
表示第一个vmm的计算结果,v
in,2
表示第二个vmm的计算结果,以此类推,将多个vmm的计算结果相加后得到输出电压v
out

[0130]
下面对确定第一存算单元交叉阵列中的存算单元存储的第一权重的具体实现方式进行说明。
[0131]
实现层间s a功能的一种可能的目标函数如公式(6)所示。
[0132][0133]
其中,v
out
表示第一存算单元交叉阵列的输出电压,例如,第一存算单元交叉阵列的最后一行字线上的输出电压;
[0134]vin,i
表示第一存算单元交叉阵列的第i个输入电压,例如,第一存算单元交叉阵列中除最后一行字线之外的其他第i条字线上的输入电压;
[0135]
为了将图7所示的第一存算单元交叉阵列部署成可以实现层间s a的功能,可以根据公式(6)所示的层间s a的目标函数来配置公式(3)中的以及从而使得第一存算单元交叉阵列可以实现层间s a的功能。具体的实现方式请参考上文中的描述,此处不再赘述。
[0136]
(2)、下面对第一计算电路实现dac的功能的具体过程进行详细描述。
[0137]
1、神经网络电路的配置
[0138]
神经网络电路中的第一计算电路可以包括:第一存算单元交叉阵列,第二存算单元交叉阵列,第一组开关电路,
[0139]
第一存算单元交叉阵列,包括n行m列个第一存算单元;
[0140]
第二存算单元交叉阵列,包括p行q列个第二存算单元;
[0141]
第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关;
[0142]
神经网络电路中的控制器用于控制所述第一组开关电路处于断开状态,控制器控制将第一组开关电路处于断开状态,第一计算电路中的第一存算单元交叉阵列以及第二存算单元交叉阵列为两个独立的存算单元交叉阵列,每个存算单元交叉阵列可以分别实现dac的功能。
[0143]
具体的,第一存算单元交叉阵列通过第1行至第n-1行的字线接收第五组数据,根据所述第1行至第n-1行的存算单元中存储的第五权重和所述第五组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第n行字线用于输出所述第五计算结果,所述第五权重用于指示将所述第五组数据转换为模拟信号的过程中待移位的位数,所述第五计算结果用于指示将所述第五组数据转换为模拟信号后的处理结果。
[0144]
2、交叉矩阵中的存算单元(例如,nvm)中存储的权值的配置
[0145]
作为示例,dac用于将数字信号转换成模拟信号输入到vmm中。实现dac的功能的目
标函数如公式(7)所示。
[0146][0147]
其中,k
·
gnd用于调整dac输出模拟信号的范围,用于将vmm的输入电压调整到合适量级。
[0148]
以q=8,qc=2,qd=4,i=4为例,实现dac功能的目标函数如公式(8)所示。
[0149][0150]
实现dac的功能框图如图9所示,为了将图7所示的第一存算单元交叉阵列部署成可以实现上述dac的功能,一方面,在图8中,第一存算单元交叉阵列的输入分别为xb1的字线上的v
in,1
,v
in,2
,v
in,3
,v
in,4
,经过xb1的位线后,从xb2的字线上输出v
out
。另一方面,还需要根据公式(7)所示的dac的目标函数配置公式(3)中的以及从而使得第一存算单元交叉阵列可以实现dac的功能。作为示例,可以根据公式(7)所示的dac的目标函数来配置公式(3)中的以及从而使得第一存算单元交叉阵列可以实现dac的功能。具体的实现方式请参考上文中的描述,此处不再赘述。
[0151]
(3)、下面对第一计算电路实现vmm的具体实现方式进行描述。
[0152]
1、神经网络电路配置
[0153]
神经网络电路中的第一计算电路可以包括:第一存算单元交叉阵列,第二存算单元交叉阵列,第一组开关电路,
[0154]
第一存算单元交叉阵列,包括n行m列个第一存算单元;
[0155]
第二存算单元交叉阵列,包括p行q列个第二存算单元;
[0156]
第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关;
[0157]
神经网络电路中的控制器,用于控制所述第一组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通。第一存算单元交叉阵列和第二存算单元交叉阵列实现vmm的功能。
[0158]
具体的,第一计算电路通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第三组数据,并基于存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第三权重对所述第三组数据执行矩阵乘操作,获得第三计算结果,所述第一存算单元交叉阵列以及第二存储单元交叉阵列的位线用于输出所述第三计算结果。
[0159]
2、交叉矩阵的存算单元(例如,nvm)中存储的权值的配置
[0160]
可以按照传统的方式,将神经网络中与存算单元(例如,nvm)对应的权值写入到存算单元(例如,nvm)中,从而使得该较大的交叉阵列完成vmm的功能。具体的实现过程请参考上文中对vmm的描述,此处不再赘述。
[0161]
可选地,在一些实施例中,第一计算电路通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收到的第三组数据是电压信号,电压信号和存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第三权重进行矩阵乘操作后,得到的第三计算结果为电流信号,还可以将该电流信号转换成电压信号。
[0162]
在这种实现方式中,所述第一计算电路还包括:多个电流电压转换电路,第二组开关电路,其中,
[0163]
所述多个电流电压转换电路,包括连接于所述第二存算单元交叉阵列中的每条位线的输出端的电流电压转换电路。
[0164]
所述第二组开关电路,包括用于连接所述多个电流电压转换电路和所述第二存算单元交叉阵列的位线的多个第二开关,所述第二组开关电路用于控制所述多个电流电压转换电路和所述第二存算单元交叉阵列之间的连通。
[0165]
所述控制器,还用于控制所述第二组开关电路处于闭合状态,所述第二组开关电路处于闭合状态表示所述第二存算单元交叉阵列和所述多个电流转电压电路之间连通。
[0166]
所述多个电流电压转换电路,用于将所述第三计算结果转换为电压信号进行输出。
[0167]
(4)、下面对第一计算电路实现adc的具体方式进行描述。
[0168]
1、神经网络电路的配置
[0169]
神经网络电路中的第一计算电路可以包括:第一存算单元交叉阵列,第二存算单元交叉阵列,第一组开关电路,第三组开关电路,多个反相器,其中,
[0170]
第一存算单元交叉阵列,包括n行m列个第一存算单元。
[0171]
第二存算单元交叉阵列,包括p行q列个第二存算单元。
[0172]
第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关。
[0173]
多个反相器,包括连接于所述第一存算单元交叉阵列和所述第二存算单元交叉阵列中的每条位线的反相器。
[0174]
第三组开关电路,包括用于连接所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列的多个第三开关,所述第三组开关电路用于控制所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列之间的连通。
[0175]
所述控制器,用于控制所述第一组开关电路和所述第三组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通,所述第三组开关电路处于闭合状态表示所述第一存算单元交叉阵列、所述第二存算单元交叉阵列和所述多个反相器之间连通。
[0176]
具体的,所述第一计算电路,用于通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第四组数据,根据所述第四组数据以及存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第四权重获得第四计算结果,其中,所述第四权重用于指示将所述第四组数据转换为数字信号过程中需要移位的位数,所述多个反相器用于对所述第四计算结果进行非线性处理,以获得将所述第四组数据转换为数字信号的转换结果。
[0177]
2、交叉矩阵中的存算单元(例如,nvm)中存储的权值的配置
[0178]
为了将图7所示的第一存算单元交叉阵列部署成可以实现adc的功能,可以根据adc的目标函数来配置公式(3)中的以及从而使得述第一计算电路可以实现adc的功能。具体的配置公式(3)中的以及的实现方式请参考上文中的描述,此处不再赘述。
[0179]
上述技术方案中,可以根据各层的实际需要,将神经网络电路配置成不同的电路功能,进一步增加资源利用率。
[0180]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0181]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0182]
在本技术所提供的几个实施例中,应该理解到,以上所描述的脉冲神经网络实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口。
[0183]
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0184]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0185]
该功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0186]
以上该,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以该权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献