首页> 中国专利> 将硬件加速器的输出数据存储于存储器的方法,从存储器读取硬件加速器的输入数据的方法及为其的硬件加速器

将硬件加速器的输出数据存储于存储器的方法,从存储器读取硬件加速器的输入数据的方法及为其的硬件加速器

摘要

本发明是当判断为需对输入数组的第一维度方向设置先于第二维度方向的优选顺序并将所述各要素依次输入数据运算部时,对所述第一维度方向设置先于所述第二维度方向的优选顺序并从存储器依次读取所述多个非压缩数据组或与所述各个非压缩数据组对应的多个压缩数据组的数据处理方法。

著录项

  • 公开/公告号CN116490850A

    专利类型发明专利

  • 公开/公告日2023-07-25

    原文格式PDF

  • 申请/专利权人 拓开科技公司;

    申请/专利号CN202080106208.5

  • 发明设计人 崔正焕;梁成牟;

    申请日2020-11-06

  • 分类号G06F9/48(2006.01);

  • 代理机构中国专利代理(香港)有限公司 72001;中国专利代理(香港)有限公司 72001;

  • 代理人张健;刘春元

  • 地址 韩国首尔

  • 入库时间 2024-01-17 01:17:49

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-11

    实质审查的生效 IPC(主分类):G06F 9/48 专利申请号:2020801062085 申请日:20201106

    实质审查的生效

  • 2023-07-25

    公开

    国际专利申请公布

说明书

技术领域

本发明涉及计算机技术,并且涉及有效地管理硬件加速器的输入输出数据的技术。

背景技术

以作为本发明的对象的硬件加速器的一种的神经网络加速器的结构的示例为开端,开始对本发明进行说明。

<神经网络>

神经网络是作为体现人工智能的技术之一的众所周知的技术。

图1是为了帮助理解本发明而提出的神经网络的部分构成的概念性示意图。

根据一实施例的神经网络(600)可以包括多个层。从概念上讲,所述多个层中的第一层(610)可以输出被称为特征图或激活的输出数据(611)。而且,从所述第一层(610)输出的输出数据(611)可以被提供为比第一层(610)更下层的第二层(620)的输入数据。

各个所述层可以被视为用于将输入的输入数据转换为预定的输出数据的数据转换功能模块或数据运算部。例如,第一层(610)可以被视为用于将输入到第一层(610)的输入数据(609)转换为输出数据(611)的数据转换功能模块。为了实现这种数据转换功能模块,需要定义第一层(610)的结构。根据所述第一层(610)的结构,需要定义存储输入到第一层(610)的输入数据(609)的输入变量,并且需要定义表示从第一层(610)输出的输出数据(611)的输出变量。所述第一层(610)可以使用一组权重(612)以执行其功能。所述一组权重(612)可以是为了从所述输入变量计算出所述输出变量而与所述输入变量相乘的值。所述一组权重(612)可以是神经网络(600)的各种参数之一。

神经网络(600)中,例如从输入到第一层(610)的输入数据(609)计算从第一层(610)输出的输出数据(611)的运算过程可以通过软件来实现,也可以通过硬件来实现。

<神经网络运算的硬件实现>

图2示出了包括将神经网络功能实现为硬件的神经网络加速器的神经网络运算装置和包括其的计算机装置中的一些主要结构。

计算机装置(1)可以包括DRAM(动态随机存取存储器)(10)、神经网络运算装置(100)、连接DRAM(10)和神经网络运算装置(100)的总线(700)及与总线(700)连接的其他硬件(99)。

此外,计算机装置(1)还可以包括电源部、通信部、主处理器、用户接口、存储器部及外围装置部(未示出)。总线(700)可以由神经网络运算装置(100)和其他硬件(99)共享。

神经网络运算装置(100)可以包括DMA部(20)、控制部(40)、内部存储器(30)、压缩部(620)、解码部(630)及神经网络加速部(60)。

在本说明书中,解码可以被称为解压。因此,解码可以被表达为decoding或decompress。

此外,在本说明书中,压缩可以被称为编码。因此,压缩可以被翻译成compress或encoding。

为了使神经网络加速部(60)进行动作,输入数组(310)应该被提供为神经网络加速部(60)的输入数据。

输入数组(310)可以是多维数组形状的数据的集合。例如,输入数组(310)可以包括图1中所示的输入数据(609)和一组权重(612)。在本说明书中,输入数组可以被称为输入数据。

可以从内部存储器(30)输出提供给神经网络加速部(60)的输入数组(310)。

内部存储器(30)可以通过总线(700)从DRAM(10)接收输入数组(310)的至少一部分或全部。此时,为了将存储于DRAM(10)中的数据移动到内部存储器(30),控制部(40)和DMA部(20)可以控制内部存储器(30)和DRAM(10)。

如果神经网络加速部(60)动作,则可以基于输入数组(310)生成输出数组(330)。

输出数组(330)可以是多维数组形状的数据的集合。在本说明书中,输出数组可以被称为输出数据。

生成的输出数组(330)可以优先存储于内部存储器(30)中。

在控制部(40)和DMA部(20)的控制下,存储于内部存储器(30)中的输出数组(330)可以被存储于DRAM(10)中。

控制部(40)可以总体控制DMA部(20)、内部存储器(30)及神经网络加速部(60)的动作。

在一个实施例中,神经网络加速部(60)可以在第一时间区间期间执行图1所示的第一层(610)的功能,并且可以在第二时间区间期间执行图1所示的第二层(620)的功能。

在一个实施例中,图2所示的神经网络加速部(60)可以提供多个,分别并列执行控制部(40)请求的运算。

在一个实施例中,神经网络加速部(60)可以随时间而按给定的顺序依次输出输出数组(330)的所有数据,而不是一次性地输出。

压缩部(620)可以压缩输出数组(330)并将其提供给内部存储器(30)以减小输出的输出数组(330)的数据量。结果,输出数组(330)可以以被压缩的状态被存储于DRAM(10)中。

输入到神经网络加速部(60)的输入数组(310)可以从DRAM(10)读取。从DRAM(10)读取的数据可以是压缩的,并且所述被压缩的数据可以在被提供到神经网络加速部(60)之前被解码部(630)解码并被转换为输入数组(310)。

<利用硬件的神经网络运算的特征>

优选的是,在图2所示的神经网络加速部(60)在第一时间区间期间为了从该输入数组(310)生成输出数组(330)而执行运算作业期间,内部存储器(30)从DRAM(10)取得新数据。

即,例如,神经网络加速部(60)可以在第一时间区间期间接收图1的输入数组(609)和第一组的加权值(612)而执行第一层(610)的功能。

而且,神经网络加速部(60)可以在第二时间区间期间接收图1的输入数组(611)和第二组的加权值(622)而执行第二层(620)的功能。

此时,优选的是,在神经网络加速部(60)执行第一层(610)的功能的期间,内部存储器(30)从DRAM(10)取得输入数组(611)和第二组的加权值(622)。

图3示出了图2的输出数组330的结构。

输出数组(330)可以是具有多维结构的数据的集合。在图3中,为了便于说明,以具有二维结构的数据为例进行了说明,但以下说明的本发明的概念也可以适用于输出数组(330)具有三维以上结构的情况。

在一实施例中,将输出数组(330)划分为多个非压缩数据组(NCG)并进行定义,其中,可以仅将第一非压缩数据组先记录在内部存储器(30)中,然后,将记录在内部存储器(30)中的所述第一非压缩数据组移动到DRAM(10)之后从内部存储器(30)进行删除。然后,可以仅将输出数组(330)中的第二非压缩数据组先记录在内部存储器(30)中,然后,将记录在内部存储器(30)中的所述第二非压缩数据组移动到DRAM(10)之后从内部存储器(30)进行删除。例如,当内部存储器(30)的大小不足够大以存储所有一组输出数组(330)时,可采用这种方法。

进一步地,当输出数组(330)的任意非压缩数据组(NCG)被记录在内部存储器(30)中时,可以通过首先压缩所述任意非压缩数据组(NCG)而将获得的数据压缩组(CG)记录在内部存储器30中,而不是直接记录所述任意非压缩数据组(NCG)。然后,可以将记录在内部存储器(30)中的压缩数据组(CG)移动到DRAM(10)。

为了通过压缩所述各个非压缩数据组来生成所述各个压缩数据组,可以提供图2中未示出的单独的数据缓冲器。

图4是用于说明作为在部分实施例中可能发生的约束条件而在本发明中考虑的部分约束条件的示意图。

参照图4的(a),在第一时间区间(T1)神经网络加速部(60)可以执行层k(610)的功能。此时,神经网络加速部(60)可以输出输出数组(330),其中,可以按照图4所示的索引1、2、3、4、…、15、16的顺序(参照图4的(a)的Z字型箭头)输出输出数据(330)的各要素,而不是一次性输出输出数据(330)的各要素。在所述第一时间区间(T1)输出的输出数组(330)可以存储于DRAM(10)中。

而且,参照图4的(b),在第二时间区间(T2)神经网络加速部(60)可以执行层k+1(610)的功能。为此,神经网络加速部(60)可以请求记录在DRAM(10)中的所述输出数组(330)作为输入数据。此时,神经网络加速部(60)可能会存在需要按照索引1、5、9、13、2、6、10、14、3、7、11、15、4、8、12、16的顺序(参照图4的(b)的Z字形箭头)接收输出数组(330)的构成要素的制约。

在这种限制下,如果数据的加工及输入输出设计得不适当,则有可能会发生数据处理所需时间增加、内部存储器(30)的利用效率降低的问题。参照图4及后述的图5A至图5C说明这种问题。

图5A至图5C是用于说明根据一实施例的数据处理方法的问题的示意图。

参照图5A,在第一时间区间(T1)神经网络加速部(60)可以执行层k(610)的功能。此时,神经网络加速部(60)可以依次输出输出数组(330)中对应于属于第一非压缩数据组(NCG1)的索引1至索引8的构成要素而完成第一非压缩数据组(NCG1)的输出。然后,压缩部(620)可以通过压缩完成的第一非压缩数据组(NCG1)来生成第一压缩数据组(CG1)。第一压缩数据组(CG1)可以暂时存储于内部存储器(30)后移动至DRAM(10)。

压缩部(620)可以包括数据缓冲器。

然后,参照图5B进行说明,在第一时间区间(T1),神经网络加速部(60)可以依次输出输出数组(330)中对应于属于第二非压缩数据组(NCG2)的索引9至索引16的构成要素而完成第二非压缩数据组(NCG2)的输出。然后,压缩部(620)可以通过压缩完成的第二非压缩数据组(NCG2)来生成第二压缩数据组(CG2)。第二压缩数据组(CG2)可以暂时存储于内部存储器(30)并移动至DRAM(10)。

参照图5C,在第二时间区间(T2)神经网络加速部(60)可以执行层k+1(620)的功能。此时,如上所述,执行层k+1(620)的功能的神经网络加速部(60)可能会存在需要按照索引1、5、9、13、2、6、10、14、3、7、11、15、4、8、12、16的顺序被输入的制约。

此时,如果仅从DRAM(10)读取第一压缩数据组(CG1)的一部分和第二压缩数据组(CG2)的一部分,则仅利用读取的数据不能将数据输入到神经网络加速部(60)。这是因为需要第一压缩数据组(CG1)的全部来恢复第一非压缩数据组(NCG1),并且需要第二压缩数据组(CG2)的全部来恢复第二非压缩数据组(NCG2)。

因此,首先可以从DRAM(10)读取所有第一压缩数据组(CG1)并将其存储于内部存储器(30),并且利用解码部(630)恢复存储于内部存储器(30)的第一压缩数据组(CG1)以准备第一非压缩数据组(NCG1)。然而,所述准备的第一非压缩数据组(NCG1)中不存在与索引9和索引13对应的要素,因此,在将与索引1和索引5对应的要素输入到神经网络加速部(60)之后,不能将与索引9和索引13对应的要素输入到神经网络加速部(60)。因此,为了解决这个问题,必须恢复第二压缩数据组(CG2)。结果,存在如下问题:在构成输出数组(330)的所有非压缩数据组恢复之后,无法持续向神经网络加速部(60)输入数据。

在这种情况下,由于需要单独的缓冲器来存储从解码部(630)输出的各组的数据,或者需要借用内部存储器(30)的预定空间,因此存在计算机资源的使用效率大大降低的问题。此外,还存在不能实时使用从DRAM(10)读取的数据的问题。

上述内容是本发明的发明人为完成本发明而知道的背景知识,上述内容不应被认为在提交本专利申请时被非特定的人所熟知。此外,上述内容的至少一部分可以构成本发明的实施例。

发明内容

发明要解决的课题

为解决上述问题,本发明提供一种用于将硬件加速器的数据运算部输出的输出数组的要素进行分组(碎片化)的压缩方法,以及一种用于读取被分组(碎片化)并存储于DRAM的数据的调度技术。

用于解决课题的方法

根据本发明的一个观点,可以提供包括数据运算部(610)的硬件加速器(110)处理由多个非压缩数据组构成的输入数组的数据处理方法,其中,所述输入数组作为需输入到所述数据运算部的输入数组(310)。所述处理方法包括:当判断为需对所述输入数组的第一维度方向(91)设置先于第二维度方向(92)的优选顺序并将所述各要素依次输入所述数据运算部时,所述硬件加速器执行对所述第一维度方向设置先于所述第二维度方向的优选顺序并从存储器(11)依次读取所述多个非压缩数据组或与所述各个非压缩数据组对应的多个压缩数据组的步骤;及沿所述第一维度方向配置的所述输入数组的一系列要素如果均准备好,则所述硬件加速器执行将所述一系列要素输入所述数据运算部的步骤。

此时,所述输入数组可以为具有2的维度的矩阵或具有3以上的维度的数组。

此时,所述各要素可以为构成所述输入数组的最小单位的信息。例如,当所述输入数组为二维矩阵时,所述各个要素可以为在所述矩阵的特定行及特定列交叉的数据。

此时,所述读取步骤可以在依次读取所述多个非压缩数据组或所述多个压缩数据组时按组读取。

此时,在所述输入数组中,沿所述第二维度方向定义了2个以上数据组。

此时,根据权利要求1所述的硬件加速器,其特征在于,所述存储器中存储的构成所述输入数组的所述多个非压缩数据组或所述多个压缩数据组可以对所述输入数组的所述第二维度方向设置先于所述第一维度方向的优选顺序并依次存储于所述存储器。

此时,所述输入数组(310)可以为在所述取得步骤之前由所述数据运算部输出的输出数据,所述输出数据可以由所述数据运算部对所述输出数组的所述第二维度方向设置先于所述第一维度方向的优选顺序并输出。

此时,根据权利要求2所述的硬件加速器,其特征在于,所述存储器中存储的构成所述输入数组的所述多个非压缩数据组或所述多个压缩数据组可以对所述输入数组的所述第一维度方向设置先于所述第二维度方向的优选顺序并依次存储于所述存储器。

此时,所述输入数组(310)可以为在所述取得步骤之前由所述数据运算部输出的输出数据,所述输出数据可以由所述数据运算部对所述输出数组的所述第一维度方向设置先于所述第二维度方向的优选顺序并输出。

此时,所述硬件加速器可以被配置为,当判断为需对所述输入数组的第一维度方向(91)设置先于第二维度方向(92)的优选顺序并将所述各要素依次输入所述数据运算部时,对所述第一维度方向设置先于所述第二维度方向的优选顺序并从存储器(11)依次读取与构成所述输入数组的所述多个非压缩数据组分别对应的多个压缩数据组。而且,所述输入的步骤可以包括:对所述读取的压缩数据组分别解码以生成与所述各个压缩数据组对应的所述各个非压缩数据组(NCG)的步骤;及从所述生成的非压缩数据组全部准备好沿所述第一维度方向配置的所述输入数组的一系列要素后,将所述一系列要素输入所述数据运算部的步骤。

根据本发明的另一观点,可以提供数据处理方法,其包括:在第一时间区间,硬件加速器(110)的数据运算部(610)输出输出数组,且对所述输出数组的第二维度方向设置先于第一维度方向的优选顺序并依次输出所述输出数组的要素的步骤;所述硬件加速器将所述输出数组分为多个数据组并存储于存储器,且对所述第二维度方向设置先于所述第一维度方向的优选顺序并将所述多个数据组依次存储于所述存储器的步骤;及在第二时间区间,所述硬件加速器读取所述存储器中存储的所述多个数据组作为用于输入所述数据运算部的输入数组并输入所述数据运算部的步骤。此时,在所述输入的步骤包括:所述硬件加速器对所述第一维度方向设置先于所述第二维度方向的优选顺序并从所述存储器依次读取所述存储器中存储的所述多个组的步骤;及所述硬件加速器在沿所述第一维度方向配置的所述输入数组的一系列要素全部准备好后,将所述一系列要素输入所述数据运算部的步骤。

此时,在所述输出数组中沿所述第一维度方向定义第一个数的组,在所述输出数组中沿所述第二维度方向定义第二个数的组,所述多个组中的至少一部分或全部可以具有彼此相同的组大小,沿所述第二维度方向延伸的1个列中包括的数据组的总大小可以小于或等于输出缓冲器大小,其中,所述输出缓冲器容纳所述数据运算部在所述第一时间区间输出的所述输出数组的一部分,沿所述第一维度方向延伸的1个列中包括的数据组的总大小可以小于或等于输出缓冲器大小,其中,所述输入缓冲器容纳所述数据运算部在所述第二时间区间接收的所述输入数组的一部分。

此时,所述数据运算部可以被配置为,在所述第二时间区间,对所述输入数组的第一维度方向设置先于所述第二维度方向的优选顺序并依次接收所述输入数组的要素。

根据本发明的一个观点,可以提供硬件加速器,其包括:控制部(40);及数据运算部(610),所述数据运算部接收并处理由多个非压缩数据组(NCG)构成的输入数组(310)。此时,所述控制部被配置为,当判断为需对所述输入数组的第一维度方向(91)设置先于第二维度方向(92)的优选顺序并将所述各要素依次输入所述数据运算部时,对所述第一维度方向设置先于所述第二维度方向的优选顺序并从存储器(11)依次读取所述多个非压缩数据组或与所述多个非压缩数据组对应的多个压缩数据组,而且,沿所述第一维度方向配置的所述输入数组的一系列要素如果均准备好,则将所述一系列要素输入所述数据运算部。

此时,所述硬件加速器还可以包括解码部(630)。而且,所述控制部可以被配置为,当判断为需对所述输入数组的第一维度方向(91)设置先于第二维度方向(92)的优选顺序并将所述各要素依次输入所述数据运算部时,对所述第一维度方向设置先于所述第二维度方向的优选顺序并从存储器(11)依次读取与构成所述输入数组的所述多个非压缩数据组对应的多个压缩数据组,可以被配置为,对所述读取的压缩数据组分别解码以生成与所述各个压缩数据组对应的所述各个非压缩数据组(NCG),而且,可以被配置为,从所述生成的非压缩数据组全部准备好沿所述第一维度方向配置的所述输入数组的一系列要素后,将所述一系列要素输入所述数据运算部。

此时,在所述输入数组中,沿所述第二维度方向定义了2个以上数据组。

此时,根据权利要求1所述的硬件加速器,其特征在于,所述存储器中存储的构成所述输入数组的所述多个非压缩数据组或所述多个压缩数据组可以对所述输入数组的所述第二维度方向设置先于所述第一维度方向的优选顺序并依次存储于所述存储器。

此时,所述输入数组(310)可以为在所述取得步骤之前由所述数据运算部输出的输出数据,所述输出数据可以由所述数据运算部对所述输出数组的所述第二维度方向设置先于所述第一维度方向的优选顺序并输出。

根据本发明的另一观点,可以提供硬件加速器,其包括:控制部(40);及数据运算部(610),所述数据运算部接收并处理由多个非压缩数据组构成的输入数组(310)。此时,所述数据运算部被配置为,在第一时间区间输出输出数组,且对所述输出数组的第二维度方向设置先于第一维度方向的优选顺序并依次输出所述输出数组的要素,所述控制部被配置为,将所述输出数组分为多个组并存储于存储器,且对所述第二维度方向设置先于所述第一维度方向的优选顺序并将所述多个组依次存储于所述存储器,所述控制部被配置为,执行在第二时间区间,读取所述存储器中存储的所述多个组作为用于输入所述数据运算部的输入数组并输入所述数据运算部的步骤,在所述输入的步骤中,所述控制部被配置为,对所述第一维度方向设置先于所述第二维度方向的优选顺序并从所述存储器依次读取所述存储器中存储的所述多个组,并且在沿所述第一维度方向配置的所述输入数组的一系列要素全部准备好后,将所述一系列要素输入所述数据运算部。

此时,所述硬件加速器还可以包括:输出缓冲器,所述输出缓冲器容纳所述数据运算部在所述第一时间区间输出的所述输出数组的一部分;及输入缓冲器,所述输入缓冲器容纳所述数据运算部在所述第二时间区间接收的所述输入数组的一部分。而且,在所述输出数组中沿所述第一维度方向定义第一个数的组,在所述输出数组中沿所述第二维度方向定义第二个数的组,所述多个组中的至少一部分或全部可以具有彼此相同的组大小,沿所述第二维度方向延伸的1个列中包括的数据组的总大小可以小于或等于输出缓冲器大小,沿所述第一维度方向延伸的1个列中包括的数据组的总大小可以小于或等于输出缓冲器大小。

根据本发明的另一观点,可以提供硬件加速器(110),其包括:数据运算部(610);压缩部(620);控制部(40);及解码部(630)。所述数据运算部(610)被配置为,基于在第一运算时间区间(T1)期间输入到所述数据运算部(610)的第一输入数组(311)输出第一输出数组(331),所述第一输出数组(331)包括以第一维度方向(91)和第二维度方向(92)分别具有N1个和N2个段的N1*N2个非压缩数据组(NCG)(但,N1是大于1的自然数,N2是大于2的自然数),所述压缩部(620)被配置为,压缩各个所述非压缩数据组(NCG)以生成N1*N2个压缩数据组(CG),在属于所述第一维度方向(91)的pth条目的N2个非压缩数据组(NCG)沿第二维度方向(92)依次被压缩之后,属于所述第一维度方向(91)的p+1th条目(p+1th行)的N2个所述非压缩数据组(NCG)沿第二维度方向(92)依次被压缩(其中,p是N1或更小的自然数),所述控制部(40)被配置为,将所述N1*N2个压缩数据组(CG)存储于存储器部(30,11),所述控制部(40)被配置为,在沿所述第一维度方向(91)从所述存储器部(30,11)依次取得属于所述第二维度方向(92)的qth条目的N1个压缩数据组(CG)并将其提供给所述解码部(630)之后,沿所述第一维度方向(91)从所述存储器部(30,11)依次取得属于所述第二维度方向(92)的q+1th条目的N1个所述压缩数据组(CG)并将其提供给所述解码部(630),所述解码部(630)被配置为,对所述提供的N1*N2个所述压缩数据组分别解码以恢复所述N1*N2个非压缩数据组,所述数据运算部(610)被配置为,基于在第二运算时间区间(T2)期间所述解码部(630)恢复的所述N1*N2个所述非压缩数据组输出第二输出数组(332)。

此时,所述数据运算部可以被配置为,在所述第一运算时间区间期间,对所述第一输入组数进行处理以输出具有二维以上的维度的所述第一输出数组,可以被配置为,在沿所述第二维度方向(92)依次输出所述第一输出数组中属于所述第一维度方向(91)的kth条目(kth行)的要素之后,沿所述第二维度方向(92)依次输出属于所述第一维度方向(91)的k+1th条目(k+1th行)的要素。

所述数据运算部可以被配置为,在所述第二时间区间,对所述输入数组的第一维度方向设置先于所述第二维度方向的优选顺序并依次接收所述输入数组的要素。

根据本发明的另一观点,可以提供硬件加速器,其包括:控制部(40);及数据运算部(610)。所述数据运算部可以被配置为,在第一时间区间输出输出数组,且对所述输出数组的第二维度方向设置先于第一维度方向的优选顺序并依次输出所述输出数组的要素,所述控制部可以被配置为,将所述输出数组分为多个数据组并存储于存储器,且对所述第二维度方向设置先于所述第一维度方向的优选顺序并将所述多个数据组依次存储于所述存储器,所述控制部可以被配置为,执行在第二时间区间,读取所述存储器中存储的所述多个数据组作为用于输入所述数据运算部的输入数组并输入所述数据运算部的步骤,在所述输入的步骤中,所述控制部可以被配置为,对所述第一维度方向设置先于所述第二维度方向的优选顺序并从所述存储器依次读取所述存储器中存储的所述多个数据组,并且在沿所述第一维度方向配置的所述输入数组的一系列要素全部准备好后,将所述一系列要素输入所述数据运算部。

此时,所述硬件加速器还可以包括:输出缓冲器,所述输出缓冲器容纳所述数据运算部在所述第一时间区间输出的所述输出数组的一部分;及输入缓冲器,所述输入缓冲器容纳所述数据运算部在所述第二时间区间接收的所述输入数组的一部分。此时,沿所述第二维度方向延伸的1个列中包括的数据组的总大小可以小于或等于所述输出缓冲器的大小,沿所述第一维度方向延伸的1个列中包括的数据组的总大小可以小于或等于输出缓冲器大小。

根据本发明的一个观点,可以提供包括上述硬件加速器的计算机装置。

发明效果

根据本发明,提供一种用于将硬件加速器的数据运算部输出的输出数组的要素进行分组(碎片化)的压缩方法,以及一种用于读取被分组(碎片化)并存储于DRAM的数据的调度技术。

附图说明

图1是为了帮助理解本发明而提出的神经网络的部分构成的概念性示意图。

图2示出了包括将神经网络功能实现为硬件的神经网络加速器的神经网络运算装置和包括其的计算机装置中的一些主要结构。

图3示出了图2的输出数组330的结构。

图4是用于说明作为在部分实施例中可能发生的约束条件而在本发明中考虑的部分约束条件的示意图。

图5A至图5C是用于说明根据一实施例的数据处理方法的问题的示意图。

图6示出了根据本发明的一实施例提供的硬件加速器以及包括其的计算机装置中的一些主要结构。

图7是示出了根据本发明的一实施例数据运算部根据时间进行动作的方式的示意图。

图8A和图8B示出了根据本发明的一实施例对数据运算部输出的输出数组进行分组并压缩的方法,图8C是示出根据本发明的一实施例从存储器部读取压缩数据组的顺序和对压缩数据组进行解码的顺序的示意图。

图9A和图9B示出了根据本发明的另一实施例对数据运算部输出的输出数组进行分组并压缩而存储于存储器部的顺序,图9C示出了读取存储于存储器部中的分组并解压缩(解码)的顺序。

图10A、图10B和图10C是用于说明根据发明的一实施例的各数据组的大小与输出缓冲器和输入缓冲器的大小之间的关系的示意图。

图11是示出了根据本发明的一实施例的神经网络加速器的输入数组或输出数组的形状的概念图。

具体实施方式

以下,参照附图说明本发明的实施例。但是,本发明并不局限于在本说明书中说明的实施例,本发明可体现为多种不同形态。在本说明书使用的术语用于帮助实施例的理解,而并非用于限定本发明。此外,只要没有相反的特殊记载,以下使用的单数形态的语句包括复数形态。

图6示出了根据本发明的一实施例提供的硬件加速器以及包括其的计算机装置中的一些主要结构。

计算机装置(1)可以包括存储器(11)、硬件加速器(110)、连接存储器(11)与硬件加速器(110)的总线(700)及与总线(700)连接的其他硬件(99)。

此外,计算机装置(1)还可以包括电源部、通信部、主处理器、用户接口、存储器部及外围装置部(未示出)。总线(700)可以由硬件加速器(110)和其他硬件(99)共享。

硬件加速器(110)可以包括DMA部(20)、控制部(40)、内部存储器(30)、压缩部(620)、解码部(630)、数据运算部(610)、输出缓冲器(640)及输入缓冲器(650)。

虽然在图6中,解码部(630)、压缩部(620)、输出缓冲器(640)、输入缓冲器(650)及内部存储器(30)是各自不同的构成要素,但是修改实施例中,解码部(630)、压缩部(620)、输出缓冲器(640)、输入缓冲器(650)及内部存储器(30)可以被设置为单个功能部。

例如,存储器(11)、硬件加速器(110)及数据运算部(610)可以是图2所示的DRAM(10)、神经网络运算装置(100)及神经网络加速部(60)。然而,本发明不限于此。

为了使数据运算部(610)进行动作,输入数组(310)应该被提供给数据运算部(610)。输入数组(310)可以是多维数组形状的数据的集合。

可以从内部存储器(30)输出提供给数据运算部(610)的输入数组(310)。

内部存储器(30)可以通过总线(700)从存储器(11)接收输入数组(310)的至少一部分或全部。此时,为了将存储于存储器(11)中的数据移动到内部存储器(30),控制部(40)和DMA部(20)可以控制内部存储器(30)和存储器(11)。

如果数据运算部(610)动作,则可以基于输入数组(310)生成输出数组(330)。输出数组(330)可以是多维数组形状的数据的集合。

生成的输出数组(330)可以优先存储于内部存储器(30)中。

在控制部(40)和DMA部(20)的控制下,存储于内部存储器(30)中的输出数组(330)可以被存储于存储器(11)中。

控制部(40)可以总体控制DMA部(20)、内部存储器(30)及数据运算部(610)的动作。

在一个实施例中,数据运算部(610)可以在第一时间区间期间执行第一功能,并且可以在第二时间区间期间执行第二功能。第二功能可以不同于第一功能。

例如,数据运算部(610)可以在第一时间区间期间执行图1所示的第一层(610)的功能,并且可以在第二时间区间期间执行图1所示的第二层(620)的功能。

在一个实施例中,图6所示的数据运算部(610)可以提供多个,分别并列执行控制部(40)请求的运算。

在一个实施例中,数据运算部(610)可以随时间而依次输出输出数组(330)的全部数据,而不是一次性地输出。

压缩部(620)可以压缩输出数组(330)并将其提供给内部存储器(30)以减小输出的输出数组(330)的数据量。结果,输出数组(330)可以以被压缩的状态的数组(340)被存储于存储器(11)中。

输出缓冲器(640)可以具有比输出数组(330)的大小小的存储空间。构成输出数组(330)的数据可以随着时间的推移而依次输出。首先,只有作为输出数组(330)中先输出的一部分的第一子数据可以被存储于输出缓冲器(640)中,存储于输出缓冲器(640)中的所述第一子数据可以被压缩部(620)压缩并被传送到存储器(11)。然后,作为输出数组(330)中稍后输出的另一个部分的第二子数据可以通过相同的过程被传送到存储器(11)。

输入到数据运算部(610)的输入数组(310)可以从存储器(11)读取。从存储器(11)读取的数据可以是压缩的,并且可以在被提供到数据运算部(610)之前被解码部(630)解码并被转换为输入数组(310)。

输入缓冲器(650)可以具有比输入数组(未压缩)(310)的大小小的存储空间。构成输入数组(压缩)(320)的数据可以随着时间的推移而依次提供。首先,只有作为输入数组(压缩)(320)中先提供的一部分的第一子数据可以被存储于输入缓冲器(650)中,存储于输入缓冲器(650)中的所述第一子数据可以被解码部(630)解码并被输入到运算部(610)。然后,作为输入数组(压缩)(320)中稍后提供的另一个部分的第二子数据可以通过相同的过程被输入到数据运算部(610)。

图7是示出了根据本发明的一实施例数据运算部根据时间进行动作的方式的示意图。

图8A和图8B示出了根据本发明的一实施例对数据运算部输出的输出数组进行分组并压缩的方法。

以下,将参照图6、图7、图8A及图8B进行说明。

数据运算部(610)可以被配置为基于在第一运算时间区间(T1)期间输入到数据运算部(610)的第一输入数组(311)而输出第一输出数组(331)(图7)。

第一输出数组(331)可以包括以第一维度方向(91)和第二维度方向(92)分别具有N1个和N2个段的N1*N2个非压缩数据组。但是,N1可以是大于1的自然数,N2可以是大于2的自然数(图8)。

在图8A所示的示例中,N1=10,N2=2。在图8A中,用虚线表示的各区域对应于一个非压缩数据组。

图8B是通过仅显示图8A的虚线部分来更清楚地示出了非压缩数据组的概念。图8B示出了非压缩数据组(NCG101)至非压缩数据组(NCG120)的共20个非压缩数据组。与图8B相比,在图8A中,由于附图中的限制,仅给非压缩数据组(NCG101)至非压缩数据组(NCG104)提供了附图标号。

以下,本说明书中,可以将以各个不同的附图表号表示的各非压缩数据组统称而赋予称为NCG(Non-Compressed data Group)的附图表号。

压缩部(620)可以压缩各个非压缩数据组(NCG)以生成N1*N2个压缩数据组(CG)。

在图8B中,使用诸如CG(Compressed Group)的附图标记示出了分别对应于图8B所示的20个非压缩数据组(NCG)的压缩数据组(CG)。

以下,本说明书中,可以将以各个不同的附图表号表示的各压缩数据组统称而赋予称为CG(Compressed data Group)的附图表号。

在本说明书中,上述NCG和CG可以统称为数据组(G)。

任意第k非压缩数据组的数据量大于与所述任意第k非压缩数据组对应的第k压缩数据组的数据量。

在一个实施例中,为了开始生成所述第k压缩数据组,可以准备有所述第k非压缩数据组的所有数据。此外,为了从所述第k压缩数据组恢复所述任意第k非压缩数据组,可以需要属于第k压缩数据组的所有数据。

在本发明的一个实施例中,在属于所述第一维度方向(91)的pth条目(图8B的pth行)的N2个所述非压缩数据组(NCG)沿所述第二维度方向(92)依次被压缩之后,属于所述第一维度方向(91)的p+1th条目(图8B的p+1th行)的N2个所述非压缩数据组(NCG)沿所述第二维度方向(92)依次被压缩。此时,p可以是N1或更小的自然数。

即,在本发明的一个实施例中,可以说数据运算部(610)输出的输出数组中定义的非压缩数据组的压缩顺序相比于第一维度方向(91)优先于第二维度方向(92)。在图8B中,压缩非压缩数据组的第一处理顺序由附图标号CO1指示。

就此来说,在图8B所示的示例中,一个所述pth条目包括有总共两个非压缩数据组。在图8B中,如果假定所述pth条目是例如非压缩数据组(NCG101)和非压缩数据组(NCG102)所属的行,则所述pth条目和属于所述p+1th条目的非压缩数据组的压缩顺序为G101、G102、G103及G104。

再次参照图6,控制部(40)可以将N1*N2个压缩数据组(CG)存储于存储器部(13)中。其中,硬件加速器(110)内部的内部存储器(30)和硬件加速器(110)外部的存储器(11)可以统称为存储器部(13)。在该配置中,实际上各个压缩数据组(CG)可以首先通过内部存储器(30)存储于存储器(11)中。内部存储器(30)的容量可以明显小于存储器(11)。

再次参照图7,数据运算部(610)可以被配置为基于在第二运算时间区间(T2)期间输入到数据运算部(610)的第二输入数组(312)而输出第二输出数组(332)。

此时,可以从存储于存储器部(13)中的所述N1*N2个压缩数据组(CG)获得所述第二输入数组(312)。

图8C是示出根据本发明的一实施例从存储器部读取压缩数据组的顺序和对压缩数据组进行解码的顺序的示意图。

控制部40可以根据与所述第一处理顺序(CO1)不同的第二处理顺序(CO2)访问从存储器部(13)取得的所述N1*N2个压缩数据组(CG)。

控制部(40)可以被配置为,沿所述第一维度方向(91)从所述存储器部(30,11)依次取得属于所述第二维度方向(92)的qth条目(图8A的第q列)的N1个压缩数据组(CG)并将其提供给所述解码部(630)之后,沿所述第一维度方向(91)从所述存储器部(30,11)依次取得属于所述第二维度方向(92)的q+1th条目(图8A的第q+1列)的N1个所述压缩数据组(CG)并将其提供给所述解码部(630)。

即,关于所述第二处理顺序,在本发明的一实施例中,可以说在第二运算时间区间(T2)需要输入到数据运算部(610)的压缩数据组的解码顺序相比第二维度方向(92)先于第一维度方向(91)。换句话说,对于压缩数据组的解码顺序,第一维度方向(91)相对于第二维度方向(92)具有优选顺序。

如上所述,在本发明的一实施例中,在第一运算时间区间(T1)生成的输出数组中定义的用于非压缩数据组/压缩数据组的压缩顺序与用于为了重新利用所述输出数组而进行重构的解码顺序可以不同。

此外,在本发明的一实施例中,将在第一运算时间区间(T1)生成的输出数组中定义的用于非压缩数据组/压缩数据组记录在存储器中的顺序与用于为了重新利用所述输出数组而从所述存储器读取所述非压缩数据组/压缩数据组的顺序可以不同。

所述第二处理顺序(CO2)可以与数据运算部(610)在第二运算时间区间(T2)期间接收输入数据的顺序相关。例如,如果所述数据运算部(610)被配置为,在第二运算时间区间(T2),对第一维度方向(91)设置先于第二维度方向(92)的优选顺序并接收需要输入到数据运算部(610)的输入数组的要素,则需要从第二运算时间区间(T2)输入到数据运算部(610)的压缩数据组的解码顺序也可以为对第一维度方向(91)设置先于第二维度方向(92)的优选顺序。

与此相反地,如果所述数据运算部(610)被配置为,在第二运算时间区间(T2),对第二维度方向(92)设置先于第一维度方向(91)的优选顺序并接收需要输入到数据运算部(610)的输入数组的要素,则需要从第二运算时间区间(T2)输入到数据运算部(610)的压缩数据组的解码顺序也可以为对第二维度方向(92)设置先于第一维度方向(91)的优选顺序。

因此,控制部40需要事先知道数据运算部(610)在第二运算时间区间(T2)接收需要输入到数据运算部(610)的输入数组的要素的顺序,并可以根据这种顺序从存储器部(13)读取所述压缩数据组。

根据上述的本发明的构成,可获得如下的效果。即,参照图8C,如果假定对第一维度方向(91)设置先于第二维度方向(92)的优选顺序并接收需要输入到数据运算部(610)的输入数组的要素,则当仅准备好非压缩数据组(NCG101、NCG103、NCG105、NCG107、NCG109、NCG111、NCG113、NCG115、NCG117及NCG119)时,可以连续且容易地输入数据运算部(610)所需的输入数据。而且,在向数据运算部(610)输入所述数据期间,可以从存储器部(13)读取并准备其他非压缩数据组(NCG102、NCG104、NCG106、NCG108、NCG110、NCG112、NCG114、NCG116、NCG118及NCG120)。

例如,如图8C所示,如果压缩数据组(CG101)和压缩数据组(CG102)没有被分为2个以上并被存储,而是被压缩为一个单一组,则读取存储于存储器部(13)的与所述输出数组(331)相关的所有压缩数据组,在解码结束之前,在连续输入数据运算部(610)所需的输入数据方面可能会出现问题。

本发明的主要思想之一是,在特定的维度方向分成2组以上后压缩并存储,使得能够按照需要接收数据的数据运算部的输入要求条件进行优化并准备按组压缩并存储于存储器部13中的数据。

此外,本发明的主要思想的另一点是,在从存储器部(13)读取按组压缩并存储的数据之前,对其进行控制的控制部(40)预先获取需要接收所述数据的数据运算部的输入数据输入顺序,根据所述获取的输入顺序读取各个压缩数据组,并根据该顺序解码各个压缩数据组。

解码部630可以对所述提供的N1*N2个所述压缩数据组分别解码以恢复所述N1*N2个非压缩数据组。在第二运算时间区间(T2),数据运算部(610)可以基于由解码部(630)恢复的所述N1*N2个所述非压缩数据组来输出第二输出数组(332)。

图9A和图9B示出了根据本发明的另一实施例对数据运算部输出的输出数组进行分组并压缩而存储于存储器部的顺序,图9C示出了读取存储于存储器部中的分组并解压缩(解码)的顺序。

图9A、图9B及图9C分别对应于图8A、图8B及图8C。因此,上面关于图8A、图8B及图8C给出的说明可以照原样应用于图9A、图9B及图9C。

图9A、图9B及图9C是用于说明根据本发明的一实施例对输入数组或输出数组的要素进行分组的各种方法的示意图,并且可以自由地设置一个数据组的维度。但是,优选的是,沿着特定方向的维度分为多个组。

图10A、图10B和图10C是用于说明根据发明的一实施例的各数据组的大小与输出缓冲器和输入缓冲器的大小之间的关系的示意图。

参照图10A,数据运算部(610)可以输出输出数组(330)。输出数组(330)可以沿第一维度方向(91)被分为5个数据组(=N1个),并且沿第二维度方向(92)被分为5个数据组(=N2个)。

各数据组(NCG)可以沿第一维度方向(91)包括多个要素,并且沿第二维度方向(92)包括多个要素。

输出缓冲器(640)可以小于输出数组(330)的总大小。

此时,数据运算部(610)可以通过给予第二维度方向(92)优选顺序而依次输出输出数组(330)的构成要素。如图10C所示的一列的数据组(OI1)所示,输出数组(330)的各构成要素可以按(1)到(2)的顺序依次输出。参照图10A,当数据运算部(610)依次输出输出数组(330)的各要素时,各数据组可以从参考编号101开始,按参考编号递增的顺序完成。

在图10A中,当第一行(row)的数据组(OI1)存储于输出缓冲器(640)时,存储于输出缓冲器(640)的数据可以按数据组被传送到存储器,或者可以按数据组被压缩并被传送到存储器。然后,存储于输出缓冲器(640)的数据可以被删除,第二行的数据组(OI2)可以重复以上过程。

此时,为了按上述数据组压缩按(1)到(2)的顺序依次输出的要素,输出缓冲器(640)的大小必须大于或等于第一行(row)的数据组(OI1)的大小。

参照图10B,数据运算部(610)可以接收输入数组(310)。输入数组(310)可以具有与图10A所示的输出数组(330)相同的数据。

输入缓冲器(650)可以小于输入数组(310)的总大小。

此时,数据运算部(610)可以通过给予第一维度方向(91)优选顺序而依次接收输入数组(330)的构成要素。如图10C所示的一列的数据组(II1)所示,输入数组(310)的各构成要素可以按(3)到(4)的顺序依次输入。参照图10B,对输入数组(310)的各组在第一维度方向(91)设置优选顺序并从存储器读取,从而可以按数据组(NCG101)、数据组(NCG106)、数据组(NCG111)、数据组(NCG116)、数据组(NCG121)、...的顺序确保数据组。

在图10B中,当第一列(column)的数据组(II1)存储于输入缓冲器(650)时,存储于输入缓冲器(650)的要素可以被输入到数据运算部(610)。然后,存储于输入缓冲器(650)的数据可以被删除,第二列的数据组(II2)可以重复以上过程。

此时,为了准备需要按(3)到(4)的顺序依次输入的要素,输入缓冲器(640)的大小必须大于或等于第一列(column)的数据组(II1)的大小。

在图10A中,示出了各数据组(NCG)具有相同大小的示例。在优选的实施例中,所有数据组的大小可以相同。但是,在另一实施例中,由于可能会发生数据数组不是输入输出缓冲器的准确整数倍的情况等,因此存在于部分边缘的数据组可以具有更小的大小。例如,作为在图10A中位于最右面的边缘的数据组的NCG(105)、NCG(110)、NCG(115)、NCG(120)和NCG(125)可以具有比作为首先生成的数据组的NCG(101)更小的大小。或者,例如,作为在图10A中位于最下面的边缘的数据组的NCG(121)、NCG(122)、NCG(123)、NCG(124)和NCG(125)可以具有比作为首先生成的数据组的NCG(101)更小的大小。可以理解的是,相同的情况也可以适用于图10B所示的各数据组(NCG)。

在本发明的一实施例中,在所述输出数组内沿所述第一维度方向定义第一个数(N1)的数据组,在所述输出数组内沿所述第二维度方向定义第二个数(N2)的数据组。

此时,在本发明的一优选实施例中,在输出数组内沿第二维度方向定义第二个数的数据组,所述多个数据组的全部可以具有彼此相同的组大小,所述第二个数乘以所述组大小的值可以小于或等于所述输出缓冲器的大小。即,沿所述第二维度方向延伸的1个列的数据组的总大小可以小于或等于所述输出缓冲器的大小。

或者,在本发明的另一实施例中,在输出数组内沿第二维度方向定义第二个数的数据组,所述多个数据组中的一部分数据组(例如,N2-1个数据组)可以具有相同的组大小,其余部分的数据组(例如,沿所述第二维度方向提供的最后的1个数据组)可以具有比所述相同的组大小小的组大小。此时,沿所述第二维度方向延伸的1个列的数据组的总大小可以小于或等于所述输出缓冲器的大小。

此外,在本发明的一优选实施例中,在输出数组内沿第一维度方向定义第一个数的数据组,所述多个数据组的全部可以具有彼此相同的组大小,所述第一个数乘以所述组大小的值可以小于或等于所述输入缓冲器的大小。即,沿所述第一维度方向延伸的1个列的数据组的总大小可以小于或等于所述输入缓冲器的大小。

或者,在本发明的另一实施例中,在输出数组内沿第一维度方向定义第一个数的数据组,所述多个数据组中的至少一部分数据组(例如,N1-1个数据组)可以具有相同的组大小,其余部分的数据组(例如,沿所述第一维度方向提供的最后的1个数据组)可以具有比所述相同的组大小小的组大小。此时,沿所述第一维度方向延伸的1个列的数据组的总大小可以小于或等于所述输入缓冲器的大小。

图11是示出了根据本发明的一实施例的神经网络加速器的输入数组或输出数组的形状的概念图。

在图1至图9中,输出数组和输入数组被示出为具有二维数组形状,但是输出数组或输入数组可以具有如图10所示的三维数组形状。此外,也可以具有未图示的具有四维以上的维度的数组形状。但是,本发明可以理解为,也可以适用于所述输出数组或输入数组为三维以上的多维度的情况。

在本发明的修改实施例中,可以省略图6的压缩部(620)和解码部(630)。即,非压缩数据组可以不经过压缩过程而直接存储于存储器部13。

利用上述本发明的实施例,本发明所属领域的技术人员可以在不脱离本发明本质特性的范围内容易进行多种变更及修正。权利要求书的各权利要求的内容在能够通过本说明书理解的范围内可结合到无引用关系的其他权利要求。

本发明是由OPENEDGES技术株式会社(课题执行机构)在科学技术信息通信部和韩国研究财团附属信息通信企划评价院的支持的研究项目,即,新一代智能型半导体技术开发(设计)-人工智能处理器项目期间开展基于多感官的情况预测型移动人工智能处理器开发(课题固有编号2020-0-01310,课题编号202-0-0-01310,研究期间2020.04.01~2024.12.31)的研究项目的过程中发明的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号