CN110334799B - 基于存算一体的神经网络推理与训练加速器及其运行方法 - Google Patents
基于存算一体的神经网络推理与训练加速器及其运行方法 Download PDFInfo
- Publication number
- CN110334799B CN110334799B CN201910627611.1A CN201910627611A CN110334799B CN 110334799 B CN110334799 B CN 110334799B CN 201910627611 A CN201910627611 A CN 201910627611A CN 110334799 B CN110334799 B CN 110334799B
- Authority
- CN
- China
- Prior art keywords
- neural network
- training
- storage
- inference
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
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/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield 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
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
基于存算一体的神经网络推理与训练加速器及其运行方法,利用接口模块接收控制指令和运算数据;通过全局控制模块根据控制指令将接口模块的运算数据分类并存入缓存模块,同时控制其余模块工作;使用存算一体存储器进行神经网络的推理和训练并存储神经网络的运算结果,使用推理控制器执行神经网络推理阶段的前向传播并产生对应指令,训练控制器执行神经网络训练阶段的权值更新并产生对应指令;存储器控制模块将缓存模块的运算数据、推理控制器的指令和训练控制器的指令送入存算一体存储器中并读取存算一体存储器的运算结果。本发明利用存算一体存储器实现神经网络的运算和存储,大大减少了神经网络系统中运算单元的数量,从而减少资源占用和能耗。
Description
技术领域
本发明属于神经形态硬件技术领域,涉及一种基于存算一体的神经网络推理与训练加速器及其运行方法。
背景技术
目前,包括神经形态处理器在内的计算平台的主流架构是冯诺依曼架构,冯诺依曼架构的计算和存储单元相互独立,计算单元根据指令从存储器中读取数据,在计算单元中完成计算后再存回内存。存储和计算单元之间的独立使得在进行频繁的数据传输时产生了大量功耗,在进行频繁的数据传输时数据传输速度会受到总线带宽的限制,制约了计算吞吐量,也增大了片上资源占用。在处理大数据过程中,由于数据量极大,处理数据时频繁访问硬盘这些外存会降低运算速度。随着微电子技术的发展,处理器性能的进步速度逐渐快于内存性能,内存性能的制约已成为计算机性能的一大瓶颈。
因此希望能突破冯诺依曼架构的瓶颈,把计算合并到存储器中去,使存储器不仅是一个存储器,同时也具备计算能力,使计算不需要在独立的计算单元中执行,而是在存储器中直接进行。这样一来在存储和读取数据的同时就完成了运算,实现了存算一体,大大减少了计算过程中的数据传递的时间和功耗,增大了计算吞吐量,同时节省去了大量原本用于计算单元的片上资源。
目前的研究主要集中于存算一体存储器自身的结构设计,缺乏对相应外围系统的研究,如何将存算一体存储器应用在SOC(片上系统)中是当下亟待解决的问题。另外存算一体存储器结构和操作方式,包括并行读写、基本运算等,均有别于传统存储器,传统的系统结构无法充分发挥存算一体存储器的优势,因此需要针对存算一体存储器的特性设计相应的能够将其充分运用的外围系统。
目前的神经形态处理器系统使用的存储器均为传统存储器,制约了计算吞吐量,也增大了片上资源占用。通过引入存算一体存储器并设计围绕存算一体存储器的新神经形态处理器系统架构,可以有效提高神经网络的计算吞吐量、减少处理器的资源占用、缩小处理器面积、提高处理器计算效率、降低运行功耗。然而目前还没有基于存算一体结构的神经形态处理器,如何围绕存算一体存储器进行神经网络推理与训练加速器的设计是突破冯诺依曼架构瓶颈的重要因素。
发明内容
针对目前没有基于存算一体结构进行神经网络处理的不足之处,本发明提出了一种基于存算一体的神经网络推理与训练加速器,及其对应的运行方法,该架构在神经形态处理器架构中引入存算一体存储器,并针对存算一体存储器的特性设计了对应的神经网络推理与训练加速器,充分利用存算一体存储器,将计算功能和存储功能结合在一起,使神经网络运算可以在存算一体存储器中完成,从而有效提高了计算吞吐量、减少了系统的资源消耗、减小了系统面积、提高了系统计算效率、降低了运行功耗。
本发明的技术方案为:
基于存算一体的神经网络推理与训练加速器,包括:
接口模块,用于接收外部输入的控制指令和运算数据,所述运算数据包括神经网络的输入、神经网络的参数和神经网络的目标值;
缓存模块,用于缓存所述接口模块接收的所述运算数据;
全局控制模块,用于根据所述接口模块接收的所述控制指令将所述接口模块的运算数据分类并存入所述缓存模块;
存算一体存储器,用于进行神经网络的推理和训练并存储神经网络的运算结果;
推理控制器,用于执行神经网络推理阶段的前向传播并产生推理阶段的指令;
训练控制器,用于执行神经网络训练阶段的权值更新并产生训练阶段的指令;
存储器控制模块,用于将缓存模块的运算数据、推理控制器产生的推理阶段的指令和训练控制器产生的训练阶段的指令送入所述存算一体存储器中,以及读取所述存算一体存储器的运算结果;
所述全局控制模块还用于根据所述接口模块接收的所述控制指令控制所述推理控制器、训练控制器和存储器控制模块工作。
具体的,缓存模块包括至少一组网络寄存器组,每组所述网络寄存器组用于存储一层神经网络的运算数据;所述网络寄存器组包括至少一组神经元寄存器组,每组所述神经元寄存器组用于存储一个神经元的运算数据;所述神经元寄存器组包括至少两行寄存器,所述神经元寄存器存储的神经元运算数据包括神经元的输入和权值。
具体的,所述存算一体存储器包括存储单元阵列和外围电路,所述存储单元阵列为多个存储单元构成的阵列,所述存储单元阵列的类型包括SRAM阵列和忆阻器交叉阵列。
具体的,所述存储单元阵列包括至少一行,一行对应一个地址;所述存储单元阵列的一行中包括至少一个所述存储单元,所述存储单元包括存储模块和读取模块,所述存储模块用于存储神经元的对应输入,所述读取模块用于存储神经元的对应权值。
针对本发明提出的基于存算一体的神经网络推理与训练加速器,本发明还提出了对应的运行方法,包括如下步骤:
步骤1、输入时钟信号作为所述基于存算一体的神经网络推理与训练加速器的主时钟;
步骤2、全局复位,将所述基于存算一体的神经网络推理与训练加速器中所有模块的状态初始化;
步骤3、启动所述接口模块从外部接收所述控制指令和运算数据并传输到所述全局控制模块;
步骤4、所述全局控制模块把来自所述接口模块的运算数据分类并存入缓存模块,开始进行神经网络的推理阶段;
步骤5、所述全局控制模块控制所述推理控制器执行神经网络的前向传播过程,所述推理控制器根据所使用的神经网络模型产生推理阶段的指令,指令包括推理阶段每个神经元的对应存储地址和运算模式;
步骤6、所述存储器控制模块控制所述推理控制器把推理阶段每个神经元的对应存储地址和运算模式写入所述存算一体存储器的每个对应存储单元中,并根据每个神经元的对应存储地址控制所述缓存模块把神经网络一层中每个神经元所用的推理数据写入所述存算一体存储器的对应存储单元中,其中推理数据包括神经元的输入和参数;
步骤7、所述存算一体存储器根据推理阶段每个神经元的运算模式对存入每个存储单元的推理数据进行运算并将运算结果存在当前存储单元中;
步骤8、运算完毕后,所述推理控制器控制所述存储器控制模块从所述存算一体存储器中读出神经网络当前层每一个地址的数据,读出时每个地址中每个单元存储的数据累加后得到每一个神经元的运算结果,作为相邻的下一层神经网络中对应神经元的输入;
步骤9、判断神经网络的每一层是否已全部完成推理运算,是则跳转步骤10,否则跳转步骤5;
步骤10、进入神经网络的训练阶段;
步骤11、所述训练控制器控制权值更新过程,根据所使用的训练方式产生训练阶段的指令,指令包括训练阶段每个神经元对应的存储地址和运算模式;
步骤12、所述存储器控制模块控制所述训练控制器把训练阶段每个神经元对应的存储地址和运算模式写入所述存算一体存储器的每个存储单元中,并根据每个神经元对应的存储地址控制所述缓存模块把神经网络一层中每个神经元所用的训练数据写入所述存算一体存储器的对应存储单元中,所述训练数据包括神经网络的对应目标值;
步骤13、所述存算一体存储器根据训练阶段每个神经元的运算模式对存入每个存储单元的训练数据进行运算并将运算结果存在当前存储单元中;
步骤14、运算完毕后,所述训练控制器控制所述存储器控制模块从所述存算一体存储器中读出神经网络当前层每一个存储单元的数据,得到当前层每一个神经元参数的更新结果,作为前一层神经网络训练的输入;
步骤15、判断神经网络的每一层是否已全部完成训练,是则跳转步骤16,否则跳转步骤 11;
步骤16、所述推理控制器和训练控制器交替反复运行,直到外部输入的控制指令表现为停止信号,保存训练结果,结束所述基于存算一体的神经网络推理与训练加速器的运行。
具体的,所述步骤5中所使用的神经网络包括多层感知器、卷积神经网络、和循环神经网络。
具体的,所述步骤11中所使用的训练方式包括误差反向传播算法、快速传播算法和列文伯格-马夸尔特算法。
本发明的有益效果为:本发明通过采用存算一体结构,把数据的存储和运算合并,令本发明中的存算一体存储器同时具备数据存储和运算功能,能够在存算一体存储器中同时实现神经网络运算和存储运算结果;并提出了一种围绕存算一体存储器进行神经网络推理与训练加速器的运行方法。本发明提出的架构相比于传统的冯诺依曼架构,能够有效增大数据吞吐量、减少系统的资源消耗、缩小系统面积、提高系统计算效率、降低运行功耗。
附图说明
为了更清楚地说明本发明中的技术方案,下面将以MLP网络为例,激活函数采用RELU 函数,对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1(a)是本发明提出的基于存算一体的神经网络推理与训练加速器在实施例中采用的存算一体存储器的一种结构示意图,图1(b)是图1(a)中忆阻器交叉阵列的结构示意图。
图2是本发明提出的基于存算一体的神经网络推理与训练加速器在实施例中采用的存算一体存储器的存储单元示意图。
图3是本发明提出的基于存算一体的神经网络推理与训练加速器在实施例中采用的存算一体存储器的存储单元阵列和运算过程示意图。
图4是本发明提出的基于存算一体的神经网络推理与训练加速器的顶层结构示意图。
图5是本发明提出的基于存算一体的神经网络推理与训练加速器在实施例中的缓存模块结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图,以MLP(多层感知器) 网络和BP算法(误差反向传播算法)为例,采用RELU函数作为激活函数,通过具体实施例对本发明进一步地详细说明,应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提出了一种基于存算一体的神经网络推理与训练加速器及其运行方法,该架构在现有的神经形态处理器架构中引入存算一体存储器,从而有效减少处理器的资源消耗、缩小处理器面积、提高处理器计算效率、降低运行功耗。
如图4所示是本发明提出的一种基于存算一体的神经网络推理与训练加速器的顶层结构示意图,是基于分段复用和参数量化共享提出的一种大规模神经形态处理器,包括:
至少一个推理控制器401,用于执行神经网络的前向传播并产生推理阶段的相应指令,推理所用神经网络包括MLP(多层感知器),CNN(卷积神经网络),RNN(循环神经网络)等。
至少一个训练控制器402,用于执行神经网络的权值更新并产生训练阶段的相应指令,训练所用算法包括BP算法(误差反向传播算法),快速传播算法,LM算法(列文伯格-马夸尔特算法)等。
推理控制器401和训练控制器402中不包含乘法模块、加法模块等用于神经网络基本运算的算数逻辑单元,与传统的包含算数逻辑单元的推理控制器和训练控制器不同,本发明将运算转移到存算一体存储器408中,实现存储与运算都在存算一体存储器408中进行。
至少一个接口模块403,用于接收外部输入的控制指令和运算数据,如本实施例中与上位机407通信,接受来自上位机407的控制指令和运算数据,运算数据包括神经网络输入、参数、神经网络目标值等,根据需要实现的功能还可以包括其他的运算数据。推理数据和训练数据属于运算数据,推理数据包括神经网络的输入数据和参数,训练数据包括神经网络的目标值,其他数据可根据要实现的功能而添加。
至少一个缓存模块404,用于缓存接口模块403接收的运算数据,能够缓存至少一层网络的神经元运算所需的数据。如图5是所示本实施例中使用的缓存模块的结构示意图,如图 5,500是一个缓存模块的结构示意图,其中包含N个网络寄存器组501,分别为Group 1至 Group N,其中N大于等于1,一个网络寄存器组501能够缓存一层网络的神经元的运算数据,因此缓存模块500能够缓存至少一层网络的神经元的运算数据。每个网络寄存器组501包含M个神经元对应的神经元寄存器组502,分别为神经元1至神经元M,其中M大于等于1,每个神经元寄存器组502用于缓存一个神经元的数据,因此一个神经元寄存器组501能缓存一层网络的M个神经元的数据。每次运行时,来自上位机的运算数据先存到缓存模块里,计算时处理当前缓存的运算数据,下一次计算时把原来缓存的运算数据舍弃掉再存入新的运算数据。每个神经元寄存器组502包含P行寄存器,分别为Line 1至Line P,从第一行开始依次用于缓存该神经元的输入、权值、各种参数等,其中P大于等于2,即每个神经元寄存器组502至少能够用于缓存该神经元运算所用的输入数据和权值,根据系统所用的算法类型,可适当增加行数以存储更多用于运算的参数。
至少一个全局控制模块405,用于控制系统整体运行,并把通过接口模块输入的数据送入系统内其他模块。如全局控制模块405根据接口模块接收的控制指令将接口模块的运算数据分类并存入缓存模块中对应的寄存器中,或根据接口模块接收的控制指令控制推理控制器、训练控制器和存储器控制模块的工作。
至少一个存储器控制模块406,用于控制存算一体存储器408,将来自其他模块的数据存入所述存算一体存储器,包括将缓存模块的运算数据、推理控制器产生的推理阶段的指令和训练控制器产生的训练阶段的指令送入存算一体存储器中,并读取存算一体存储器的运算结果,从而将系统中的神经网络相关的基本运算转移至存算一体存储器408中。
上位机407,通过接口模块403对系统传输控制指令和运算数据。
至少一个存算一体存储器408,系统通过存储器控制模块406与存算一体存储器408通信,系统中的神经网络相关的数据存储和基本运算可在存算一体存储器中实现,存算一体存储器408进行神经网络的推理和训练并存储神经网络的运算结果,能够同时用于存储和运算,实现存算一体。
针对本发明提出的基于存算一体的神经网络推理与训练加速器,还提出了对应的运行方法,包括如下步骤:
步骤1,时钟输入,为神经网络推理与训练加速器提供一个主时钟;
步骤2,全局复位,将基于存算一体的神经网络推理与训练加速器中所有模块的状态初始化;
步骤3,启动接口模块,从上位机接收控制指令和运算数据传输到全局控制模块,运算数据包括推理数据和训练数据;
步骤4,全局控制模块把来自接口模块的运算数据分类并存入缓存模块的对应寄存器组中,开始进行神经网络的推理阶段;
步骤5,全局控制模块控制推理控制器执行神经网络的前向传播过程,推理控制器根据所使用的神经网络模型产生推理阶段的指令,推理阶段的指令包括推理阶段每个神经元的对应存储地址和运算模式;
步骤6、存储器控制模块控制推理控制器把推理阶段的指令包括推理阶段每个神经元的对应存储地址和运算模式写入存算一体存储器的每个对应存储单元中,并根据每个神经元的对应存储地址控制缓存模块把神经网络一层中每个神经元所用的推理数据写入存算一体存储器的对应存储单元中,其中推理数据包括神经元的输入和参数,运算模式包括加、减、乘三种基本运算;
步骤7、存算一体存储器根据推理阶段每个神经元的运算模式在内部对存入每个存储单元的推理数据进行运算,每个存储单元的运算结果将自动存在当前存储单元中;
步骤8、运算完毕后,推理控制器控制存储器控制模块从存算一体存储器中读出神经网络当前层每一个地址的数据,读出时每个地址中每个单元存储的数据累加后得到每一个神经元的运算结果,作为相邻的下一层神经网络中对应神经元的输入;
步骤9、判断神经网络的每一层是否已全部完成推理运算,是则跳转步骤10,否则跳转步骤5;
步骤10、进入神经网络的训练阶段;
步骤11、训练控制器控制权值更新过程,根据所使用的训练方式产生训练阶段的指令,训练阶段的指令包括训练阶段每个神经元对应的存储地址和运算模式;
步骤12、存储器控制模块控制训练控制器把训练阶段每个神经元对应的存储地址和运算模式写入存算一体存储器的每个存储单元中,并根据每个神经元对应的存储地址控制缓存模块把神经网络一层中每个神经元所用的训练数据写入存算一体存储器的对应存储单元中,训练数据包括神经网络的对应目标值;
步骤13、存算一体存储器根据训练阶段每个神经元的运算模式在内部对存入每个存储单元的训练数据进行运算,每个存储单元的运算结果将自动存在该存储单元中;
步骤14、运算完毕后,训练控制器控制存储器控制模块从存算一体存储器中读出神经网络当前层每一个存储单元的数据,得到当前层每一个神经元参数的更新结果,作为前一层神经网络训练的输入;
步骤15、判断神经网络的每一层是否已全部完成训练,是则跳转步骤16,否则跳转步骤 11;
步骤16、推理控制器和训练控制器交替反复运行,直到上位机发出停止信号,保存训练结果,结束基于存算一体的神经网络推理与训练加速器的运行。
下面结合附图进行说明,图1(a)为本实施例中采用的存算一体存储器的结构示意图,存算一体存储器包括存储单元阵列100和外围电路102,存储单元阵列100包括若干个存储单元101构成阵列分布;外围电路102包括行译码器、预充电单元、读出放大器、多路复用器、输出缓冲器等模块。存储单元阵列100的类型包括SRAM、忆阻器交叉阵列(包括阻变存储器RRAM、相变存储器PCRAM、自旋存储器STT-RAM)等。
图1(b)为图1(a)中忆阻器交叉阵列的结构示意图,忆阻器交叉阵列可以为RRAM、PCRAM、STT-RAM等多种类型的存储器阵列。通过垂直交叉阵列可以将大量的忆阻器平行的放置在一起,形成忆阻器矩阵,将忆阻器用于数据存储和并行计算;如图1(b)中103为忆阻器模型,104为由忆阻器构成的忆阻器交叉阵列;交叉阵列交叉处单元除忆阻器之外,还可以设置其他器件,如电容、晶体管、可变电阻等,也可像忆阻器一样形成阵列,用于数据存储或者用于交叉阵列神经形态硬件中,105为由忆阻器和晶体管构成的忆阻器交叉阵列。
图2为本实施例中采用的存算一体存储器中单个存储单元的结构示意图,即图1中的存储单元101。以存算一体SRAM为例,存算一体SRAM的单个存储单元200和传统6T存储器存储单元(由6个MOS管构成)不同,存算一体SRAM的每个存储单元200中包含8个 MOS管。其中,存储模块201可以采用传统的6T SRAM单元,Q为存储数据,可存储数据“0”或“1”;读取模块202的运算单元采用单管乘法单元结构,其中MOS管203的衬底电压Vi可调;当读使能RWL为高时,MOS管203导通,存储单元从输出端RBL输出电流I,再通过外围电路102把输出电流I转化为数字信号输出。
存储单元200的具体工作过程为:在存储模块201存储的值为‘1’时,MOS管203导通,可以输出电流;根据MOS管的衬底偏置效应,根据MOS管203的衬底电压Vi的不同, RBL可输出大小不同的电流;根据这一特性,若设定1pA的电流代表值为‘单位1’,则可根据神经网络中权值的大小调整每个存储单元中MOS管203的衬底电压Vi,从而输出大小为单位1、单位2、单位3、单位4等的电流。实际应用中,存储器外围电路根据从本发明提出的神经网络推理与训练加速器输入的权值,把读取模块202中的衬底电压Vi调节为不同电流对应的电压值,即可把权值存入每个存储单元的读取模块202中,例如系统输入权值2,存储器外围电路把读取模块202中的衬底电压Vi调节为单位2大小的电流对应的电压值,即为把权值2存入了读取模块202。存储单元中的存储模块201所存数值即为神经网络输入,存储模块201所存的神经网络输入和读取模块202所存的权值可以随时通过本发明提出的神经网络推理与训练加速器进行控制和改写。
图3是实施例中采用的存算一体存储器中存储单元阵列和推理阶段的运算过程示意图,如图以存算一体SRAM和MLP网络为例说明存算一体存储器在系统中的基本运算过程。该存算一体SRAM的存储单元组成了阵列,共Q行,Q大于等于1,每一行为一个地址,即地址1到地址Q,不同地址间的运算可以并行执行。执行运算时,以一个使用RELU激活函数的4输入神经元300为例,实现运算Iout=In0×W0+In1×W1+In2×W2+In3×W3。如图 3中301(地址1)即为该神经元在存算一体SRAM中对应的存储地址,本实施例中该存储地址包括4个存储单元302,也可以设置其他个数的存储单元,每一行包括至少一个存储单元,每个存储单元包含一个存储模块和一个读取模块,存储模块用于存储神经元的对应输入,结构如图2中的201;读取模块用于存储神经元的对应权值,结构如图2中的202;同一地址中的每个存储单元的输出互连成输出总线303。以实现输入数据(1,0,1,0)与权值(1,2,4,8)的点向量积为例,先通过如图2方法从外部分别向地址1的读取模块0、读取模块1、读取模块 2、读取模块3写入权值W0=1、W1=2、W2=4、W3=8,然后从外部分别向地址1的存储模块0、存储模块1、存储模块2、存储模块3写入输入数据In0=1、In1=0、In2=1、In3=0;4 个存储单元接收推理控制器或训练控制器产生的运算模式控制信号“乘”,则每个存储单元中的存储模块所存输入数据和读取模块中所存权值相乘,得到输出I0=1,I1=0,I2=4,I3=0,即(1、0、4、0);4个存储单元接收推理控制器或训练控制器产生的运算模式控制信号“加”,则每个存储单元的输出通过输出总线303一并输出,得到累加结果Iout=I0+I1+I2+I3=5, Iout通过存储器外围电路转化为数字信号Out=5输出。如图3所示,同理可在地址2中实现输入数据(1,1,1,1)与权值(1,4,3,0)的点向量积,得到Iout=I0+I1+I2+I3=8;在地址Q 中实现输入数据(0,0,1,1)与权值(8,4,2,1)的点向量积,得到Iout=I0+I1+I2+I3=3。
以MLP网络的训练为例,先执行前向传播过程;启动接口模块403,从上位机407接收包括推理数据和训练数据的运算数据传输到全局控制模块405;全局控制模块405把来自接口模块403的运算数据分类并存入缓存模块404的对应寄存器组中,开始推理阶段;推理控制器401控制前向传播过程,根据前向传播算法(Forward Propagation),产生推理阶段每个神经元的对应存储地址和运算模式;存储器控制模块406控制推理控制器401把推理阶段每个神经元的对应存储地址和运算模式写入存算一体存储器408,存储器控制模块406还根据推理控制器401产生的每个神经元的对应存储地址控制缓存模块404把神经网络一层中每个神经元所用的推理数据写入存算一体存储器408;存算一体存储器408根据运算模式信号在内部对存入每个存储单元的推理数据进行运算,每个存储单元的运算结果将自动存在当前存储单元中;运算完毕后,推理控制器401控制存储器控制模块406从存算一体存储器408中读出该层每一个神经元对应地址的数据,读出时每个地址的每个单元存储的数据可一并累加,得到每一个神经元的运算结果,作为相邻的下一层神经元的输入;判断神经网络的每一层是否已全部完成运算,是则结束前向传播,开始进行权值更新,否则继续进行前向传播过程。神经网络的前向传播过程完成后开始进行权值更新,推理控制器挂起退出工作,训练控制器402控制权值更新过程,根据反向传播算法(Back Propagation),产生训练阶段每个神经元对应的存储地址和运算模式;存储器控制模块406控制训练控制器402把训练阶段每个神经元对应的存储地址和运算模式写入存算一体存储器408,存储器控制模块406还根据训练控制器402产生的每个神经元对应的存储地址控制缓存模块404把输出目标值(即训练阶段的训练数据)写入存算一体存储器408的输出层结果对应的存储单元(即图3中地址Q地址中的存储单元);存算一体存储器408根据运算模式信号在内部对求得输出目标值和输出层结果的差值,作为输出层误差,每个存储单元的运算结果将自动存在该存储单元中;把相邻的前一层神经网络的每一个神经元的权值写入存算一体存储器408中输出层误差所存地址,同时输入运算模式信号,在存储单元内部得到权值和输出层误差乘积,作为输出层相邻的前一层网络的误差并储存在存储器408中;该层误差运算并存储完成后,以该层误差和上一层相邻网络的神经元的权值运算上一层网络的误差,以此类推,依次计算每一层网络的误差,直到输入层为止,每一层网络的误差均存储在存储器408相应地址;依次读出每一层网络的输出,再存入存储器408中对应的每一层的输出所存地址,同时输入运算模式信号,得到每一层网络的误差和结果的乘积并存入存储单元中,这就是每一层网络的神经元的更新后的权值;得到更新后的权值后,训练控制器402挂起,推理控制器401开始进行新一轮的前向传播,如此反复,不断交替进行前向传播和反向传播,直到上位机407传来停止信号;系统接收到停止信号后,保存神经元权值的更新结果,结束运行,等待来自上位机407发出新的指令。
本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其他各种具体变形和组合,这些变形和组合仍然在本发明的保护范围之内。
Claims (3)
1.一种基于存算一体的神经网络推理与训练加速器的运行方法,其特征在于,所述基于存算一体的神经网络推理与训练加速器包括:
接口模块,用于接收外部输入的控制指令和运算数据,所述运算数据包括神经网络的输入、神经网络的参数和神经网络的目标值;
缓存模块,用于缓存所述接口模块接收的所述运算数据;
全局控制模块,用于根据所述接口模块接收的所述控制指令将所述接口模块的运算数据分类并存入所述缓存模块;
存算一体存储器,用于进行神经网络的推理和训练并存储神经网络的运算结果;
推理控制器,用于执行神经网络推理阶段的前向传播并产生推理阶段的指令;
训练控制器,用于执行神经网络训练阶段的权值更新并产生训练阶段的指令;
存储器控制模块,用于将缓存模块的运算数据、推理控制器产生的推理阶段的指令和训练控制器产生的训练阶段的指令送入所述存算一体存储器中,以及读取所述存算一体存储器的运算结果;
所述全局控制模块还用于根据所述接口模块接收的所述控制指令控制所述推理控制器、训练控制器和存储器控制模块工作;
所述缓存模块包括至少一组网络寄存器组,每组所述网络寄存器组用于存储一层神经网络的运算数据;所述网络寄存器组包括至少一组神经元寄存器组,每组所述神经元寄存器组用于存储一个神经元的运算数据;所述神经元寄存器组包括至少两行寄存器,所述神经元寄存器存储的神经元运算数据包括神经元的输入和权值;
所述存算一体存储器包括存储单元阵列和外围电路,所述存储单元阵列为多个存储单元构成的阵列,所述存储单元阵列的类型包括SRAM阵列和忆阻器交叉阵列;所述存储单元阵列包括至少一行,一行对应一个地址;所述存储单元阵列的一行中包括至少一个所述存储单元,所述存储单元包括存储模块和读取模块,所述存储模块用于存储神经元的对应输入,所述读取模块用于存储神经元的对应权值;
所述基于存算一体的神经网络推理与训练加速器的运行方法,包括如下步骤:
步骤1、输入时钟信号作为所述基于存算一体的神经网络推理与训练加速器的主时钟;
步骤2、全局复位,将所述基于存算一体的神经网络推理与训练加速器中所有模块的状态初始化;
步骤3、启动所述接口模块从外部接收所述控制指令和运算数据并传输到所述全局控制模块;
步骤4、所述全局控制模块把来自所述接口模块的运算数据分类并存入缓存模块,开始进行神经网络的推理阶段;
步骤5、所述全局控制模块控制所述推理控制器执行神经网络的前向传播过程,所述推理控制器根据所使用的神经网络模型产生推理阶段的指令,指令包括推理阶段每个神经元的对应存储地址和运算模式;
步骤6、所述存储器控制模块控制所述推理控制器把推理阶段每个神经元的对应存储地址和运算模式写入所述存算一体存储器的每个对应存储单元中,并根据每个神经元的对应存储地址控制所述缓存模块把神经网络一层中每个神经元所用的推理数据写入所述存算一体存储器的对应存储单元中,其中推理数据包括神经元的输入和参数;
步骤7、所述存算一体存储器根据推理阶段每个神经元的运算模式对存入每个存储单元的推理数据进行运算并将运算结果存在当前存储单元中;
步骤8、运算完毕后,所述推理控制器控制所述存储器控制模块从所述存算一体存储器中读出神经网络当前层每一个地址的数据,读出时每个地址中每个单元存储的数据累加后得到每一个神经元的运算结果,作为相邻的下一层神经网络中对应神经元的输入;
步骤9、判断神经网络的每一层是否已全部完成推理运算,是则跳转步骤10,否则跳转步骤5;
步骤10、进入神经网络的训练阶段;
步骤11、所述训练控制器控制权值更新过程,根据所使用的训练方式产生训练阶段的指令,指令包括训练阶段每个神经元对应的存储地址和运算模式;
步骤12、所述存储器控制模块控制所述训练控制器把训练阶段每个神经元对应的存储地址和运算模式写入所述存算一体存储器的每个存储单元中,并根据每个神经元对应的存储地址控制所述缓存模块把神经网络一层中每个神经元所用的训练数据写入所述存算一体存储器的对应存储单元中,所述训练数据包括神经网络的对应目标值;
步骤13、所述存算一体存储器根据训练阶段每个神经元的运算模式对存入每个存储单元的训练数据进行运算并将运算结果存在当前存储单元中;
步骤14、运算完毕后,所述训练控制器控制所述存储器控制模块从所述存算一体存储器中读出神经网络当前层每一个存储单元的数据,得到当前层每一个神经元参数的更新结果,作为前一层神经网络训练的输入;
步骤15、判断神经网络的每一层是否已全部完成训练,是则跳转步骤16,否则跳转步骤11;
步骤16、所述推理控制器和训练控制器交替反复运行,直到外部输入的控制指令表现为停止信号,保存训练结果,结束所述基于存算一体的神经网络推理与训练加速器的运行。
2.根据权利要求1所述的基于存算一体的神经网络推理与训练加速器的运行方法,其特征在于,所述步骤5中所使用的神经网络包括多层感知器、卷积神经网络、和循环神经网络。
3.根据权利要求1所述的基于存算一体的神经网络推理与训练加速器的运行方法,其特征在于,所述步骤11中所使用的训练方式包括误差反向传播算法、快速传播算法和列文伯格-马夸尔特算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910627611.1A CN110334799B (zh) | 2019-07-12 | 2019-07-12 | 基于存算一体的神经网络推理与训练加速器及其运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910627611.1A CN110334799B (zh) | 2019-07-12 | 2019-07-12 | 基于存算一体的神经网络推理与训练加速器及其运行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110334799A CN110334799A (zh) | 2019-10-15 |
CN110334799B true CN110334799B (zh) | 2022-05-24 |
Family
ID=68146574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910627611.1A Active CN110334799B (zh) | 2019-07-12 | 2019-07-12 | 基于存算一体的神经网络推理与训练加速器及其运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110334799B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990060B (zh) * | 2019-12-06 | 2022-03-22 | 北京瀚诺半导体科技有限公司 | 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 |
CN113033759A (zh) * | 2019-12-09 | 2021-06-25 | 南京惟心光电系统有限公司 | 脉冲卷积神经网络算法、集成电路、运算装置及存储介质 |
CN110956258B (zh) * | 2019-12-17 | 2023-05-16 | 深圳鲲云信息科技有限公司 | 一种神经网络加速电路和方法 |
CN111191769B (zh) * | 2019-12-25 | 2024-03-05 | 中国科学院苏州纳米技术与纳米仿生研究所 | 自适应的神经网络训练与推理装置 |
CN111027691B (zh) * | 2019-12-25 | 2023-01-17 | 上海寒武纪信息科技有限公司 | 用于神经网络运算、训练的装置、设备及板卡 |
US11610128B2 (en) * | 2020-03-31 | 2023-03-21 | Amazon Technologies, Inc. | Neural network training under memory restraint |
CN111427895B (zh) * | 2020-04-01 | 2022-10-25 | 西安交通大学 | 一种基于两段式缓存的神经网络推理加速方法 |
US11521085B2 (en) * | 2020-04-07 | 2022-12-06 | International Business Machines Corporation | Neural network weight distribution from a grid of memory elements |
CN112152947B (zh) | 2020-08-21 | 2021-07-20 | 北京百度网讯科技有限公司 | 处理器及实现方法、电子设备和存储介质 |
CN112153139B (zh) * | 2020-09-23 | 2022-06-14 | 成都市深思创芯科技有限公司 | 基于传感器网络和存内计算神经网络的控制系统及方法 |
CN112948300B (zh) * | 2021-01-19 | 2023-02-10 | 浙江大华技术股份有限公司 | 服务器、存算一体设备以及服务器系统 |
CN112599168B (zh) * | 2020-12-08 | 2022-05-20 | 华中科技大学 | 一种忆阻器存内计算系统的误操作检测装置及系统 |
CN112836816B (zh) * | 2021-02-04 | 2024-02-09 | 南京大学 | 一种适用于光电存算一体处理单元串扰的训练方法 |
CN113138957A (zh) * | 2021-03-29 | 2021-07-20 | 北京智芯微电子科技有限公司 | 用于神经网络推理的芯片及加速神经网络推理的方法 |
CN113220606B (zh) * | 2021-05-07 | 2021-11-26 | 珠海市芯动力科技有限公司 | 神经网络权值存储方法、读取方法及相关设备 |
CN113517009A (zh) * | 2021-06-10 | 2021-10-19 | 上海新氦类脑智能科技有限公司 | 存算一体式智能芯片、控制方法及控制器 |
CN113837373A (zh) * | 2021-09-26 | 2021-12-24 | 清华大学 | 数据处理装置以及数据处理方法 |
CN114118389B (zh) * | 2022-01-28 | 2022-05-10 | 深圳鲲云信息科技有限公司 | 神经网络数据处理方法、设备及存储介质 |
CN117454957B (zh) * | 2023-12-22 | 2024-03-22 | 环球数科集团有限公司 | 一种用于图像处理神经网络模型的推理训练系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106847335A (zh) * | 2016-12-27 | 2017-06-13 | 北京大学 | 基于阻变存储阵列的卷积计算存储一体化设备及方法 |
CN109542839A (zh) * | 2019-01-18 | 2019-03-29 | 清华大学 | 融合非易失多值存储与逻辑运算功能的动态可控器件单元 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489618B2 (en) * | 2014-05-27 | 2016-11-08 | Purdue Research Foudation | Electronic comparison systems |
US11836610B2 (en) * | 2017-12-13 | 2023-12-05 | Advanced Micro Devices, Inc. | Concurrent training of functional subnetworks of a neural network |
-
2019
- 2019-07-12 CN CN201910627611.1A patent/CN110334799B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106847335A (zh) * | 2016-12-27 | 2017-06-13 | 北京大学 | 基于阻变存储阵列的卷积计算存储一体化设备及方法 |
CN109542839A (zh) * | 2019-01-18 | 2019-03-29 | 清华大学 | 融合非易失多值存储与逻辑运算功能的动态可控器件单元 |
Non-Patent Citations (4)
Title |
---|
A 65nm 1Mb nonvolatile computing-in-memory ReRAM macro with sub-16ns multiply-and-accumulate for binary DNN AI edge processors;Wei-Hao Chen等;《2018 IEEE International Solid-State Circuits Conference-(ISSCC)》;20180312;第494-496页 * |
An 8-bit, 16 input, 3.2 pJ/op switched-capacitor dot product circuit in 28-nm FDSOI CMOS;Daniel Bankman等;《 2016 IEEE Asian Solid-State Circuits Conference (A-SSCC)》;20170209;第21-24页 * |
PRIME: A Novel Processing-in-memory Architecture for Neural Network Computation in ReRAM-based Main Memory;Ping Chi等;《2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture》;20160618;第44卷(第3期);第30-34页 * |
端侧智能存算一体芯片概述;郭昕婕等;《微纳电子与智能制造》;20190615;第01卷(第02期);第72-82页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110334799A (zh) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110334799B (zh) | 基于存算一体的神经网络推理与训练加速器及其运行方法 | |
EP3754561A1 (en) | Reconfigurable memory compression techniques for deep neural networks | |
Chi et al. | Prime: A novel processing-in-memory architecture for neural network computation in reram-based main memory | |
CN108446764B (zh) | 一种新型神经形态芯片架构 | |
CN107533459A (zh) | 使用电阻存储器阵列的数据处理 | |
US11663452B2 (en) | Processor array for processing sparse binary neural networks | |
KR20220149729A (ko) | 프로세싱 인 메모리를 사용하는 카운터 기반 곱셈 | |
Musisi-Nkambwe et al. | The viability of analog-based accelerators for neuromorphic computing: A survey | |
CN117094374A (zh) | 电子电路及内存映射器 | |
US20220391128A1 (en) | Techniques to repurpose static random access memory rows to store a look-up-table for processor-in-memory operations | |
Kulkarni et al. | Neuromorphic hardware accelerator for SNN inference based on STT-RAM crossbar arrays | |
CN115423081A (zh) | 一种基于fpga的cnn_lstm算法的神经网络加速器 | |
Smagulova et al. | Resistive neural hardware accelerators | |
Luo et al. | Codg-reram: An algorithm-hardware co-design to accelerate semi-structured gnns on reram | |
Geng et al. | An on-chip layer-wise training method for RRAM based computing-in-memory chips | |
CN115394336A (zh) | 一种存算fpga架构 | |
Peng et al. | Inference engine benchmarking across technological platforms from CMOS to RRAM | |
US11733763B2 (en) | Intelligent low power modes for deep learning accelerator and random access memory | |
Mikhaylov et al. | Neuromorphic computing based on CMOS-integrated memristive arrays: current state and perspectives | |
CN117234720A (zh) | 动态可配置的存算融合数据缓存结构、处理器及电子设备 | |
Khan et al. | The Landscape of Compute-near-memory and Compute-in-memory: A Research and Commercial Overview | |
Kulkarni et al. | An on-chip learning accelerator for spiking neural networks using stt-ram crossbar arrays | |
CN115879530A (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
CN109583577B (zh) | 运算装置及方法 | |
Ko et al. | SMART paths for latency reduction in ReRAM processing-in-memory architecture for CNN inference |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |