人工神经网络处理系统及其数据处理方法与流程

文档序号:20756928发布日期:2020-05-15 17:29阅读:486来源:国知局
人工神经网络处理系统及其数据处理方法与流程

本申请涉及人工智能技术领域,具体涉及一种人工神经网络处理系统及其数据处理方法、电子设备和可读存储介质。



背景技术:

近年来,基于人工神经网络的智能解决方案越来越丰富,英伟达公司围绕gpu搭建人工智能生态;赛灵思公司基于fpga搭建了ai架构的处理设备和开发套件;谷歌公司于2016年推出的tpu可实现深度学习卷积神经网络的完整推理工作。在各大公司的边缘计算设备(边缘计算设备是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,可就近提供最近端服务)中,存储模块在整个体系结构中至关重要,gpu使用外部存储器gddr(graphicsdoubledatarate)为人工神经网络的训练和推理提供高速带宽,tpu使用全片上存储资源为ai算法推理提供高并行的数据缓存。

在现有的人工神经网络的存储模块方案中,gpu在训练和推理过程中都使用外部存储器gddr作为缓存,高速的时钟频率带来了可观的运算速度,但也带来了巨大的功耗,很难用于小型化ai设备和云服务器等设备中。tpu使用全片上存储资源进行人工神经网络推理过程中的缓存,虽然降低了整体功耗,然而由于片上存储资源有限可能会发生溢出,并且该存储结构对新功能层的兼容性不足。

申请内容

鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的一种人工神经网络处理系统及其数据处理方法。

依据本申请的一个方面,提供了一种人工神经网络处理系统,包括:控制模块、运算模块和存储模块;

所述控制模块包括缓存控制单元,所述缓存控制单元被配置为执行人工神经网络运算缓存的控制;

所述运算模块包括一个或多个主运算单元,所述主运算单元被配置对人工神经网络结构中的各网络层执行运算;

所述存储模块包括融合存储单元,所述融合存储单元被配置为执行人工神经网络各网络层运算数据的加载和运算结果的缓存;其中,所述融合存储单元包括片上存储器和片外存储器,所述片上存储器的缓存地址和所述片外存储器的缓存地址被统一编码形成统一地址值。

可选的,所述片上存储器、所述缓存控制单元和所述主运算单元被配置在同一芯片上。

可选的,所述片上存储器的存储区域包括片上缓存一区和片上缓存二区,所述片外存储器的存储区域包括片外缓存一区、片外缓存二区,且所述片上缓存一区、片外缓存一区、片上缓存二区、片外缓存二区依次被统一编码形成统一地址值。

可选的,所述片上存储器包括两列对称设置的静态ram缓存矩阵,分别由若干个静态ram和控制器组成。

可选的,所述控制模块还包括主控制器,所述主控制器被配置为执行如下的至少一种操作:人工神经网络的运算指令收发,人工神经网络的运算流程调度,人工神经网络功能决策;和/或,

所述运算模块还包括辅助运算单元,所述辅助运算单元被配置为对人工神经网络运算数据进行预处理和/或对运算结果进行采集;和/或,

所述存储模块还包括辅助存储单元,所述辅助存储单元被配置为人工神经网络各网络层的运算加载权重参数;

其中,所述主控制器和所述辅助运算单元通过cpu实现;所述辅助存储单元通过cpu内存实现。

可选的,所述系统还包括配置在所述芯片上的控制通路模块,所述控制通路模块为所述主控制器与所述运算单元和所述缓存控制单元的通信提供缓存,包括缓存指令ram、权重指令ram以及权重数据ram。

依据本申请的另一个方面,提供了一种数据处理方法,该方法应用于如上任一项所述的人工神经网络处理系统,所述方法包括:

将所述统一地址值进行区域划分,所述区域至少包括缓存一区和缓存二区;

将所述神经网络各网络层的运算结果数据从所述主运算单元返回后交替写入所述缓存一区或缓存二区,并从所述缓存一区或缓存二区读取该网络层的运算结果数据并写入所述主运算单元进行该网络层的下一网络层的运算。

可选的,所述缓存一区由连续统一地址值的片上缓存一区和片外缓存一区组成,所述缓存二区由连续统一地址值的片上缓存二区和片外缓存二区组成,且优先选择从所述片上缓存区写入或读取数据。

可选的,所述缓存一区或缓存二区读取或写入包括:

判断目标网络层是否为原始数据层、结果数据层、溢出层或备份层,根据各网络层的运算特点以及数据统一地址值与片上缓存区最大地址值的关系,确定读取或写入的目标缓存区。

可选的,所述判断目标网络层是否为原始数据层、结果数据层、溢出层或备份层,根据各网络层的运算特点以及数据统一地址值与片上缓存区最大地址值的关系,确定读取或写入的目标缓存区包括:

若目标网络层非跨层的备份层,且非原始数据层,且非结果数据层,且非溢出层;或者,目标网络层为溢出层,且非备份层,且本次读取或写入结束后统一地址值小于等于该片上缓存区的最大地址值,则只需读取或写入片上缓存区中的数据;

若目标网络层为跨层号的备份层,或非原始数据层,或非结果数据层,且非溢出层;或者,目标网络层为溢出层,且非备份层,且本次读取或写入开始前统一地址值大于该片上缓存区的最大地址值,则只需读取或写入片外缓存区中的数据;

若目标读取网络层为溢出层,且非备份层,且本次读取开始前统一地址值小于该片上缓存区的最大地址值,且本次读取或写入结束后统一地址值大于该片上缓存区的最大地址值,则需要先读取或写入片上缓存区的数据,再读取片外缓存区中的数据。

可选的,所述判断目标网络层是否为原始数据层、结果数据层、溢出层或备份层,根据各网络层的计算特点以及数据统一地址值与片上缓存区最大地址值的关系,确定目标写入缓存区还包括:

若目标写入层为备份层,则同时写入片上缓存区和片外缓存区。

可选的,所述将所述神经网络各网络层的运算结果数据从所述主运算单元返回后交替写入所述缓存一区或缓存二区,并从所述缓存一区或缓存二区读取该网络层的运算结果数据并写入所述主运算单元进行该网络层的下一网络层的运算包括:

基于当前请求所处网络层的层号和通道数量,确定各通道基地址和各通道的缓存区划分,然后基于所述通道基地址以猝发方式读取或写入各所述通道的数据。

可选的,所述将所述神经网络各网络层的运算结果数据从所述主运算单元返回后交替写入所述缓存一区或缓存二区包括:

接收外部指令后解析出写入指令,通知写数据fifo组准备接收待缓存数据;

根据片上缓存区和片外缓存区的数据位宽比例,分别调整写入fifo的数量比例和读出fifo的数量比例;

根据写入fifo的数量与读出fifo数量之间的关系调整读操作和写操作的次数,从而使得所述写数据fifo组对多通道并行输入的数据进行暂存并以猝发方式读出,并减少读操作和写操作总次数。

可选的,所述将所述神经网络中各网络层从所述运算单元返回的运算结果数据交替写入至所述缓存一区或缓存二区包括:

若目标写入层是溢出层,则首先连续写入片上缓存区,然后先写入片上缓存区后写入在片外缓存区,再连续写入片外缓存区,且在写入片外缓存区时,在直接内存存取中设置多个写入fifo并行工作。

可选的,所述区域还包括原始数据缓存区、若干个备份层区和运算结果区,且所述原始数据缓存区、片外缓存一区、片外缓存二区、若干个备份层区和运算结果区设置在片外存储器上,且所述原始数据缓存区、片上缓存一区、片外缓存一区、片上缓存二区、片外缓存二区、若干个备份层区和运算结果区依次被统一编码形成统一地址值。

依据本申请的又一方面,提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如上述任一所述的方法。

依据本申请的再一方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如上述任一所述的方法。

由上述可知,本申请公开的人工神经网络的融合存储模块通过芯片片上缓存矩阵结合片外缓存的方式,对网络层级数据的缓存进行实时决策和通道选择,实现了一种高并行、兼容性强、低功耗的高速存储架构。具体地:

第一,本申请公开的技术方案可以保证人工神经网络的高运算并行度和高性能。所述系统片上存储矩阵单元可以为高并行数据提供同步缓存处理,对于未超过片上存储资源的网络规模优先使用片上缓存。

第二,本申请可以保证人工神经网络算法的兼容性和可扩展性。通过将外部存储器与片上存储进行功能上的融合,将外部存储器作为备选缓存和功能扩展缓存。

第三,本申请公开的技术方案可以保证人工神经网络硬件系统的低功耗水平。本申请仅将外部存储器作为内部缓存的备选和功能扩展缓存,网络运算过程中产生的功耗主要在片内;其次,本申请公开的系统为外部存储器单独建立了一条数据通路,与内部缓存的数据通路兼容,所以不需要通过片上缓存的进行读写,大幅减少了片内数据处理和延迟时间。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本申请一个实施例的人工神经网络处理系统的结构示意图;

图2示出了根据本申请一个实施例的数据处理方法的流程示意图;

图3示出了根据本申请一个实施例的电子设备的结构示意图;

图4示出了根据本申请一个实施例的计算机可读存储介质的结构示意图;

图5示出了根据本申请一个实施例的人工神经网络处理系统的数据处理整体流程示意图;

图6示出了根据本申请一个实施例的控制通路模块的内部缓存示意图;

图7示出了根据本申请一个实施例的缓存指令协议功能示意图;

图8示出了根据本申请一个实施例的溢出层读/写命令与存储器的对应关系示意图;

图9示出了根据本申请一个实施例的原始数据缓存区中的基地址划分;

图10示出了根据本申请一个实施例的写fifo和读fifo数量比例不同时的操作对比示意图;

图11示出了根据本申请一个实施例的sram缓存矩阵结构示意图;

图12示出了根据本申请一个实施例的多fifo_dma和单fifo_dma的缓存时间对比示意图;

图13示出了根据本申请一个实施例的统一地址分布及读写流程示意图;

图14示出了根据本申请一个实施例的备份层的写状态判断和存储地址划分。

具体实施方式

下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。

图1示出了根据本申请一个实施例的人工神经网络处理系统的结构示意图;该实施例公开的人工神经网络处理系统为应用融合存储模块和数据处理方法的完整架构,该系统能够实现人工神经网络中数据读取或写入存储模块的整体流程如图5所示,包括预置算法流程和加载数据;读取第一网络层数据并运算;将运算结果写入存储系统;逐层运算,并将最终的运算结果存储到片外存储器;完成本轮运算,等在下一次的运算开始指令等步骤。

所述系统包括:控制模块、运算模块和存储系统,上述模块至少可部分地配置在现场可编程门阵列(fieldprogrammblegatearray,fpga)或专用集成电路(applicationspecificintegratedcircuit,asic)的芯片上。

控制模块包括缓存控制单元,缓存控制单元被配置为执行人工神经网络运算缓存的控制。缓存控制单元是执行如图7所示的缓存指令协议功能以及执行如图13所示数据存取控制流程的核心功能部件之一,通过在缓存控制单元编程实现如图7所示的缓存指令协议功能,从而实现神经网络中图像数据在片上和片外存储器的调度以及在运算模块的运算。

根据图7,缓存控制单元根据operation判断当前指令为为读出方向指令,激活系统读缓存控制区的读命令解析模块,读命令解析模块在sync信号为1时锁定layer,channel_number等描述当前网络层的层号、通道数等信息,并锁定concat_enable等描述本次指令请求数据量、数据类型等信息。

读命令解析模块判断到当前步骤所请求的层号为0,需要读取原始数据,然后读命令解析模块通知读原图激励模块进行读取命令的自动生成,以自动读取缓存中的原始数据;同时,读缓存控制区的命令选择器根据解析结果选择来自读原图激励模块的读取命令,并输出给缓存控制区。

所述运算模块包括一个或多个主运算单元,所述主运算单元被配置对人工神经网络结构中的不同层结构进行运算执行。

该实施例中的主运算单元被配置在芯片上,通过与非门等逻辑阵列实现对各网络层的运算执行,具体可包括卷积、池化、张量拼接、激活、上采样、下采样等。

所述存储模块包括由片上存储器和片外存储器构成的融合存储单元,被配置为执行人工神经网络各网络层运算数据的加载和运算结果的缓存;且所述融合存储单元中的片上存储器和片外存储器的缓存地址被混排并统一编码形成统一地址值。

本实施例公开的融合存储单元主要用于存储人工神经网络中的业务数据主要是图像数据,融合存储单元中片上存储器可由缓存控制单元直接控制读取或写入数据,处理速度快;而片外存储器通过interconnect模块和mig接口控制器实现与缓存控制单元的连接,从而为片外存储器单独建立了一条数据通路,与内部缓存的数据通路兼容,所以不需要通过片上缓存的进行读写,大幅减少了片内数据处理和延迟时间。需要说明的是,interconnect是一个光-电和光子集成线路(pic)设计软件包,可以用于设计、模拟仿真和分析包含马赫-曾德尔调制器、耦合环形谐振腔和阵列波导光栅等在内的集成光路、硅基光子学器件和光互联系统,它支持光子集成线路器件的矢量化作图和图形显示,因此常被用于图像处理计算设备中。mig是一种接口控制框架,mig主要有面向用户端口和面向ddr端口,用户通过使用mig能够通过用户端口的信号,来完成对ddrsdram的访问,达到简化操作的目的。

片上存储器可由静态ram阵列组成,片外存储器可由动态ddr实现。为了实现图像数据的存取调度,该实施例中将上述存储资源的存储地址进行了统一的编码,赋予了统一地址值,从而更好地为执行人工神经网络各网络层运算数据的加载和运算结果的缓存。

综上,本实施例公开的人工神经网络处理系统给出了一种对人工神经网络加速处理的方案,其中的融合存储模块包括了片上存储器和片外存储器,实现了上述存储器在存储地址和运算功能的双重融合,提高了系统的并行度、兼容性、可扩展性,在保证高性能同时降低了系统的功耗水平。

在一个实施例中,所述片上存储器、所述缓存控制单元和所述主运算单元被配置在同一芯片上。

根据上述功能设计需求,上述片上存储器、缓存控制单元和主运算单元均设置在上述的现场可编程门阵列或专用集成电路的芯片上,从而便于实现神经网络数据的计算和调度。

在一个实施例中,所述片上存储器的存储区域包括片上缓存一区和片上缓存二区,所述片外存储器的存储区域包括片外缓存一区、片外缓存二区,且所述片上缓存一区、片外缓存一区、片上缓存二区、片外缓存二区依次被统一编码形成统一地址值。

本实施例的上述设置实现了融合存储单元的物理上的融合,并且将上述融合的存储区域形成两个缓存区即分别是缓存一区和缓存二区,从而为在神经网络计算中进行交替式存取提供了条件。

在一个实施例中,所述片上存储器包括两列对称设置的静态ram缓存矩阵,分别由若干个静态ram和控制器组成。

参见图11,为了实现本申请中的融合存储以及方便数据处理与调度,在该实施例公开的片上存储器包括两列对称设置的静态ram缓存矩阵,分别由c*d各静态ram和控制器组成,每次指令可并行缓存每次指令可并行缓存(c行*d条通道)的写入数据。从外部来看,片上缓存区是一个[2,c,d]的三维sram矩阵。

在一个实施例中,所述系统还包括配置在所述芯片上的控制通路模块,所述控制通路模块为所述主控制器与所述运算单元和所述缓存控制单元的通信提供缓存,包括缓存指令ram、权重指令ram以及权重数据ram。

参见图6,为了减少主处理器的负担,增加系统的反应速度,在芯片上还配置了控制通路模块,包括多个ram,使得在在各网络层运算时减少了主控制器的占用,甚至在不存在主控制器的情况下也能够运行。

在一般的加载中,系统启动后,主控制器cpu根据算法模型确定算法流程,并进一步确定权重参数加载流程和缓存指令加载流程。cpu通过系统总线将各流程的指令数据按顺序预置写入芯片控制通路模块中的指令ram缓存中,在算法模型不改变的情况下对ram缓存中的指令数据不做修改,cpu则根据控制通路的流程状态决定运算启动、结果采集和运算停止。

同时,cpu将权重参数文件加载到cpu内存中,预备将算法第一层运算需要的权重参数通过系统总线写入控制通路模块的权重参数ram缓存中;并开始采集待运算的图像数据,预备将预处理后的图像数据通过系统总线写入到存储模块的片外存储器的原始数据区域。当然,权重参数和图像数据亦可通过其它方式加载和传输,权重参数的加载目标是权重参数ram缓存,且待运算的图像数据的加载目标是片外存储器。

在一个实施例中,所述控制模块还包括主控制器,所述主控制器被配置为执行如下的至少一种操作:人工神经网络的运算指令收发,人工神经网络的运算流程调度,人工神经网络功能决策;和/或,所述运算模块还包括辅助运算单元,所述辅助运算单元被配置为对人工神经网络运算数据进行预处理和/或对运算结果进行采集;和/或,所述存储模块还包括辅助存储单元,所述辅助存储单元被配置为人工神经网络各网络层的运算加载权重参数;其中,所述主控制器和所述辅助运算单元通过cpu实现;所述辅助存储单元通过cpu内存实现。

人工神经网络处理系统可以采用cpu进行整体控制,当然也可以在芯片内采用其他方式进行控制,其中可以采用ddr系列的内存作为cpu内存。

图2示出了根据本申请一个实施例的数据处理方法的流程示意图;该方法应用于如上任一项所述的人工神经网络处理系统,所述方法包括:

步骤s110,将所述统一地址值进行区域划分,所述区域至少包括缓存一区和缓存二区。

步骤s120,将所述神经网络各网络层的运算结果数据从所述主运算单元返回后交替写入所述缓存一区或缓存二区,并从所述缓存一区或缓存二区读取该网络层的运算结果数据并写入所述主运算单元进行该网络层的下一网络层的运算。

参见图14,该实施例描述了本申请中图像等业务数据根据各网络层运算需要在存储模块中进行保存或输出的具体流程,图13是根据各网络层之间的读写过程进行说明。该流程涉及图像等业务数据在主运算单元、缓存一区u1和缓存二区u0之间的流转,可被形象地称为乒乓式缓存。为了更具体地描述本申请,下面以yolov3-tiny神经网络层级为例进行说明。

缓存控制单元将读请求和地址通知对应的缓存区。当缓存区为片上缓存时,片上缓存控制器对当前层对应的u0/u1片区中的缓存矩阵进行读取操作,在层号为奇数时选择u0片区,在层号为偶数时选择u1片区;当缓存区为片外缓存时,直接内存存取dma通过片外存储器的控制器对真实地址进行读取。由于读请求对应的数据地址分布在多条通道对应的片区中,所以dma以猝发方式依次对各通道的目标数据进行访问,然后将读取结果按照通道由低到高的排列在固定4/8/16条数据通路上输出。

参见图13,当完成原始数据读取和第一层运算结果数据的写入,第一层l1整层的运算结果数据已缓存到如图13所示的乒乓缓存主1区(片上缓存u1)和乒乓缓存从1区(片外缓存u1),后续开始读取第一层l1的运算结果数据,所为第二层l2运算的输入数据,并将第二层l2的运算结果写入缓存系统中的乒乓缓存主2区(片上缓存u0)和乒乓缓存从2区(片外缓存u0),如果第二层l2的整层写入数据不溢出,只需要写入乒乓缓存主2区(片上缓存u0)。

第二层l2整层运算结果写入缓存完毕后开始读出第二层运算结果数据,作为第三层的运算输入数据,并将第三层的运算结果写入缓存系统的乒乓缓存主1区(片上缓存u1)和乒乓缓存从1区(片外缓存u1),如果第三层的整层写入数据不溢出,只需要写入乒乓缓存主1区(片上缓存u1)。

综上,通过上述数据处理方法,不仅可以提高缓存的效率,大幅减少存储模块数据处理和延迟时间,而且能够降低系统的功耗水平。

在一个实施例中,所述缓存一区由连续统一地址值的片上缓存一区和片外缓存一区组成,所述缓存二区由连续统一地址值的片上缓存二区和片外缓存二区组成,且优先选择从所述片上缓存区写入或读取数据。

参考图13左侧示出了统一地址中的区域分布,其中片上存储器被分为两个部分插入到片外存储器中,形成如图13所示的多个缓存区域。由于片上缓存具有速度快功耗低等优点,在数据统一地址值小于等于片上缓存区最大地址值的情况下,优先选择从片上缓存区写入或读取数据。

在一个实施例中,所述缓存一区或所述缓存二区读取或写入包括:判断网络层是否为原始数据层、结果数据层、溢出层或备份层,根据各网络层的运算特点以及数据统一地址值与片上缓存区最大地址值的关系,确定读取或写入的目标缓存区。

参见图8,在该实施例中,根据各网络层运算的需求和运算特点,分别命名各神经网络层的名称,并且分别选择相应的缓存或读取方式。比如原始数据层即为l0层,需要从原始数据缓存区读取数据,结果数据层为网络的最后一层,该层运算结束后将结果写入运算结果缓存区,而备份层是指在运算中需要张量拼接concat的情况下需要读取之前层运算后备份的结果数据,这种情况经常出现在resnet等网络运算中。而溢出层是网络层在运算时由于神经元过多、权重参数过大等导致的片上缓存区不足时必须结合片外存储器进行存储的情况。关于溢出层的执行,写命令解析模块根据指令信息在模块内部计算当前层需要缓存的数据量,由于片上存储资源有限,当计算的数据量超过存储系统为单层缓存分配片上存储量时,模块判断当前层为溢出层,溢出片上缓存的待缓存数据需要缓存到片外缓存中。写命令解析模块将溢出层标志发送到缓存控制区。

仍然以yolov3-tiny神经网络层级为例,当运算到第三层l3时,算法要求读取第二层的缓存数据,此时在乒乓缓存主2区(片上缓存u0)和片外缓存的备份层1区都有第二层的缓存数据,由于请求的数据所在的层级与上一层缓存的数据之间未跨越层(从第三层到第二层),所以选择从乒乓缓存主2区读取数据;当运算到第四层l4或者更后面的层时,算法要求读取第二层的缓存数据,此时只有片外缓存的备份层1区有第二层的缓存数据,而且请求的数据所在的层级与上一层缓存的数据之间发生了跨越层(从第四层到第二层),所以选择从片外缓存的备份层1区读取数据。这种选择的原因是片上缓存的形式是sram矩阵,访存数据的并行度更高,同时不需要dma等中间缓存,从而片上缓存速度快于片外缓存,在可以选择片上缓存的情况下优先选择片上缓存有利于提升存储系统的整体效率。

在一个实施例中,所述判断网络层是否为原始数据层、结果数据层、溢出层或备份层,根据各网络层的运算特点以及数据统一地址值与片上缓存区最大地址值的关系,确定读取或写入的目标缓存区包括:

若目标网络层非跨层的备份层,且非原始数据层,且非结果数据层,且非溢出层;或者,目标网络层为溢出层,且非备份层,且本次读取或写入结束后统一地址值小于等于该片上缓存区的最大地址值,则只需读取或写入片上缓存区中的数据。

若目标网络层为跨层号的备份层,或非原始数据层,或非结果数据层,且非溢出层;或者,目标网络层为溢出层,且非备份层,且本次读取或写入开始前统一地址值大于该片上缓存区的最大地址值,则只需读取或写入片外缓存区中的数据。

若目标读取层为溢出层,且非备份层,且本次读取开始前统一地址值小于该片上缓存区的最大地址值,且本次读取或写入结束后统一地址值大于该片上缓存区的最大地址值,则需要先读取或写入片上缓存区的数据,再读取片外缓存区中的数据。

在设计与执行中,缓存控制单元收到读取命令后,首先判断读指令或所处层的处理过程中所需要读取的存储器,rd_sw1判断为以下三类:

第一类rd_sw1_s1:只需要读取片上缓存。判断条件为目标读取层非跨层号的备份层,且非原始数据层,且非结果数据层,且非溢出层;

第二类rd_sw1_s2:只需要读取片外缓存。判断条件为目标读取层为跨层号的备份层,或非原始数据层,或非结果数据层,且非溢出层。当前步骤为第二类;

第三类rd_sw1_s3:需要先读取片上缓存,再读取片外缓存。判断条件为目标读取层为溢出层,且非备份层。

然后判断单一读指令所请求的数据在下一个单一读指令到来前需要读取的存储器,rd_sw2判断为以下三类:

第一类rd_sw2_s1,只需要读取片上缓存。判断条件为rd_sw1=rd_sw1_s1,或者rd_sw1=rd_sw1_s3且本次读取结束后读缓存的统一地址值小于等于片上缓存的最大地址值;

第二类rd_sw2_s2,只需要读取片外缓存。判断条件为rd_sw1=rd_sw1_s2,或者rd_sw1=rd_sw1_s3且本次读取开始前读缓存的统一地址值大于片上缓存的最大地址值。当前步骤为第二类;

第三类rd_sw2_s3,需要先读取片上缓存,再读取片外缓存。判断条件为rd_sw1=rd_sw1_s3,并且本次读取开始前读缓存的统一地址值小于片上缓存的最大地址值,且本次读取结束后读缓存的统一地址值大于片上缓存的最大地址值。

对于写入指令,可以分为wr_sw1_s1、wr_sw1_s2、wr_sw1_s3等三种情况,这里不再赘述。

在一个实施例中,所述判断网络层是否为原始数据层、结果数据层、溢出层或备份层,根据各网络层的计算特点以及数据统一地址值与片上缓存区最大地址值的关系,确定目标写入缓存区还包括:

若目标写入层为备份层,则同时写入片上缓存区和片外缓存区。

参见图14,当算法要求对第二层l2运算结果进行备份时,每次写指令判断为第四类wr_sw2_s4,需要同时写入片上缓存和片外缓存,此处的“同时”解释为从本次指令开始到下一次写指令开始的期间,写入缓存系统的数据会同时写入片上缓存和片外缓存,用于对当前层数据进行备份,应用在例如concat上采样的跨层缓存中。判断条件为wr_sw1=wr_sw1_s4。由于写片外缓存和片上缓存所用的数据通路独立,所以不需要将数据先写入片上缓存,再从中读出后写入到片外缓存,而是将每行数据同时写片外缓存和片上缓存,两次写指令的间隔时间为单独写片外缓存和单独写片上缓存时所需时间的较大值。

当运算到第三层l3时,算法要求读取第二层的缓存数据,此时在乒乓缓存主2区(片上缓存u0)和片外缓存的备份层1区都有第二层的缓存数据,由于请求的数据所在的层级与上一层缓存的数据之间未跨越层(从第三层到第二层),所以选择从乒乓缓存主2区读取数据;当运算到第四层l4或者更后面的层时,算法要求读取第二层的缓存数据,此时只有片外缓存的备份层1区有第二层的缓存数据,而且请求的数据所在的层级与上一层缓存的数据之间发生了跨越层(从第四层到第二层),所以选择从片外缓存的备份层1区读取数据。这种选择的原因是片上缓存的形式是sram矩阵,访存数据的并行度更高,同时不需要dma等中间缓冲,从而片上缓存速度快于片外缓存,在可以选择片上缓存的情况下优先选择片上缓存有利于提升存储系统的整体效率。

在一个实施例中,所述将所述神经网络各网络层的运算结果数据从所述主运算单元返回后交替写入所述缓存一区或缓存二区,并从所述缓存一区或缓存二区读取该网络层的运算结果数据并写入所述主运算单元进行该网络层的下一网络层的运算包括:

基于当前请求所处网络层的层号和通道数量,确定各通道基地址和各通道的缓存区划分,然后基于所述通道基地址以猝发方式读取或写入各所述通道的数据。

参见图9,缓存控制单元根据wr_sw1和wr_sw2的判断结果对单一写入请求进行地址编码,所计算的地址结果为本次猝发数据的基地址wr_sub_base,本次基地址是统一地址控制中每条通道的唯一基地址。同时,地址编码模块根据当前请求所处层的信息,如层号、通道数量等,进行通道的缓存区划分和通道基地址计算。

第一层数据的通道总数为4时,每条通道各占一片存储区且基地址分别为wr_base1,wr_base2,wr_base3,wr_base4,则本次写请求的目标基地址分别为(wr_base1+wr_sub_base),(wr_base2+wr_sub_base),(wr_base3+wr_sub_base),(wr_base4+wr_sub_base)。由于第一层数据所处整体缓存区域的基地址为u0_data_base,所以本次读请求的统一基地址为:

wr_base1+wr_sub_base+u0_data_base,

wr_base2+wr_sub_base+u0_data_base,

wr_base3+wr_sub_base+u0_data_base,

wr_base4+wr_sub_base+u0_data_base。

由于存储系统的缓存分为片上缓存和片外缓存,片上缓存的地址0相对于统一地址为ram_mem_base,所以本次读请求的真实基地址分别为:

wr_base1+wr_sub_base+u0_data_base-ram_mem_base,

wr_base2+wr_sub_base+u0_data_base-ram_mem_base,

wr_base3+wr_sub_base+u0_data_base-ram_mem_base,

wr_base4+wr_sub_base+u0_data_base-ram_mem_base。

在yolov3-tiny网络中,第一层通道总数为16,亦以上述地址分配方法进行划分。

读取操作适用于相同的情况,这里不再赘述。

在一个实施例中,所述将所述神经网络各网络层的运算结果数据从所述主运算单元返回后交替写入所述缓存一区或缓存二区包括:

接收外部指令后解析出写入指令,通知写数据fifo组准备接收待缓存数据;

根据片上缓存区和片外缓存区的数据位宽比例,分别调整写入fifo的数量比例和读出fifo的数量比例;

根据写入fifo的数量与读出fifo数量之间的关系调整读操作和写操作的次数,从而使得所述写数据fifo组对多通道并行输入的数据进行暂存并以猝发方式读出,并减少读操作和写操作总次数。

参见图10,写数据fifo组的主要功能是对多通道并行输入的数据进行暂存,由于外部输入的数据量不确定,并且对写数据fifo组向外发出的就绪信号响应时间不确定,所以本申请在写数据fifo组的读出逻辑中使用了猝发读出方式,即当写数据fifo组中的多通道数据积累到当前层的整行长度时才允许写数据fifo组将暂存的数据并行读出,同时不影响存储系统外部的数据持续写入。

写数据fifo组可以根据片上缓存和片外缓存的数据位宽比例,分别调整参与写入fifo的数量和读出fifo的数量比例。

以卷积层和池化层为例,当两层运算数据使用两类输入接口,输入缓存系统时的数据位宽不同时,写入fifo可以为数据位宽为8*abit的卷积层结果数据分配8个fifo,并为数据位宽为2*abit的池化层结果数据分配2个fifo。

读出fifo的数量比例可以以片上缓存和片外缓存为例,当写指令目标缓存为片上缓存时,读出fifo可以为写数据位宽为8*bbit的片上缓存分配8个fifo,当写指令目标缓存为片外缓存时,读出fifo可以为写数据位宽为2*bbit的片上缓存分配2个fifo。

当写入fifo和读出fifo数量相等时,本层的当前操作固定使用这些数量的fifo作为写数据的fifo组;当写入fifo数量大于读出fifo数量时,在一次写后等待多次读操作,直到读完这次写的数据量,再开始下一次写操作;当写入fifo数量小于读出fifo数量时,在一次读后等待多次写操作,直到写完上次读的数据量,再开始下一次写操作;当读写到本层运算的末尾时可能无法分配满整数倍的读写fifo比例,则写缓存结束时即认定读写fifo比例,未写或未读的fifo位置默认补0。

在一个实施例中,所述将所述神经网络中各网络层从所述主运算单元返回的运算结果数据交替写入至所述缓存一区或缓存二区包括:若目标写入层是溢出层,则首先连续写入片上缓存区,然后先写入片上缓存区后写入在片外缓存区,再连续写入片外缓存区,且在写入片外缓存区时,在直接内存存取中设置多个写入fifo并行工作。

在该实施例中若判定目标写入层为溢出层,则整层写缓存的流程为wr_sw1_s3,需要先写入片上缓存区,再写入片外缓存区;单次指令的写缓存状态为wr_sw2_s1,wr_sw2_s3,wr_sw2_s2依次出现,先出现连续写入片上缓存,中间出现一次先写片上缓存后写片外缓存,再出现连续写入片外缓存。

参见图12,当目标缓存区为片外缓存区时,缓存控制器从写缓存fifo组中读出待缓存数据,以当前层宽为猝发长度,以当前指令的真实地址为基地址将数据发送给直接内存存取(directmemoryaccess,dma)。为了提高写入效率,缓存系统在dma中搭建了4个并行fifo进行缓存,在向dma中的第一个fifo写完第一行数据但未开始写入外部存储器时,向dma中的第二个fifo开始写入第二行数据,依次类推。这样如果dma在较长时间后才将第一行数据写入外部存储器,在中间的时间dma已经缓存了后续三行,当第五行与第四行之间的采集时间间隔由于读写fifo数量比例不同而较第四行和第三行之间的采集时间间隔长时,这种dma内的缓存方法可以将避免将例如第四行和第三行之间的采集时间拉长(t2>t1),进而避免缓存速度下降。

当目标缓存区为片上缓存区和片外缓存区时,根据统一地址选择片区缓存还是片外缓存。当写片区缓存的目标地址大于缓存矩阵中单片sram的最大地址ram_max_addr时,对写片区缓存操作进行屏蔽;同时缓存控制单元将写指令通知片外缓存区控制器,在写地址大于ram_max_addr时开始写dma,并将目标地址减去ram_max_addr后作为写入外部存储器的真实地址值。此时写入dma的猝发长度为当前层宽度减去已写入片上缓存的数据宽度。

在一个实施例中,所述区域还包括原始数据缓存区、若干个备份层区和运算结果区,且所述原始数据缓存区、片外缓存一区、片外缓存二区、若干个备份层区和运算结果区均设置在片外存储器上,且所述原始数据缓存区、片上缓存一区、片外缓存一区、片上缓存二区、片外缓存二区、若干个备份层区和运算结果区依次被统一编码形成统一地址值。

参见图13的左侧部分,示出了片外存储器和片上存储器分区的具体情形,根据图13可知,片外存储器包括了比片上存储器更多的区域,且片上存储器的两个区域插入到片外各区域之间。

需要说明的是,当算法到最后一层结束时,存储模块将运算结果写入片外缓存的运算结果区,缓存完毕时通知控制通路模块,控制通路模块确认各指令加载状态机状态后通过中断或者轮询状态机的方式通知cpu本轮运算结束。cpu收到消息后通过系统总线访问缓存系统的外部存储器的运算结果区进行数据采集,完毕后cpu再次通知控制通路置位指令加载状态机,但不清除各指令ram中的数据,准备对新的原始数据进行运算,返回步骤2;当网络结构变化时需要重新加载指令数据,则返回步骤1;当运算中止,则返回步骤1并中止操作。

综上所述,本申请公开的技术方案,包括控制模块、运算模块和存储模块;所述控制模块包括缓存控制单元,所述缓存控制单元被配置为执行人工神经网络运算缓存的控制;所述运算模块包括一个或多个主运算单元,所述主运算单元被配置对人工神经网络结构中的不同层结构进行运算执行;所述存储模块包括由片上存储器和片外存储器构成的融合存储单元,所述融合存储单元的缓存地址被统一编码形成统一地址值,所述融合存储单元被配置为执行人工神经网络各网络层运算数据的加载和运算结果的缓存;所述片上存储器、所述缓存控制单元和所述主运算单元被配置在同一芯片上。上述方案能够保证人工神经网络运算的并行度、兼容性、可扩展性,在保证高性能同时降低了系统的功耗水平。

需要说明的是:

在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本申请并帮助理解各个申请方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,申请方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本申请实施例的人工神经网络处理系统中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

例如,图3示出了根据本申请一个实施例的电子设备的结构示意图。该电子设备300包括处理器310和被安排成存储计算机可执行指令(计算机可读程序代码)的存储器320。存储器320可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。存储器320具有存储用于执行上述方法中的任何方法步骤的计算机可读程序代码331的存储空间330。例如,用于存储计算机可读程序代码的存储空间330可以包括分别用于实现上面的方法中的各种步骤的各个计算机可读程序代码331。计算机可读程序代码331可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图4所述的计算机可读存储介质。图4示出了根据本申请一个实施例的一种计算机可读存储介质的结构示意图。该计算机可读存储介质400存储有用于执行根据本申请的方法步骤的计算机可读程序代码331,可以被电子设备300的处理器310读取,当计算机可读程序代码331由电子设备300运行时,导致该电子设备300执行上面所描述的方法中的各个步骤,具体来说,该计算机可读存储介质存储的计算机可读程序代码331可以执行上述任一实施例中示出的方法。计算机可读程序代码331可以以适当形式进行压缩。

应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1