一种应用于深度学习计算的数据读取系统、方法及芯片转让专利

申请号 : CN201911380531.7

文献号 : CN111078589B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 焦黎李远超蔡权雄牛昕宇

申请人 : 深圳鲲云信息科技有限公司

摘要 :

本发明实施例公开了一种应用于深度学习计算的数据读取系统、方法及芯片,所述系统包括:坐标生成模块,用于生成数据的三维位置坐标;地址生成模块,用于根据所述三维位置坐标生成所述数据对应的二维存储地址;地址缓存模块,用于缓存所述二维存储地址;数据读取模块,用于根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。本发明实施例提供的深度学习计算的数据读取系统解决了深度学习计算时需要等待数据存储单元先读取数据才开始计算的耗时问题,增加了应用于深度学习计算的数据读取系统输出数据的并行度。

权利要求 :

1.一种应用于深度学习计算的数据读取系统,其特征在于,包括:坐标生成模块,用于生成数据的三维位置坐标;

地址生成模块,用于根据所述三维位置坐标生成所述数据对应的二维存储地址;

地址缓存模块,用于缓存所述二维存储地址;

数据读取模块,用于根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。

2.如权利要求1所述的系统,其特征在于,所述数据读取模块与计算模块连接,所述计算模块用于接收所述数据读取模块读取出来的数据并对所述数据进行深度学习计算。

3.如权利要求2所述的系统,其特征在于,所述坐标生成模块包括:计数信号产生单元,用于根据所述计算模块的计算过程生成计数信号;

坐标转换单元,用于将所述计数信号转换为所述三维位置坐标。

4.如权利要求3所述的系统,其特征在于,所述计数信号产生单元包括多个计数器,一个所述计数器对所述三维位置坐标的一个方向产生计数信号。

5.如权利要求1所述的系统,其特征在于,所述数据读取模块包括:数据存储单元,用于读取和写入数据;

地址分发单元,用于将所述二维存储地址分配给所述数据存储单元,以使所述数据存储单元根据所述二维存储地址读取数据;

数据重排序单元,用于对所述数据存储单元读取出来的数据按照预设规则进行重新排序;

数据缓存单元,用于缓存所述数据重排序单元输出的重新排序后的数据。

6.如权利要求5所述的系统,其特征在于,所述数据缓存单元还用于:判断计算模块是否能够接收数据;

若所述计算模块能够接收数据,则向所述计算模块输出缓存的数据以进行深度学习计算。

7.一种应用于深度学习计算的数据读取方法,其特征在于,包括:生成数据的三维位置坐标;

根据所述三维位置坐标生成所述数据对应的二维存储地址;

缓存所述二维存储地址;

根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。

8.如权利要求7所述的方法,其特征在于,所述生成数据的三维位置坐标包括:根据计算模块的计算过程生成计数信号;

将所述计数信号转换为所述三维位置坐标。

9.如权利要求7所述的方法,其特征在于,所述根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算包括:将所述二维存储地址分配给数据存储单元,以使所述数据存储单元根据所述二维存储地址读取数据;

对所述数据存储单元读取出来的数据按照预设规则进行重新排序;

缓存重新排序后的数据;

判断计算模块是否能够接收数据;

若所述计算模块能够接收数据,则向所述计算模块输出缓存的数据以进行深度学习计算。

10.一种芯片,其特征在于,包括如权利要求1‑6任一项所述的一种应用于深度学习计算的数据读取系统,还包括处理器和存储器。

说明书 :

一种应用于深度学习计算的数据读取系统、方法及芯片

技术领域

[0001] 本发明实施例涉及深度学习技术,尤其涉及一种应用于深度学习计算的数据读取系统、方法及芯片。

背景技术

[0002] 深度学习是目前比较热门的一个研究课题,其算法在不断快速更新,同时,其应用领域也在不断扩展。深度学习的一个显著特点是需要对大量的输入数据进行海量的计算得到最后的结果,这个特点催生了集成电路的一个应用研究方向:利用专用集成电路对深度学习进行加速。
[0003] 对深度学习进行加速就是使用大量的计算资源来完成深度学习所需要的海量计算,而完成这些计算的前提是数据存储单元能够连续有效的输出大量数据给计算模块用于计算。现有技术通常采用图1所示的分级数据缓存结构来实现数据的读取操作。该分级缓存结构需要数据按照三维坐标(W,H,C)的形式顺序的存储输入数据,读操作时地址每读一次自增1,将输入数据从RAM中连续的读取出来。从RAM中读出的数据通过数据分配器写到line buffer中,每个linebuffer会缓存一行的数据,当连续读出计算模块完成一次计算需要的所有行数据之后,会暂停读过程,此时所有line buffer会同时输出数据给计算模块用于计算。计算模块每完成一次计算操作会相应的进行一次读操作,读出一组数据缓存到line buffer中。
[0004] 采用这种数据读取方式,每次从第一行开始读数据时,计算模块需要等待读取数据到前几行的line buffer之后才能开始计算,这会产生额外的时间开销。

发明内容

[0005] 有鉴于此,本发明实施例提供一种应用于深度学习计算的数据读取系统、方法及芯片,以实现保证深度学习的计算模块在任何时候可以连续的获得用于计算的输入数据,不需要额外的准备时间。
[0006] 第一方面,本发明实施例提供了一种应用于深度学习计算的数据读取系统,包括:
[0007] 坐标生成模块,用于生成数据的三维位置坐标;
[0008] 地址生成模块,用于根据所述三维位置坐标生成所述数据对应的二维存储地址;
[0009] 地址缓存模块,用于缓存所述二维存储地址;
[0010] 数据读取模块,用于根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。
[0011] 进一步的,所述数据读取模块与计算模块连接,所述计算模块用于接收所述数据读取模块读取出来的数据并对所述数据进行深度学习计算。
[0012] 进一步的,所述坐标生成模块包括:
[0013] 计数信号产生单元,用于根据所述计算模块的计算过程生成计数信号;
[0014] 坐标转换单元,用于将所述计数信号转换为所述三维位置坐标。
[0015] 进一步的,所述计数信号产生单元包括多个计数器,一个所述计数器对所述三维位置坐标的一个方向产生计数信号。
[0016] 进一步的,所述数据读取模块包括:
[0017] 数据存储单元,用于读取和写入数据;
[0018] 地址分发单元,用于将所述二维存储地址分配给所述数据存储单元,以使所述数据存储单元根据所述二维存储地址读取数据;
[0019] 数据重排序单元,用于对所述数据存储单元读取出来的数据按照预设规则进行重新排序;
[0020] 数据缓存单元,用于缓存所述数据重排序单元输出的重新排序后的数据。
[0021] 进一步的,所述数据缓存单元还用于:
[0022] 判断所述计算模块是否能够接收数据;
[0023] 若所述计算模块能够接收数据,则向所述计算模块输出缓存的数据以进行深度学习计算。
[0024] 第二方面,本发明实施例提供了一种应用于深度学习计算的数据读取方法,包括:
[0025] 生成数据的三维位置坐标;
[0026] 根据所述三维位置坐标生成所述数据对应的二维存储地址;
[0027] 缓存所述二维存储地址;
[0028] 根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。
[0029] 进一步的,所述生成数据的三维位置坐标包括:
[0030] 根据计算模块的计算过程生成计数信号;
[0031] 将所述计数信号转换为所述三维位置坐标。
[0032] 进一步的,所述根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算包括:
[0033] 将所述二维存储地址分配给数据存储单元,以使所述数据存储单元根据所述二维存储地址存储数据;
[0034] 对所述数据存储单元读取出来的数据按照预设规则进行重新排序;
[0035] 缓存重新排序后的数据;
[0036] 判断计算模块是否能够接收数据;
[0037] 若所述计算模块能够接收数据,则向所述计算模块输出缓存的数据以进行深度学习计算。
[0038] 第三方面,本发明实施例提供了一种芯片,包括本发明任意实施例提供的应用于深度学习计算的数据读取系统。
[0039] 本发明实施例提供的一种应用于深度学习计算的数据读取系统,通过坐标生成模块,用于生成数据的三维位置坐标;地址生成模块,用于根据所述三维位置坐标生成所述数据对应的二维存储地址;地址缓存模块,用于缓存所述二维存储地址;数据读取模块,用于根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。解决了深度学习计算时需要等待数据存储单元先读取数据才开始计算的耗时问题,增加了应用于深度学习计算的数据读取系统输出数据的并行度。

附图说明

[0040] 图1为现有技术数据读取系统示意图;
[0041] 图2为本发明实施例一提供的一种应用于深度学习计算的数据读取系统的结构示意图;
[0042] 图3A为本发明实施例一提供的数据三维位置坐标的示意图;
[0043] 图3B为本发明实施例一提供的数据二维存储地址的示意图;
[0044] 图3C为本发明实施例二提供的计数信号的产生示意图;
[0045] 图4为本发明实施例二提供的一种应用于深度学习计算的数据读取系统的结构示意图;
[0046] 图5为本发明实施例三提供的一种应用于深度学习计算的数据读取方法的流程示意图;
[0047] 图6为本发明实施例四提供的一种芯片的结构示意图。

具体实施方式

[0048] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0049] 在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
[0050] 此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0051] 实施例一
[0052] 图2为本发明实施例一提供的应用于深度学习计算的数据读取系统的结构示意图,可适用于深度学习计算的数据读取,提高数据读取速度。如图2所示,本发明实施例一提供的应用于深度学习计算的数据读取系统100包括:坐标生成模块110、地址生成模块120、地址缓存模块130和数据读取模块140。
[0053] 坐标生成模块110用于生成数据的三维位置坐标;
[0054] 地址生成模块120用于根据所述三维位置坐标生成所述数据对应的二维存储地址;
[0055] 地址缓存模块130用于缓存所述二维存储地址;
[0056] 数据读取模块140用于根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。
[0057] 具体的,深度学习计算也称作神经网络计算,神经网络的基本组成结构是卷积层。卷积计算的输入和输出都是三维矩阵形式,矩阵中的数据用(W,H,C)这样的三维位置坐标表示,如图3A所示,为一个W=H=6,C=3的矩阵,x表示矩阵中的数据,三维形式的数据可以拆分成多个二维形式的数据矩阵,将三维坐标的C坐标固定成一个定值,例如0,则由W坐标和H坐标变化所确定的输入数据可以组成一个二维矩阵,该矩阵中输入数据的三维坐标为(W,H,0),这种二维矩阵可以看成数据的一层二维图,三维形式的数据则包括多层二维图,对于一个具体的数据,W表示数据所在的列,H表示数据所在的行,C表示数据所在二维图的层数,例如,图3A中的数据1处于第一层二维图的第一行和第一例,其三维位置坐标为(1,1,
1)。
[0058] 坐标生成模块110生成数据的三维位置坐标后,将数据的三维位置坐标发送到地址生成模块120,地址生成模块120则根据数据的三维位置坐标生成对应的二维存储地址。数据的二维存储地址指的是数据在数据读取模块140的数据存储单元中的存储地址,数据存储单元由多个存储块组成,数据存储在存储块中,故二维存储地址包括存储块的编号以及数据在存储块中的存储地址,可以表示为(X,Y),其中,X表示存储块编号,Y表示数据在存储块中的存储地址。如图3B所示,以存储器RAM为例,RAM包括多个bank,每个bank包括2行和多列,将最右边的一列称为第1列,地址为1,则数据1和37对应的二维存储地址可以表示为(1,1)。示例性的,坐标生成模块110生成的三维位置坐标为(1,1,1),那么地址生成模块120生成对应的二维存储地址为(1,1)。
[0059] 地址缓存模块130缓存一定量的地址生成模块120生成的二维存储地址,数据读取模块140读取的数据先进行缓存,而不是直接用于计算。
[0060] 数据读取模块140模块根据二维存储地址读取数据时,一次可以读取两个数据,例如数据读取模块140模块根据二维存储地址(1,1)读取的数据为1和37。增加了数据读取模块140能够同时读取的数据量。
[0061] 进一步的,数据读取模块140与计算模块150连接,计算模块150接收数据读取模块140读取出来的数据并以进行深度学习计算。当计算模块150进行计算时,数据读取模块140首先对计算模块150输出预先缓存的数据,同时还可以根据地址缓存模块130预先缓存的二维存储地址不断地读取数据,从而避免了计算模块150在完成一次计算后,就要等待数据读取模块140读取一定量的数据之后再进行第二次计算,并且能够使大量数据连续输出。
[0062] 当地址缓存模块130缓存的二维存储地址数量达到上限时,坐标生成模块110和地址生成模块120则暂停工作,当计算模块150开始计算时,数据读取模块140根据地址缓存模块130内预先缓存的二维存储地址读取数据,使地址缓存模块130的部分空间被清空,此时坐标生成模块110和地址生成模块120继续开始工作,向地址缓存模块130输送数据的二维存储地址以进行缓存。
[0063] 本发明实施例一提供的一种应用于深度学习计算的数据读取系统,通过坐标生成模块生成数据的三维位置坐标,地址生成模块根据所述三维位置坐标生成所述数据对应的二维存储地址,地址缓存模块缓存所述二维存储地址,数据读取模块根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。解决了深度学习计算时需要等待数据存储单元先读取数据才开始计算的耗时问题,增加了应用于深度学习计算的数据读取系统输出数据的并行度。
[0064] 实施例二
[0065] 图4为本发明实施例二提供的一种应用于深度学习计算的数据读取系统的结构示意图,本实施例是对上述实施例的进一步细化。如图4所示,本发明实施例二提供的一种应用于深度学习计算的数据读取系统100包括:计数信号产生单元111、坐标转换单元112、地址生成模块120、地址缓存模块130、地址分发单元141、数据存储单元142、数据重排序单元143和数据缓存单元144。
[0066] 坐标生成模块110包括计数信号产生单元111和坐标转换单元112。计数信号产生单元111用于根据计算模块的计算过程生成计数信号,计数信号产生单元111包括多个计数器,一个计数器对数据的三维位置坐标的一个方向产生计数信号。如图3C所示,深度学习计算输入数据和输出数据均为(W,H,C)三维坐标形式,且一个输出数据是由多个输入数据进行计算得到的,W1表示输入数据所在的列,H1表示输入数据所在的行,C1表示输入数据所在二维图的层数,W2表示输出数据所在的列,H2表示输出数据所在的行,C2表示输出数据所在二维图的层数。假设输出数据中的第1个数据(由图3C左边的第一层二维图中的方框圈出)由输入数据中的27个数据(由图3C右边的第三层二维图中的方框圈出)经过计算得到,一个计数器对数据的一个方向(W方向或H方向或C方向)产生计数信号,因此,要确定计算的输出数据三个方向的位置,需要3个计数器,确定输出数据对应的输入数据三个方向的位置,也需要3个计数器,则深度学习计算过程需要6个计数器,分别为:计数器WL1用来确定输入数据在W1方向的位置,计数器HL1用来确定输入数据在H1方向的位置,计数器CL1用来确定输入数据在C1方向的位置,计数器WL2用来确定输出数据在W2方向的位置,计数器HL2用来确定输出数据在H2方向的位置,计数器CL2用来确定输出数据在C2方向的位置。
[0067] 例如,WL1、HL1、CL1、WL2、HL2和CL2都是循环计数器,要计算输出数据的第1个数据,则循环计数器WL2、HL2和CL2产生的计数信号均为0(假设循环计数器从0开始计数),循环计数器WL1、HL1和CL1需要遍历输入数据中的27个数据。WL1、HL1、CL1、WL2、HL2和CL2都是循环计数器,且前一个循环计数器的计数信号达到对应的预设值是后一个循环计数器进行计数的条件。如图3C所示,WL1、HL1和CL1的预设值均为2,WL2和HL2的预设值均为5,CL2的预设值为2,WL1、HL1、CL1、WL2、HL2和CL2的初始值均为0,此时表示输入数据中第一层二维图第一行的第1个数据,即图3C输入数据中的“1”;当WL1=1、HL1=0、CL1=0、WL2=0、HL2=0、CL2=0时,表示输入数据中第一层二维图第一行的第2个数据,即图3C输入数据中的“2”;当WL1=2、HL1=0、CL1=0、WL2=0、HL2=0、CL2=0时,表示输入数据中第一层二维图第一行的第3个数据,即图3C输入数据中的“3”,此时循环计数器WL1达到了预设值,则下一次计数时,循环计数器WL1从0开始,循环计数器HL1变为1,即WL1=0、HL1=1、CL1=0、WL2=0、HL2=0、CL2=0,表示输入数据中第一层二维图第二行的第1个数据“X”。当循环计数器HL1达到预设值时,下一次计数时循环计数器CL1加1,当循环计数器CL1达到预设值时,下一次计数时循环计数器WL2加1,以此类推,当所有的循环计数器都达到预设值时,说明深度学习计算完成。
[0068] 坐标转换单元112用于将计数信号产生单元111产生的计数信号转换为数据的三维位置坐标。例如,计数信号产生单元111产生的计数信号为WL1=0、HL1=0、CL1=0、WL2=0、HL2=0、CL2=0,坐标转换单元112将其转换为对应的三维位置坐标(1,1,1)。
[0069] 地址生成模块120根据数据的三维位置坐标生成对应的二维存储地址。数据的二维存储地址指的是数据在数据读取模块140的数据存储单元中的存储地址,由于是由多个存储块组成,数据存储在存储块中,故二维存储地址包括存储块的编号以及数据在存储块中的存储地址,可以表示为(X,Y),其中,X表示存储块编号,Y表示数据在存储块中的存储地址。如图3B所示,以存储器RAM为例,RAM包括多个bank,每个bank包括2行和多列,将最右边的一列称为第1列,地址为1,则数据1和37对应的二维存储地址可以表示为(1,1)。示例性的,以数据1为例,坐标生成模块110生成数据1的三维位置坐标为(1,1,1),那么地址生成模块120生成对应的二维存储地址为(1,1)。
[0070] 地址缓存模块130缓存一定量的地址生成模块120生成的二维存储地址,数据读取模块140读取的数据先进行缓存,而不是直接用于计算。
[0071] 数据读取模块140包括:地址分发单元141、数据存储单元142、数据重排序单元143和数据缓存单元144。地址分发单元141将地址缓存模块130中的二维存储地址分发到数据存储单元142中;数据存储单元142中存储了计算模块150用于计算的数据,当需要输出数据时,数据存储单元142根据二维存储地址读取数据;数据重排序单元143按照预设规则对读取的数据进行排序,其中,预设规则为计算模块150进行计算时的数据顺序;数据缓存单元144缓存数据重排序单元143输出的重新排序后的数据。数据缓存单元144还用于判断计算模块150是否能够接收数据,当数据缓存单元144确定计算模块150能够接收数据时,则立即向计算模块150输出预先缓存的数据,以使计算模块150能够进行深度学习计算。
[0072] 当数据读取模块140的数据缓存单元144缓存的数据达到上限之后,数据读取模块140则暂停数据读取操作,当计算模块150开始计算时,即数据缓存单元144内预先缓存的数据被消耗,数据缓存单元144的部分空间被清空,则数据读取模块140继续根据地址缓存模块130内预先存储的二维存储地址进行数据读取工作,从而保证数据向计算模块150连续输出的过程中,数据缓存单元144一直有数据。同时,地址缓存模块130内的部分空间也被清空,坐标生成模块110和地址生成模块120则继续向地址缓存模块130输送数据的二维存储地址。
[0073] 本发明实施例二提供的一种应用于深度学习计算的数据读取系统通过地址缓存模块和数据缓存单元保证计算模块在任何时候可以连续的获得用于计算的输入数据,不需要额外的准备时间。地址缓存模块和数据缓存单元可以使用深度很小的存储结构,消耗的存储资源很少且存储形式灵活,不会受限于计算模块所实现的卷积计算的大小。通过将数据的三维坐标地址转换为二维存储地址,扩大了神经网络卷积计算的维度,能够更加灵活地支持各种深度学习算法,且有利于计算模块实现高的计算并行度。
[0074] 实施例三
[0075] 图5为本发明实施例三提供的一种应用于深度学习计算的数据读取方法的流程示意图,可适用于深度学习计算的数据读取,提高数据读取速度。该方法可以通过本发明任意实施例提供的一种应用于深度学习计算的数据读取系统来实现,本发明实施例三中未详尽描述的内容可以参考本发明任意系统实施例中的描述。
[0076] 如图5所示,本发明实施例三提供的一种应用于深度学习计算的数据读取方法包括:
[0077] S510、生成数据的三维位置坐标。
[0078] 具体的,深度学习计算也称作神经网络计算,神经网络的基本组成结构是卷积层。卷积计算的输入和输出都是三维矩阵形式,矩阵中的数据用(W,H,C)这样的三维位置坐标表示,如图3A所示,为一个W=H=6,C=3的矩阵,x表示矩阵中的数据,三维形式的数据可以拆分成多个二维形式的数据矩阵,将三维坐标的C坐标固定成一个定值,例如0,则由W坐标和H坐标变化所确定的输入数据可以组成一个二维矩阵,该矩阵中输入数据的三维坐标为(W,H,0),这种二维矩阵可以看成数据的一层二维图,三维形式的数据则包括多层二维图,对于一个具体的数据,W表示数据所在的列,H表示数据所在的行,C表示数据所在二维图的层数,例如,图3A中的数据1处于第一层二维图的第一行和第一例,其三维位置坐标为(1,1,
1)。
[0079] 进一步的,本步骤具体包括(流程图中未示出):
[0080] S511、根据计算模块的计算过程生成计数信号。
[0081] 具体的,计算模块的计算过程即神经网络的计算过程,神经网络的一层可以看成一个卷积层,神经网络包括多个卷积层,神经网络每一层的计算过程可以看成是每一个卷积层的循环计算,计数信号则表示卷积层循环计算的次数。每产生一个计数信号,说明卷积层进行了一次计算,则需要读取一次数据。计数信号可以由计数器产生,神经网络的一层对应一个计数器,神经网络的一层每完成一次计算后,对应的计数器加1,当所有的计数器都达到设定的最大值时,说明神经网络完成计算。
[0082] S512、将所述计数信号转换为所述三维位置坐标。
[0083] 具体的,将计数信号转换为数据的三维位置坐标,例如,计数信号为1,对应的三维位置坐标为(1,1,1)。
[0084] S520、根据所述三维位置坐标生成所述数据对应的二维存储地址。
[0085] 具体的,数据的二维存储地址指的是数据在数据存储单元中的存储地址,由于是由多个存储块组成,数据存储在存储块中,故二维存储地址包括存储块的编号以及数据在存储块中的存储地址,可以表示为(X,Y),其中,X表示存储块编号,Y表示数据在存储块中的存储地址。如图3B所示,以存储器RAM为例,RAM包括多个bank,每个bank包括2行和多列,将最右边的一列称为第1列,地址为1,则数据1和37对应的二维存储地址可以表示为(1,1)。
[0086] 根据三维位置坐标生成数据对应的二维存储地址,则可以根据该二维存储地址找到数据在数据存储单元中的存储位置,从而实现读取数据。示例性的,数据的三维位置坐标为(1,1,1),那么生成对应的二维存储地址为(1,1),数据存储单元则根据二维存储地址(1,1)从存储块1中的第一类读取数据1和37。
[0087] S530、缓存所述二维存储地址。
[0088] 具体的,当神经网络计算开始计算时,才需要读取数据,反之则不需要读取数据。在神经网络没有开始计算时,将部分二维存储地址进行缓存,当神经网络开始计算时,则数据存储单元可以立即根据预先缓存的二维存储地址读取数据,从而减少数据存储单元等待二维存储地址生成的耗时。
[0089] S540、根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。
[0090] 具体的,根据二维存储地址可以预先读取一部分数据进行缓存,当神经网络开始计算时,则可以直接从缓存的数据中输出数据,从而减少了数据读取花费的时间。当输出了一定的缓存数据进行深度学习计算后,可以根据缓存的二维存储地址继续进行数据读取,从而实现数据的大量连续输出。
[0091] 进一步的,本步骤具体包括(流程图中未示出):
[0092] S541、将所述二维存储地址分配给数据存储单元,以使所述数据存储单元根据所述二维存储地址存储数据。
[0093] 具体的,将二维存储地址中的存储块编号,将二维存储地址分配给数据存储单元中对应的存储块,存储块根据数据的存储地址读取对应的数据。
[0094] S542、对所述数据存储单元读取出来的数据按照预设规则进行重新排序。
[0095] 具体的,数据存储单元读取出来的数据顺序不一定是计算模块实际计算时的数据顺序,故需要对数据存储单元读取出来的数据按照计算模块实际计算时的数据顺序进行排序,例如,第一次读取的数据为1和37,第二次读取的数据为2和38,重排序前的数据顺序为:1、37、2、38,重排序后的数据顺序为1、2、37、38。
[0096] S543、缓存重新排序后的数据。
[0097] 具体的,对重新排序后的数据进行缓存,当需要输出数据时,可以立即输出数据,从而可以省略数据读取的时间。
[0098] S544、判断计算模块是否能够接收数据。
[0099] 具体的,计算模块能够接收数据时,则表示计算模块开始进行深度学习计算,若计算模块不需要进行深度学习计算,则不需要对计算模块输出数据。
[0100] S545、若所述计算模块能够接收数据,则向所述计算模块输出缓存的数据以进行深度学习计算。
[0101] 具体的,当计算模块能够接收数据时,则向计算模块输出缓存的数据以进行深度学习计算。
[0102] 本发明实施例三提供的一种应用于深度学习计算的数据读取方法,通过生成数据的三维位置坐标;根据所述三维位置坐标生成所述数据对应的二维存储地址;缓存所述二维存储地址;根据缓存的所述二维存储地址读取预先存储的数据以进行深度学习计算。解决了深度学习计算时需要等待数据存储单元先读取部分数据才开始计算的耗时问题,增加了应用于深度学习计算的数据读取系统输出数据的并行度。
[0103] 实施例四
[0104] 图6为本发明实施例四提供的一种芯片的结构示意图,如图6所示,本发明实施例四提供的芯片600包括本发明任意实施例提供的一种应用于深度学习计算的数据读取系统100。
[0105] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。