神经网络数据处理装置、方法和电子设备与流程

文档序号:20689093发布日期:2020-05-08 19:09阅读:154来源:国知局
神经网络数据处理装置、方法和电子设备与流程

本申请涉及计算机技术中的人工智能芯片技术领域,尤其涉及一种神经网络数据处理装置、方法和电子设备。



背景技术:

目前神经网络被广泛应用,例如:深度卷积神经网络(convolutionaldeepnueralnetworks,cdnn)被广泛应用于互联网应用,如语音识别,图像识别,自然语言处理等应用。然而,神经网络计算往往在神经网络处理器(neuralprocessingunit,npu)内完成,而在执行神经网络计算后,需要将计算结果搬回片外存储器;由于片外存储器的带宽有限,在许多实际业务场景中,片内外数据搬运时间会超过实际计算时间,从而导致神经网络的性能比较差。



技术实现要素:

本申请提供一种神经网络数据处理装置、方法和电子设备,以解决神经网络的性能比较差的问题。

第一方面,本申请提供一种神经网络数据处理装置,包括:

指令解析模块,用于将直接存储访问(direct-memoryaccess,dma)任务拆分成多个子任务,以及获取每个子任务对应的数据子分块的配置信息,其中,子任务与神经网络搬运数据中的数据子分块一一对应;

数据读取模块,用于依据所述配置信息,读取第一数据子分块,其中,所述第一数据子分块为所述多个子任务对应的数据子分块中的数据子分块;

数据处理模块,用于对所述第一数据子分块进行压缩;

数据写出模块,用于输出所述第一数据子分块经过所述压缩的压缩数据。

由于按照数据子分块进行压缩,从而可以提高数据搬运的效率,进而提高神经网络的性能。

可选的,所述数据处理模块还用于对所述第一数据子分块进行数据处理。

由于对第一数据子分块进行数据处理,从而可以提高上述装置的数据处理性能。

可选的,所述数据处理模块包括:

原始数据缓存,用于缓存所述第一数据子分块;

压缩算法模块,用于对所述第一数据子分块进行压缩,得到所述第一数据子分块经过所述压缩的压缩数据;

长度字段缓存,用于缓存所述压缩数据的长度;

压缩控制状态机,用于依据所述第一数据子分块的长度和所述压缩数据的长度判断所述第一数据子分块存在压缩收益,则产生第一选通信号,若依据所述第一数据子分块的长度和所述压缩数据的长度判断所述第一数据子分块不存在压缩收益,则产生第二选通信号,若所述长度缓存没有命中,则产生第三选通信号;

多路选取器,用于依据所述第一选通信号从所述压缩算法模块读取所述压缩信号,或者,依据所述第二选通信号从所述原始数据缓存读取所述第一数据子分块,或者依据所述第三选通信号从所述长度字段缓存读取所述长度。

该实施方式中,可以通过上述压缩控制状态机控制多路选取器输出合适的数据,这样可以实现数据长度可控,以避免预留过大的存储空间,以达到节约存储空间的效果。

可选的,所述配置信息包括所述第一数据子分块的地址信息、长度和子分块类型,所述数据读取模块包括:

数据拼接模块,用于依据所述第一数据子分块的配置信息,读取所述第一数据子分块,并将所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流。

由于将所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流,这样可以支持不连续的数据进行压缩,提高压缩处理的数据子分块的大小,进而提高压缩处理效率。

可选的,所述数据读取模块还包括:

数据输出命令缓存,用于读取所述配置信息,并向所述数据拼接模块发出读取命令请求;

数据缓存,用于缓存所述数据拼接模块输出的所述连续完整数据流;

数据输出状态机,用于将所述数据缓存中的所述连续完整数据流打包,并将打包后的数据输出给所述数据处理模块。

通过上述数据输出状态机可以准确有序地输出数据。

可选的,所述数据读取模块还包括:

读命令缓存,用于读取所述第一数据子分块的地址信息;

数据读取状态机,用于从所述读取命令缓存获取指令,并根据所述地址信息生成读取内部缓存所需的接口信号。

通过上述数据读取状态机可以准确有序地读取数据。

可选的,所述数据写出模块包括:

数据输出缓存,用于缓存所述第一数据子分块经过所述压缩的压缩数据;

配置信息缓存,用于缓存所述第一数据子分块的配置信息;

输出地址缓存,用于缓存所述第一数据子分块的目的地址;

接口时序生成模块,用于根据所述配置信息和所述目的地址,生成所述第一数据子分块的数据掩码,以及产生所述第一数据子分块对应的接口时序。

通过上述第一数据子分块的数据掩码和接口时序,可以使得在输出上述第一数据子分块可以准确有序地输出到指定的位置。

可选的,所述装置还包括:

地址产生模块,用于依据所述第一数据子分块的目的地址和所述压缩数据的长度,生成所述第一数据子分块的总线协议支持的地址通道信号,并输出所述地址通道信号。

通过上述地址通道信号可以支持压缩数据的随机访问,以进一步提高神经网络的性能。

第二方面,本申请提供一种电子设备,其特征在于,包括本申请提供的神经网络数据处理装置。

第三方面,本申请提供一种神经网络数据处理方法,包括:

将dma任务拆分成多个子任务,以及获取每个子任务对应的数据子分块的配置信息,其中,子任务与神经网络搬运数据中的数据子分块一一对应;

依据所述配置信息,读取第一数据子分块,其中,所述第一数据子分块为所述多个子任务对应的数据子分块中的数据子分块;

对所述第一数据子分块进行压缩,并输出所述第一数据子分块经过所述压缩的压缩数据。

由于按照数据子分块进行压缩,从而可以提高数据搬运的效率,进而提高神经网络的性能。

可选的,所述对所述第一数据子分块进行压缩,并输出所述第一数据子分块经过所述压缩的压缩数据,包括:

缓存所述第一数据子分块和所述第一数据子分块数据的长度;

对所述第一数据子分块进行压缩,得到所述第一数据子分块经过所述压缩的压缩数据,并记录所述压缩数据的长度;

依据所述第一数据子分块的长度和所述压缩数据的长度,判断所述第一数据子分块是否存在压缩收益,若存在压缩收益,则输出所述压缩数据,是不存在压缩收益,则输出所述第一数据子分块数据。

由于在所述压缩数据的长度小于所述第一数据子分块数据的长度的情况下,才输出所述压缩数据,这样可以实现数据长度可控,以避免预留过大的存储空间,以达到节约存储空间的效果。

可选的,所述配置信息包括所述第一数据子分块的地址信息,所述依据所述配置信息,读取第一数据子分块,包括:

依据所述第一数据子分块的地址信息,读取所述第一数据子分块,并将所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流。

由于将所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流,这样可以支持不连续的数据进行压缩,提高压缩处理的数据子分块的大小,进而提高压缩处理效率。

可选的,所述方法还包括:

缓存所述压缩数据的长度;

依据所述第一数据子分块的目的地址和所述压缩数据的长度,生成所述第一数据子分块的总线协议支持的地址通道信号,并输出所述地址通道信号。

通过上述地址通道信号可以支持压缩数据的随机访问,以进一步提高神经网络的性能。

上述申请中的一个实施例具有如下优点或有益效果:

指令解析模块,用于将直接存储访问dma任务拆分成多个子任务,以及获取每个子任务对应的数据子分块的配置信息,其中,子任务与神经网络搬运数据中的数据子分块一一对应;数据读取模块,用于依据所述配置信息,读取第一数据子分块,其中,所述第一数据子分块为所述多个子任务对应的数据子分块中的数据子分块;数据处理模块,用于对所述第一数据子分块进行压缩;数据写出模块,用于输出所述第一数据子分块经过所述压缩的压缩数据。所以克服了神经网络的性能比较差的技术问题,进而达到提高神经网络的性能的技术效果。

上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1是本申请提供的一种神经网络数据处理装置的结构图;

图2是本申请提供的数据子分块的分割示意图;

图3是本申请提供的数据处理模块的结构图;

图4是本申请提供的数据读取模块的结构图;

图5是本申请提供的数据写出模块的结构图;

图6是本申请提供的另一种神经网络数据处理装置的结构图;

图7是本申请提供的一种神经网络数据处理方法的流程图;

图8是本申请提供的另一种神经网络数据处理方法的流程图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

请参见图1,图1是本申请提供的一种神经网络数据处理装置的结构图,如图1所示,神经网络数据处理装置100包括:

指令解析模块101,用于将dma任务拆分成多个子任务,以及获取每个子任务对应的数据子分块的配置信息,其中,子任务与神经网络搬运数据中的数据子分块一一对应。

其中,上述神经网络数据处理装置100可以是用于神经网络计算的芯片(或者称作处理器),例如神经网络处理器(neuralprocessingunit,npu)或者硬件加速器。

其中,指令解析模块101可以是负责接收待处理指令,并对指令进行解析。以及将收到的dma任务(例如:数据搬运与处理任务)分解成多个子任务。

上述神经网络搬运数据可以是执行神经网络计算完成后得到的数据,例如:权重矩阵或者特征图(featuremap)等数据。而上述数据子分块可以是将上述搬运数据进行分割得到的数据子分块,例如:如图2所示,可以将搬运数据分割成基础块、对齐块和无重映射块这些数据子分块,其中,每个基础块的数据大小是固定的,该固定大小可以是预先配置的,具体可以根据实际需求进行配置,而对齐块和无重映射块是将搬运数据块分割成多个基础块之后剩下的无法构成基础块的子分块,具体可以如图2所示,右边剩下的子分块称作对齐块,而下面剩下的子分块称作无重映射块。

另外,上述获取每个子任务对应的数据子分块的配置信息可以是产生数据子分块的配置信息,且配置信息可以包括数据子分块的长度、地址和压缩信息等,其中,这里的压缩信息用于指示数据子分块是否压缩。

上述子任务与神经网络搬运数据中的数据子分块一一对应可以是,每个子任务对应神经网络搬运数据中的子分块,该数据可以是一个矩阵。之后,可以并为其他模块生成对应于每个子分块的配置信息,该配置信息可以称作任务配置信息。进一步的,上述配置信息可以包括其他模块处理一个子分块所需的各种信息,如数据的地址、长度、是否压缩等信息。

另外,指令解析模块101能够处理的指令可以包括dma配置指令、dma执行指令和dma同步指令等。其中,dma配置指令用于配置后续dma执行指令的参数;dma执行指令用于声明一个数据搬运任务的开始,使用的参数为其前面dma配置指令所设置;dma同步指令为系统的同步标记,在该指令前的全部指令执行完毕后,由装置返回一个处理完毕信号,完成与上层软硬件系统的同步。

进一步的,当指令解析模块101收到指令后,可以首先判断指令类型,如果为dma配置指令,则写入对应的内部寄存器,在指令解析模块101内部进行记录;如果为dma执行指令,则开始跟根据已有的内部寄存器配置,产生子分块的任务配置信息。如果为dma同步指令,则发送一个中断标记信号给响应处理模块,该标记记录了该标记发出前搬运数据量的总量。

另外,在神经网络数据处理装置100缓存功能使能时,指令解析模块101还可以根据子分块的目标地址判断缓存是否命中,并在缓存未命中时插入缓存刷新的配置信息。

进一步的,指令解析模块101处理指令后产生的任务配置信息可以包括4种类型,分别是基础块配置信息、对齐块配置信息、无重映射块配置信息和缓存块配置信息。

进一步的,指令解析模块101还可以设置地址重排功能是否使能,在不使能地址重排功能时,指令解析模块101将数据全部作为无重映射块处理,其中,作为无重映射块处理时,这些子分块可以不进行压缩。

另外,本申请中神经网络包括但不限于cdnn,例如:可以是其他深度神经网络。

数据读取模块102,用于依据所述配置信息,读取第一数据子分块,其中,所述第一数据子分块为所述多个子任务对应的数据子分块中的数据子分块。

其中,上述第一数据子分块可以是上述搬运数据中任一数据子分块,优选的,第一数据子分块可以是任一基础块。

上述依据所述配置信息,读取第一数据子分块可以是,依据读取配置信息在内部缓存中所指示的数据子分块。

其中,上述数据读取模块102可以从指令解析模块101获取配置信息,并依据配置信息,读取第一数据子分块,其中,这里读取可以是从上述装置的内部缓存中读取。例如:数据读取模块102从指令解析模块101获取配置信息,并完成从内部缓存的数据读取工作。进一步的,可以对读回后的数据进行整理,以整理得到某种内部数据格式(如axi协议、数据-数据有效信号组成的简单数据协议)传递给数据处理模块103。

数据处理模块103,用于对所述第一数据子分块进行压缩。

数据处理模块103获取数据读取模块102输出的第一数据子分块,并对其进行压缩。

本申请中,对数据子分块进行压缩可以采用包括但不限于零值压缩、行程编码、哈夫曼编码、哥伦布编码等压缩方式进行压缩。

数据写出模块104,用于输出所述第一数据子分块经过所述压缩的压缩数据。

数据写出模块104可以将上述压缩数据写入片外存储,进一步的,可以将数据处理模块处理完成的数据进行缓存,然后根据输出接口的要求产生对应的数据输出接口时序。

需要说明的是,本申请中上述装置的相关附图中虚线可以表示传输的是控制流,即用于模块之间的控制,而实线可以表示数据线,即模块之间的数据传输。

本实施例中,通过上述装置可以是实现按照数据子分块进行压缩,从而可以提高数据搬运的效率,进而提高神经网络的性能。

可选的,所述数据处理模块103还用于对所述第一数据子分块进行数据处理。

例如:对数据的移位、定点化、寻找最大值等等数据处理,具体可以是,对第一数据子分块的原始数据、压缩数据或者压缩长度进行数据的移位、定点化、寻找最大值等等数据处理。以提高数据处理性能。

可选的,如图3所示,所述数据处理模块103包括:

原始数据缓存1031,用于缓存所述第一数据子分块;

压缩算法模块1033,用于对所述第一数据子分块进行压缩,得到所述第一数据子分块经过所述压缩的压缩数据;

长度字段缓存1032,用于缓存所述压缩数据的长度;

压缩控制状态机1034,用于依据所述第一数据子分块的长度和所述压缩数据的长度判断所述第一数据子分块存在压缩收益,则产生第一选通信号,若依据所述第一数据子分块的长度和所述压缩数据的长度判断所述第一数据子分块不存在压缩收益,则产生第二选通信号,若所述长度缓存没有命中,则产生第三选通信号;

多路选取器1035,用于依据所述第一选通信号从所述压缩算法模块读取所述压缩信号,或者,依据所述第二选通信号从所述原始数据缓存读取所述第一数据子分块,或者依据所述第三选通信号从所述长度字段缓存读取所述长度。

其中,上述若所述长度缓存没有命中,则产生第三选通信号可以是,上述压缩数据的长度字段没有命中存储器的存储地址空间,从而产生第三选通信号,以使得多路选取器1035读取上述长度字段缓存1032缓存所述压缩数据的长度,并输出。具体可以是长度字段作为长度块来处理。

进一步的,如图3所示,数据处理模块103还可以包括:

数据移位模块1036,用于输出所述多路选取器读取的所述压缩信号或者所述第一数据子分块。

当然,这里的数据移位模块1036只是一个举例,例如:数据处理模块103还可以是包括用于一些数据的预处理操作的模块,如用于移位、定点化、寻找最大值等等数据处理的模块。

上述数据处理模块103可以是对数据读取模块102输出的各数据子分块进行实时压缩,压缩处理粒度为一个子分块。

其中,上述原始数据缓存1031、长度字段缓存1032、压缩算法模块1033、压缩控制状态机1034和多路选取器1035可以称作数据压缩模块。

其中,原始数据缓存1031可以接收全部从数据读取模块102发来的数据,存入缓存内部,并等待多路选择器读取。如果子分块为基础块,且压缩长度信息小于数据长度信息,原始数据缓存1031还可以将内部缓存的对应基础块原始信息置为无效,以释放存储空间;如果子分块为对齐块、无重映射块,以及压缩后长度大于等于原始长度的基础块,则由多路选择器1035从该模块中取出数据。

而长度字段缓存1032是为了减少长度字段写出次数设计的缓存,该缓存可以采用直接映射或其他映射方案,将缓存的存储空间对应于长度字段的实际存储地址,并可以只在缓存未命中或一个任务执行完毕后才统一将缓存中的数据写出。长度字段缓存1032可以从压缩算法模块1033接收每个基础块执行完压缩后输出的长度信息,并根据基础块目的地址,结合地址映射规则,获取对应的长度字段在缓存中的具体存储位置,并将该位置标记为已更新;当下一个需要处理的子分块为缓存块时,多路选择器1035从该模块中读取全部被标记为已更新的长度字段数据,同时清除所有已更新标记。

压缩算法模块1033用于根据压缩算法完成对基础块的压缩,其中,这里的压缩算法包括但不限于零值压缩、行程编码、哈夫曼编码、哥伦布编码等压缩方式进行压缩。当子分块为基础块时,压缩算法模块1033接收从数据读取模块发来的数据,并利用内部集成的压缩算法完成数据压缩,如果压缩后数据的长度大于等于原始数据长度,则直接输出原始数据长度,同时将压缩后数据置为无效,释放内部空间;如果压缩后数据的长度小于原始数据长度,则输出压缩后数据长度,并将压缩后数据长度置为有效,等待多路选择器模块选通后输出压缩后数据。压缩后数据输出完毕后,将存储位置置为无效,释放存储空间。

压缩控制状态机1034可以接收并处理指令解析模块102发出的配置信息,并根据配置信息中包含的子分块类型和数据长度信息,结合压缩算法模块1033提供的压缩长度信息,判断应该选取的数据通路:当子分块为基础块,且压缩长度信息小于数据长度信息,产生第一选通信号,即压缩算法模块通路选通信号;当子分块为基础块,且压缩长度信息大于等于数据长度信息,产生第二选通信号,即原始数据缓存通路选通信号;进一步的,当子分块为对齐块或无重映射分块,产生第二选通信号,即原始数据缓存通路选通信号;当子分块为缓存块,产生长度字段缓存通路选通信号。

多路选择器1035根据压缩控制状态机1034产生的通路选通信号,从对应通路取得数据并输出,即例如:依据所述第一选通信号从所述压缩算法模块读取所述压缩信号,或者,依据所述第二选通信号从所述原始数据缓存读取所述第一数据子分块。

数据移位模块1036可以是根据数据子分块的目的地址,将数据压缩模块输出的数据进行移位,使数据匹配对应的输出接口位宽。

该实施方式中,通过上述压缩模块可以实现数据处理模块103输出的数据长度可控,且还可以实现在dma通道中实现压缩,以降低缓存的开销。

可选的,所述配置信息包括所述第一数据子分块的地址信息、长度和子分块类型等,如图4所示,所述数据读取模块102包括:

数据拼接模块1021,用于依据所述第一数据子分块的配置信息,读取所述第一数据子分块,并将所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流。

其中,上述第一数据子分块的地址信息可以是非连续的地址信息,具体的,本申请中每个数据子分块的地址可以是非连续的地址,例如:如图2所示。也就是说,上述读取所述第一数据子分块为跳着读取,以第一数据子块为图2所示的基础块a例,第一次读取基础块a的第一行的数据,第二次读取基础块a的第二行的数据,并将第一行的数据和第二行的数据拼接,再下一行的数据,并与之前的数据拼接,从而得到所述第一数据子分块的连续完整数据流。

由于将所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流,这样可以支持不连续的数据进行压缩,提高压缩处理的数据子分块的大小,进而提高压缩处理效率。

可选的,所述数据读取模块102还包括:

数据输出命令缓存1022,用于读取所述配置信息,并向所述数据拼接模块发出读取命令请求;

数据缓存1023,用于缓存所述数据拼接模块输出的所述连续完整数据流;

数据输出状态机1024,用于将所述数据缓存中的所述连续完整数据流打包,并将打包后的数据输出给所述数据处理模块。

其中,上述配置信息还可以包括压缩信息,该压缩信息用于指示是否压缩。

上述数据输出命令缓存1022可以是从指令解析模块101读取所述长度和压缩信息中的至少一项,例如:如图4所示,从指令解析模块101接收数据配置信息,该数据配置信息可以是指令解析模块101产生的配置信息,至少包括数据子分块的长度和压缩信息中的至少一项,以及将数据配置信息进行暂存,接收到的配置信息分别用于发出读命令请求和对接收到的数据进行处理。

而上述数据缓存1023可以是对数据进行临时存储,避免后序的数据输出状态机处理不及时导致的数据丢失;进一步的,数据缓存1023还可以同时会提供缓存数据量给数据读取状态机,以控制发出读命令的数据量,避免接收过多数据使数据缓存溢出,导致数据丢失。

数据输出状态机1024可以是从数据输出命令缓存获取指令,并根据配置信息将数据缓存中的数据打包成约定的格式后经由内部数据接口发送给后序的数据处理模块。

可选的,所述数据读取模块102还包括:

读命令缓存1025,用于读取所述第一数据子分块的地址信息;

数据读取状态机1026,用于从所述读取命令缓存获取指令,并根据所述地址信息生成读取内部缓存所需的接口信号。

其中,上述读命令缓存1025可以是从指令解析模块101接收第一数据子分块的地址信息,例如:如图4所述,读地址配置信息,该地址配置信息为指令解析模块101产生的配置信息,至少包括第一数据子分块的地址信息。另外,读命令缓存1025接收到的配置信息分别用于发出读命令请求和对接收到的数据进行处理。

而数据读取状态机1026可以从读命令缓存1025获取指令,并根据配置信息产生读取内部缓存所需的接口信号。其中,这里的接口信号可以是用于触发内部进行数据读取的信号。

通过上述读命令缓存1025和数据读取状态机1026可以提高数据读取模块102的读取数据的准确性。

可选的,如图5所示,所述数据写出模块104包括:

数据输出缓存1041,用于缓存所述第一数据子分块经过所述压缩的压缩数据;

配置信息缓存1042,用于缓存所述第一数据子分块的配置信息;

输出地址缓存1043,用于缓存所述第一数据子分块的目的地址;

接口时序生成模块1044,用于根据所述配置信息和所述目的地址,生成所述第一数据子分块的数据掩码,以及产生所述第一数据子分块对应的接口时序。

数据写出模块负责将数据处理模块处理完成的数据进行缓存,然后根据输出接口的要求产生对应的数据输出接口时序。如图5所示,该模块包含数据输出缓存、配置信息缓存、接口时序生成模块以及输出地址缓存。

其中,上述数据输出缓存1041可以是接收和暂存经过数据处理模块103处理的待输出数据,具体可以包括压缩数据或者数据子分块的原始数据。

配置信息缓存1042可以是从指令解析模块101接收配置信息,该处的配置信息主要用于生成接口的数据掩码信号.

输出地址缓存1043可以是从写地址接口截获数据子分块的目标地址,即输出地址,供接口时序生成模块1044使用。

接口时序生成模块1044可以从配置信息缓存1042中取得配置信息,从数据输出缓存1041中取得数据,按照配置信息为数据产生对应的数据掩码,然后可以根据数据输出接口的协议规则,产生对应的接口时序。进一步的,在接口时序生成模块1044还可以针对一些数据子分块优化部分写,其中,部分写为写入数据的位宽小于存储器的位宽。例如:判断当前数据子分块的起始存储地址是否对齐,若不对齐,则判断前一数据子分块与当前数据子分块的存储地址是否连续,若连续,则判断前一数据子分块是否进行了压缩,若进行了压缩,则将当前数据子分块的第一拍(beat)进行完整写,其中,这里的完整写是指写入数据的位宽为存储器的位宽,从而减少了当前数据子分块的部分写的次数,即进行了数据子分块优化部分写,减少写的次数,以进一步提高神经网络的处理性能。进一步的,若完成部分写优化,可以修改数据掩码,以使得修改后掩码表示将部分写转换为完整写。

进一步的,接口时序生成模块1044也可以从输出地址缓存1043获取地址产生情况的信息,对地址通道和数据通道分离的总线协议,可以实现两个通道数据先后顺序的控制。

该实施方式中,通过数据写出模块104可以优化神经网络的写入性能。

可选的,如图6所示,上述装置还包括:

地址产生模块105,用于依据所述第一数据子分块的目的地址和所述压缩数据的长度,生成所述第一数据子分块的总线协议支持的地址通道信号,并输出所述地址通道信号。

其中,上述第一数据子分块的目的地址可以是,第一数据子分块在片外存储的存储地址,或者输出地址。

上述依据所述第一数据子分块的目的地址和所述压缩数据的长度,生成所述第一数据子分块的总线协议支持的地址通道信号可以是,依据压缩数据的长度利用地址拆分逻辑对目的地址进行拆分,以得到第一数据子分块的总线协议支持的地址通道信号。例如:当压缩数据的长度大于总线协议支持最大随机访问的地址时,将第一数据子分块的目的地址进行拆分,如拆分成128b或者64b的地址通道信号,从而通过地址通道信号以支持数据随机访问;或者,当压缩数据的长度小于总线协议支持最大随机访问的地址时,将第一数据子分块的目的地址作为地址通道信号,从而通过地址通道信号以支持数据随机访问。

进一步的,如果压缩功能使能,且处理数据子分块为基础块,则地址产生模块105还可以额外接收数据处理模块103输出的压缩长度信息,然后结合所接收的配置信息,生成对应总线协议需要的地址通道信号。

可选的,如图6所示,上述装置还包括:

响应处理模块106,用于处理片外存储器、总线或片上网络返回的响应信号,并结合指令解析模块101送来的中断标记,产生处理完毕中断,并将中断发送给指令解析模块101。

例如:指令解析模块101接收到指令后,判断为dma同步指令,则发送一个中断标记信号给响应处理模块,该标记记录了该标记发出前搬运数据量的总量。

进一步的,响应处理模块106可以对指令解析模块101的配置信息输出接口进行截获,并使用指令计数器进行计数;在收到指令解析模块101送来的中断标记时,响应处理模块106将当前指令计数器的数值保存下来;同时,响应处理模块106还可以接收写响应接口的信息,并使用响应计数器进行计数;响应处理模块106不断比较中断标记到来时保存下来的指令计数器数值和当前响应计数器的数值,当后者大于等于前者时,表示该中断标记前的全部指令已经执行完毕,产生处理完毕中断,发送给指令解析模块101,同时将保存下来的指令计数器数值设置为无效。

进一步的,如图6所示,上述装置还可以包括:写响应接口、读数据接口、读地址接口、写数据接口和写地址接口,其中,写响应接口、写数据接口和写地址接口可以为片外存储器的写接口,或连接到片外存储器写接口的总线、片上网络的写接口,而上述读数据接口和读地址接口可以为片上缓存的读接口,或连接到片上缓存读接口的总线、片上网络的读接口。

本实施例中,通过上述装置可以是实现按照数据子分块进行压缩,从而可以提高数据搬运的效率,进而提高神经网络的性能。

本申请还提供的一种电子设备,该电子设备包括本申请提供的神经网络数据处理装置,该电子设备包括但不限于手机、计算机、服务器等可以进行神经网络运算的电子设备。

请参见图7,图7是本申请提供的一种神经网络数据处理方法的流程图,如图7所示,包括以下步骤:

步骤s701、将dma任务拆分成多个子任务,以及获取每个子任务对应的数据子分块的配置信息,其中,子任务与神经网络搬运数据中的数据子分块一一对应。

其中,上述dma任务可以是搬运数据任务,或者dma任务可以是数据搬运与处理任务。

上述神经网络搬运数据可以是执行神经网络计算完成后得到的数据,例如:权重矩阵或者特征图(featuremap)等数据。而上述数据子分块可以是将上述搬运数据进行分割得到的数据子分块,例如:如图2所示,可以将搬运数据分割成基础块、对齐块和无重映射块这些数据子分块,其中,每个基础块的数据大小是固定的,该固定大小可以是预先配置的,具体可以根据实际需求进行配置,而对齐块和无重映射块是将搬运数据块分割成多个基础块之后剩下的无法构成基础块的子分块,具体可以如图2所示,右边剩下的子分块称作对齐块,而下面剩下的子分块称作无重映射块。

另外,上述获取每个子任务对应的数据子分块的配置信息可以是产生数据子分块的配置信息,且配置信息可以包括数据子分块的长度、地址和压缩信息等,其中,这里的压缩信息用于指示数据子分块是否压缩。

上述子任务与神经网络搬运数据中的数据子分块一一对应可以是上述dma任务对应上述神经网络搬运数据,而将dma任务拆分成子任务后,对应将神经网络搬运数据拆分成数据子分块。例如:以dma任务为数据搬运任务为例,子任务可以是搬运一个数据子分块的任务,以dma任务为数据搬运和处理任务为例,子任务可以是搬运并处理一个数据子分块的任务。

另外,本申请中神经网络包括但不限于cdnn,例如:可以是其他深度神经网络。

步骤s702、依据所述配置信息,读取第一数据子分块,其中,所述第一数据子分块为所述多个子任务对应的数据子分块中的数据子分块。

其中,上述第一数据子分块可以是上述搬运数据中任一数据子分块,优选的,第一数据子分块可以是任一基础块。

上述依据所述配置信息,读取第一数据子分块可以是,依据读取配置信息在内部缓存中所指示的数据子分块。

需要说明的是,本申请中步骤s702和步骤s703以第一数据子分块进行描述,由于上述第一数据子分块可以是上述搬运数据中任一数据子分块,从而本申请针对任一数据子分块均可以执行步骤s702和步骤s703。

步骤s703、对所述第一数据子分块进行压缩,并输出所述第一数据子分块经过所述压缩的压缩数据。

本申请中,对数据子分块进行压缩可以采用包括但不限于零值压缩、行程编码、哈夫曼编码、哥伦布编码等压缩方式进行压缩。

而上述输出第一数据子分块经过所述压缩的压缩数据可以是,压缩数据写入片外存储器。

需要说明的是,本申请提供的神经网络数据处理方法可以应用于用于神经网络计算的芯片(或者称作处理器),例如:npu或者硬件加速器。

本申请中,通过上述步骤可以实现按照数据子分块进行压缩,从而可以提高数据搬运的效率,进而提高神经网络的性能,以及提升了神经网络处理器的等效带宽。

请参见图8,图8是本申请提供的另一种神经网络数据处理方法的流程图,如图8所示,包括以下步骤:

步骤s801、将dma任务拆分成多个子任务,以及获取每个子任务对应的数据子分块的配置信息,其中,子任务与神经网络搬运数据中的数据子分块一一对应。

步骤s802、依据所述配置信息,读取第一数据子分块,其中,所述第一数据子分块为所述多个子任务对应的数据子分块中的数据子分块。

可选的,所述配置信息包括所述第一数据子分块的地址信息,所述依据所述配置信息,读取第一数据子分块,包括:

依据所述第一数据子分块的地址信息,读取所述第一数据子分块,并将所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流。

其中,上述第一数据子分块的地址信息可以是非连续的地址信息,具体的,本申请中每个数据子分块的地址可以是非连续的地址,例如:如图2所示。也就是说,上述读取所述第一数据子分块为跳着读取,以第一数据子块为图2所示的基础块a例,第一次读取基础块a的第一行的数据,第二次读取基础块a的第二行的数据,并将第一行的数据和第二行的数据拼接,再下一行的数据,并与之前的数据拼接,从而得到所述第一数据子分块的连续完整数据流。

由于将所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流,这样可以支持不连续的数据进行压缩,提高压缩处理的数据子分块的大小,进而提高压缩处理效率。

步骤s803、对所述第一数据子分块进行压缩,并输出所述第一数据子分块经过所述压缩的压缩数据。

可选的,所述对所述第一数据子分块进行压缩,并输出所述第一数据子分块经过所述压缩的压缩数据,包括:

缓存所述第一数据子分块和所述第一数据子分块数据的长度;

对所述第一数据子分块进行压缩,得到所述第一数据子分块经过所述压缩的压缩数据,并记录所述压缩数据的长度;

依据所述第一数据子分块的长度和所述压缩数据的长度,判断所述第一数据块是否存在压缩收益,若存在压缩收益,则输出所述压缩数据,是不存在压缩收益,则输出所述第一数据子分块数据。

依据所述第一数据子分块的长度和所述压缩数据的长度,判断所述第一数据子分块是否存在压缩收益可以是,判断压缩数据的长度是否小于第一数据子分块的长度,若是,则判断第一数据子分块存在压缩收益,反之,确定不存在压缩收益。或者可以是依据压缩数据的长度确定压缩数据传输的所需拍(beat)数,以及依据第一数据子分块的长度确定第一数据块传输的所需拍数,若压缩数据传输的所需拍数小于第一数据子分块传输的所需拍数,则确定第一数据子分块存在压缩收益,否则,确定不存在压缩收益。

上述缓存所述第一数据子分块和所述第一数据子分块数据的长度可以是理解为,缓存第一数据子分块的原始数据,以及原始长度。

上述压缩可以是在npu的dma中执行压缩,由于在dma中进行压缩,这样不需要在npu单独设置一块较大的缓存,以降低npu的空间开销。

由于在所述压缩数据的长度小于所述第一数据子分块数据的长度的情况下,才输出所述压缩数据,这样可以实现数据长度可控,以避免预留过大的存储空间,以达到节约存储空间的效果。

可选的,所述方法还包括:

步骤s804、缓存所述压缩数据的长度;

步骤s805、依据所述第一数据子分块的目的地址和所述压缩数据的长度,生成所述第一数据子分块的总线协议支持的地址通道信号,并输出所述地址通道信号。

其中,上述第一数据子分块的目的地址可以是,第一数据子分块在片外存储的存储地址,或者输出地址。

上述依据所述第一数据子分块的目的地址和所述压缩数据的长度,生成所述第一数据子分块的总线协议支持的地址通道信号可以是,依据压缩数据的长度利用地址拆分逻辑对目的地址进行拆分,以得到第一数据子分块的总线协议支持的地址通道信号。例如:当压缩数据的长度大于总线协议支持最大随机访问的地址时,将第一数据子分块的目的地址进行拆分,如拆分成128b或者64b的地址通道信号,从而通过地址通道信号以支持数据随机访问;或者,当压缩数据的长度小于总线协议支持最大随机访问的地址时,将第一数据子分块的目的地址作为地址通道信号,从而通过地址通道信号以支持数据随机访问。

该实施方式中,通过上述地址通道信号可以支持压缩数据的随机访问,以进一步提高神经网络的性能。

本实施例中,在图1所示的实施例的基础上增加了多种可选的实施方式,且均可以提高神经网络的性能。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

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