CN112988082B - 基于nvm进行ai计算的芯片系统及其运行方法 - Google Patents
基于nvm进行ai计算的芯片系统及其运行方法 Download PDFInfo
- Publication number
- CN112988082B CN112988082B CN202110540153.5A CN202110540153A CN112988082B CN 112988082 B CN112988082 B CN 112988082B CN 202110540153 A CN202110540153 A CN 202110540153A CN 112988082 B CN112988082 B CN 112988082B
- Authority
- CN
- China
- Prior art keywords
- nvm array
- array module
- nvm
- calculation
- module
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Semiconductor Memories (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种基于NVM进行AI计算的芯片系统及其运行方法,系统包括第一、第二NVM阵列模块、外部接口模块和MCU;第一NVM阵列模块实现神经网络的第一类隐藏层的模拟运算算子;第二NVM阵列模块数字化的存储神经网络的第二类隐藏层的权重参数、系统程序、神经网络的算法流程及神经网络模型;第一类隐藏层的连接密度高于第二类隐藏层的连接密度;外部接口模块接收外部输入的指令、输入数据及输出AI计算的结果;外部输入的指令包括AI运算指令;MCU基于AI运算指令执行系统程序,以根据算法流程控制第一、第二NVM阵列模块对输入数据进行AI计算,得到AI计算的结果。本发明能够提高存储阵列的利用率,降低芯片成本。
Description
技术领域
本发明涉及NVM(non-volatile memory,非易失性存储)技术领域,具体涉及一种基于NVM进行AI(Artificial Intelligence,人工智能)计算的芯片系统及其运行方法。
背景技术
AI算法来源于人脑的结构的启示。人脑是一个由大量神经元复杂连接的网络,每个神经元通过大量的树突连接大量的其它神经元,接收信息,每一个连接点叫突触(Synapse)。在外部刺激积累到一定程度后,产生一个刺激信号,通过轴突传送出去。轴突有大量的末梢,通过突触,连接到大量其它神经元的树突。就是这样一个由简单功能的神经元组成的网络,实现了人类的智能活动。人的记忆和智能,普遍被认为存储在每一个突触的不同的耦合强度里。
从上世纪60年代兴起的神经网络算法,用一个函数来模仿神经元的功能。如图1所示,函数接受多个输入,每个输入有不同的权重,输出是每一个输入与权重相乘再求和。函数输出到很多其它的神经元,组成一个神经网络。
常见的AI芯片在算法上针对网络计算优化了矩阵并行计算,但因为AI计算需要极高的存储带宽,把处理器和内存、存储分离的架构遇到了读取速度不够的瓶颈,也受限于存储读取功耗。业界已经开始广泛研究存储内计算(In-Memory-computing)也称为存算一体的架构。
目前采用NVM的存储内计算的方案,都是利用NVM存储神经网络中的权重,把神经网络的计算通过模拟信号加乘的方法实现。这类方案已经有了不少科研成果,但实际应用仍有困难。例如,如图2所示的采用在标准NVM子阵列内添加电路进行神经网络一层计算的原理图,其利用非易失存储器来存储神经网络计算需要的权重,用模拟电路进行向量乘法,大规模的乘法和加法可以平行进行,其能够提高运算速度并且节省功耗。基于存储阵列内模拟信号运算的存内计算的一个突出优点是运算效率高、功耗低,但是其适用的神经网络模型结构不够灵活。阵列内存内模拟运算最适合的是全连接神经网络,此时存储阵列内的存储单元的利用率最高;而对于非全连接网络,虽然预存的神经网络的权重参数矩阵在计算中能够通过解码的方式选择神经元连接的打开与关闭,进而实现不同连接密度的非全连接层的计算,但是势必会存在不同数量的存储单元的闲置,随着非全连接的连接密度的降低,闲置的存储单元的数量增多,这将导致存储阵列的利用率显著下降。而当前通用的神经网络模型结构都很复杂,AlexNet(一种神经网络)有8层,VGG(一种卷积神经网络)有19层,GoogleNet(一种深度神经网络)有22层,而ResNet(残差网络)有152层。其中的算法层包括连续的不同大小Convolution(卷积)、Max Pooling(最大池化)、Average Pooling(平均池化)等计算,又有层间的Skip(跳跃)或Shortcut Connection(短连接)。即使以相对简单的经典AlexNet为例,原始模型中的8层仅最后3层为全连接层。因此,现有的阵列内存内模拟运算在进行包括不同连接密度层的整个神经网络的AI计算时存储阵列利用率较低,导致芯片成本较高。
另外,因为实用的神经网络基本都有很多层和非常复杂的连接结构,现有的存储内计算的方案的模拟信号在层间的传递、进行各种处理时非常不方便,各种噪音和误差也会影响到神经网络模型的可靠性和计算的准确性。
发明内容
本发明要解决的技术问题是为了克服现有技术中采用存储内计算的架构的AI芯片,在进行包括不同连接密度层的整个神经网络的AI计算时,存储阵列的利用率较低,导致芯片成本较高的缺陷,提供一种能够兼顾高运算效率低功耗,同时又能够提高存储阵列的利用率,进而降低芯片成本的基于NVM进行AI计算的芯片系统及其运行方法。
本发明是通过下述技术方案来解决上述技术问题:
本发明第一方面提供了一种基于NVM进行AI计算的芯片系统,包括通过总线通信连接的第一NVM阵列模块、第二NVM阵列模块、外部接口模块和MCU(Microcontroller Unit,微控制单元);
所述第一NVM阵列模块用于实现神经网络的第一类隐藏层的模拟运算算子;
所述第二NVM阵列模块用于数字化的存储所述神经网络的第二类隐藏层的权重参数、所述MCU运行的系统程序、所述神经网络的算法流程以及训练好的神经网络模型;
其中,所述第一类隐藏层的连接密度高于所述第二类隐藏层的连接密度;
所述外部接口模块用于接收外部输入的指令、输入数据以及向外输出AI计算的结果;所述外部输入的指令包括AI运算指令;
所述MCU用于基于所述AI运算指令执行所述系统程序,以根据所述算法流程控制所述第一NVM阵列模块、所述第二NVM阵列模块对所述输入数据进行AI计算,得到所述AI计算的结果。
本方案提供了一种基于NVM进行AI计算的芯片系统,采用模拟计算和数字计算的混合模式。使用基于第一NVM阵列模块实现的模拟计算来完成连接密度相对较高的隐藏层的计算,例如全连接层或近全连接层的计算;使用第二NVM阵列模块进行数字计算处理,以完成连接密度相对较低的隐藏层的计算,例如卷积层、池化层等部分的计算。本方案在芯片内独立完成AI运算指令,在片内运行中神经网络的权重参数均预存于片内NVM阵列中,数字运算与模拟运算均在片内直接进行。
本方案通过第一NVM阵列模块的模拟计算保证了高效率和低功耗运算,与此同时,又通过第二NVM阵列模块进行数字计算,避免了现有的基于存储阵列内模拟信号运算的存内计算在进行连接密度相对较低的隐藏层的计算时存在大量存储单元闲置的问题,进而提高了存储阵列整体的利用率,降低了芯片成本。
另外,本方案中第二类隐藏层的权重参数、MCU运行的系统程序以及神经网络模型均数字化的存储在芯片内部的第二NVM阵列模块中,MCU基于外部的AI运算指令控制第一NVM阵列模块及第二NVM阵列模块按照神经网络的算法流程实现AI计算。计算过程中根据需要从第二NVM阵列模块加载第二类隐藏层的权重参数、MCU运行的系统程序以及训练好的神经网络模型。与现有各类直接采用NVM进行模拟运算的存算方案相比,连接密度相对较高的隐藏层仍然采用模拟计算,连接密度相对较低的隐藏层的计算采用数字计算,而数字存储与运算方式运算结构相对模拟运算结构灵活,第二NVM阵列模块存储的信息相比于模拟信号的多能级存储可靠性好、精度高、读取准确度高。故此本方案在突破采用片外NVM存储速度瓶颈以及降低外部输入功耗的同时,又具备高度的可实施性、灵活性以及可靠性,且提升了不同连接密度的隐藏层的存储阵列的利用率。
可选的,所述芯片系统还包括NPU(嵌入式神经网络处理器);所述NPU通过所述总线与所述第一NVM阵列模块、所述第二NVM阵列模块、所述外部接口模块以及所述MCU通信连接;所述NPU用于所述第二类隐藏层的数字域加速计算;
所述根据所述算法流程控制所述第一NVM阵列模块、所述第二NVM阵列模块对所述输入数据进行AI计算包括:根据所述算法流程分配不同的运算步骤至所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU,并控制所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU之间的计算数据的传输。
本方案中,第一NVM阵列模块为模拟计算单元,第二NVM阵列模块和NPU为数字计算单元,NPU的使用使得数字计算的速度更快;MCU用于控制神经网络的计算流程,根据第二NVM阵列模块中存储的算法流程分配计算任务给数字计算单元与模拟计算单元。
可选的,所述第一NVM阵列模块包括第一NVM阵列和用于访问所述第一NVM阵列的第一外围电路;所述第二NVM阵列模块包括第二NVM阵列和用于访问所述第二NVM阵列的第二外围电路;
所述第一外围电路和所述第二外围电路均包括电压泵和电流泵,和/或,所述第一NVM阵列和所述第二NVM阵列共用电压泵和电流泵。
本方案中,所述第一NVM阵列包括多个子阵列;每个所述子阵列作为实现神经网络的一个第一类隐藏层的模拟运算算子。
本方案中,访问包括读写擦等针对NVM阵列的一些基本操作。第一NVM阵列模块和第二NVM阵列模块共用部分外围电路,以尽可能的减少芯片资源,从而减小芯片面积和降低芯片成本。
可选的,所述第一类隐藏层为模拟运算层,所述第二类隐藏层为数字运算层,所述MCU还用于控制相邻的所述模拟运算层与所述数字运算层之间的数据传输和状态通讯。
本方案中,MCU用于控制第一NVM阵列模块完成第一类隐藏层的模拟运算。主要功能包括控制计算指令,解码对应层的网络连接与权重参数阵列,控制执行模拟域神经网络层的计算与层间函数计算,控制模拟运算层之间的计算结果转化与传输,控制模拟运算层与数字运算层间数据传输与状态通讯等。其中状态通讯包括运算进程、运算结果状态、结果传输状态、运算出错信息等。因为第一类隐藏层采用模拟计算的方式实现,所以称为模拟运算层。相对应的,第二类隐藏层采用数字计算的方式实现,故称为数字运算层。
可选的,所述MCU控制所述第二NVM阵列模块和所述NPU包括:控制调用所述NPU执行数字域加速计算、控制所述NPU对所述第二NVM阵列模块中的所述第二类隐藏层中的所述权重参数的解码寻址。
本方案进一步限定了MCU对数字运算部分的控制方式,即MCU控制第二NVM阵列模块和NPU完成第二类隐藏层的数字运算。
可选的,所述芯片系统还包括SRAM(Static Random-Access Memory,静态随机存取存储器),所述SRAM通过所述总线与所述第一NVM阵列模块、所述第二NVM阵列模块、所述外部接口模块、所述NPU以及所述MCU通信连接;所述SRAM用于缓存所述MCU执行所述系统程序过程中的数据、所述NPU计算过程中的数据,以及所述模拟运算层与所述数字运算层之间交互的数据。
本方案还包括嵌入式SRAM模块,其作为芯片内部系统运行与计算所需缓存使用,用于存储输入、输出数据和计算产生的中间数据等。具体包括MCU系统缓存、NPU运算缓存以及模拟运算层与数字运算层之间的数据交互缓存,经外部接口进出的数据也缓存在SRAM模块中。所述MCU还用于管理所述NPU与所述SRAM之间的数据传输。
本方案中,MCU系统缓存包括存储MCU运行时的芯片系统运行程序、系统配置参数以及计算网络结构配置参数等。其中,系统配置参数包括电路参数配置和生产信息等;计算网络结构配置参数包括正在使用的神经网络模型以及对应的算法流程。
可选的,所述芯片系统还包括高速数据读取通道;所述NPU还用于通过所述高速数据读取通道从所述第二NVM阵列模块读取所述第二类隐藏层的权重参数。
本方案中,除了包括片内总线之外,还在NPU和第二NVM阵列模块之间设立高速数据读取通道,用于支持NPU进行数字域运算时对于神经网络的权重参数即权重数据的高速读取的带宽要求。
可选的,所述第二NVM阵列模块设有读通道,所述读通道为K路,K为正整数,在一个读周期内所述读通道共读取K比特数据,所述NPU用于通过所述高速数据读取通道经所述读通道从所述第二NVM阵列模块读取所述权重参数。
本方案设立读通道,读通道为K路,优选的,K取128~512,一个读周期(通常30-40纳秒)可以读取K比特的数据。NPU通过高速数据读取通道经读通道从第二NVM阵列模块读取神经网络的权重参数,此带宽远高于片外NVM可支持的读取速度,能够支持常用神经网络推理计算所需的参数读取速度需求。
可选的,所述高速数据读取通道的位宽为m比特,m为正整数;所述芯片系统还包括数据转换单元,所述数据转换单元包括缓存模块和顺序读取模块,所述缓存模块用于按周期依次缓存经所述读通道输出的权重参数,所述缓存模块的容量为K*k比特,k表示周期数;所述顺序读取模块用于将所述缓存模块中的缓存数据转换成m比特位宽后经所述高速数据读取通道输出至所述NPU,其中K*k为m的整数倍。
本方案还包括一数据转换单元,针对读通道的数量同高速数据读取通道的位宽不一致和/或频率异步的情况,数据转换单元用于把数据转换成同高速数据读取通道相同比特宽度的数据的组合,通常为小宽度(例如32比特)的字的组合。NPU以自身的时钟频率(可达1GHz以上)经高速数据读取通道从数据转换单元读取数据。
本方案提供的数据转换单元包含一个含K*k比特的缓存模块和一个一次输出m比特的顺序读取模块,K*k是m的整数倍;读通道连接第二NVM阵列,每个周期内可以输出K比特,缓存模块内可以存入k个周期数据;高速数据读取通道宽度是m比特。其中,高速数据读取通道可以包含读写指令(CMD)和回复(ACK)信号,与第二NVM阵列读取控制电路连接。读操作完成后,ACK信号通知高速数据读取通道,还可以同时通知芯片内总线,高速数据读取通道通过顺序读取模块分多次异步把缓存模块中的数据输入NPU。
可选的,所述第二NVM阵列模块还用于存储所述芯片系统运行所需要的电路参数配置和/或生产信息。
本方案中,第二NVM阵列模块中包含一块区域用于存储整体芯片运行的系统信息,包括芯片系统运行程序、芯片运行内部电路参数配置、生产信息等,所述芯片系统运行程序与参数配置信息用于实现芯片上电后的运行操作,所述生产信息等可供外部系统读取。
可选的,所述第二NVM阵列模块中存储多种神经网络模型,所述AI运算指令包括算法选择指令,所述算法选择指令用于选择多个所述神经网络模型中的一个作为进行AI计算的算法。
本方案中,因为神经网络模型是数字化的存储在第二NVM阵列模块中,且根据应用场景的数量的情况可以为多个,对于多种应用场景对应多种神经网络模型的情况,MCU根据外部输入的算法选择指令能够灵活选择其中的任何一种预存的神经网络模型进行AI计算,克服了现有的存算一体方案中采用模拟计算阵列结构僵化,不利于支持灵活的神经网络结构的问题。
可选的,所述第一NVM阵列模块和所述第二NVM阵列模块采用闪存工艺、MRAM(Magnetoresistive Random Access Memory,非挥发性的磁性随机存储器)工艺、RRAM(阻变式存储器)工艺、MTP(Multiple Time Programming,可多次编程)工艺、OTP(One TimeProgramming,一次性可编程)工艺中的一种,和/或,所述外部接口模块的接口标准为SPI(Serial Peripheral Interface,串行外设接口)、QPI(Quad SPI)以及并行接口中的至少一种。
可选的,所述MCU还用于通过所述外部接口模块接收外部用于操作所述第一NVM阵列模块和/或所述第二NVM阵列模块的数据访问指令,所述MCU还用于基于所述数据访问指令完成对所述第一NVM阵列模块和/或所述第二NVM阵列模块的基本操作的逻辑控制。
本方案基于MCU实现了对两种NVM阵列的控制操作,具体可以包括读写擦等闪存的基本操作,外部操作指令与外部接口可采用标准闪存芯片格式,易于芯片灵活简单应用。本方案中内嵌的MCU作为NVM的逻辑控制单元,取代了标准闪存中的逻辑状态机等逻辑控制单元,简化了芯片结构,节省了芯片面积。
本方案中,所述第二NVM阵列模块除了存储所述神经网络模型、所述权重参数以及所述芯片内部系统运行的程序之外,还可用于存储外部输入的不限于与AI计算相关的数据,即还可以用于存储外部输入的与AI计算相关的其他数据,以及外部输入的与AI计算无关的数据,无关的数据具体包括外部设备或者系统的系统参数、配置和/或代码等信息;所述基本操作除了包括对所述神经网络模型、所述权重参数以及所述内部系统运行的程序的读写擦等操作之外,还包括对存储的外部输入的数据直接在所述第二NVM阵列模块中的存储读写及擦除等操作,对于第一NVM阵列模块的基本操作也类似,在此不再赘述。
可选的,所述第一NVM阵列模块和所述第二NVM阵列模块采用SONOS(一种闪存工艺)闪存工艺、Floating Gate(一种闪存工艺)闪存工艺、Split Gate(一种闪存工艺)闪存工艺中的一种,所述外部接口模块的接口标准为SPI和/或QPI;
所述数据访问指令为标准的闪存操作指令;所述AI运算指令与所述数据访问指令采用相同的指令格式和规则;
所述AI运算指令包括操作码,所述AI运算指令还包括地址部分和/或数据部分,所述AI运算指令的操作码与所述标准的闪存操作指令的操作码不同。
本方案用于NVM直接操作的指令和用于AI计算处理的指令采用相同的指令格式和规则。以SPI和QPI接口为例,在标准的SPI、QPI闪存操作指令op_code的基础上,挑选未被闪存操作使用的op_code用于表达AI指令,在地址部分传递更多的信息,在数据交换周期里实施AI数据传递。只需要扩展指令解码器实现接口的复用,以及增加若干状态寄存器和配置寄存器即可实现AI计算。
本方案提供的芯片系统,在标准闪存芯片系统的基础上进行改进,具体为在闪存芯片内部包括两类NVM阵列模块,分别用于模拟运算和数字运算,芯片内还嵌入MCU以及NPU,并通过片内总线通信连接,片内总线可以为AHB(Advanced High Performance Bus,高级高性能总线)总线,也可以为其它符合要求的通信总线,在此不做限定。本方案中NPU和NVM相结合,即计算与存储都在片内,其中神经网络的第二类隐藏层的权重参数数字化的存储在第二NVM阵列模块中,计算也是数字域计算,具体通过MCU基于外部的AI运算指令控制NPU及两类NVM阵列模块实现,由此突破了采用片外NVM存储速度瓶颈以及降低外部输入功耗的同时,又具备高度的可实施性、灵活性以及可靠性。
可选的,所述芯片系统还包括DMA(Direct Memory Access,直接存储器访问)通道,所述DMA通道用于外部设备直接读写所述SRAM。
本方案中,外部接口模块实现了数据和指令的复用,通过DMA通道实现了外部设备对芯片内SRAM的直接读写操作,提高了数据传输效率。外部设备也可以通过DMA通道将SRAM作为系统内存资源进行调用,增加了芯片应用的灵活性。
本发明第二方面提供了一种基于NVM进行AI计算的芯片系统的运行方法,所述芯片系统包括通过总线通信连接的第一NVM阵列模块、第二NVM阵列模块、外部接口模块和MCU;
所述第一NVM阵列模块用于实现神经网络的第一类隐藏层的模拟运算算子;所述第二NVM阵列模块用于数字化的存储所述神经网络的第二类隐藏层的权重参数、所述MCU运行的系统程序、所述神经网络的算法流程以及训练好的神经网络模型;其中,所述第一类隐藏层的连接密度高于所述第二类隐藏层的连接密度;所述外部接口模块用于接收外部输入的指令、输入数据以及向外输出AI计算的结果;所述外部输入的指令包括AI运算指令;
所述运行方法包括以下步骤:
上电启动后所述MCU从所述第二NVM阵列模块加载所述系统程序、所述算法流程以及所述训练好的神经网络模型;
响应外部接收的所述AI运算指令,根据所述算法流程控制所述第一NVM阵列模块、所述第二NVM阵列模块对所述输入数据进行AI计算,得到所述AI计算的结果。
可选的,所述芯片系统还包括NPU;所述NPU通过所述总线与所述第一NVM阵列模块、所述第二NVM阵列模块、所述外部接口模块以及所述MCU通信连接;所述NPU用于所述第二类隐藏层的数字域加速计算;
所述根据所述算法流程控制所述第一NVM阵列模块、所述第二NVM阵列模块对所述输入数据进行AI计算包括:
根据所述算法流程分配不同的运算步骤至所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU,并控制所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU之间的计算数据的传输。
可选的,所述芯片系统还包括高速数据读取通道和SRAM,所述SRAM通过所述总线与所述第一NVM阵列模块、所述第二NVM阵列模块、所述外部接口模块、所述NPU以及所述MCU通信连接;
所述第一类隐藏层为模拟运算层,所述第二类隐藏层为数字运算层;
所述上电启动后所述MCU从所述第二NVM阵列模块加载所述系统程序、所述算法流程以及所述训练好的神经网络模型的步骤包括:上电启动后所述MCU从所述第二NVM阵列模块加载所述系统程序、所述算法流程以及所述训练好的神经网络模型至所述SRAM;
所述控制所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU之间的计算数据的传输的步骤包括:
控制所述NPU经所述总线从所述SRAM获取计算数据,以及通过所述高速数据读取通道从所述第二NVM阵列模块读取所述第二类隐藏层的权重参数;
控制所述SRAM缓存所述MCU执行所述系统程序过程中的数据、所述NPU计算过程中的数据,以及所述模拟运算层与所述数字运算层之间交互的数据。
可选的,所述第二NVM阵列模块中存储多种神经网络模型,所述外部输入的指令还包括算法选择指令,所述运行方法还包括以下步骤:
响应所述算法选择指令,从多种所述神经网络模型中选择目标神经网络模型进行AI计算。
可选的,所述芯片系统包括NVM直接操作模式和神经网络运算模式;所述外部输入的指令还包括芯片模式选择指令,所述运行方法还包括以下步骤:
响应所述芯片模式选择指令,将所述芯片系统设置在目标工作模式。
本发明的积极进步效果在于:
本发明采用模拟计算和数字计算的混合模式,通过第一NVM阵列模块的模拟计算保证了高效率和低功耗运算,与此同时,又通过第二NVM阵列模块进行数字计算,避免了现有的基于存储阵列内模拟信号运算的存内计算在进行连接密度相对较低的隐藏层的计算时存在大量存储单元闲置的问题,进而提高了存储阵列整体的利用率,降低了芯片成本。另外,本发明中第二类隐藏层的权重参数、MCU运行的系统程序以及神经网络模型均数字化的存储在芯片内部的第二NVM阵列模块中,与现有各类直接采用NVM进行模拟运算的存算方案相比,连接密度相对较高的隐藏层仍然采用模拟计算,连接密度相对较低的隐藏层的计算采用数字计算,而数字存储与运算方式运算结构相对模拟运算结构灵活,第二NVM阵列模块存储的信息相比于模拟信号的多能级存储可靠性好、精度高、读取准确度高。故此本发明在突破采用片外NVM存储速度瓶颈以及降低外部输入功耗的同时,又具备高度的可实施性、灵活性以及可靠性,且提升了不同连接密度的隐藏层的存储阵列的利用率。
附图说明
图1为现有技术的AI算法中的神经元图。
图2为现有技术的采用在标准NVM子阵列内添加电路进行神经网络一层计算的原理图。
图3为本发明实施例1的一种基于NVM进行AI计算的芯片系统的示意图。
图4为本发明实施例1的芯片系统的第一NVM阵列模块的结构示意图。
图5为发明实施例1的芯片系统的数据转换单元的示意图。
图6为本发明实施例2的基于NVM进行AI计算的芯片系统的运行方法的流程图。
图7为本发明实施例2的运行方法中MCU执行计算的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
实施例1
如图3所示,本实施例提供了一种基于NVM进行AI计算的芯片系统,包括通过总线4通信连接的第一NVM阵列模块8、第二NVM阵列模块7、外部接口模块2、NPU6、SRAM5、高速数据读取通道和MCU1。
图4为本实施例中第一NVM阵列模块8的结构示意图,其用于实现神经网络的第一类隐藏层的模拟运算算子;具体地,第一NVM阵列模块8包括多个NVM存储子阵列,每个子阵列作为实现神经网络的一个第一类隐藏层的模拟运算算子。模拟运算算子可以采用现有的图2所示的原理图实现,在一个子阵列算子内,第N层的神经元的输出信号从字线上输入,每一行对应一个神经元。第N+1层的神经元的输出信号从列的方向输出,每一列对应一个神经元。N+1层第y个神经元从N层第x个神经元输入的权重存储在阵列中的(x行,y列)的位置上。进行计算时打开所有第N层活跃的神经元对应的行,第y列列向上的电流和则为N+1层第y个神经元输出信号。如每一列都有独立感应放大器,对于全连接层,一个m * n的阵列能在一个周期内以模拟的方式完成m * n次乘法和m * n次加法。
本实施例中,第二NVM阵列模块7与第一NVM阵列模块8相互独立,存储的数据格式不同。第二NVM阵列模块7用于数字化的存储神经网络的第二类隐藏层的权重参数(需要通过模拟运算完成的第一类隐藏层的权重参数存入用于模拟运算的第一NVM阵列模块8内)、MCU1运行的系统程序、神经网络的算法流程以及训练好的神经网络模型;NPU6用于第二类隐藏层的数字域加速计算。其中第一类隐藏层为模拟运算层,第二类隐藏层为数字运算层,第一类隐藏层的连接密度高于第二类隐藏层的连接密度。
本实施例中,外部接口模块2用于接收外部输入的指令、输入数据以及向外输出AI计算的结果;外部输入的指令包括AI运算指令。在其他可选实施例中,外部输入的指令还可以包括用于操作第一NVM阵列模块8和/或第二NVM阵列模块7的数据访问指令。MCU1通过外部接口模块2接收这些指令后基于数据访问指令完成对第一NVM阵列模块8和/或第二NVM阵列模块7的基本操作的逻辑控制;具体实施时,AI运算指令与数据访问指令可以采用相同的指令格式和规则;即用于NVM直接操作的指令和用于AI计算处理的指令采用相同的指令格式和规则。AI运算指令包括操作码,AI运算指令还包括地址部分和/或数据部分,AI运算指令的操作码与标准的闪存操作指令的操作码不同。以SPI和QPI接口为例,在标准的SPI、QPI闪存操作指令op_code的基础上,挑选未被闪存操作使用的op_code用于表达AI指令,在地址部分传递更多的信息,在数据交换周期里实施AI数据传递。只需要扩展指令解码器实现接口的复用,以及增加若干状态寄存器和配置寄存器即可实现AI计算。
在具体应用过程中,芯片可以设置两种重要的工作模式:NVM直接操作(DirectAccess)模式与神经网络运算模式,前者对应数据访问指令,后者对应AI运算指令。NVM直接操作模式时的主要功能与操作方法有:第一,写入或更新神经网络的权重参数,其中与模拟运算相关的隐藏层的权重参数写入第一NVM阵列模块8,其余的隐藏层的权重参数写入第二NVM阵列模块7。第二,写入芯片系统运行程序与参数。这些程序与参数存入第二NVM阵列模块7的特殊区域中,在芯片上电时加载入MCU1和SRAM5。第三,第一NVM阵列模块8和第二NVM阵列模块7也可以为外界直接调用,用于存储其他客户信息数据。此类数据可选择存入指定区域,也可以选择覆盖神经网络对应的存储区域。如神经网络对应的区域被覆盖,则神经网络计算功能不可用,芯片以标准NVM方式工作。两种模式的指令格式相同,复用同一芯片接口。本实施例实现的芯片采用标准的接口形式,在片内能够独立完成AI运算指令。在片内运行中,神经网络的权重参数预存于两个NVM阵列模块中,数字运算与模拟运算均在片内直接进行。这样的系统架构节省运算功耗、增强运算效率并减少了内部SRAM的容量需求从而降低了芯片成本。
本实施例中,MCU1还用于基于AI运算指令执行系统程序,以根据算法流程控制第一NVM阵列模块8、第二NVM阵列模块7对输入数据进行AI计算,最终得到AI计算的结果。第一NVM阵列模块8为模拟计算单元,第二NVM阵列模块7和NPU6为数字计算单元,NPU6的使用使得数字计算的速度更快;MCU1用于控制神经网络的计算流程,根据第二NVM阵列模块7中存储的算法流程分配计算任务给数字计算单元与模拟计算单元。具体实施时,MCU1根据算法流程分配不同的运算步骤至第一NVM阵列模块8、第二NVM阵列模块7和NPU6,并控制第一NVM阵列模块8、第二NVM阵列模块7和NPU6之间的计算数据的传输。具体包括控制相邻的模拟运算层与数字运算层之间的数据传输和状态通讯,控制调用NPU6执行数字域加速计算,控制NPU6对第二NVM阵列模块7中的第二类隐藏层中的权重参数的解码寻址等。MCU控制第一NVM阵列模块完成第一类隐藏层的模拟运算时,主要功能包括控制计算指令,解码对应层的网络连接与权重参数阵列,控制执行模拟域神经网络层的计算与层间函数计算,控制模拟运算层之间的计算结果转化与传输,控制模拟运算层与数字运算层间数据传输与状态通讯等。其中状态通讯包括运算进程、运算结果状态、结果传输状态、运算出错信息等。因为第一类隐藏层采用模拟计算的方式实现,所以称为模拟运算层。相对应的,第二类隐藏层采用数字计算的方式实现,故称为数字运算层。
SRAM5用于缓存MCU1执行系统程序过程中的数据、NPU6计算过程中的数据,以及模拟运算层与数字运算层之间交互的数据。MCU1用于管理NPU6与SRAM5之间的数据传输。本实施例中的SRAM5为嵌入式SRAM模块,其作为芯片内部系统运行与计算所需缓存使用,用于存储输入、输出数据和计算产生的中间数据等。具体包括MCU1系统缓存、NPU6运算缓存以及模拟运算层与数字运算层之间的数据交互缓存,经外部接口进出的数据也缓存在SRAM模块中。MCU系统缓存包括存储MCU1运行时的芯片系统运行程序、系统配置参数以及计算网络结构配置参数等。其中,系统配置参数包括电路参数配置和生产信息等;计算网络结构配置参数包括正在使用的神经网络模型以及对应的算法流程。
本实施例提供了一种基于NVM进行AI计算的芯片系统,采用模拟计算和数字计算的混合模式。使用基于第一NVM阵列模块8实现的模拟计算来完成连接密度相对较高的隐藏层的计算,例如全连接层或近全连接层的计算;使用第二NVM阵列模块7进行数字计算处理,以完成连接密度相对较低的隐藏层的计算,例如卷积层、池化层等部分的计算。本实施例在芯片内独立完成AI运算指令,在片内运行中神经网络的权重参数均预存于片内NVM阵列中,数字运算与模拟运算均在片内直接进行。
本实施例通过第一NVM阵列模块8的模拟计算保证了高效率和低功耗运算,与此同时,又通过第二NVM阵列模块7进行数字计算,避免了现有的基于存储阵列内模拟信号运算的存内计算在进行连接密度相对较低的隐藏层的计算时存在大量存储单元闲置的问题,进而提高了存储阵列整体的利用率,降低了芯片成本。
另外,本实施例中第二类隐藏层的权重参数、MCU1运行的系统程序以及神经网络模型均数字化的存储在芯片内部的第二NVM阵列模块7中,MCU1基于外部的AI运算指令控制第一NVM阵列模块8及第二NVM阵列模块7按照神经网络的算法流程实现AI计算。计算过程中根据需要从第二NVM阵列模块7加载第二类隐藏层的权重参数、MCU1运行的系统程序以及训练好的神经网络模型。与现有各类直接采用NVM进行模拟运算的存算方案相比,连接密度相对较高的隐藏层仍然采用模拟计算,连接密度相对较低的隐藏层的计算采用数字计算,而数字存储与运算方式运算结构相对模拟运算结构灵活,第二NVM阵列模块7存储的信息相比于模拟信号的多能级存储可靠性好、精度高、读取准确度高。故此本方案在突破采用片外NVM存储速度瓶颈以及降低外部输入功耗的同时,又具备高度的可实施性、灵活性以及可靠性,且提升了不同连接密度的隐藏层的存储阵列的利用率。
本实施例中,第一NVM阵列模块8包括第一NVM阵列和用于访问第一NVM阵列的第一外围电路;第二NVM阵列模块7包括第二NVM阵列和用于访问第二NVM阵列的第二外围电路;第一外围电路和第二外围电路均包括电压泵和电流泵,其中,第一NVM阵列和第二NVM阵列可以共用电压泵和电流泵,也可以不共用。所谓访问具体包括读写擦等针对NVM阵列的一些基本操作。为了尽可能的减少芯片资源,从而减小芯片面积和降低芯片成本,本实施例中优先采用第一NVM阵列模块8和第二NVM阵列模块7共用电压泵和电流泵的方式实现。具体实施时,如图4所示,第一NVM阵列模块8除了包括第一NVM阵列外,其对应的第一外围电路还包括:编码解码器、多路选择器等模块;用于模拟计算的电流积分器、电流加法器、电流减法器、倍增放大器、电流比较放大器等模块;激活函数、Average Pooling等在模拟域实现的函数模块;以及用于层间计算结果传递与计算结果转换传输的模拟信号寄存器、多级感应放大器、数模/模数转换器等模块。模拟部分的外围电路可以参考现有的实现方式实现,在此不再赘述。
本实施例基于MCU实现了对两种NVM阵列模块的控制操作,具体可以包括读写擦等闪存的基本操作,外部操作指令与外部接口可采用标准闪存芯片格式,易于芯片灵活简单应用。本实施例内嵌的MCU作为NVM的逻辑控制单元,取代了标准闪存中的逻辑状态机等逻辑控制单元,简化了芯片结构,节省了芯片面积。
本实施例中,第二NVM阵列模块7除了存储所述神经网络模型、权重参数以及芯片内部系统运行的程序之外,还可用于存储外部输入的不限于与AI计算相关的数据,即还可以用于存储外部输入的与AI计算相关的其他数据,以及外部输入的与AI计算无关的数据,无关的数据具体包括外部设备或者系统的系统参数、配置和/或代码等信息;基本操作除了包括对神经网络模型、权重参数以及内部系统运行的程序的读写擦等操作之外,还包括对存储的外部输入的数据直接在第二NVM阵列模块7中的存储读写及擦除等操作,对于第一NVM阵列模块8的基本操作也类似,在此不再赘述。
在一些实施例中,芯片系统还包括高速数据读取通道;NPU6还用于通过高速数据读取通道从第二NVM阵列模块7读取第二类隐藏层的权重参数。本方案中,除了包括片内总线之外,还在NPU6和第二NVM阵列模块7之间设立高速数据读取通道,用于支持NPU6进行数字域运算时对于神经网络的权重参数即权重数据的高速读取的带宽要求。
在一些实施例中,第二NVM阵列模块7设有读通道,读通道为K路,K为正整数,在一个读周期内读通道共读取K比特数据,NPU6用于通过高速数据读取通道经读通道从第二NVM阵列模块7读取权重参数。高速数据读取通道的位宽为m比特,m为正整数。芯片系统还包括数据转换单元,如图5所示,数据转换单元包括缓存模块和顺序读取模块,缓存模块用于按周期依次缓存经读通道输出的权重参数,缓存模块的容量为K*k比特,k表示周期数;顺序读取模块用于将缓存模块中的缓存数据转换成m比特位宽后经高速数据读取通道输出至NPU6,其中K*k为m的整数倍。本实施例设立K路的读通道,优选的,K取128~512,一个读周期(通常30-40纳秒)可以读取K比特的数据。NPU6以m比特位宽通过高速数据读取通道经读通道从第二NVM阵列模块7读取神经网络的权重参数,此带宽远高于片外NVM可支持的读取速度,能够支持常用神经网络推理计算所需的参数读取速度需求。
本实施例还包括一数据转换单元,针对读通道的数量同高速数据读取通道的位宽不一致和/或频率异步的情况,数据转换单元用于把数据转换成同高速数据读取通道相同比特宽度的数据的组合,通常为小宽度(例如32比特)的字的组合。NPU6以自身的时钟频率(可达1GHz以上)经高速数据读取通道从数据转换单元读取数据。
本实施例提供的数据转换单元包含一个含K*k比特的缓存模块和一个一次输出m比特的顺序读取模块,K*k是m的整数倍;读通道连接第二NVM阵列模块7,每个周期内可以输出K比特,缓存模块内可以存入k个周期数据;高速数据读取通道宽度是m比特。其中,高速数据读取通道可以包含读写指令(CMD)和回复(ACK)信号,与第二NVM阵列读取控制电路连接。读操作完成后,ACK信号通知高速数据读取通道,还可以同时通知芯片内总线,高速数据读取通道通过顺序读取模块分多次异步把缓存模块中的数据输入NPU6。
在一些实施例中,芯片系统还包括DMA通道3,DMA通道3用于外部设备直接读写SRAM5。本实施例中,外部接口模块2实现了数据和指令的复用,通过DMA通道3实现了外部设备对芯片内SRAM5的直接读写操作,提高了数据传输效率。外部设备也可以通过DMA通道3将SRAM5作为系统内存资源进行调用,增加了芯片应用的灵活性。
在一些实施例中,第二NVM阵列模块7还用于存储芯片系统运行所需要的电路参数配置和/或生产信息。本实施例中,第二NVM阵列模块7除了存储神经网络的相关数据外,还包含一块区域用于存储整体芯片运行的系统信息,包括芯片系统运行程序、芯片运行内部电路参数配置、生产信息等,用于实现所述芯片系统运行程序与参数配置信息用于实现芯片上电后的运行操作,所述生产信息等可供外部系统读取。
在其他可选实施例中,第二NVM阵列模块7中可以同时存储多种训练好的神经网络模型,此时AI运算指令还包括算法选择指令,算法选择指令用于选择多个神经网络模型中的一个作为进行AI计算的算法。
本实施例中第一NVM阵列模块8和第二NVM阵列模块7采用SONOS闪存工艺实现,外部接口模块2的接口标准为SPI和QPI。在其他可选实施例中,第一NVM阵列模块8和第二NVM阵列模块7可以采用其他工艺,具体可以采用闪存工艺、MRAM工艺、RRAM工艺、MTP工艺、OTP工艺中的任意一种,其中闪存工艺可以采用SONOS闪存工艺、Floating Gate闪存工艺、Split Gate闪存工艺中的一种;外部接口模块2的接口标准也可以为SPI、QPI以及并行接口中的至少一种。
本实施例提供的芯片系统,在标准闪存芯片系统的基础上进行改进,具体为在闪存芯片内部包括两类NVM阵列,分别用于模拟运算和数字运算,芯片内还嵌入MCU1以及NPU6,并通过片内总线通信连接,片内总线可以为AHB总线,也可以为其它符合要求的通信总线,在此不做限定。本实施例中NPU6和NVM相结合,即计算与存储都在片内,其中神经网络的第二类隐藏层的权重参数数字化的存储在第二NVM阵列模块7中,计算也是数字域计算,具体通过MCU1基于外部的AI运算指令控制NPU6及两类NVM阵列实现,由此突破了采用片外NVM存储速度瓶颈以及降低外部输入功耗的同时,又具备高度的可实施性、灵活性以及可靠性。
对于很多的物联网应用,神经网络模型已经训练好,常用工作模式为对输入数据进行推理运算,本实施例提供的芯片系统具有格外的优势。芯片运行时神经网络模型的权重参数已经预存在内部的第一NVM阵列模块8与第二NVM阵列模块7中,不需要从外部读取模型数据,能够节省运行功耗大约一半。同时提供比外部存储高得多的带宽,支持更快的计算。如果使用外部存储,芯片内部必须使用SRAM存放计算数据和模型数据,后者需要的存储空间比前者大得多。本实施例可以把片内的SRAM需求降低到原来的1/10。SRAM是成本很高的存储器,容量大了以后漏电增多。本实施例提供的芯片系统大幅度降低芯片的成本和待机电流;同时还解决了神经网络全连接层计算的带宽难题,提升了不同密度计算层的效率。
本实施例采用模拟计算和数字计算的混合模式,使用模拟计算来完成连接密度相对较高的隐藏层的网络计算,使用数字计算处理连接密度相对较低的隐藏层计算。为简化芯片架构提高运算效率,模拟运算和数字运算都借助内嵌的NVM存储模块完成。通过第一NVM阵列模块8的模拟计算保证了高效率和低功耗运算,与此同时,又通过第二NVM阵列模块7进行数字计算,避免了现有的基于存储阵列内模拟信号运算的存内计算在进行连接密度相对较低的隐藏层的计算时存在大量存储单元闲置的问题,进而提高了存储阵列整体的利用率,降低了芯片成本。另外,本实施例中第二类隐藏层的权重参数、MCU1运行的系统程序以及神经网络模型均数字化的存储在芯片内部的第二NVM阵列模块7中,与现有各类直接采用NVM进行模拟运算的存算方案相比,连接密度相对较高的隐藏层仍然采用模拟计算,连接密度相对较低的隐藏层的计算采用数字计算,而数字存储与运算方式运算结构相对模拟运算结构灵活,第二NVM阵列模块7存储的信息相比于模拟信号的多能级存储可靠性好、精度高、读取准确度高。故此本发明在突破采用片外NVM存储速度瓶颈以及降低外部输入功耗的同时,又具备高度的可实施性、灵活性以及可靠性,且提升了不同连接密度的隐藏层的存储阵列的利用率。
实施例2
本实施例提供了一种的基于NVM进行AI计算的芯片系统的运行方法,该运行方法在实施例1提供的芯片系统上运行。
本实施例提供的基于NVM进行AI计算的芯片系统的运行方法包括以下步骤:
上电启动后MCU从第二NVM阵列模块加载系统程序、算法流程以及训练好的神经网络模型至SRAM;
响应外部接收的AI运算指令,根据算法流程控制第一NVM阵列模块、第二NVM阵列模块对输入数据进行AI计算,具体为根据算法流程分配不同的运算步骤至第一NVM阵列模块、第二NVM阵列模块和/或NPU,并控制第一NVM阵列模块、第二NVM阵列模块和/或NPU之间的计算数据的传输,得到AI计算的结果。
其中控制第一NVM阵列模块、第二NVM阵列模块和/或NPU之间的计算数据的传输的步骤包括:
控制NPU经总线从SRAM获取计算数据,以及通过高速数据读取通道从第二NVM阵列模块读取第二类隐藏层的权重参数;
控制SRAM缓存MCU执行系统程序过程中的数据、NPU计算过程中的数据,以及模拟运算层与数字运算层之间交互的数据。其中MCU执行系统程序过程中的数据除了包括计算过程中的数据外还包括外部输入数据和向外输出的输出数据。
在一些实施例中,第二NVM阵列模块中存储多种神经网络模型,外部输入的指令还包括算法选择指令,运行方法还包括以下步骤:
响应算法选择指令,从多种神经网络模型中选择目标神经网络模型进行AI计算。
在一些实施例中,芯片系统包括NVM直接操作模式和神经网络运算模式;外部输入的指令还包括芯片模式选择指令,运行方法还包括以下步骤:
响应芯片模式选择指令,将芯片系统设置在目标工作模式,该目标工作模式为NVM直接操作模式和神经网络运算模式中的一种。
本实施例中,因为神经网络模型是数字化的存储在第二NVM阵列模块中,且根据应用场景的数量的情况可以为多个,对于多种应用场景对应多种神经网络模型的情况,MCU根据外部输入的算法选择指令能够灵活选择其中的任何一种预存的神经网络模型进行AI计算,克服了现有的存算一体方案中采用模拟计算阵列结构僵化,不利于支持灵活的神经网络结构的问题。具体应用时,如图6所示,AI计算的运行方法可以参考如下:
步骤S10、芯片上电,MCU启动,系统程序与电路参数配置等从第二NVM阵列模块加载,等待外部指令。
步骤S20、外部输入芯片模式选择指令,选择神经网络运算模式并通过算法选择指令选择多个神经网络模型中的一个作为进行AI计算的算法。此时第二NVM阵列模块直接操作固定在神经网络运算模式,神经网络的算法流程以及训练好的神经网络模型从第二NVM阵列模块加载。
步骤S30、外部输入AI运算指令与待计算的输入数据。
步骤S40、MCU执行计算流程,按照算法流程分配计算任务给数字计算单元与模拟计算单元,如图7所示,具体流程示例性说明如下:
步骤S401、SRAM写通路打开,输入数据写入SRAM。
步骤S402、NPU执行数字计算,计算数据来自SRAM,计算采用的神经网络模型的权重参数由第二NVM阵列模块通过高速数据读取通道读入。因为第二类隐藏层的权重参数均在执行数字计算时载入NPU,而不是在上电时载入SRAM,由此能够节省SRAM的空间,进而减小芯片面积,降低芯片成本。
步骤S403、SRAM打开读写通路,作为数字计算缓存,暂存层间计算结果;每层计算结果覆盖前一层,上一层计算输出作为下一层计算输入。
步骤S404、需要模拟计算单元执行的隐藏层的数据由SRAM输入模拟计算单元,进行数模转换后输入存储阵列与阵列内权重参数进行模拟矩阵运算、层间运算及逐层运算。
步骤S405、模拟模块计算单元结果经模数转换或多级感应为数字数据写入SRAM。
步骤S406、数字计算模块继续执行下一层计算任务。
步骤S407、根据计算任务需要,重复步骤S404至步骤S406。
步骤S408、计算结果存入SRAM,通过外部接口接口模块输出。
本实施例采用模拟计算和数字计算的混合模式,使用模拟计算来完成连接密度相对较高的隐藏层的网络计算,使用数字计算处理连接密度相对较低的隐藏层计算。通过第一NVM阵列模块的模拟计算保证了高效率和低功耗运算,与此同时,又通过第二NVM阵列模块进行数字计算,避免了现有的基于存储阵列内模拟信号运算的存内计算在进行连接密度相对较低的隐藏层的计算时存在大量存储单元闲置的问题,进而提高了存储阵列整体的利用率,降低了芯片成本。另外,本实施例中第二类隐藏层的权重参数、MCU运行的系统程序以及神经网络模型均数字化的存储在芯片内部的第二NVM阵列模块中,与现有各类直接采用NVM进行模拟运算的存算方案相比,连接密度相对较高的隐藏层仍然采用模拟计算,连接密度相对较低的隐藏层的计算采用数字计算,而数字存储与运算方式运算结构相对模拟运算结构灵活,第二NVM阵列模块存储的信息相比于模拟信号的多能级存储可靠性好、精度高、读取准确度高。故此本发明在突破采用片外NVM存储速度瓶颈以及降低外部输入功耗的同时,又具备高度的可实施性、灵活性以及可靠性,且提升了不同连接密度的隐藏层的存储阵列的利用率。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (19)
1.一种基于NVM进行AI计算的芯片系统,其特征在于,包括通过总线通信连接的第一NVM阵列模块、第二NVM阵列模块、外部接口模块和MCU;
所述第一NVM阵列模块用于实现神经网络的第一类隐藏层的模拟运算算子;
所述第二NVM阵列模块用于数字化的存储所述神经网络的第二类隐藏层的权重参数、所述MCU运行的系统程序、所述神经网络的算法流程以及训练好的神经网络模型;
其中,所述第一类隐藏层的连接密度高于所述第二类隐藏层的连接密度;
所述外部接口模块用于接收外部输入的指令、输入数据以及向外输出AI计算的结果;所述外部输入的指令包括AI运算指令;
所述MCU用于基于所述AI运算指令执行所述系统程序,以根据所述算法流程控制所述第一NVM阵列模块、所述第二NVM阵列模块对所述输入数据进行AI计算,得到所述AI计算的结果;
所述第一类隐藏层为模拟运算层,所述第二类隐藏层为数字运算层,所述MCU还用于控制相邻的所述模拟运算层与所述数字运算层之间的数据传输和状态通讯。
2.如权利要求1所述的基于NVM进行AI计算的芯片系统,其特征在于,所述芯片系统还包括NPU;所述NPU通过所述总线与所述第一NVM阵列模块、所述第二NVM阵列模块、所述外部接口模块以及所述MCU通信连接;所述NPU用于所述第二类隐藏层的数字域加速计算;
所述根据所述算法流程控制所述第一NVM阵列模块、所述第二NVM阵列模块对所述输入数据进行AI计算包括:根据所述算法流程分配不同的运算步骤至所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU,并控制所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU之间的计算数据的传输。
3.如权利要求1所述的基于NVM进行AI计算的芯片系统,其特征在于,所述第一NVM阵列模块包括第一NVM阵列和用于访问所述第一NVM阵列的第一外围电路;所述第二NVM阵列模块包括第二NVM阵列和用于访问所述第二NVM阵列的第二外围电路;
所述第一外围电路和所述第二外围电路均包括电压泵和电流泵,和/或,所述第一NVM阵列和所述第二NVM阵列共用电压泵和电流泵。
4.如权利要求2所述的基于NVM进行AI计算的芯片系统,其特征在于,所述MCU控制所述第二NVM阵列模块和所述NPU包括:控制调用所述NPU执行数字域加速计算、控制所述NPU对所述第二NVM阵列模块中的所述第二类隐藏层中的所述权重参数的解码寻址。
5.如权利要求2所述的基于NVM进行AI计算的芯片系统,其特征在于,所述芯片系统还包括SRAM,所述SRAM通过所述总线与所述第一NVM阵列模块、所述第二NVM阵列模块、所述外部接口模块、所述NPU以及所述MCU通信连接;所述SRAM用于缓存所述MCU执行所述系统程序过程中的数据、所述NPU计算过程中的数据,以及所述模拟运算层与所述数字运算层之间交互的数据。
6.如权利要求2所述的基于NVM进行AI计算的芯片系统,其特征在于,所述芯片系统还包括高速数据读取通道;所述NPU还用于通过所述高速数据读取通道从所述第二NVM阵列模块读取所述第二类隐藏层的权重参数。
7.如权利要求6所述的基于NVM进行AI计算的芯片系统,其特征在于,所述第二NVM阵列模块设有读通道,所述读通道为K路,K为正整数,在一个读周期内所述读通道共读取K比特数据,所述NPU用于通过所述高速数据读取通道经所述读通道从所述第二NVM阵列模块读取所述权重参数。
8.如权利要求7所述的基于NVM进行AI计算的芯片系统,其特征在于,所述高速数据读取通道的位宽为m比特,m为正整数;所述芯片系统还包括数据转换单元,所述数据转换单元包括缓存模块和顺序读取模块,所述缓存模块用于按周期依次缓存经所述读通道输出的权重参数,所述缓存模块的容量为K*k比特,k表示周期数;所述顺序读取模块用于将所述缓存模块中的缓存数据转换成m比特位宽后经所述高速数据读取通道输出至所述NPU,其中K*k为m的整数倍。
9.如权利要求1所述的基于NVM进行AI计算的芯片系统,其特征在于,所述第二NVM阵列模块还用于存储所述芯片系统运行所需要的电路参数配置和/或生产信息。
10.如权利要求1所述的基于NVM进行AI计算的芯片系统,其特征在于,所述第二NVM阵列模块中存储多种神经网络模型,所述AI运算指令包括算法选择指令,所述算法选择指令用于选择多个所述神经网络模型中的一个作为进行AI计算的算法。
11.如权利要求1所述的基于NVM进行AI计算的芯片系统,其特征在于,所述第一NVM阵列模块和所述第二NVM阵列模块采用闪存工艺、MRAM工艺、RRAM工艺、MTP工艺、OTP工艺中的一种,和/或,所述外部接口模块的接口标准为SPI、QPI以及并行接口中的至少一种。
12.如权利要求1所述的基于NVM进行AI计算的芯片系统,其特征在于,所述MCU还用于通过所述外部接口模块接收外部用于操作所述第一NVM阵列模块和/或所述第二NVM阵列模块的数据访问指令,所述MCU还用于基于所述数据访问指令完成对所述第一NVM阵列模块和/或所述第二NVM阵列模块的基本操作的逻辑控制。
13.如权利要求12所述的基于NVM进行AI计算的芯片系统,其特征在于,所述第一NVM阵列模块和所述第二NVM阵列模块采用SONOS闪存工艺、Floating Gate闪存工艺、Split Gate闪存工艺中的一种,所述外部接口模块的接口标准为SPI和/或QPI;
所述数据访问指令为标准的闪存操作指令;所述AI运算指令与所述数据访问指令采用相同的指令格式和规则;所述AI运算指令包括操作码,所述AI运算指令还包括地址部分和/或数据部分,所述AI运算指令的操作码与所述标准的闪存操作指令的操作码不同。
14.如权利要求5所述的基于NVM进行AI计算的芯片系统,其特征在于,所述芯片系统还包括DMA通道,所述DMA通道用于外部设备直接读写所述SRAM。
15.一种基于NVM进行AI计算的芯片系统的运行方法,其特征在于,所述芯片系统包括通过总线通信连接的第一NVM阵列模块、第二NVM阵列模块、外部接口模块和MCU;
所述第一NVM阵列模块用于实现神经网络的第一类隐藏层的模拟运算算子;所述第二NVM阵列模块用于数字化的存储所述神经网络的第二类隐藏层的权重参数、所述MCU运行的系统程序、所述神经网络的算法流程以及训练好的神经网络模型;其中,所述第一类隐藏层的连接密度高于所述第二类隐藏层的连接密度;所述外部接口模块用于接收外部输入的指令、输入数据以及向外输出AI计算的结果;所述外部输入的指令包括AI运算指令;所述第一类隐藏层为模拟运算层,所述第二类隐藏层为数字运算层;
所述运行方法包括以下步骤:
上电启动后所述MCU从所述第二NVM阵列模块加载所述系统程序、所述算法流程以及所述训练好的神经网络模型;
响应外部接收的所述AI运算指令,根据所述算法流程控制所述第一NVM阵列模块、所述第二NVM阵列模块对所述输入数据进行AI计算,得到所述AI计算的结果;
所述运行方法还包括以下步骤:所述MCU还控制相邻的所述模拟运算层与所述数字运算层之间的数据传输和状态通讯。
16.如权利要求15所述的基于NVM进行AI计算的芯片系统的运行方法,其特征在于,所述芯片系统还包括NPU;所述NPU通过所述总线与所述第一NVM阵列模块、所述第二NVM阵列模块、所述外部接口模块以及所述MCU通信连接;所述NPU用于所述第二类隐藏层的数字域加速计算;
所述根据所述算法流程控制所述第一NVM阵列模块、所述第二NVM阵列模块对所述输入数据进行AI计算包括:
根据所述算法流程分配不同的运算步骤至所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU,并控制所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU之间的计算数据的传输。
17.如权利要求16所述的基于NVM进行AI计算的芯片系统的运行方法,其特征在于,
所述芯片系统还包括高速数据读取通道和SRAM,所述SRAM通过所述总线与所述第一NVM阵列模块、所述第二NVM阵列模块、所述外部接口模块、所述NPU以及所述MCU通信连接;
所述上电启动后所述MCU从所述第二NVM阵列模块加载所述系统程序、所述算法流程以及所述训练好的神经网络模型的步骤包括:上电启动后所述MCU从所述第二NVM阵列模块加载所述系统程序、所述算法流程以及所述训练好的神经网络模型至所述SRAM;
所述控制所述第一NVM阵列模块、所述第二NVM阵列模块和/或所述NPU之间的计算数据的传输的步骤包括:
控制所述NPU经所述总线从所述SRAM获取计算数据,以及通过所述高速数据读取通道从所述第二NVM阵列模块读取所述第二类隐藏层的权重参数;
控制所述SRAM缓存所述MCU执行所述系统程序过程中的数据、所述NPU计算过程中的数据,以及所述模拟运算层与所述数字运算层之间交互的数据。
18.如权利要求15所述的基于NVM进行AI计算的芯片系统的运行方法,其特征在于,所述第二NVM阵列模块中存储多种神经网络模型,所述外部输入的指令还包括算法选择指令,所述运行方法还包括以下步骤:
响应所述算法选择指令,从多种所述神经网络模型中选择目标神经网络模型进行AI计算。
19.如权利要求15所述的基于NVM进行AI计算的芯片系统的运行方法,其特征在于,所述芯片系统包括NVM直接操作模式和神经网络运算模式;所述外部输入的指令还包括芯片模式选择指令,所述运行方法还包括以下步骤:
响应所述芯片模式选择指令,将所述芯片系统设置在目标工作模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110540153.5A CN112988082B (zh) | 2021-05-18 | 2021-05-18 | 基于nvm进行ai计算的芯片系统及其运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110540153.5A CN112988082B (zh) | 2021-05-18 | 2021-05-18 | 基于nvm进行ai计算的芯片系统及其运行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988082A CN112988082A (zh) | 2021-06-18 |
CN112988082B true CN112988082B (zh) | 2021-08-03 |
Family
ID=76336765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110540153.5A Active CN112988082B (zh) | 2021-05-18 | 2021-05-18 | 基于nvm进行ai计算的芯片系统及其运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988082B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113487006B (zh) * | 2021-07-09 | 2022-08-09 | 上海新氦类脑智能科技有限公司 | 一种可移动人工智能辅助计算设备 |
CN114115798A (zh) * | 2021-11-11 | 2022-03-01 | 上海碧帝数据科技有限公司 | 一种存算一体芯片加法器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919980A (zh) * | 2017-01-24 | 2017-07-04 | 南京大学 | 一种基于神经节分化的增量式目标识别系统 |
CN210136312U (zh) * | 2019-04-11 | 2020-03-10 | 中国石油天然气集团有限公司 | 一种光电倍增管检测装置 |
CN112101539A (zh) * | 2020-11-18 | 2020-12-18 | 南京优存科技有限公司 | 一种存算一体电路及人工智能芯片 |
CN112529166A (zh) * | 2020-12-25 | 2021-03-19 | 中国科学院西安光学精密机械研究所 | 融合神经元模型、神经网络结构及训练、推理方法、存储介质和设备 |
-
2021
- 2021-05-18 CN CN202110540153.5A patent/CN112988082B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919980A (zh) * | 2017-01-24 | 2017-07-04 | 南京大学 | 一种基于神经节分化的增量式目标识别系统 |
CN210136312U (zh) * | 2019-04-11 | 2020-03-10 | 中国石油天然气集团有限公司 | 一种光电倍增管检测装置 |
CN112101539A (zh) * | 2020-11-18 | 2020-12-18 | 南京优存科技有限公司 | 一种存算一体电路及人工智能芯片 |
CN112529166A (zh) * | 2020-12-25 | 2021-03-19 | 中国科学院西安光学精密机械研究所 | 融合神经元模型、神经网络结构及训练、推理方法、存储介质和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112988082A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109409510B (zh) | 神经元电路、芯片、系统及其方法、存储介质 | |
CN112988082B (zh) | 基于nvm进行ai计算的芯片系统及其运行方法 | |
Mao et al. | Lergan: A zero-free, low data movement and pim-based gan architecture | |
CN113139648B (zh) | 执行神经网络模型的pim架构的数据布局优化 | |
US5604840A (en) | Information processing apparatus | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
JP3096387B2 (ja) | 数値演算処理装置 | |
CN111611197B (zh) | 可软件定义的存算一体芯片的运算控制方法和装置 | |
CN110176260A (zh) | 支持跳跃计算模式的存储器器件及其操作方法 | |
US5649069A (en) | Neural net having a neural processor with distributed synaptic cells | |
WO2020172951A1 (zh) | 可软件定义存算一体芯片及其软件定义方法 | |
CN112633505B (zh) | 一种基于risc-v的人工智能推理方法和系统 | |
CN111860773B (zh) | 处理装置和用于信息处理的方法 | |
CN209766043U (zh) | 存算一体芯片、存储单元阵列结构 | |
CN113127407A (zh) | 基于nvm进行ai计算的芯片架构 | |
CN110232441B (zh) | 一种基于单向脉动阵列的堆栈式自编码系统及方法 | |
CN113157638B (zh) | 一种低功耗存储器内计算处理器和处理运算方法 | |
CN111949405A (zh) | 资源调度方法、硬件加速器及电子设备 | |
US11256503B2 (en) | Computational memory | |
JPH06274528A (ja) | ベクトル演算処理装置 | |
CN116339680A (zh) | 一种实时的多端口并行读写近存处理器 | |
CN214846708U (zh) | 基于nvm进行ai计算的芯片架构 | |
CN117539823A (zh) | 芯片算力控制方法、芯片及存储介质 | |
CN115169541A (zh) | 一种张量、向量、标量计算加速和数据调度系统 | |
US20210150311A1 (en) | Data layout conscious processing in memory architecture for executing neural network model |
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 |