一种数据管理方法、神经网络处理器和终端设备转让专利

申请号 : CN202010590844.1

文献号 : CN111797034A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曹庆新李炜

申请人 : 深圳云天励飞技术有限公司

摘要 :

本申请适用于神经网络技术领域,提供了一种数据管理方法、神经网络处理器和终端设备。该方法应用于的神经网络处理器包括任务管理器、内存单元、控制器、缓存空间、计算单元、向缓存空间写数据的第一DMA、从缓存空间读数据的第二DMA。该方法包括:任务管理器根据数据缓存策略,配置每一个DMA的工作参数,工作参数包括数据存储模式、访问空间的大小、访问起始地址和访问结束地址;每一个DMA根据工作参数,与控制器联合控制运算数据在内存单元、缓存空间以及计算单元之间的传输与存储。本实施例提供的方法能够减少神经网络处理器缓存运算数据的时长,提高神经网络的计算速率。

权利要求 :

1.一种数据管理方法,其特征在于,应用于神经网络处理器,所述神经网络处理器包括任务管理器、内存单元、控制器、缓存空间、计算单元、向所述缓存空间写数据的第一DMA、从所述缓存空间读数据的第二DMA;所述方法包括:所述任务管理器根据数据缓存策略,配置每一个DMA的工作参数,所述工作参数包括数据存储模式、访问空间的大小、访问起始地址和访问结束地址;

每一个DMA根据所述工作参数,与所述控制器联合控制运算数据在所述内存单元、所述缓存空间以及所述计算单元之间的传输与存储,所述运算数据包括输入数据、权重数据和结果数据。

2.根据权利要求1所述的方法,其特征在于,所述数据缓存策略包括:对于所述缓存空间从所述计算单元获取的第1层至第n层神经网络的结果数据,所述缓存空间将第i层神经网络的结果数据存储至本地,以由所述计算单元在第i+1层神经网络计算过程中直接调取;只将第n层神经网络的结果数据发送至所述内存单元;

其中,n为神经网络的总层数,i∈[1,n-1],且i为整数。

3.根据权利要求1所述的方法,其特征在于,所述数据缓存策略包括:从所述权重数据中确定复用数据;

在所述缓存空间中确定复用区域,所述复用区域大于或等于所述复用数据所占存储空间的大小;

将所述复用数据缓存至所述复用区域。

4.根据权利要求1所述的方法,其特征在于,所述数据缓存策略包括:在第1层至第m层神经网络计算过程中,对于所述缓存空间从所述计算单元获取的第1层至第m层神经网络的结果数据,将第j层神经网络的结果数据存储至本地,以由所述计算单元在第j+1层神经网络计算过程中直接调取;将第m层到第n层神经网络的结果数据发送至所述内存单元;

在第m+1层至第n层神经网络计算过程中,从所述权重数据中确定复用数据;在所述缓存空间中确定复用区域,所述复用区域大于或等于所述复用数据所占存储空间的大小;将所述复用数据缓存至所述复用区域;

其中,n为神经网络的总层数,m<n且m为整数,j∈[1,m-1],且j为整数。

5.根据权利要求3或4所述的方法,其特征在于,所述数据缓存策略还包括:当所述复用数据的复用比例大于0小于100%时,所述缓存空间中还包括非复用区域,所述非复用区域用于缓存所述权重数据中的非复用数据。

6.根据权利要求1所述的方法,其特征在于,所述数据存储模式包括静态存储模式或者先进先出FIFO存储模式。

7.根据权利要求6所述的方法,其特征在于,当所述数据存储模式为FIFO存储模式时,所述每一个DMA根据所述工作参数,与所述控制器联合控制运算数据在所述内存单元、所述缓存空间以及所述计算单元之间的传输与存储,包括:所述控制器检测所述缓存空间中与第一DMA对应的FIFO队列的空满状态;

当所述FIFO队列不满时,所述控制器向所述第一DMA发送高电平信号;

响应于所述高电平信号,所述第一DMA向所述控制器发送写访问请求,所述写访问请求携带所述FIFO队列的目标写入地址和从所述内存单元或者所述计算单元读取的待写入数据;

所述控制器根据写访问请求,将所述待写入数据,写入所述FIFO队列中与目标写入地址对应的存储区域。

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:

当所述FIFO队列已满时,所述控制器向所述第一DMA发送低电平信号;

响应于所述低电平信号,所述第一DMA暂停向所述FIFO队列写入数据。

9.根据权利要求6所述的方法,其特征在于,当所述数据存储模式为FIFO存储模式时,所述每一个DMA根据所述工作参数,与所述控制器联合控制运算数据在所述内存单元、所述缓存空间以及所述计算单元的传输与存储,还包括:所述控制器检测所述缓存空间中与第二DMA对应的FIFO队列的空满状态;

当所述FIFO队列不空时,所述控制器向所述第二DMA发送高电平信号;

响应于所述高电平信号,所述第二DMA向所述控制器发送读访问请求,所述读访问请求包括所述FIFO队列中的目标读取地址;

所述第二DMA根据所述目标读取地址,从所述FIFO队列读取运算数据,并将读取的运算数据写入所述内存单元或者所述计算单元。

10.根据权利要求7所述的方法,其特征在于,所述方法还包括:

当所述FIFO队列为空时,所述控制器向所述第二DMA发送低电平信号;

响应于所述低电平信号,所述第二DMA暂停从所述FIFO队列读取数据。

11.根据权利要求6所述的方法,其特征在于,当所述数据存储模式为所述FIFO存储模式时,所述工作参数还包括所述FIFO队列的握手颗粒度K,所述握手颗粒度K用于表示第二DMA开始从所述FIFO队列中读数据时,第一DMA向所述FIFO队列写数据操作的执行次数,其中,K为整数。

12.根据权利要求11所述的方法,其特征在于,所述方法还包括:所述第一DMA每发送第K个写访问请求时,向所述控制器发送一个写指针加1指令;以及,响应于所述写指针加1指令,所述控制器将所述FIFO队列的写指针加1;

所述第二DMA每发送第 K个读访问请求时,向所述控制器发送一个读指针加1指令;以及,响应于所述读指针加1指令,将所述FIFO队列的读指针加1;其中,A为第一DMA的写数据宽度,B为第二DMA的读数据宽度,其中, 为整数。

13.一种神经网络处理器,其特征在于,包括:任务管理器、内存单元、控制器、缓存空间、计算单元、向所述缓存空间写数据的第一DMA、从所述缓存空间读数据的第二DMA;

所述任务管理器,用于根据数据缓存策略,配置每一个DMA的工作参数,所述工作参数包括数据存储模式、访问空间的大小、访问起始地址和访问结束地址;

每一个DMA用于根据所述工作参数,与所述控制器联合控制运算数据在所述内存单元、所述缓存空间以及所述计算单元之间的传输与存储,所述运算数据包括输入数据、权重数据和结果数据。

14.一种终端设备,包括存储器、主处理器、神经网络处理器以及存储在所述存储器中并可在所述神经网络处理器上运行的计算机程序,其特征在于,所述神经网络处理器执行所述计算机程序时实现如权利要求1-12任一项所述的方法。

说明书 :

一种数据管理方法、神经网络处理器和终端设备

技术领域

[0001] 本申请属于神经网络技术领域,尤其涉及一种数据管理方法、神经网络处理器和终端设备。

背景技术

[0002] 在神经网络处理器中,存储运算数据的内存单元和计算单元之间设置有一个缓存空间,例如静态随机存储器(Static Random Access Memory,SRAM)。
[0003] 用以缓存运算数据。
[0004] 缓存空间中配置有输入存储区域、权重存储区域和结果存储区域,以同时存储不同的运算数据,其中包括输入数据、权重数据和结果数据。目前,各个存储区域的大小和存储模式通常是固定的,但随着神经网络计算的进行,运算数据的结构是不断变化的,例如输入数据会逐渐变少,而权重数据会逐渐增多,使得权重存储区域无法及时缓存海量的权重数据,导致神经网络处理器数据缓存过程耗时较长、计算速率较慢。

发明内容

[0005] 本申请实施例提供了一种数据管理方法、神经网络处理器和终端设备,可以改善神经网络计算过程中,数据缓存过程耗时较长、计算速率较慢的问题。
[0006] 第一方面,本申请实施例提供一种数据管理方法,应用于神经网络处理器,所述神经网络处理器包括任务管理器、内存单元、控制器、缓存空间、计算单元、向所述缓存空间写数据的第一DMA、从所述缓存空间读数据的第二DMA;所述方法包括:
[0007] 所述任务管理器根据数据缓存策略,配置每一个DMA的工作参数,所述工作参数包括数据存储模式、访问空间的大小、访问起始地址以及访问结束地址;
[0008] 每一个DMA根据所述工作参数,与所述控制器联合控制运算数据在所述内存单元、所述缓存空间以及所述计算单元之间的传输与存储,所述运算数据包括输入数据、权重数据和结果数据。
[0009] 在本实施例中,由于DMA是用于在内存单元与缓存空间之间,或者缓存空间与计算单元之间搬运数据的元件,其可访问的地址范围确定了其所搬运数据的存储空间的大小,其数据存储模式确定了搬运数据的方式。因此,根据数据缓存策略配置各个配置DMA的工作参数(例如数据存储模式、访问起始地址、访问结束地址等),能够使DMA与控制器联合根据数据缓存策略去缓存运算数据,减少数据缓存过程的耗时,从而提高神经网络的计算速率。
[0010] 第二方面,本实施提供一种神经网络处理器,包括:任务管理器、内存单元、控制器、缓存空间、计算单元、向所述缓存空间写数据的第一DMA、所述缓存空间读数据的第二DMA;
[0011] 所述任务管理器,用于根据数据缓存策略,配置每一个DMA的工作参数,所述工作参数包括数据存储模式、访问空间的大小、访问起始地址和访问结束地址;
[0012] 每一个DMA用于根据所述工作参数,与所述控制器联合控制运算数据在所述内存单元、所述缓存空间以及所述计算单元之间的传输与存储,所述运算数据包括输入数据、权重数据和结果数据。
[0013] 第三方面,本实施例提供一种终端设备,包括存储器、主处理器、神经网络处理器以及存储在所述存储器中并可在所述神经网络处理器上运行的计算机程序,所述神经网络处理器执行所述计算机程序时实现上述第一方面提供的数据管理方法。
[0014] 可以理解的是,上述第二方面至第三方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

附图说明

[0015] 图1是本申请实施例提供的一种神经网络处理器的结构示意图;
[0016] 图2为本申请实施例提供的一种数据管理方法的流程示意图;
[0017] 图3是本申请实施例提供的权重存储区域的存储区域划分示意图一;
[0018] 图4是本申请实施例提供的权重存储区域的存储区域划分示意图二;
[0019] 图5是本申请实施例提供的权重存储区域的存储区域划分示意图三;
[0020] 图6是本申请实施例提供的权重数据的存储方法的流程示意图;
[0021] 图7是本申请实施例提供的权重数据的读取方法的流程示意图;
[0022] 图8是本申请实施例提供的一种终端设备的结构框图。

具体实施方式

[0023] 本申请实施例提供的数据管理方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备的神经网络处理器中,本申请实施例对终端设备的具体类型不作任何限制。
[0024] 应理解,本文中涉及的第一、第二以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的范围。
[0025] 还应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0026] 下面对本申请实施例涉及的神经网络处理器进行介绍。
[0027] 参见图1,图1中示例性示出了一种神经网络处理器,包括任务管理器、与任务管理器连接的神经网络计算模块。神经网络计算模块包括:内存单元、控制器、缓存空间、计算单元、多个DMA(Direct Memory Access,直接内存存取)。多个DMA包括DMA-EI、DMA-I、DMA-EW、DMA-W、DMA-EO和DMA-O。其中,DMA-EI、DMA-EW和DMA-EO连接在内存单元和控制器之间,DMA-I、DMA-W和DMA-O连接在控制器和计算单元之间,控制器和缓存空间连接。
[0028] 任务管理器,用于控制和调度神经网络计算模块中的各个元件协同工作。
[0029] 内存单元,如双倍数据速率(Double Data Rate,DDR)内存单元,用于存储神经网络模型的运算数据,该运算数据包括输入数据、权重数据以及计算单元根据输入数据和权重数据计算得到的结果数据。
[0030] DMA,用于从一个元件读取数据,并将其写入另一元件。例如,DMA-EI和DMA-EW,分别用于从内存单元读取输入数据和权重数据,并将其写入缓存空间。DMA-O,用于从计算单元读取结果数据,并将其写入缓存空间。DMA-I和DMA-W分别用于从缓存空间读取输入数据和权重数据,并将其写入计算单元。DMA-EO用于从缓存空间读取结果数据,并将其写入内存单元。
[0031] 需要说明的是,本实施例将向缓存空间写数据的DMA称为第一DMA,例如DMA-EI、DMA-EW和DMA-O。将从缓存空间读取数据的DMA称为第二DMA,例如DMA-I、DMA-W和DMA-EO。
[0032] 缓存空间,例如本地共享的SRAM缓存空间,用于在内存单元和计算单元之间缓存运算数据。根据运算数据类别的不同,缓存空间中划分有不同的存储区域。示例性的,参见图1,当运算数据包括输入数据、权重数据和结果数据时,缓存空间内部分别划分有输入存储区域、权重存储区域和结果存储区域,以存储对应类别的数据。
[0033] 控制器,例如交叉口闩仲载逻辑单元(Cross Bar,XBAR),用于管理DMA对缓存空间的写数据与读数据操作。在本实施例中,参见图1,对应于缓存空间被划分为输入存储区域、权重存储区域和结果存储区域,控制器设置了输入仲裁组件、权重仲裁组件和结果仲裁组件,分别用于管理对应的存储区域。
[0034] 计算单元,用于根据预设的神经网络模型,以及从缓存空间读取的输入数据和权重数据,计算得到结果数据,并将结果数据通过缓存空间返回至内存单元中。
[0035] 基于上述本实施例提供的神经网络处理器,本申请实施例提供一种数据管理方法,用于提高神经网络处理器的数据缓存效率,进而提高计算效率。
[0036] 参见图2,图2为本申请实施例提供的一种数据管理方法的示意图。该方法包括如下步骤S201-S202。
[0037] S201,任务管理器根据数据缓存策略,配置神经网络处理器中每一个DMA的工作参数,该工作参数包括数据存储模式、访问空间的大小、访问起始地址和访问结束地址。
[0038] 数据缓存策略确定了神经网络计算过程中,如何去缓存运算数据,其中包括各个运算数据的数据存储模式、所占用的存储区域的大小等。根据数据缓存策略,任务管理器可以配置神经网络处理器中每一个DMA的工作参数。
[0039] 需要说明的是,在工作参数中,数据存储模式可以是静态存储模式或者FIFO存储模式,但是本实施例对访问空间的大小、访问起始地址和访问结束地址的具体数值不进行限制,具体根据数据缓存策略确定。
[0040] S202,每一个DMA根据配置的工作参数,与控制器联合控制运算数据在内存单元、缓存空间以及计算单元之间的传输与存储。
[0041] 示例性的,结合图1,DMA与控制器联合控制运算数据在内存单元、缓存空间以及计算单元之间的传输与存储,包括:DMA-EI根据配置的工作参数,与控制器联合控制将输入数据从内存单元写入输入存储区域;DMA-I根据配置的工作参数,与控制器联合控制,以由计算单元从输入存储区域读取输入数据。DMA-EW根据配置的工作参数,与控制器联合控制将权重数据从内存单元写入权重存储区域。DMA-W根据配置的工作参数,与控制器联合控制,以由计算单元从权重存储区域读取权重数据。DMA-O根据配置的工作参数,与控制器联合控制将结果数据从计算单元写入结果存储区域。DMA-EO根据配置的工作参数,与控制器联合控制,以由内存单元从结果存储区域读取结果数据。
[0042] 在本实施例中,由于DMA是用于在内存单元与缓存空间之间,或者缓存空间与计算单元之间搬运数据的元件,其可访问的地址范围确定了其所搬运数据的存储空间的大小,其数据存储模式确定了搬运数据的方式。因此,根据数据缓存策略配置各个配置DMA的工作参数(例如数据存储模式、访问起始地址、访问结束地址等),能够使DMA与控制器联合根据数据缓存策略去缓存运算数据,减少数据缓存过程的耗时,从而提高神经网络的计算速率。
[0043] 下面对本申请涉及的数据缓存策略进行说明,具体如下所示。
[0044] 在本实施例中,神经网络处理器在运行之前,会根据将要运行的神经网络模型和缓存空间的大小,预先判断神经网络模型在运行过程中可能会出现的计算瓶颈。针对不同的计算瓶颈,可以给该神经网络模型配置不同的数据缓存策略。其中,计算瓶颈用于表征导致神经网络计算速率降低的原因。例如,计算瓶颈可能为输入数据的供给过慢,或者权重数据的供给过慢。
[0045] 在一些实施例中,当神经网络处理器的计算瓶颈为输入数据的供给过慢时,数据缓存策略包括:
[0046] 对于缓存空间从计算单元获取的第1层至第n层神经网络的结果数据,缓存空间将第i层神经网络的结果数据存储至本地,以由计算单元在第i+1层神经网络计算过程中直接调取;只将第n层神经网络的结果数据发送至内存单元。其中,n为神经网络的总层数,i∈[1,n-1],且i为整数。
[0047] 示例性的,对于具有10层的神经网络模型,对于缓存空间从计算单元获取的第1层至第10层神经网络的结果数据,将第1层神经网络的结果数据存储至本地,以由计算单元在第2层神经网络计算过程中直接调取;将第2层神经网络的结果数据存储至本地,以由计算单元在第3层神经网络计算过程中直接调取;依次类推。将最后一层神经网络,也就是第10层神经网络的结果数据发送至内存单元。
[0048] 当神经网络处理器的计算瓶颈为权重数据的供给过慢时,数据缓存策略可以包括如下内容(1)-(3)。
[0049] (1)从权重数据中确定复用数据。
[0050] 神经网络处理器可以根据神经网络模型以及缓存空间的大小,将权重数据中的一部分设置为复用数据(即一次缓存后会被多次读取的数据),将其余数据设置为非复用数据(即一次缓存后仅会被读取一次的数据)。
[0051] 需要说明的是,并不是所有会被重复使用的数据,都会被设置为复用数据,其也可以被设置为非复用数据,多次重复写入缓存空间中,具体根据数据缓存策略确定。
[0052] (2)在缓存空间中确定复用区域,复用区域大于或等于复用数据所占存储空间的大小。
[0053] 在本实施例中,可以根据权重数据的复用比例确定权重存储空间的划分。其中,复用比例为权重数据中复用数据所占存储空间的大小,与所有权重数据所占存储空间的大小的比值。复用比例在0-100%之间,例如可能为0%、10%、15%或者100%等。示例性的,当权重数据所占存储空间的大小为100千字节(Kb),权重数据中的复用数据所占存储空间的大小为20Kb时,那么权重数据的复用比例为20%。
[0054] 当权重数据的复用比例为100%时,缓存空间的权重存储区域只包括复用区域,例如图3所示。当复用比例大于0%且小于100%时,例如为10%时,权重存储区域包括复用区域和非复用区域,例如图4所示。当权重数据的复用比例为0%时,权重存储区域只包括非复用区域,例如图5所示。
[0055] 其中,复用区域用于缓存权重数据中的复用数据,并且复用区域大于或等于所有复用数据所占存储空间的大小,以同时存储所有的复用数据。复用区域能够根据神经网络算法的需求,长时间存储写入的复用数据,以便计算单元多次进行读取。
[0056] 非复用区域用于缓存权重数据中的非复用数据,其内存通常较小,无法一次缓存所有的非复用数据,需要分批次缓存非复用数据,并且先存储的数据可能会被随后写入的数据覆盖,无法重复使用。
[0057] (3)将复用数据缓存至复用区域,将非复用数据缓存至非复用区域。
[0058] 根据数据复用策略,内存单元将复用数据写入对应的复用区域,将非复用数据写入对应的非复用区域。例如,当权重数据的复用比例为10%时,内存单元将权重数据中的复用数据通过DMA-EW写入权重存储区域的复用区域,将权重数据中的非复用数据通过DMA-EW写入权重存储区域中的非复用区域。
[0059] 需要说明的是,神经网络处理器在确定复用比例的过程中是考虑了缓存空间的大小的,因此,缓存空间中有足够的内存去同时缓存所有的复用数据,不会发生数据溢出。
[0060] 通过根据复用数据的复用比例,在缓存空间内划分存储区域,该存储区域包括复用区域和/或非复用区域。当神经网络计算过程中存在复用数据时,采用本实施例提供的数据管理方法,内存单元只需要向存储区域中的复用区域缓存一次复用数据,计算单元就可以多次进行读取,从而减少数据缓存过程的耗时、提高计算速率。
[0061] 在另一些实施例中,当神经网络处理器的计算瓶颈同时包括输入数据的供给过慢和权重数据的供给过慢时。由于随着神经网络计算的进行,输入数据会逐渐变少,而权重数据会逐渐增多。因此,数据缓存策略可以为在神经网络计算的前期使用上述关于输入数据的数据缓存策略,在后期使用上述关于权重数据的数据缓存策略。具体如下所示。
[0062] 在第1层至第m层神经网络计算过程中,对于缓存空间从计算单元获取的第1层至第m层神经网络的结果数据,将第j层神经网络的结果数据存储至本地,以由计算单元在第j+1层神经网络计算过程中直接调取;将第m层神经网络的结果数据发送至内存单元。
[0063] 在第m+1层至第n层神经网络计算过程中,从权重数据中确定复用数据;在缓存空间中确定复用区域,复用区域大于或等于复用数据所占存储空间的大小;将权重数据缓存至复用区域;其中,n为神经网络的总层数,m<n且m为整数,j∈[1,m-1],且j为整数。
[0064] 示例性的,对于具有10层的神经网络模型,当m=3时,将第1层神经网络的结果数据存储至本地,以由计算单元在第2层神经网络计算过程中直接调取;将第2层神经网络的结果数据存储至本地,以由计算单元在第3层神经网络计算过程中直接调取。随后,将第3层到第10层神经网络的结果数据均发送至内存单元。并且,在第4层至第10层神经网络计算过程中,从权重数据中确定复用数据;在缓存空间中确定复用区域,复用区域大于或等于复用数据所占存储空间的大小;将复用数据缓存至复用区域。
[0065] 需要说明的是,神经网络计算可以采用一种跨层切割(Cross Layer Tiling,CLT)技术,即将一个特征图(feature map)数据切割成多个数据块(Tile),并对每个数据块连续进行多层的数据运算。当采用CLT技术时,针对每一个数据块,其在缓存相关运算数据的过程中,均可采用上述关于输入数据和权重数据的缓存策略。
[0066] 此外,在每一层神经网络的计算过程中,也可以同时采用上述关于输入数据的数据缓存策略,以及关于权重数据的数据缓存策略,本实施例对此不进行限制。
[0067] 下面对本申请涉及的DMA工作参数进行说明。
[0068] 以图1示出的神经网络处理器为例,由于DMA-EI和DMA-I都是用于在输入存储空间存取输入数据的,因此其工作参数相同。DMA-EW和DMA-W都是用于在权重存储空间存取权重数据的,因此其工作参数相同。DMA-EO和DMA-O都是用于在结果存储空间存取结果数据的,因此其工作参数相同。
[0069] 当DMA用于以静态存储模式访问缓存空间时,任务管理器给该DMA配置的内容包括:
[0070] (1)DMA的数据存储模式:静态存储模式,即DMA以非FIFO队列模式向缓存空间写入数据,或者从缓存空间读取数据。
[0071] (2)DMA的访问参数:访问空间的大小、访问起始地址以及访问结束地址等。
[0072] 当DMA用于以先进先出(First In First Out,FIFO)队列模式访问缓存空间时,任务管理器给该DMA配置的内容包括:
[0073] (1)DMA的数据存储模式:FIFO队列模式,即DMA以FIFO队列模式向缓存空间写入数据,或者从缓存空间读取数据。
[0074] (2)DMA的访问参数:包括FIFO队列的深度、访问起始地址、访问结束地址等。需要说明的是,DMA在访问FIFO队列的结束地址之后,重新从FIFO队列的起始地址开始访问。
[0075] (3)指针复位指令,用于复位FIFO队列指针。
[0076] (4)FIFO队列的握手颗粒度K,K≥1且为整数,用于控制FIFO队列读指针和写指针的握手颗粒度。其中,握手颗粒度是指DMA开始从FIFO队列中读数据时,写数据操作的执行次数。例如,当K=5时,FIFO队列中写数据操作执行第5次时,读数据操作开始执行。
[0077] 值得说明的是,通过配置握手颗粒度的大小,可以控制DMA从FIFO队列开始读取数据的时间点。例如,结合下文描述,当握手颗粒度被配置的较小时,例如K=1,那么DMA-EW每向FIFO队列写一笔权重数据,都会触发对应的FIFO队列的写指针加1,使得FIFO队列非空,以触发DMA-W读取权重数据的操作。而当握手颗粒度被配置的较大时,例如K=10时,那么DMA-EW每写10笔数据,才会触发FIFO队列写指针加1,使得FIFO队列非空,触发DMA-W读取权重数据的操作。
[0078] 可以理解,握手颗粒度配置得越小,写数据和读数据之间的延时越小,有助于提高神经网络处理器的计算效率。然而,需要说明的是,在具体的应用场景中,握手颗粒度的数值还需要匹配具体DMA的设计逻辑。
[0079] 在一些实施例中,当第一DMA写数据宽度为A,第二DMA读数据的宽度为B时。为了保证FIFO队列写指针加1时,FIFO队列中增加的运算数据量,和读指针加1时,FIFO队列中减少的运算数据量是相等的,第一DMA每发送第K个写访问请求时,向控制器中对应的仲裁组件发送一个写指针加1指令。而第二DMA每发送 个读访问请求时,向控制器中对应的仲裁组件发送一个读指针加1指令。其中, 为整数,K为握手颗粒度。
[0080] 示例性的,当DMA-EI写数据宽度是256bit,DMA-W读数据宽度是128bit时,DMA-EW每发送1个写访问请求时,向权重仲裁组件发送一个写指针加1指令。即FIFO队列写指针加1时,FIFO队列中增加的运算数据为256bit。DMA-I每发送2个读访问请求时,向权重仲裁组件发送一个读指针加1指令。
[0081] 需要说明的是,DMA的访问起始地址以及访问结束地址确定了DMA所搬运的数据在缓存空间中的存储位置和存储空间的大小。例如,对于DMA-EI和DMA-I,其配置的访问起始地址以及访问结束地址,确定了用于缓存输入数据的输入存储区域在缓存空间的位置和大小。对于DMA-EW和DMA-W,其配置的访问起始地址以及访问结束地址,确定了用于缓存权重数据的权重存储区域在缓存空间的位置和大小。对于DMA-EO和DMA-O,其配置的访问起始地址以及访问结束地址,确定了用于缓存结果数据的结果存储空间在缓存空间的位置和大小。
[0082] 根据数据缓存策略的不同,在不同的神经网络计算层,各个DMA的配置参数可能不同,其对应的数据存储模式,以及输入存储区域、权重存储区域和结果存储区域的位置和大小也可能会发生变化,具体根据数据缓存策略确定,本实施例对此不进行限制。
[0083] 下面对本申请涉及的DMA根据配置的工作参数,与控制器联合控制运算数据在内存单元、缓存空间以及计算单元之间的传输与存储进行说明。
[0084] 以权重数据为例,权重存储空间中设置有复用区域和非复用区域,其可以为FIFO队列存储模式,也可以为静态存储模式。下面分别对复用区域和非复用区域的这两种存储模式进行说明。
[0085] 当DMA-EW和DMA-W被配置为静态存储模式时,对于非复用区域,由于其内存通常较小,内存单元根据神经网络计算过程所用到的权重数据的次序,通过DMA-EW依次将权重数据分多次写入非复用区域。当每一次写入的权重数据被计算单元通过DMA-W读取之后,内存单元才能再次向缓存空间写入新的权重数据,并覆盖原来的权重数据。对于复用区域,由于其能够一次性缓存所有的复用数据,因此,内存单元通过DMA-EW将权重数据中的复用数据,全部存储至复用区域。当所有复用数据全部缓存完之后,计算单元在每一次使用这些复用数据时,直接通过DMA-W从复用区域读取即可,而无需内存单元多次将其写入复用区域。从而减少数据缓存过程的耗时,提高神经网络处理器的计算速率。
[0086] 以权重数据为例,当DMA-EW和DMA-W被配置为FIFO队列存储模式时,对于复用区域和非复用区域,内存单元向其中写入运算数据的过程是相同的,计算单元从其中读取运算数据的过程也是相同的。不同的是,复用区域的FIFO队列可以一次性存储所有复用的权重数据。并且,在计算单元读完一遍权重数据中的所有复用数据之后,任务管理器会将复用区域由FIFO队列存储模式更改为静态存储模式,以便计算单元可以直接从复用区域多次读取相同的权重数据。而非复用区域的FIFO队列通常较小,通常无法一次缓存所有的非复用数据。因此,运算数据会在FIFO队列中以数据流的形式缓存权重数据,将权重数据从一个元件输入另一元件。例如从内存单元输入计算单元。
[0087] 下面以权重数据为例,对FIFO队列存储模式下数据的存储和读取过程进行说明。
[0088] 参见图6,图6示出了内存单元通过DMA-EW向权重存储区域中的复用区域的FIFO队列写入权重数据的过程,该过程包括如下步骤S601-S605。
[0089] S601,权重仲裁组件检测权重存储区域中与DMA-EW对应的FIFO队列的空满状态。
[0090] 对于权重数据,当其对应的复用区域和/或非复用区域为FIFO队列存储模式时,权重仲裁组件用于管理权重数据的读写过程。
[0091] 在一个示例中,权重仲裁组件可以根据FIFO队列的深度、写指针和读指针来,确定权重存储区域FIFO队列的空满状态。
[0092] S602,当FIFO队列非满时,权重仲裁组件向DMA-EW发送高电平信号,用于指示FIFO队列当前可以写入数据。
[0093] S603,DMA-EW从内存单元读取第一权重数据。
[0094] DMA-EW从内存单元读取权重数据的带宽是预先配置的。示例性的,带宽可以为64bit、128bit等,本实施例不进行限制。
[0095] S604,DMA-EW向权重仲裁组件发送写访问请求,该写访问请求携带第一权重数据,以及权重存储区域内FIFO队列的第一地址信息。
[0096] S605,权重仲裁组件根据写访问请求,将第一权重数据写入第一地址信息对应的FIFO队列中,并将写指针加1。
[0097] 在上述过程中,需要说明的是,当权重仲裁组件检测到FIFO队列已满时,向DMA-EW发送低电平信号,用于指示FIFO队列当前不可以写入数据。DMA-EW在接收到低电平信号之后,暂停向FIFO队列写入权重数据,避免FIFO队列上溢。
[0098] 参见图7,图7示出了计算单元通过DMA-W从权重存储区域中的复用区域的FIFO队列读取权重数据的过程,该过程包括如下步骤S701-S706。
[0099] S701,权重仲裁组件检测权重存储区域中的FIFO队列的空满状态。
[0100] 在一个示例中,权重仲裁组件可以根据FIFO队列的深度、写指针和读指针来,确定权重存储区域中FIFO队列的空满状态。
[0101] S702,当权重存储区域的FIFO队列不空时,权重仲裁组件向DMA-W发送高电平信号,用于指示FIFO队列当前可以读出数据。
[0102] S703,DMA-W向权重仲裁组件发送读访问请求,该读访问请求包括FIFO队列的第二地址信息。
[0103] S704,权重仲裁组件根据第二地址信息从FIFO队列中读取第二权重数据。
[0104] S705,权重仲裁组件将第二权重数据发送给DMA-W,并将读指针加1。
[0105] S706,DMA-W将第二权重数据发送给计算单元。
[0106] 在上述过程中,需要说明的是,当权重仲裁组件检测到FIFO队列已空时,向DMA-W发送低电平信号,用于指示FIFO队列当前不可以读取数据。DMA-W在接收到低电平信号之后,暂停从FIFO队列读取数据,避免FIFO队列下溢。
[0107] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0108] 神经网络处理器借助FIFO队列以数据流的方式在内存单元和计算单元之间完成运算数据的传输,能够使写数据操作和读数据操作在缓存空间中同时进行,缩短了运算数据在内存单元和计算单元之间的传输的时间,而且数据传输过程不限制数据量的大小,传输的中间过程不需要软件干预,具有较高的传输效率。
[0109] 此外,需要说明的是,在神经网络计算过程中,缓存空间在输入数据和缓存结果数据时,也可以采用FIFO队列存储模式或者静态存储模式缓存数据。具体缓存过程,参见上述关于缓存权重数据的相关描述,在此不再赘述。
[0110] 参见图8,本实施例还提供一种终端设备,包括存储器801、主处理器802、神经网络处理器803以及存储在所述存储器801中并可在神经网络处理器803上运行的计算机程序804,神经网络处理器803执行所述计算机程序时实现上述步骤S201-S202示出方法。
[0111] 所述存储器801在一些实施例中可以是所述神经网络处理器的内部存储单元,例如硬盘或内存。所述存储器801在另一些实施例中也可以是神经网络处理器的外部存储设备,例如神经网络处理器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器801还可以既包括神经网络处理器的内部存储单元,也包括外部存储设备。所述存储器801用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器801还可以用于暂时地存储已经输出或者将要输出的数据。
[0112] 所述主处理器802可以是中央处理单元(Central Processing Unit,CPU),所述主处理器802还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0113] 本实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被神经网络处理器执行时实现可实现上述步骤S201-S202中示出的方法。
[0114] 所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
[0115] 本申请实施例还提供了一种包含指令的计算机程序产品。当该计算机程序产品在计算机或神经网络处理器上运行时,使得计算机或神经网络处理器执行上述步骤S201-S202示出的方法。
[0116] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0117] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。
[0118] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM等各种可存储程序代码的介质。
[0119] 最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。