CN114004344A - 神经网络电路 - Google Patents

神经网络电路 Download PDF

Info

Publication number
CN114004344A
CN114004344A CN202010729402.0A CN202010729402A CN114004344A CN 114004344 A CN114004344 A CN 114004344A CN 202010729402 A CN202010729402 A CN 202010729402A CN 114004344 A CN114004344 A CN 114004344A
Authority
CN
China
Prior art keywords
array
data
circuit
switch circuits
neural network
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
Application number
CN202010729402.0A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010729402.0A priority Critical patent/CN114004344A/zh
Publication of CN114004344A publication Critical patent/CN114004344A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Memory System (AREA)

Abstract

本申请提供一种神经网络电路,包括:第一计算电路,包括至少两个存算单元交叉阵列和至少一组开关电路;控制器,用于控制所述至少一组开关电路,使得所述第一计算电路实现至少两种不同的电路功能。本申请中的一个神经网络电路实现至少两种不同的电路功能。

Description

神经网络电路
技术领域
本申请涉及神经网络领域,并且更具体地,涉及一种神经网络电路。
背景技术
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
非易失存储器交叉矩阵(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)。
相关的技术方案中,一方面,由于神经网络的规模,结构都不相同,所以对计算资源的需求也不相同。硬件电路要适配所有要支持的神经网络,则需要按照最大规模的规格进行设计,这个会在很大程度上造成设计的浪费。另一方面,传统架构中的周边电路一般都是由互补金属氧化物半导(complementary metal oxide semiconductor,CMOS)电路实现,其功耗比大。
发明内容
本申请提供一种神经网络电路,可以根据不同的需求进行配置,从而使得该神经网络电路实现至少两种不同的电路功能。
第一方面,提供了一种神经网络电路,包括:第一计算电路,包括至少两个存算单元交叉阵列和至少一组开关电路;控制器,用于控制所述至少一组开关电路,使得所述第一计算电路实现至少两种不同的电路功能。
上述技术方案中,该神经网络电路可以根据不同的需求进行配置,从而使得该神经网络电路实现至少两种不同的电路模块的功能。这样,一方面,可以避免由于各种专用电路的使用所造成的电路设计的浪费。另一方面,通过交叉阵列实现一些周边辅助电路,由于交叉阵列本身具有功耗低、面积小的优势,因此,还可以减少芯片的功耗。
在第一方面的一种可能的实现方式中,所述第一计算电路实现下述电路功能中的至少两种:移位相加器、模拟-数字转换器ADC、数字-模拟转换器DAC和向量-矩阵乘法器VMM。
在第一方面的另一种可能的实现方式中,所述第一计算电路包括:第一存算单元交叉阵列,包括N行M列个第一存算单元;第二存算单元交叉阵列,包括P行Q列个第二存算单元;以及第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关,所述第一组开关电路用于控制所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间的连通。
在第一方面的另一种可能的实现方式中,所述第一计算电路用于实现移位相加器的功能,其中:所述控制器,用于控制所述第一组开关电路处于断开状态,所述第一组开关电路处于断开状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间不连通;所述第一存算单元交叉阵列,用于通过第1行至第N-1行的字线接收第一组数据,根据所述第1行至第N-1行的存算单元中存储的第一权重和所述第一组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第N行字线用于输出所述第一计算结果,所述第一权重用于指示所述第一组数据待移位的位数,所述第一计算结果用于指示所述第一组数据进行移位后累加的计算结果。
实际应用中,在一种情况下,所述第一存算单元交叉阵列可以实现周期内移位相加器的功能。第一存算单元交叉阵列用于通过第1行至第N-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的前一个存算单元交叉阵列的多个位线上的输出。第一存算单元交叉阵列基于其存算单元中存储的第一权重对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为周期内移位相加器的输出结果。
在又一种情况下,第一存算单元交叉阵列可以实现周期间移位相加器的功能。第一存算单元交叉阵列用于通过第1行至第N-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的前一个存算单元交叉阵列的多个周期内移位相加器的输出结果,第一存算单元交叉阵列对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为周期间移位相加器的输出结果
在第一方面的另一种可能的实现方式中,所述第二存算单元交叉阵列,用于通过第1行至第P-1行的字线接收第二组数据,根据所述第1行至第P-1行的存算单元中存储的第二权重和所述第二组数据获得第二计算结果,其中,所述第二存算单元交叉阵列中的第P行字线用于输出所述第二计算结果,所述第二权重用于指示所述第二组数据待移位的位数,所述第二计算结果用于指示所述第二组数据进行移位后累加的计算结果。
在第一方面的另一种可能的实现方式中,所述第一计算电路用于实现VMM的功能,所述控制器,用于控制所述第一组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通;所述第一计算电路,用于通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第三组数据,并基于存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第三权重对所述第三组数据执行矩阵乘操作,获得第三计算结果,所述第一存算单元交叉阵列以及第二存储单元交叉阵列的位线用于输出所述第三计算结果。
在第一方面的另一种可能的实现方式中,所述第一计算电路还包括:多个电流电压转换电路,第二组开关电路,其中,所述多个电流电压转换电路,包括连接于所述第二存算单元交叉阵列中的每条位线的输出端的电流电压转换电路;所述第二组开关电路,包括用于连接所述多个电流电压转换电路和所述第二存算单元交叉阵列的位线的多个第二开关,所述第二组开关电路用于控制所述多个电流电压转换电路和所述第二存算单元交叉阵列之间的连通;所述控制器,还用于控制所述第二组开关电路处于闭合状态,所述第二组开关电路处于闭合状态表示所述第二存算单元交叉阵列和所述多个电流转电压电路之间连通;所述多个电流电压转换电路,用于将所述第三计算结果转换为电压信号进行输出.
在第一方面的另一种可能的实现方式中,所述第一计算电路还包括:多个反相器,包括连接于所述第一存算单元交叉阵列和所述第二存算单元交叉阵列中的每条位线的反相器;第三组开关电路,包括用于连接所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列的多个第三开关,所述第三组开关电路用于控制所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列之间的连通。
在第一方面的另一种可能的实现方式中,所述第一计算电路用于实现ADC,所述控制器,用于控制所述第一组开关电路和所述第三组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通,所述第三组开关电路处于闭合状态表示所述第一存算单元交叉阵列、所述第二存算单元交叉阵列和所述多个反相器之间连通;所述第一计算电路,用于通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第四组数据,根据所述第四组数据以及存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第四权重获得第四计算结果,其中,所述第四权重用于指示将所述第四组数据转换为数字信号过程中需要移位的位数,所述多个反相器用于对所述第四计算结果进行非线性处理,以获得将所述第四组数据转换为数字信号的转换结果。
在第一方面的另一种可能的实现方式中,所述第一计算电路用于实现DAC的功能,所述控制器,用于控制所述第一组开关电路处于断开状态,所述第一组开关电路处于断开状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间不连通;所述第一存算单元交叉阵列,用于通过第1行至第N-1行的字线接收第五组数据,根据所述第1行至第N-1行的存算单元中存储的第五权重和所述第五组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第N行字线用于输出所述第五计算结果,所述第五权重用于指示将所述第五组数据转换为模拟信号的过程中待移位的位数,所述第五计算结果用于指示将所述第五组数据转换为模拟信号后的处理结果。
附图说明
图1为本申请提供的一种神经网络系统100的结构示意图。
图2为本申请提供的一种神经网络芯片中计算节点的示意性框图。
图3是神经网络与神经网络阵列之间的映射关系的示意图。
图4是本申请提供的一种可能的权重矩阵示意图。
图5是本申请提供的一种神经网络电路的示意图。
图6是本申请提供的一种S+A的功能框图。
图7是本申请提供的一种第一存算单元交叉阵列的示意图。
图8是本申请提供的一种层间S+A的功能框图。
图9是本申请提供的一种DAC的功能框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
在AI领域中,深度学习是一种基于深层次的人工神经网络(artificial neuralnetwork,ANN)算法的学习技术。人工神经网络(artificial neural network,ANN),简称为神经网络(neural network,NN)或类神经网络。在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutional neuralnetwork,CNN)、多层感知器(multilayer perceptron,MLP)、循环神经网络(recurrentneural network,RNN)、深度神经网络(deep neural network,DNN)等神经网络。
神经网络的训练过程是一种以数据为中心的任务,需要计算硬件具有高性能、低功耗的处理能力。基于传统冯诺依曼架构的计算由于存储单元和计算单元相分离,需要大量数据搬移,无法实现高能效的处理。
下面结合图1描述本申请的系统架构图。
图1为本申请实施例提供的一种神经网络系统100的结构示意图。如图1所示,神经网络系统100可以包括主机105以及神经网络电路110。
神经网络电路110通过主机接口与主机105连接。主机接口可以包括标准的主机接口以及网络接口(network interface)。例如,主机接口可以包括快捷外设互联标准(peripheral component interconnect express,PCIE)接口。
作为示例,如图1所示,神经网络电路110可以通过PCIE总线与主机105连接。因此,数据通过PCIE总线输入至神经网络电路110中,并通过PCIE总线接收神经网络电路110处理完成后的数据。并且,主机105也可以通过主机接口监测神经网络电路110的工作状态。
主机105可以包括处理器1052以及内存1054。需要说明的是,除了图1所示的器件外,主机105还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
处理器(processor)1052是主机105的运算核心和控制核心(control unit)。处理器1052中可以包括多个处理器核(core)。处理器1052可以是一块超大规模的集成电路。在处理器1052中安装有操作系统和其他软件程序,从而使得处理器1052能够实现对内存1054、缓存、磁盘及外设设备(如图1中的神经网络电路)的访问。可以理解的是,在本申请实施例中,处理器1052中的core例如可以是中央处理器(central processing unit,CPU),还可以是其他特定集成电路(application specific integrated circuit,ASIC)。
应理解,本申请实施例中的处理器1052还可以为其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
内存1054是主机105的主存。内存1054通过双倍速率(double data rate,DDR)总线和处理器1052相连。内存1054通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高处理器1052的访问速度,内存1054需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(dynamicrandom access memory,DRAM)作为内存1054。处理器1052能够通过内存控制器(图1中未示出)高速访问内存1054,对内存1054中的任意一个存储单元进行读操作和写操作。
还应理解,本申请实施例中的内存1054可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
图1所示的神经网络电路110可以包括多个PCIE卡,每个PCIE卡中可以包括多个神经网络芯片(chip)。多个chip之间进行数据传输和信息交互的实现方式有多种,本申请不做具体限定。一种可能的实现方式中,该多个chip之间可以通过路由器连接,并通过路由器组成的网络拓扑实现多个chip之间的数据传输以及信息交互。另一种可能的实现方式中,该多个chip还可以挂靠在PCIE总线上,并通过PCIE总线实现神经网络电路110中多个chip之间的数据传输以及信息交互。
可选地,图1中的神经网络系统的架构仅作为示例,本领域技术人员能够理解,在实践中,上述神经网络系统可以包括比图1中更多或更少的单元。或者神经网络系统中的模块、单元或电路也可以被其它具有类似功能的模块、单元或电路替代,本申请实施例对此不作限定。例如,在另一些示例中,上述神经网络系统也可以由基于数字计算的图形处理器(graphics processing unit,GPU)或现场可编程门阵列(field programmable gatearray,FPGA)实现。
图1所示的一个神经网络芯片中可以包括多个用于进行神经网络计算的计算节点,下面结合图2,对计算节点的内部结构进行详细描述。
图2是一种神经网络芯片中计算节点的示意性框图。如图2所示,该计算节点200中可以包括多个CU 210、层间移位相加器(intra-layer shift and add,intra-layer S+A)220、激活函数230。
其中,每个CU 210内部包含有多个向量-矩阵乘法器(vector-matrixmultiplier,VMM)211。VMM 211也可以称为存算单元交叉矩阵(crossbar)。VMM 211是一个较大的NVM交叉阵列,用于计算向量-矩阵乘法,是整个加速器的核心。DNN的权值被写在VMM211的交叉阵列上。
本申请实施例对上述存算单元不作具体限定,可以包括但不限于:非易失存储器(non-violate memory,NVM)、忆阻器(memristor)、静态RAM(static RAM,SRAM)、NORFlash、磁性RAM(magnetism RAM,MRAM)、铁电栅场效应晶体管(ferroelectric gatefield-effect transistors,FeFET)、电化学RAM(electrochemistry RAM,ECRAM)。其中,忆阻器可以包括但不限于:阻变式随机访问存储器(resistive random-access memory,ReRAM)、导电桥接RAM(conductive-bridging RAM,CBRAM)、相变存储器(phase-changememory,PCM)。
为了便于下文的理解,下面先结合图3和图4,对VMM 211进行详细描述。
图3所示的VMM 211为m×n的交叉阵列,其中,VMM 211中可以包括多个NVM(例如,G1,1,G1,2等),每一列的NVM的位数据线(bit line,BL)连接在一起,每一行的NVM的源数据线(source line,SL)连接在一起。
在本申请实施例中,可以通过NVM的电导值来表示神经网络中神经元的权重。具体的,作为示例,可以将图4所示的权重矩阵中的每个元素通过位于BL与SL交点的NVM的电导值来表示。例如,图3的G1,1表示图4中的权重元素W0,0,图3的G1,2表示图4中的权重元素W0,1等。
NVM的电导值不同可以表示忆阻器单元存储的神经网络中神经元的权重不同。
在执行神经网络计算的过程中,可以通过加载到BL的电压值来表示n个输入数据Vi,例如图3中的:V1,V2,V3,…Vn。输入数据可以通过电压表示,从而使得加载到忆阻器的输入数据与NVM存储的权重值实现点乘运算,得到如图3中所示的m个输出数据。所述m个输出数据可以通过SL的电流表示,例如图3中的:I1,I2,…Im。
应理解,加载到VMM 211的电压值的实现方式有多种,本申请实施例对此不做具体限定。例如,可以通过电压的脉冲幅值来表示,又如,还可以通过电压的脉冲宽度来表示,又如,还可以通过电压的脉冲个数来表示,又如,还可以通过电压的脉冲个数与电压的脉冲幅值的结合来表示。
需要说明的是,上文中以一个神经网络阵列为例,对神经网络阵列完成神经网络中相应的乘累加计算的过程进行了详细的描述。在实际应用中,是由多个神经网络阵列共同完成完整的神经网络所需要的乘累加计算的。
多个神经网络阵列中的一个神经网络阵列可以和一个神经网络层对应,该神经网络阵列用于实现一个神经网络层的计算。或者,多个神经网络阵列可以和一个神经网络层对应,用于实现该一个神经网络层的计算。或者,多个神经网络阵列中的一个神经网络阵列可以和多个神经网络层对应,用于实现该多个神经网络层的计算。
由于VMM 211实际上是模拟计算,而在实际的应用中的其他操作(存储、激活)等需要用数字电路实现。故需要一些周边辅助电路作为VMM 211与其他数字电路间的接口。该周边辅助电路可以包括但不限于:移位相加器(shift and add,S+A)、层间移位相加器(intra-layer shift and add,intra-layer S+A)、数字-模拟转换器(digital-to-analogconverter,DAC)、模拟-数字转换器(analog-to-digital converter,ADC)。
参见图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计算。
下面分别对上述电路(例如,DAC 212、ADC 213、S+A 214、intra-layer S+A 220)的功能进行详细描述。
1、DAC 212
在逻辑上直接与VMM 211相连,与VMM 211的输入相连,用于将数字信号转换成模拟信号输入到VMM 211中。例如,将一个4比特的数字信号0010转换为一个模拟电平。
2、ADC 213
在逻辑上直接与VMM 211相连,与VMM 211的输出相连,用于将VMM 211输出的模拟信号转换成数字信号供其他数字计算电路处理。例如,将模拟电平转换为数字信号。
3、S+A 214
S+A 214在ADC 213之后执行计算,按照S+A 213电路的功能,可以分成周期内S+A以及周期间S+A。
周期内S+A,由于VMM 211的每个单元可写的比特数有限,每个权值被量化分组后写在同一个字线上相邻的几个存储单元(例如,NVM单元)中。因此,要对VMM 211的几个相邻位线上输出的结果进行移位相加操作,该过程可以称为周期内S+A。具体的,以8比特量化权值为例,假设每个NVM单元可写2个比特,那么一个权值被分写在4个NVM单元中,周期内S+A需要将这4个字线上输出的结果移位相加。
周期间S+A,传统加速器中的所使用的DAC的分辨率小于DNN的量化比特数,激励值同样被量化分组,并分多个计算周期输入到VMM 211中。因此,同样要对这些周期的周期内S+A的结果进行移位相加操作,该过程可以称为周期间S+A。具体的,以8比特量化权值为例,假设DAC分辨率为1比特,那么一组激励要分8个周期输入,周期间S+A要将上个周期结果移1位后与本周期的周期内S+A的结果相加。在8个周期后周期间S+A将输出完整S+A后的结果。
4、intra-layer S+A 220
DNN一个层的权值矩阵远大于VMM 211的交叉阵列大小,因此DNN一个层的权值矩阵被分写在多个VMM 211上,这些VMM 211计算的结果要相加才能得到完整的向量-矩阵乘法的结果。这个相加操作由intra-layer S+A电路完成。具体的,以4个VMM为例,需要将处于同一列上的两个VMM的结果分别相加才能得到完整的向量-矩阵乘法结果。
相关的技术方案中,一方面,由于神经网络的规模,结构都不相同,所以对计算资源的需求也不相同。硬件电路要适配所有要支持的神经网络,则需要按照最大规模的规格进行设计,这个会在很大程度上造成设计的浪费。例如,Conv1-1层的计算节点内三个模块的比例为VMM:S+A:ADC=1:1:1。而Conv5-3层的计算节点内三个模块的比例为VMM:S+A:ADC=36:1:1。那么,如果完全按照最多的情况(Conv1-1)配备,则会造成S+A和ADC的浪费。另一方面,传统架构中的周边电路一般都是由互补金属氧化物半导(complementary metaloxide semiconductor,CMOS)电路实现,其功耗比大。
本申请实施例提供了一种神经网络电路,该神经网络电路可以根据不同的需求进行配置,从而使得该神经网络电路实现至少两种不同的电路功能。这样,一方面,可以避免由于各种专用电路的使用所造成的电路设计的浪费。另一方面,通过交叉阵列实现一些周边辅助电路,由于存算单元交叉阵列本身具有功耗低、面积小的优势,因此,还可以减少芯片的功耗。
作为示例,上述至少两种不同的电路可以包括但不限于以下中的至少两种:DAC、S+A、intra-layer S+A、VMM以及ADC。
下面结合图5,对本申请实施例提供的一种神经网络电路500进行详细描述。
神经网络电路500中包括第一计算单元和控制器。其中,第一计算单元中包括至少两个存算单元交叉阵列和至少一组开关电路。控制器用于控制至少一组开关电路,使得所述计算电路实现至少两种不同的电路功能。
作为示例,上述第一计算电路可以实现下述电路功能中的至少两种:移位相加器、模拟-数字转换器ADC、数字-模拟转换器DAC和向量-矩阵乘法器VMM。
下面以图5所示的神经网络电路500为例,结合具体的例子,对第一计算电路实现上述电路功能中的至少两种的具体过程进行详细描述。
应理解,下面的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于具体数值或具体场景。本领域技术人员根据所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
(1)、下面对第一计算电路实现移位相加器的功能的具体过程进行详细描述。
应理解,可以假设在神经网络架构中,神经网络中权重的量化比特为Q比特,第一存算单元交叉阵列、第二存算单元交叉阵列的大小为n×n,每个存算单元交叉阵列中的存算单元(例如,NVM单元)上可存储的大小为Qc比特,与存算单元交叉阵列的输入连接的DAC的分辨率为Qd比特。
1、神经网络电路配置
神经网络电路中的第一计算电路可以包括:第一存算单元交叉阵列,第二存算单元交叉阵列,第一组开关电路,
第一存算单元交叉阵列,包括N行M列个第一存算单元;
第二存算单元交叉阵列,包括P行Q列个第二存算单元;
第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关,所述第一组开关电路用于控制所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间的连通。
神经网络电路中的控制器用于控制所述第一组开关电路处于断开状态,其中,该第一组开关电路处于断开状态表示第一存算单元交叉阵列和所述第二存算单元交叉阵列之间不连通。
也就是说,控制器控制将第一组开关电路处于断开状态,第一计算电路中的第一存算单元交叉阵列以及第二存算单元交叉阵列为两个独立的存算单元交叉阵列,每个存算单元交叉阵列可以分别实现移位相加器的功能。
以第一存算单元交叉阵列实现移位相加器的功能为例,第一存算单元交叉阵列用于通过第1行至第N-1行的字线接收第一组数据,根据所述第1行至第N-1行的存算单元中存储的第一权重和所述第一组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第N行字线用于输出所述第一计算结果,所述第一权重用于指示所述第一组数据待移位的位数,第一计算结果用于指示所述第一组数据进行移位后累加的计算结果。
以第二存算单元交叉阵列实现移位相加器的功能为例,第二存算单元交叉阵列用于通过第1行至第P-1行的字线接收第二组数据,根据所述第1行至第P-1行的存算单元中存储的第二权重和所述第二组数据获得第二计算结果,其中,所述第二存算单元交叉阵列中的第P行字线用于输出所述第二计算结果,所述第二权重用于指示所述第二组数据待移位的位数,所述第二计算结果用于指示所述第二组数据进行移位后累加的计算结果。
2、交叉矩阵的存算单元(例如,NVM)中存储的权值的配置
为了便于描述,下面以第一存算单元交叉阵列实现移位相加器的功能为例进行说明。
应理解,移位相加器S+A实现的功能可以包括但不限于:周期内S+A,周期间S+A,层间S+A。具体的,可以根据接收到的不同来源的数据以及存算单元交叉阵列的存算单元中存储的不同的权重值,从而实现不同的S+A的功能。
作为一种示例,第一存算单元交叉阵列实现周期内S+A的功能。第一存算单元交叉阵列用于通过第1行至第N-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的前一个存算单元交叉阵列的多个位线上的输出。第一存算单元交叉阵列基于其存算单元中存储的第一权重对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为周期内S+A的输出结果。
具体的,第一存算单元交叉阵列中的
Figure BDA0002602490120000091
条位线的输入ai分别乘以对应的权重
Figure BDA0002602490120000092
然后相加可以得到第一存算单元交叉阵列输出的电压b。因此,第一存算单元交叉阵列中的存算单元存储的第一权重是根据每个存算单元交叉阵列中的存算单元(例如,NVM单元)上可存储的比特数Qc确定的。
下面对确定第一存算单元交叉阵列中的存算单元存储的第一权重的具体实现方式进行说明。
实现周期内S+A功能的一种可能的目标函数如公式(1)所示。
Figure BDA0002602490120000093
其中,b表示第一存算单元交叉阵列输出的电压;
ai表示第一存算单元交叉阵列中属于同个权值的第i条位线的输出,
Figure BDA0002602490120000094
以Q=8,Qc=2,Qd=4为例,实现周期内S+A功能的目标函数如公式(2)所示,实现周期内S+A的功能框图如图6所示。
Figure BDA0002602490120000095
参见图6,a0,a1,a2,a3分别作为第一存算单元交叉阵列中的4条位线的输入,并分别将该4条位线的输入移动Qc·i位后相加,得到第一存算单元交叉阵列输出的电压。具体的,将a0,a1,a2,a3分别移动0位、2位、4位、6位后相加,得到第一存算单元交叉阵列输出的电压b。
本申请实施例中,可以将第一存算单元交叉阵列看作两个相连的NVM交叉阵列XB1和XB2。如图7所示,其中,第一存算单元交叉阵列的最后一行可以看作是XB2,其余行可以看作是XB1。
图7所示的第一存算单元交叉阵列的输入电压和输出电压之间的对应关系如公式(3)所示。
Figure BDA0002602490120000101
其中,Vout表示第一存算单元交叉阵列的输出电压,例如,第一存算单元交叉阵列的最后一行字线上的输出电压;
Vin,i表示第一存算单元交叉阵列的第i个输入电压,例如,第一存算单元交叉阵列中除最后一行字线之外的其他第i条字线上的输入电压;
Figure BDA0002602490120000102
表示第一存算单元交叉矩阵XB1中第i行第k列上存算单元(例如,NVM)的电导值;
Figure BDA0002602490120000103
表示第一存算单元交叉矩阵XB2中第k列上存算单元(例如,NVM)的电导值;
m表示第一存算单元交叉矩阵XB1的字线数量。
为了将图7所示的第一存算单元交叉阵列部署成可以实现上述周期内S+A的功能,可以根据公式(1)所示的周期内的S+A的目标函数来配置公式(3)中的
Figure BDA0002602490120000104
以及
Figure BDA0002602490120000105
从而使得第一存算单元交叉阵列可以实现周期内的S+A的功能。
作为示例,可以将构造
Figure BDA0002602490120000106
以及
Figure BDA0002602490120000107
的问题转换成二次型混合整数约束规划(mixture integer quadratic constrained programming,MIQCP)可行解的问题。通过求解器获得所有的电导(例如,
Figure BDA0002602490120000108
Figure BDA0002602490120000109
)的解,并将上述电导的解写入第一存算单元交叉阵列中对应的各个存算单元(例如,NVM)中。
下面对获得所有的电导(例如,
Figure BDA00026024901200001010
Figure BDA00026024901200001011
)的解的具体实现过程进行详细描述。
由于每个存算单元(例如,NVM)可写的电导是离散值,所以电导(例如,
Figure BDA00026024901200001012
Figure BDA00026024901200001013
)的解实际上可以是每个存算单元(例如,NVM)的电导等级。上述问题的变量为每个存算单元(例如,NVM)的电导等级
Figure BDA00026024901200001014
Figure BDA00026024901200001015
其中,
Figure BDA00026024901200001016
表示交叉矩阵XB1中第i行第k列上存算单元(例如,NVM)的电导等级,
Figure BDA00026024901200001017
表示交叉矩阵XB2中第k列上存算单元(例如,NVM)的电导等级。
上述问题的约束条件包括:
(1)由于每个存算单元(例如,NVM)的电导状态有限,因此可以限定
Figure BDA00026024901200001018
以Qc=2作为示例,l可以取3,也就是说,2-bit的NVM单元可写0-3的电导等级。
(2)电路的输出与目标函数需要保持一致:
Figure BDA00026024901200001019
其中,numeri为目标函数中权值的分子。比如,对于公式(2)所示的周期内S+A,numer3,2,1,0=64,16,4,1。
(3)对公式(3)增加限制条件:
Figure BDA00026024901200001020
对于所有的k均相等。
本申请实施例中,可以根据上述约束条件,求得第一存算单元交叉阵列中所有的电导(例如,
Figure BDA00026024901200001021
Figure BDA00026024901200001022
)的解,并将上述电导的解写入第一存算单元交叉阵列中对应的各个存算单元(例如,NVM)中。这样,第一存算单元交叉阵列可以实现周期内S+A的功能。
另一种示例,第一存算单元交叉阵列实现周期间S+A的功能。第一存算单元交叉阵列用于通过第1行至第N-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的前一个存算单元交叉阵列的多个周期内S+A的输出结果,第一存算单元交叉阵列对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为周期间S+A的输出结果。
具体的,第一存算单元交叉阵列需要将当前周期内S+A的输出电压b与前一个周期内S+A的输出电压Ri-1右移Qd位后相加,得到当前周期间S+A的输出结果Ri。因此,第一存算单元交叉阵列中的存算单元存储的第一权重是根据与存算单元交叉阵列的输入连接的DAC的分辨率为Qd确定的。
下面对确定第一存算单元交叉阵列中的存算单元存储的第一权重的具体实现方式进行说明。
实现周期间S+A功能的一种可能的目标函数如公式(4)所示。
Figure BDA0002602490120000111
其中,Ri表示当前周期间S+A的输出电压;
Ri-1表示前一个周期内S+A的输出电压。
以Q=8,Qc=2,Qd=4为例,实现周期间S+A功能的目标函数如公式(5)所示,实现周期间S+A的功能框图如图6所示。
Figure BDA0002602490120000112
参见图6,b作为当前周期内S+A的输出电压,Ri-1作为前一个周期内S+A的输出电压,需要将Ri-1移动
Figure BDA0002602490120000113
位后和b相加,得到当前周期间S+A的输出结果Ri。具体的,将Ri-1移动0.0625位后和b相加,得到当前周期间S+A的输出结果Ri
为了将图7所示的第一存算单元交叉阵列部署成可以实现上述周期间S+A的功能,可以根据公式(4)所示的周期间的S+A的目标函数来配置公式(3)中的
Figure BDA0002602490120000114
以及
Figure BDA0002602490120000115
从而使得第一存算单元交叉阵列可以实现周期间S+A的功能。具体的实现方式请参考上文中的描述,此处不再赘述。
作为另一种示例,第一存算单元交叉阵列实现层间S+A的功能。第一存算单元交叉阵列用于通过第1行至第N-1行的字线接收第一组数据,第一组数据为与所述第一存算单元交叉阵列相连的多个存算单元交叉阵列的输出。第一存算单元交叉阵列对该第一组数据中的每个数据进行移位,并将第一组数据中的每个数据进行移位后累加的结果作为层间S+A的输出结果。
具体的,层间S+A用于将多个VMM的计算结果相加,其功能框图如图8所示,Vin,1表示第一个VMM的计算结果,Vin,2表示第二个VMM的计算结果,以此类推,将多个VMM的计算结果相加后得到输出电压Vout
下面对确定第一存算单元交叉阵列中的存算单元存储的第一权重的具体实现方式进行说明。
实现层间S+A功能的一种可能的目标函数如公式(6)所示。
Figure BDA0002602490120000121
其中,Vout表示第一存算单元交叉阵列的输出电压,例如,第一存算单元交叉阵列的最后一行字线上的输出电压;
Vin,i表示第一存算单元交叉阵列的第i个输入电压,例如,第一存算单元交叉阵列中除最后一行字线之外的其他第i条字线上的输入电压;
为了将图7所示的第一存算单元交叉阵列部署成可以实现层间S+A的功能,可以根据公式(6)所示的层间S+A的目标函数来配置公式(3)中的
Figure BDA0002602490120000122
以及
Figure BDA0002602490120000123
从而使得第一存算单元交叉阵列可以实现层间S+A的功能。具体的实现方式请参考上文中的描述,此处不再赘述。
(2)、下面对第一计算电路实现DAC的功能的具体过程进行详细描述。
1、神经网络电路的配置
神经网络电路中的第一计算电路可以包括:第一存算单元交叉阵列,第二存算单元交叉阵列,第一组开关电路,
第一存算单元交叉阵列,包括N行M列个第一存算单元;
第二存算单元交叉阵列,包括P行Q列个第二存算单元;
第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关;
神经网络电路中的控制器用于控制所述第一组开关电路处于断开状态,控制器控制将第一组开关电路处于断开状态,第一计算电路中的第一存算单元交叉阵列以及第二存算单元交叉阵列为两个独立的存算单元交叉阵列,每个存算单元交叉阵列可以分别实现DAC的功能。
具体的,第一存算单元交叉阵列通过第1行至第N-1行的字线接收第五组数据,根据所述第1行至第N-1行的存算单元中存储的第五权重和所述第五组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第N行字线用于输出所述第五计算结果,所述第五权重用于指示将所述第五组数据转换为模拟信号的过程中待移位的位数,所述第五计算结果用于指示将所述第五组数据转换为模拟信号后的处理结果。
2、交叉矩阵中的存算单元(例如,NVM)中存储的权值的配置
作为示例,DAC用于将数字信号转换成模拟信号输入到VMM中。实现DAC的功能的目标函数如公式(7)所示。
Figure BDA0002602490120000124
其中,k·GND用于调整DAC输出模拟信号的范围,用于将VMM的输入电压调整到合适量级。
以Q=8,Qc=2,Qd=4,i=4为例,实现DAC功能的目标函数如公式(8)所示。
Figure BDA0002602490120000125
实现DAC的功能框图如图9所示,为了将图7所示的第一存算单元交叉阵列部署成可以实现上述DAC的功能,一方面,在图8中,第一存算单元交叉阵列的输入分别为XB1的字线上的Vin,1,Vin,2,Vin,3,Vin,4,经过XB1的位线后,从XB2的字线上输出Vout。另一方面,还需要根据公式(7)所示的DAC的目标函数配置公式(3)中的
Figure BDA0002602490120000131
以及
Figure BDA0002602490120000132
从而使得第一存算单元交叉阵列可以实现DAC的功能。作为示例,可以根据公式(7)所示的DAC的目标函数来配置公式(3)中的
Figure BDA0002602490120000133
以及
Figure BDA0002602490120000134
从而使得第一存算单元交叉阵列可以实现DAC的功能。具体的实现方式请参考上文中的描述,此处不再赘述。
(3)、下面对第一计算电路实现VMM的具体实现方式进行描述。
1、神经网络电路配置
神经网络电路中的第一计算电路可以包括:第一存算单元交叉阵列,第二存算单元交叉阵列,第一组开关电路,
第一存算单元交叉阵列,包括N行M列个第一存算单元;
第二存算单元交叉阵列,包括P行Q列个第二存算单元;
第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关;
神经网络电路中的控制器,用于控制所述第一组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通。第一存算单元交叉阵列和第二存算单元交叉阵列实现VMM的功能。
具体的,第一计算电路通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第三组数据,并基于存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第三权重对所述第三组数据执行矩阵乘操作,获得第三计算结果,所述第一存算单元交叉阵列以及第二存储单元交叉阵列的位线用于输出所述第三计算结果。
2、交叉矩阵的存算单元(例如,NVM)中存储的权值的配置
可以按照传统的方式,将神经网络中与存算单元(例如,NVM)对应的权值写入到存算单元(例如,NVM)中,从而使得该较大的交叉阵列完成VMM的功能。具体的实现过程请参考上文中对VMM的描述,此处不再赘述。
可选地,在一些实施例中,第一计算电路通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收到的第三组数据是电压信号,电压信号和存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第三权重进行矩阵乘操作后,得到的第三计算结果为电流信号,还可以将该电流信号转换成电压信号。
在这种实现方式中,所述第一计算电路还包括:多个电流电压转换电路,第二组开关电路,其中,
所述多个电流电压转换电路,包括连接于所述第二存算单元交叉阵列中的每条位线的输出端的电流电压转换电路。
所述第二组开关电路,包括用于连接所述多个电流电压转换电路和所述第二存算单元交叉阵列的位线的多个第二开关,所述第二组开关电路用于控制所述多个电流电压转换电路和所述第二存算单元交叉阵列之间的连通。
所述控制器,还用于控制所述第二组开关电路处于闭合状态,所述第二组开关电路处于闭合状态表示所述第二存算单元交叉阵列和所述多个电流转电压电路之间连通。
所述多个电流电压转换电路,用于将所述第三计算结果转换为电压信号进行输出。
(4)、下面对第一计算电路实现ADC的具体方式进行描述。
1、神经网络电路的配置
神经网络电路中的第一计算电路可以包括:第一存算单元交叉阵列,第二存算单元交叉阵列,第一组开关电路,第三组开关电路,多个反相器,其中,
第一存算单元交叉阵列,包括N行M列个第一存算单元。
第二存算单元交叉阵列,包括P行Q列个第二存算单元。
第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关。
多个反相器,包括连接于所述第一存算单元交叉阵列和所述第二存算单元交叉阵列中的每条位线的反相器。
第三组开关电路,包括用于连接所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列的多个第三开关,所述第三组开关电路用于控制所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列之间的连通。
所述控制器,用于控制所述第一组开关电路和所述第三组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通,所述第三组开关电路处于闭合状态表示所述第一存算单元交叉阵列、所述第二存算单元交叉阵列和所述多个反相器之间连通。
具体的,所述第一计算电路,用于通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第四组数据,根据所述第四组数据以及存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第四权重获得第四计算结果,其中,所述第四权重用于指示将所述第四组数据转换为数字信号过程中需要移位的位数,所述多个反相器用于对所述第四计算结果进行非线性处理,以获得将所述第四组数据转换为数字信号的转换结果。
2、交叉矩阵中的存算单元(例如,NVM)中存储的权值的配置
为了将图7所示的第一存算单元交叉阵列部署成可以实现ADC的功能,可以根据ADC的目标函数来配置公式(3)中的
Figure BDA0002602490120000141
以及
Figure BDA0002602490120000142
从而使得述第一计算电路可以实现ADC的功能。具体的配置公式(3)中的
Figure BDA0002602490120000143
以及
Figure BDA0002602490120000144
的实现方式请参考上文中的描述,此处不再赘述。
上述技术方案中,可以根据各层的实际需要,将神经网络电路配置成不同的电路功能,进一步增加资源利用率。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,以上所描述的脉冲神经网络实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
该功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上该,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。

Claims (10)

1.一种神经网络电路,其特征在于,包括:
第一计算电路,包括至少两个存算单元交叉阵列和至少一组开关电路;
控制器,用于控制所述至少一组开关电路,使得所述第一计算电路实现至少两种不同的电路功能。
2.根据权利要求1所述的神经网络电路,其特征在于,所述第一计算电路实现下述电路功能中的至少两种:移位相加器、模拟-数字转换器ADC、数字-模拟转换器DAC和向量-矩阵乘法器VMM。
3.根据权利要求1或2所述的神经网络电路,其特征在于,所述第一计算电路包括:
第一存算单元交叉阵列,包括N行M列个第一存算单元;
第二存算单元交叉阵列,包括P行Q列个第二存算单元;以及
第一组开关电路,包括用于连接所述第一存算单元交叉阵列和所述第二存算单元交叉阵列的位线的多个第一开关,所述第一组开关电路用于控制所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间的连通。
4.根据权利要求3所述的神经网络电路,其特征在于,所述第一计算电路用于实现移位相加器的功能,其中:
所述控制器,用于控制所述第一组开关电路处于断开状态,所述第一组开关电路处于断开状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间不连通;
所述第一存算单元交叉阵列,用于通过第1行至第N-1行的字线接收第一组数据,根据所述第1行至第N-1行的存算单元中存储的第一权重和所述第一组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第N行字线用于输出所述第一计算结果,所述第一权重用于指示所述第一组数据待移位的位数,所述第一计算结果用于指示所述第一组数据进行移位后累加的计算结果。
5.根据权利要求4所述的神经网络电路,其特征在于,
所述第二存算单元交叉阵列,用于通过第1行至第P-1行的字线接收第二组数据,根据所述第1行至第P-1行的存算单元中存储的第二权重和所述第二组数据获得第二计算结果,其中,所述第二存算单元交叉阵列中的第P行字线用于输出所述第二计算结果,所述第二权重用于指示所述第二组数据待移位的位数,所述第二计算结果用于指示所述第二组数据进行移位后累加的计算结果。
6.根据权利要求3所述的神经网络电路,其特征在于,所述第一计算电路用于实现VMM的功能,
所述控制器,用于控制所述第一组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通;
所述第一计算电路,用于通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第三组数据,并基于存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第三权重对所述第三组数据执行矩阵乘操作,获得第三计算结果,所述第一存算单元交叉阵列以及第二存储单元交叉阵列的位线用于输出所述第三计算结果。
7.根据权利要求6所述的神经网络电路,其特征在于,所述第一计算电路还包括:多个电流电压转换电路,第二组开关电路,其中,
所述多个电流电压转换电路,包括连接于所述第二存算单元交叉阵列中的每条位线的输出端的电流电压转换电路;
所述第二组开关电路,包括用于连接所述多个电流电压转换电路和所述第二存算单元交叉阵列的位线的多个第二开关,所述第二组开关电路用于控制所述多个电流电压转换电路和所述第二存算单元交叉阵列之间的连通;
所述控制器,还用于控制所述第二组开关电路处于闭合状态,所述第二组开关电路处于闭合状态表示所述第二存算单元交叉阵列和所述多个电流转电压电路之间连通;
所述多个电流电压转换电路,用于将所述第三计算结果转换为电压信号进行输出。
8.根据权利要求3所述的神经网络电路,其特征在于,所述第一计算电路还包括:
多个反相器,包括连接于所述第一存算单元交叉阵列和所述第二存算单元交叉阵列中的每条位线的反相器;
第三组开关电路,包括用于连接所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列的多个第三开关,所述第三组开关电路用于控制所述多个反相器和所述第一存算单元交叉阵列、所述第二存算单元交叉阵列之间的连通。
9.根据权利要求8所述的神经网络电路,其特征在于,所述第一计算电路用于实现ADC,
所述控制器,用于控制所述第一组开关电路和所述第三组开关电路处于闭合状态,所述第一组开关电路处于闭合状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间连通,所述第三组开关电路处于闭合状态表示所述第一存算单元交叉阵列、所述第二存算单元交叉阵列和所述多个反相器之间连通;
所述第一计算电路,用于通过所述第一存算单元交叉阵列以及第二存储单元交叉阵列的字线接收第四组数据,根据所述第四组数据以及存储于所述第一存算单元交叉阵列以及第二存储单元交叉阵列中的第四权重获得第四计算结果,其中,所述第四权重用于指示将所述第四组数据转换为数字信号过程中需要移位的位数,所述多个反相器用于对所述第四计算结果进行非线性处理,以获得将所述第四组数据转换为数字信号的转换结果。
10.根据权利要求3所述的神经网络电路,其特征在于,所述第一计算电路用于实现DAC的功能,
所述控制器,用于控制所述第一组开关电路处于断开状态,所述第一组开关电路处于断开状态用于表示所述第一存算单元交叉阵列和所述第二存算单元交叉阵列之间不连通;
所述第一存算单元交叉阵列,用于通过第1行至第N-1行的字线接收第五组数据,根据所述第1行至第N-1行的存算单元中存储的第五权重和所述第五组数据获得第一计算结果,其中,所述第一存算单元交叉阵列中的第N行字线用于输出所述第五计算结果,所述第五权重用于指示将所述第五组数据转换为模拟信号的过程中待移位的位数,所述第五计算结果用于指示将所述第五组数据转换为模拟信号后的处理结果。
CN202010729402.0A 2020-07-27 2020-07-27 神经网络电路 Pending CN114004344A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010729402.0A CN114004344A (zh) 2020-07-27 2020-07-27 神经网络电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010729402.0A CN114004344A (zh) 2020-07-27 2020-07-27 神经网络电路

Publications (1)

Publication Number Publication Date
CN114004344A true CN114004344A (zh) 2022-02-01

Family

ID=79920122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010729402.0A Pending CN114004344A (zh) 2020-07-27 2020-07-27 神经网络电路

Country Status (1)

Country Link
CN (1) CN114004344A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116151343A (zh) * 2023-04-04 2023-05-23 荣耀终端有限公司 数据处理电路和电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116151343A (zh) * 2023-04-04 2023-05-23 荣耀终端有限公司 数据处理电路和电子设备
CN116151343B (zh) * 2023-04-04 2023-09-05 荣耀终端有限公司 数据处理电路和电子设备

Similar Documents

Publication Publication Date Title
Long et al. ReRAM-based processing-in-memory architecture for recurrent neural network acceleration
US10346347B2 (en) Field-programmable crossbar array for reconfigurable computing
Sun et al. Fully parallel RRAM synaptic array for implementing binary neural network with (+ 1,− 1) weights and (+ 1, 0) neurons
Chen et al. A survey of accelerator architectures for deep neural networks
Yakopcic et al. Extremely parallel memristor crossbar architecture for convolutional neural network implementation
Chi et al. Prime: A novel processing-in-memory architecture for neural network computation in reram-based main memory
CN108475522B (zh) 内存设备及基于多层rram交叉阵列的数据处理方法
AU2020274862B2 (en) Training of artificial neural networks
Chang et al. AI hardware acceleration with analog memory: Microarchitectures for low energy at high speed
US11501141B2 (en) Shifting architecture for data reuse in a neural network
Fumarola et al. Accelerating machine learning with non-volatile memory: Exploring device and circuit tradeoffs
CN111478703B (zh) 基于忆阻交叉阵列的处理电路及输出电流的补偿方法
CN107533459A (zh) 使用电阻存储器阵列的数据处理
Chen et al. Partition SRAM and RRAM based synaptic arrays for neuro-inspired computing
Agrawal et al. X-CHANGR: Changing memristive crossbar mapping for mitigating line-resistance induced accuracy degradation in deep neural networks
Liu et al. Bit-transformer: Transforming bit-level sparsity into higher preformance in reram-based accelerator
Mikhaylov et al. Neuromorphic computing based on CMOS-integrated memristive arrays: current state and perspectives
CN114004344A (zh) 神经网络电路
Liu et al. Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity
Kosta et al. HyperX: A Hybrid RRAM-SRAM partitioned system for error recovery in memristive Xbars
Burr et al. Neuromorphic devices and architectures for next-generation cognitive computing
US20220101142A1 (en) Neural network accelerators resilient to conductance drift
US20240143541A1 (en) Compute in-memory architecture for continuous on-chip learning
Zhang et al. Connection-based processing-in-memory engine design based on resistive crossbars
KR102672586B1 (ko) 인공신경망의 훈련 방법 및 장치

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