一种基于时间维和空间维数据流压缩的处理器、设计方法与流程

文档序号:11143512阅读:427来源:国知局
一种基于时间维和空间维数据流压缩的处理器、设计方法与制造工艺

本发明涉及神经网络模型计算的硬件加速领域,特别涉及一种基于时间维和空间维数据流压缩的处理器、设计方法。



背景技术:

随着人工智能技术的飞速发展,智能感知与大数据分析已深入到人类生活的方方面面,例如图像分类、语音识别、在线翻译、无人驾驶汽车及智能机器人等技术均需要对真实世界的复杂信号进行实时地采集分析和处理,这就对感知模型和硬件处理器的性能提出了更高要求。

深度神经网络是人工智能领域具有最高发展水平的感知模型之一,该类网络通过建立模型模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来了突破性进展。但是目前利用深度神经网络进行实时任务分析大多需要依靠大规模高性能的处理器或通用图形处理器,这些设备成本高功耗大,面向便携式智能设备应用时,存在电路规模大、能量消耗大和产品价格昂贵等一系列问题,采用神经网络专用加速电路,即神经网络处理器是一种满足神经网络运算速度与功耗的一种行之有效方式。

在现有神经网络技术中,神经网络模型根据训练集,按照样本顺序进行多轮训练得到神经网络权重值,神经网络权重具有一定的稀疏性,存在大量数值为0的权重,这些权重与数据经过乘法和加法等运算后对运算结果不产生数值上的影响。这些神经网络中权重为0的权重值与深度神经网络的固有特性有关,由多次训练得到,且不易从算法角度消除。这些数值为0的权重在存储、载入和运算等过程会占用大量片上资源、消耗多余的工作时间,难以满足神经网络处理器的性能要求。此外,当前的深度神经网络在实际应用中网络规模越来越大、数据吞吐量越来越高、任务类型越来越复杂,这会导致神经网络处理器电路规模变大、数据传输效率降低、计算速度变差,神经网络系统数据流配置和调度的科学性也变得极为重要。

因此无论在学术界还是工业界,针对上述神经网络中数值为0元素,开展了大量研究。文献“Albericio J,Judd P,Hetherington T,et al.Cnvlutin:ineffectual-neuron-free deep neural network computing[C]//Computer Architecture(ISCA),2016ACM/IEEE 43rd Annual International Symposium on.IEEE,2016:1-13.”通过在片上提供大规模的存储单元实现大规模并行计算并以此为基础实现了对数据元素的压缩,但是该方法依赖大规模的片上存储单元以满足其在并行计算的需求,不适用于嵌入式设备;文献“Chen Y H,Emer J,Sze V.Eyeriss:A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks[J].2016.”通过共享数据和权重实现数据重用并采用电源门控的方法关闭数据0的计算,可以有效提高能量效率,但是该方法只能降低运算功耗而无法跳过数值为0的元素进而加快计算速度,文献“Chen T,Du Z,Sun N,et al.A High-Throughput Neural Network Accelerator[J].IEEE Micro,2015,35(3):24-32.”提出了一种神经网络设计方法,但未涉及对权重和数据的压缩。

发明“一种神经网络加速器及其运算方法”,该发明适用于神经网络算法领域,提供了一种神经网络加速器及其运算方法,该神经网络加速器包括片内存储介质、片内地址索引模块、核心计算模块以及多ALU装置,片内存储介质,用于存储外部传来的数据或用于存储计算过程中产生的数据;片内数据索引模块,用于执行运算时根据输入的索引映射至正确的存储地址;核心计算模块用于执行神经网络运算;多ALU装置用于从核心计算模块或片内存储介质获取输入数据执行核心计算模块无法完成的非线性运算。该发明在神经网络加速器中引入多ALU设计,从而提升非线性运算的运算速度,使得神经网络加速器更加高效,本发明与该发明的最大区别是在神经网络加速器中引入了数据压缩存储结构,提高了神经网络运算速度并降低了能量损耗。

发明“加速深度神经网络算法的加速芯片的运算装置及方法”,该发明提供一种加速深度神经网络算法的加速芯片的运算装置及方法,所述装置包括:向量加法处理器模块,进行向量的加法或减法、和/或深度神经网络算法中的pooling层算法的向量化的运算;向量函数值运算器模块,深度神经网络算法中的非线性求值的向量化运算;向量乘加器模块,进行向量的乘加运算;所述三个模块执行可编程指令,互相交互以计算神经网络的神经元值和网络输出结果、以及、代表输入层神经元对输出层神经元作用强度的突触权重变化量;所述三个模块中均设置有中间值存储区域,并对主存储器进行读取与写入操作。由此,能够减少对主存储器的中间值读取和写入次数,降低加速器芯片的能量消耗,避免数据处理过程中的数据缺失和替换问题,本发明与该发明的最大区别是在神经网络加速器中引入了数据压缩存储结构,提高了神经网络运算速度并降低了能量损耗。



技术实现要素:

针对神经网络处理器的上述缺陷,本发明提出一种基于时间维和空间维数据流压缩的处理器、设计方法。

本发明提出一种基于时间维和空间维数据流压缩的处理器,包括:

至少一个存储单元,用于存储操作指令与参与计算的数据;

至少一个存储单元控制器,用于对所述存储单元进行控制;

至少一个计算单元,用于执行神经网络的计算操作;

控制单元,与所述存储单元控制器与所述计算单元相连,用于经由所述存储单元控制器获得所述存储单元存储的指令,并且解析所述指令以控制所述计算单元;

计算单元阵列,所述计算单元阵列由m*n个所述计算单元组成,每个所述计算单元完成数据与神经网络权重的卷积运算;

至少一个权重检索单元,用于对权重进行检索,其中每个所述权重检索单元与所述计算单元相连。

所述存储单元包括输入数据存储单元、输出数据存储单元、权重存储单元、指令存储单元。

所述输入数据存储单元用于存储所述参与计算的数据,所述参与计算的数据包括原始特征图数据与参与中间层计算的数据;所述输出数据存储单元包括计算获得的神经元响应值;所述权重存储单元用于存储已经训练好的神经网络权重;所述指令存储单元用于存储参与计算的指令信息。

通过片下离线压缩的方法对所述参与计算的权重进行重编码,通过权重压缩格式实现权重压缩。

所述权重压缩格式包括<<权重值,索引p,索引q>>。

所述计算单元阵列中参与计算的数据包括时间维数据流与空间维数据流,所述时间维数据流指数据位于不同的x轴与y轴,但位于相同的z轴;所述空间维数据流指数据位于相同的x轴和y轴,但位于不同的z轴。

在所述计算单元阵列中,位于相同列的计算单元共享一组相同的参与计算的数据;位于相同行的计算单元会载入相同的一组权重值,在每个计算周期,每个计算单元仅会载入一组权重值的一个元素;位于不同行的计算单元会载入不同的权重值。

所述计算单元从与其相关联的所述输入数据存储单元中获得数据以进行计算,并且向与其相关联的所述输出数据存储单元写入数据。

本发明还提出一种设计所述基于时间维和空间维数据流压缩的处理器的设计方法,包括:

步骤1,所述控制单元对所述存储单元进行寻址,读取并解析下一步需要执行的指令;

步骤2,根据解析出的指令获得存储地址,并从所述存储单元中获取所述参与计算的数据与权重;

步骤3,将所述参与计算的数据与权重分别从所述输入存储单元与所述权重存储单元载入至所述计算单元;

步骤4,所述计算单元执行神经网络运算中的运算操作,其中通过所述权重检索单元保证了被压缩的数据可以与权重数据正确计算;

步骤5,将神经网络计算结果存储在所述输出存储单元中。

本发明还提出一种包括所述基于时间维和空间维数据流压缩的处理器的芯片。

由以上方案可知,本发明的优点在于:

本发明针对神经网络处理器中存在的运算速度差、能量效率低这一问题,通过离线压缩的方式,在片外将神经网络权重压缩为权重压缩格式,降低了神经网络处理器中权重资源的占用,并采用时间维和空间维数据流形式进行数据调度和运算,提高了运算速度,提升了能量效率。

附图说明

图1为本发明提供的神经网络处理器结构框图;

图2为本发明采用的时间维-空间维数据流示意图;

图3为本发明提出的一种适用于时间维-空间维数据流的计算单元阵列示意图;

图4为本发明提供的计算单元阵列通过时间维-空间维数据流进行神经网络计算过程示意图;

图5为本发明采用的一种权重压缩存储格式图;

图6为适用于时间维-空间维数据流的权重队列示意图;

图7为权重压缩过程示意图;

图8为本发明提出的神经网络处理器进行神经网络运算的流程图。

具体实施方式

本发明提出一种权重压缩存储格式,通过片下离线压缩的方法对原始数据进行重编码,进而实现权重压缩。该权重压缩格式包括<权重值,索引p,索引q>三部分组成。权重值为神经网络权重在被压缩前的原始值,索引p用来索引权重元素在一组权重中的空间位置,索引q用来索引权重元素在一组权重中的时间位置。在压缩过程中,经过重新编码得到权重值序列将不保留数值为零的元素,只保留非零元素。该方法保证了只有非零权重值参与神经网络计算。;

本发明还提出一种时间维空间维混合数据流形式,其主要特征为:计算单元阵列中数据包含了时间维数据流和空间维数据流两部分,在这里时间维数据流指数据位于不同的x轴和y轴,但位于相同的z轴;空间维数据流指数据位于相同的x轴和y轴,但位于不同的z轴。

本发明还提出一种适用于时间维空间维数据流的计算单元阵列,,该计算单元阵列由m*n个计算单元组成,每个计算单元完成数据和神经网络权重的卷积运算。在计算单元阵列中,位于相同列的计算单元共享一组相同的数据;位于相同行的计算单元会载入相同的一组权重值,在每个计算周期,每个计算单元仅会载入一组权重值的一个元素;位于不同行的计算单元会载入不同的权重值。

发明人在对神经网络处理器研究时,发现神经网络权重具有一定的稀疏性,存在大量数值为0的权重,这些权重与数据经过乘法和加法等运算后对运算结果不产生数值上的影响,这些数值为0的权重在存储、载入和运算等过程会占用大量片上资源、消耗多余的工作时间,难以满足神经网络处理器的性能要求。

发明人经过对现有神经网络处理器的计算结构进行分析发现,可以对神经网络权重值进行压缩,并采用时间维和空间维数据流进行神经网络计算,实现加快运算速度、降低能量损耗的目的。现有技术提供了神经网络加速器基本架构,本发明在现有技术基础上提出一种权重压缩存储格式,权重数据经过重编码后,在存储、传输和计算过程中采用权重压缩存储格式,并在神经网络计算单元增加权重检索结构,确保了被压缩后的权重可以和数据元素正确运算;并采用时间维和空间维数据流开展数据调度、存储和神经网络计算等操作。

为实现上述目的,本发明提供的神经网络处理系统,包括:

至少一个存储单元,用于存储操作指令和运算数据;

至少一个计算单元,用于执行神经网络计算;以及控制单元,与所述至少一个存储单元和所述至少一个计算单元相连,用于经由所述至少一个存储单元获得所述至少一个存储单元存储的指令,并且解析该指令以控制所述至少一个计算单元;

至少一个权重检索单元,用于对权重进行检索,其中每个所述权重检索单元与所述计算单元相连,保证具有压缩格式的权重在时间维和空间维数据流压缩中可与对应数据正确计算;

采用一种权重压缩格式,用于存储和传输参与神经网络计算的数据;

采用一种时间维-空间维数据流进行数据传输及计算;

根据本发明的神经网络处理器,所述权重为已经训练好的神经网络权重;

根据本发明的神经网络处理器,所述神经网络处理器进行神经网络计算时,已经训练好的神经网络权重会在片外被压缩为权重压缩格式,并存储在存储单元中;

本发明采用离线压缩的方式在片下将神经网络权重压缩为权重压缩格式,并通过输入接口传输至片上存储单元。

为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明旨在提供一种基于时间维和空间维数据流压缩的处理器,其在神经网络处理系统中用时间维-空间维数据流并采用权重压缩的方法,减少了片上存储开销、降低了片上数据带宽、提高了数据共享率并减少了无效计算,进而提升了神经网络处理器的运算速度及运行能量效率。

本发明提供的神经网络处理基于存储-控制-计算的结构;

存储结构用于存储参与计算的数据及处理器操作指令;

控制结构包括译码电路,用于解析操作指令,生成控制信号以控制片上数据的调度与存储以及神经网络计算过程;

计算结构包括算术逻辑单元,用于参与该处理器中的神经网络计算操作,压缩数据在计算结构中实现计算操作。

本发明还提出一种包括所述基于时间维和空间维数据流压缩的处理器的芯片。

图1为本发明提供的一种神经网络处理器系统101,该系统架构由六个部分构成,包括输入数据存储单元102、控制单元103、输出数据存储单元104、权重存储单元105、指令存储单元106、计算单元阵列107。

输入数据存储单元102用于参与计算的数据,该数据包括原始特征图数据和参与中间层计算的数据;输出数据存储单元104包括计算得到的神经元响应值;权重存储单元105用于存储已经训练好的神经网络权重;指令存储单元106存储参与计算的指令信息,指令被解析来实现神经网络计算。

控制单元103分别与输出数据存储单元104、权重存储单元105、指令存储单元106、计算单元107,控制单元103获得保存在指令存储单元106中的指令并且解析该指令,控制单元103可根据解析指令得到的控制信号控制计算单元进行神经网络计算。

计算单元107用于根据控制单元103的产生的控制信号来执行相应的神经网络计算。计算单元107与一个或多个存储单元相关联,计算单元107可以从与其相关联的输入数据存储单元102中的数据存储部件获得数据以进行计算,并且可以向该相关联的输出数据存储单元104写入数据。计算单元107完成神经网络算法中的大部分运算,即向量乘加操作等。此外,由于载入到计算单元107中参与计算的权重格式为权重压缩格式,因此在计算单元107中还应包括权重检索子单元,该子单元用于保证被压缩的权重可以与权重正确计算。

图2为本发明提出的一种时间维空间维混合数据流形式,其主要特征为:计算单元阵列中数据包含了时间维数据流和空间维数据流两部分,在这里时间维数据流指数据位于不同的x轴和y轴,但位于相同的z轴;空间维数据流指数据位于相同的x轴和y轴,但位于不同的z轴。

图3为本发明提出的一种适用于时间维空间维数据流的计算单元阵列示意图。该计算单元阵列由m*n个计算单元组成,每个计算单元完成数据和神经网络权重的卷积运算。在计算单元阵列中,位于相同列的计算单元共享一组相同的数据;位于相同行的计算单元会载入相同的一组权重值,在每个计算周期,每个计算单元仅会载入一组权重值的一个元素;位于不同行的计算单元会载入不同的权重值。本发明提供的适用于时间空间数据流计算单元阵列。

图4以3*1的计算单元(PE)阵列为例,详细阐述本发明提供的计算单元阵列通过时间空间数据流进行神经网络计算的过程。如图4,权重规模大小为2*2*4,数据规模大小为4*2*4,权重依据其空间位置被分为四组,其中位于相同x轴和相同y轴的权重元素被分为一组,四组权重分别为Ax、Bx、Cx和Dx(x=0,1,2,3),PE的具体工作过程如下:

在第0个周期,数据①②③分别载入到计算单元PE0、PE1和PE2中,权重元素A0载入到计算单元PE0中,数据①和权重元素A0在计算单元PE0中进行乘法等相关操作;

在第1个周期,权重元素A0向右移动至计算单元PE1中,权重元素A1载入到计算单元PE0中;

在第2个周期,权重元素A0和A1同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素A2载入到计算单元PE0中;

在第3个周期,权重元素A1和A2同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素A3载入到计算单元PE0中,此时第一组权重元素Ax(x=0,1,2,3)已全部载入至计算单元阵列中;

在第4个周期,权重元素A2和A3同时右移,分别载入到计算单元PE2和计算单元PE1中,下一组权重元素Bx(x=0,1,2,3)中的第一个元素B0载入到计算单元PE0中,此外数据②载入至计算单元PE0中;

在第5个周期,权重元素A3和B0同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素B1载入到计算单元PE0中,此外数据③载入至计算单元PE1中;

在第6个周期,权重元素B0和B1时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素B2载入到计算单元PE0中,此外数据④载入至计算单元PE2中;

在第7个周期,权重元素B1和B2同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素B3载入到计算单元PE0中,此时第二组权重元素Bx(x=0,1,2,3)已全部载入至计算单元阵列中;

在第8个周期,权重元素B2和B3同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素C0载入到计算单元PE0中,此外数据⑤载入至计算单元PE0中;

在第9个周期,数据⑥分别载入到计算单元PE1中,权重元素C0向右移动至计算单元PE1中,权重元素C1载入到计算单元PE0中;

在第10个周期,权重元素C0和C1同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素C2载入到计算单元PE0中,此外数据⑦载入至计算单元PE2中;

在第11个周期,权重元素C1和C2同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素C3载入到计算单元PE0中,此时第三组权重元素Cx(x=0,1,2,3)已全部载入至计算单元阵列中;

在第12个周期,权重元素C2和C3同时右移,分别载入到计算单元PE2和计算单元PE1中,下一组权重元素Dx(x=0,1,2,3)中的第一个元素D0载入到计算单元PE0中,此外数据⑥载入至计算单元PE0中;

在第13个周期,权重元素C3和D0同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素D1载入到计算单元PE0中,此外数据⑦载入至计算单元PE1中;

在第14个周期,权重元素D1和D0同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素D2载入到计算单元PE0中,此外数据⑧载入至计算单元PE2中;

在第15个周期,权重元素D2和D1同时右移,分别载入到计算单元PE2和计算单元PE1中,权重元素D3载入到计算单元PE0中;

在第16个周期,权重元素D3和D2同时右移,分别载入到计算单元PE2和计算单元PE1中;

在第17个周期,权重元素D3右移,载入到计算单元PE2中,此时上述权重规模大小为2*2*4与数据规模大小为4*2*4的卷积运算结束。

为减少片上存储资源并提高运算效率,图5为本发明采用一种权重压缩存储格式,通过片下离线压缩的方法对原始数据进行重编码,进而实现权重压缩。该权重压缩格式包括<权重值,索引p,索引q>三部分组成,权重值为神经网络权重在被压缩前的原始值,索引p用来索引权重元素在一组权重中的空间位置,索引q用来索引权重元素在一组权重中的时间位置,在压缩过程中,经过重新编码得到权重值序列将不保留数值为零的元素,只保留非零元素,该方法保证了只有非零权重值参与神经网络计算。

采用权重压缩格式的多组权重进入计算单元阵列进行卷积操作的形式如图6,计算单元阵列中每一行的权重与图6中权重压缩格式中的权重一一对应,每一个权重元素包括权重值、索引p和索引q两部分。

图7以两个计算单元为例阐述多计算单元情形。图7中包含两个权重队列,在权重压缩前对各个权重队列进行分组,每组四个权重元素,在实际应用中分组可依据神经网络的结构或控制调度方式。在每个权重元素组内对权重进行压缩,将数值为0的元素移出至队列外,对剩下的非零元素进行重编码,保留权重值,依据分组确定索引p的数值并依据组内位置确定索引q的数值。不同权重队列中具有相同索引p值的权重元素组在压缩后需要保证相同的元素长度,对于长度较短的权重组,需要补0处理,如权重队列0中的第0组、第1组、第2组和权重队列1中的第3组。

以权重压缩格式存储权重具有两点优势,首先只存储权重中的非零元素,会大大减少内存占用;其次,只将非零元素载入到计算单元中,提升了计算速度并提高了计算单元利用率。

本发明还提出一种基于时间维和空间维数据流压缩的处理器的设计方法,图8是本发明一种神经网络计算过程的流程图,该方法包括:

步骤S1,控制单元对存储单元寻址,读取并解析下一步需要执行的指令;

步骤S2,根据解析指令得到的存储地址从存储单元中获取输入数据;

步骤S3,将数据和权重分别从输入存储单元和权重存储单元载入至计算单元;

步骤S4,计算单元执行神经网络运算中的运算操作,其中数据检索结构保证了被压缩的数据可以与权重数据正确计算;

步骤S5,将以神经网络计算结果存储在输出存储单元中。

本发明针对神经网络处理器中存在的运算速度差、能量效率低一等问题,在神经网络处理系统中用时间维-空间维数据流,并通过离线压缩的方式,在片外将神经网络权重压缩为权重压缩格式,降低了神经网络处理器中资源占用,提高了运算速度,提升了能量效率。

应当理解,本发明针对神经网络处理器中存在的运算速度差、能量效率低这一问题,通过离线压缩的方式,在片外将神经网络权重压缩为权重压缩格式,降低了神经网络处理器中权重资源的占用,并采用时间维和空间维数据流形式进行数据调度和运算,提高了运算速度,提升了能量效率。

以上所述仅为本发明示意性的具体实施方式,并非用以限定本发明的范围。任何本领域的技术人员,在不脱离本发明的构思和原则的前提下所作的等同变化、修改与结合,均应属于本发明保护的范围。

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