一种基于脉动阵列的多精度加速器及其数据处理方法

文档序号:29416043发布日期:2022-03-26 13:07阅读:163来源:国知局
一种基于脉动阵列的多精度加速器及其数据处理方法

1.本发明涉及数字电路技术领域,尤其涉及的是一种基于脉动阵列的多精度加速器及其数据处理方法。


背景技术:

2.目前人工智能领域发展迅速,随着网络计算量和参数量的增加,业内对高能效低功耗的神经网络需求增加。通过网络的优化调整,神经网络的逐层精度优化可以大大降低计算复杂度。然而,多精度神经网络的计算需要定制的硬件电路来支持,因为单精度处理器在计算混合精度时会浪费大量资源,而多精度神经网络处理器在电路级支持多精度,计算可以得到比单精度处理器更高的利用率,但是现有技术中的多精度计算无法平衡低计算成本消耗和更高速度的要求。
3.因此,现有技术还有待改进和发展。


技术实现要素:

4.本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种基于脉动阵列的多精度加速器及其数据处理方法,旨在解决现有技术中多精度计算无法平衡低计算成本消耗和更高速度的要求的问题。
5.本发明解决问题所采用的技术方案如下:
6.第一方面,本发明实施例提供一种多精度加速器的数据处理方法,其中,所述方法包括:
7.获取输入数据的数据精度;其中,所述数据精度用于表征数据位数;
8.根据所述数据精度和所述输入数据,确定与所述输入数据对应的分段数据;
9.将所述分段数据映射到乘法器单元组,并通过多精度加速器对所述分段数据进行乘累加运算。
10.在一种实现方式中,所述根据所述数据精度和所述输入数据,确定与所述输入数据对应的分段数据包括:
11.基于预设的位宽基本单元,将所述数据精度除以所述位宽基本单元,得到除数;
12.基于所述除数,将所述输入数据按照从高位到低位的顺序进行依次划分,得到分段数据。
13.在一种实现方式中,所述将所述分段数据映射到乘法器单元组,并通过多精度加速器对所述分段数据进行乘累加运算包括:
14.将所述分段数据输入至所述乘法器单元组中与所述分段数据对应的乘法器中,并通过多精度加速器对所述分段数据进行乘法及累加运算。
15.第二方面,本发明实施例还提供一种基于多精度加速器的数据处理方法的基于脉动阵列的多精度加速器,其中,包括:数据接口,用于接收总线上的外部命令;
16.控制单元,与所述数据接口通讯连接,且用于接收所述外部命令,并根据所述外部
命令对所述多精度加速器进行控制;
17.脉动乘法阵列,与所述控制单元通讯连接,且用于对输入数据进行混合精度计算;
18.缓冲器,与所述脉动乘法阵列通讯连接,且用于对数据进行缓存。
19.在一种实现方式中,所述脉动乘法阵列包括若干脉动阵列乘法单元。
20.在一种实现方式中,所述脉动阵列乘法单元包括若干乘法器单元组和若干移位累加器。
21.在一种实现方式中,所述乘法器单元组由若干乘法器组成。
22.在一种实现方式中,所述移位累加器用于将乘法器单元组中输出数据进行累加并将累加后得到的值进行移位。
23.第三方面,本发明实施例还提供一种智能终端,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于执行如上述任意一项所述的多精度加速器的数据处理方法。
24.第四方面,本发明实施例还提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述中任意一项所述的多精度加速器的数据处理方法。
25.本发明的有益效果:本发明实施例首先获取输入数据的数据精度;其中,所述数据精度用于表征数据位数;然后根据所述数据精度,确定乘累加运算模式;最后基于所述乘累加运算模式,将所述输入数据映射到乘法器单元组,并通过多精度加速器对所述输入数据进行乘累加运算;可见,本发明实施例中根据输入数据的数据精度确定出不同的乘累加运算模式,然后将输入数据按照乘累加运算模式映射到乘法器单元组,再通过多精度加速器对所述输入数据进行乘累加运算,可以以较少内存带宽消耗实现更高吞吐量的乘累加运算。
附图说明
26.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.图1为本发明实施例提供的多精度加速器的数据处理方法流程示意图。
28.图2为本发明实施例提供的一种实现方式的加速器双脉动阵列结构。
29.图3为本发明实施例提供的一种实现方式的pe三种计算模式设计原理图。
30.图4为本发明实施例提供的一种实现方式的三种计算模式下pe内部数据流示意图。
31.图5为本发明实施例提供的智能终端的内部结构原理框图。
具体实施方式
32.本发明公开了一种基于脉动阵列的多精度加速器及其数据处理方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说
明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
33.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
34.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
35.由于现有技术中,在加速器架构层面,谷歌提出了一种脉动阵列架构,可以用来加速卷积计算tpu(张量处理单元),将卷积数据转换成矩阵数据进行运算。然而谷歌tpu只能支持8位定点数计算,无法满足多精度加速器的要求。
36.目前多精度加速器的基本mac单元按设计思想可分为位并行和位串行两类:位并行在空间上进行扩展,位串行在时间上进行扩展,位并行的思想是消耗更多的资源来换取更高的性能,而位串行则是以牺牲性能为代价来降低资源消耗。这两种加速器适用的场景是不同的,因此在某些情况下,必须在多个设计指标(如成本消耗和速度)上进行权衡。
37.为了解决现有技术的问题,本实施例提供了基于脉动阵列的多精度加速器及其数据处理方法,根据输入数据的数据精度确定出不同的乘累加运算模式,然后将输入数据按照乘累加运算模式映射到乘法器单元组,再通过多精度加速器对所述输入数据进行乘累加运算,可以以较少内存带宽消耗实现更高吞吐量的乘累加运算。具体实施时,先获取输入数据的数据精度;其中,所述数据精度用于表征数据位数;然后根据所述数据精度,确定乘累加运算模式;最后,基于所述乘累加运算模式,将所述输入数据映射到乘法器单元组,并通过多精度加速器对所述输入数据进行乘累加运算。
38.示例性方法
39.本实施例提供多精度加速器的数据处理方法,该方法可以应用于数字电路的智能终端。具体如图1所示,所述方法包括:
40.步骤s100、获取预设的输入数据的数据精度;其中,所述数据精度用于表征数据位数;
41.具体地,对于数据传输方式,本发明采用脉动阵列结构,如图2所示是本发明实施例中的多精度加速器的基本结构,对于pe(处理单元)脉动阵列,每个pe是基本单元乘法器,神经网络权重数据在输入数据进入pe之前已经被预存到每个pe中。输入数据从输入缓存中进入,并根据内部时钟每次流入脉动阵列乘法单元。以基本单元2bit为例,基本单元的乘法器是2bit,输入数据每次流入2bit数据到每个2位乘法器。输入数据的数据精度可以有很多种,数据精度用于表征数据位数,如2位,3位,4位,32位,128位等等。在本实施例中,可以支持的数据精度为1-8位。
42.得到数据精度后,就可以执行如图1所示的如下步骤:s200、根据所述数据精度和所述输入数据,确定与所述输入数据对应的分段数据;相应的,所述根据所述数据精度和所述输入数据,确定与所述输入数据对应的分段数据包括如下步骤:基于预设的位宽基本单元,将所述数据精度除以所述位宽基本单元,得到除数;基于所述除数,将所述输入数据按照从高位到低位的顺序进行依次划分,得到分段数据。
43.具体地,本发明的每个脉动阵列乘法单元可以支持2位、4位和8位多精度计算模式,如图3所示,为每个脉动阵列乘法单元的三种计算模式的设计原理。在本实施例中,预设的位宽基本单元为2bit,输入数据分别从横向和纵向输入,实际中,两个8bit输入数据相乘时(如a
×
a),首先将a和b以每2bit作为位宽基本单元从高位到低位进行划分,得到分段数据如:(a
7-6
、a
5-4
、a
3-2
、a
1-0
/a
7-6
、a
5-4
、a
3-2
、a
1-0
),计算模式为以2bit为基本单元进行交叉相乘,总共得到16个部分积,部分积需要进行移位和累加才能得到最终的结果。当数据精度为8位时,如图3所示,每列的部分积所需的移位相同,分别为0位、2位、4位、6位、8位、10位和12位。对于4位计算模式,输入仍然是8位格式,从高位到低位每4位作为一段输入数据。所以每个输入代表两个输入数据,a
3-2
、a
1-0
/b
3-2
、b
1-0
和a
3-2
、a
1-0
/b
3-2
、b
1-0
。四个4位输入数据仍然以每2位被分成一个基本单元,然后交叉相乘得到16个部分积。此部分与8位计算模式相同,但不同的是,部分积的偏移发生了变化。16个部分积按平行四边形结构可分为4个部分,每个部分包含四个部分积,这四个部分积可以进行移位和累加以获得4位计算模式结果,四个部分积所需的移位是0bit、2bit、2bit和4bit。对于2位计算模式。因为位宽基本单元是2bit,所以每个输入可以表示4个2bit的输入数据。16个2bit数据可以交叉相乘得到16个部分积,但这16个部分积不需要移位。根据不同的积需要,可以选择其输出为16个部分积的累加和,也可以直接输出16个部分积。
44.得到分段数据后,就可以执行如图1所示的如下步骤:s300、将所述分段数据映射到乘法器单元组,并通过多精度加速器对所述分段数据进行乘累加运算。相应的,所述根据所述数据精度和所述输入数据,确定与所述输入数据对应的分段数据包括如下步骤:基于预设的位宽基本单元,将所述数据精度除以所述位宽基本单元,得到除数;基于所述除数,将所述输入数据按照从高位到低位的顺序进行依次划分,得到分段数据。
45.具体地,将分段数据映射到四个pe基本单元组中,其数据流如图4所示,8位计算模式下,输入数据是8位数据a和a,将a和a以每2bit作为一个基本单元,则8除以2等于4,a和b按照从高位到低位的顺序进行依次划分,得到分段数据如(a
7-6
、a
5-4
、a
3-2
、a
1-0
/a
7-6
、a
5-4
、a
3-2
、a
1-0
)。a
7-6
、a
5-4
、a
3-2
、a
1-0
被预存到四个乘法器中。第一个时钟周期a的最高2位,a
7-6
从输入缓存输入到第一个乘法器,得到第一个部分积a
7-6
×a7-6
。下一个时钟周期,a
7-6
进入第二个乘法器,而a
5-4
输入到第一个乘法器。在这个时钟周期,可以得到两个部分积:a
5-4
×a7-6
和a
7-6
×a5-4
。每过一个时钟周期,a
7-6
就从前一个乘法器流入到后一个乘法器,直到与a的四组乘法完成。同时,a的剩余低位bit继续以脉动形式进入乘法器。所有部分积的乘法可在第七个时钟前完成。每个部分积的移位与图3所示的乘法模型中的移位是一致的。4位计算模式下,输入数据是4位数据a、b、a和b,将a、b、a和b以每2bit作为一个基本单元,则4除以2等于2,a、b、a和b均按照从高位到低位的顺序进行依次划分,得到分段数据如(b
3-2
、b
1-0
、a
3-2
、a
1-0
/b
3-2
、b
1-0
、a
3-2
、a
1-0
),b
3-2
、b
1-0
、a
3-2
、a
1-0
被预存到四个乘法器中,第一个时钟周期b的最高2位,b
3-2
从输入缓存输入到第一个乘法器,得到第一个部分积b
3-2
×b3-2
。下一个时钟周
期,b
3-2
进入第二个乘法器,而b
1-0
输入到第一个乘法器。在这个时钟周期,可以得到两个部分积:b
3-2
×b1-0
和b
1-0
×b3-2
。每过一个时钟周期,b
3-2
就从前一个乘法器流入到后一个乘法器,直到与b和d的两组乘法完成。同样,经过7个时钟周期后,可以得到所有的部分积,然后根据乘法模型进行移位和累加。2位计算模式下,输入数据是2位数据a、b、c、d、a、b、c和d,将a、b、c、d、a、b、c和d以每2bit作为一个基本单元,则2除以2等于1,a、b、c、d、a、b、c和d均按照从高位到低位的顺序进行依次划分,得到分段数据如(d
1-0
、c
1-0
、b
1-0
、a
1-0
/d
1-0
、c
1-0
、b
1-0
、a
1-0
)。d
1-0
、c
1-0
、b
1-0
、a
1-0
被预存到四个乘法器中,第一个时钟周期d的2位,d
1-0
从输入缓存输入到第一个乘法器,得到第一个部分积d
1-0
×d1-0
。下一个时钟周期,d
1-0
进入第二个乘法器,而c
1-0
输入到第一个乘法器。在这个时钟周期,可以得到两个部分积:d
1-0
×c1-0
和c
1-0
×d1-0
。每过一个时钟周期,d
1-0
就从前一个乘法器流入到后一个乘法器,直到与d、c、b和a的四组乘法完成。同样,经过7个时钟周期后,可以得到所有的部分积,然后根据乘法模型进行移位和累加。因为3种计算模式下输入数据都是8位的,所以当到达第5个时钟时,第一个乘法器是空闲的,每经过一个时钟,就有一个乘法器进入空闲状态。但在实际运行中,脉动输入数据连续进入pe,所以当a的所有数据进入pe后,会有其他数据在下一个周期进入乘法器继续运行,所以乘法器不会空闲。数据完全流入pe后,每4个时钟周期每个pe可以完成一组8bit
×
8bit操作,或4组4bit
×
4bit操作,或16组2bit
×
2bit操作。本发明实施例可以实现支持1-8位任意混合精度计算。在一种实现方式中,在奇数精度的情况下,本发明通过零补码运算使之与电路结构相适应。
46.示例性设备
47.如图2中所示,本发明实施例提供一种基于多精度加速器的数据处理方法的基于脉动阵列的多精度加速器,包括:数据接口,用于接收总线上的外部命令;控制单元,与所述数据接口通讯连接,且用于接收所述外部命令,并根据所述外部命令对所述多精度加速器进行控制;脉动乘法阵列,与所述控制单元通讯连接,且用于对输入数据进行混合精度计算;缓冲器,与所述脉动乘法阵列通讯连接,且用于对数据进行缓存。
48.具体地,如图2所示,在基于脉动阵列的多精度加速器结构中,输入数据和部分积输出在每个相邻脉动阵列乘法单元(pe)之间流动。每过一个外部时钟周期,2bit输入数据将从输入缓存进入第一列相邻脉动阵列乘法单元(pe),且脉动阵列前一列相邻脉动阵列乘法单元(pe)的2bit输入数据将进入下一列相邻脉动阵列乘法单元(pe)。同时,同一列的相邻脉动阵列乘法单元(pe)中计算得到的部分积在加法器中完成部分积的累加后整体移位,从而得到矩阵运算后的输出数据。基于脉动阵列的多精度加速器包括数据接口,数据接口用于接收总线上的外部命令;并与所示控制单元进行数据交互,基于脉动阵列的多精度加速器还包括控制单元,控制单元与所述数据接口通讯连接,当控制单元接收所述外部命令后就可以对所述多精度加速器进行控制,此外,基于脉动阵列的多精度加速器还包括脉动乘法阵列,所述脉动乘法阵列通讯与所述控制单元连接,并与所述脉动乘法阵列进行数据交互,脉动乘法阵列用于对输入数据进行混合精度计算。最后,基于脉动阵列的多精度加速器还包括缓冲器,与所述脉动乘法阵列通讯连接,且用于对数据进行缓存,在本实施例中,缓冲器包括输入缓冲器、输出缓冲器和输出缓冲器。
49.在一种实现方式中,所述脉动乘法阵列包括若干脉动阵列乘法单元。在本实施例中,脉动乘法阵列由若干脉动阵列乘法单元组成n行和n列的乘法阵列。所述脉动阵列乘法
单元包括若干乘法器单元组和若干移位累加器。乘法器单元组由若干乘法器组成,在本实施例中,乘法器单元组由4个乘法器组成,以便能实现1-8位多精度乘法运算。每个乘法器单元组连接一个移位累加器,移位累加器又与另一移位累加器连接,然后输出数据。所述移位累加器用于将乘法器单元组中输出数据进行累加并将累加后得到的值进行移位。
50.本发明实施例基于脉动阵列结构,不改变脉动工作模式,对输入数据进行多次重用,使输入数据尽可能地在pe以及单位乘法器中流动,减少内存访问次数,提高数据重用率,可以以较少的内存带宽消耗实现更高的吞吐量。本发明实施例设置3种计算模式以满足可重构多精度计算的需求。与以位串行结构为基本mac单元结构的多精度加速器相比,基于脉动阵列的多精度乘法器消耗的pe乘法器数量是位串行的4倍,但相应的其他电路资源消耗却不到位串行pe的4倍。同时,脉动阵列乘法单元pe的吞吐量是位串行pe的4倍,因此脉动阵列乘法单元pe的能效要比位串行高。与以位并行结构为基本mac单元结构的多精度加速器相比,脉动阵列乘法单元pe的吞吐量仅为位并行的四分之一,但总资源消耗高于位并行的四分之一。但是由于脉动阵列乘法单元pe以脉动方式传输数据,因此数据驱动的数量远小于位并行pe。也即脉动阵列乘法单元pe在数据传输量相同的情况下,可以使用更高的频率,即更高的计算吞吐量,因此,脉动阵列乘法单元pe的能效也高于位并行pe。
51.基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图5所示。该智能终端包括通过系统总线连接的处理器、存储器、网络接口、显示屏、温度传感器。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种多精度加速器的数据处理方法。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏,该智能终端的温度传感器是预先在智能终端内部设置,用于检测内部设备的运行温度。
52.本领域技术人员可以理解,图5中的原理图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
53.在一个实施例中,提供了一种智能终端,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:获取预设的输入数据的数据精度;其中,所述数据精度用于表征数据位数;
54.根据所述数据精度和所述输入数据,确定与所述输入数据对应的分段数据;
55.将所述分段数据映射到乘法器单元组,并通过多精度加速器对所述分段数据进行乘累加运算。
56.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括
随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
57.综上所述,本发明公开了一种基于脉动阵列的多精度加速器及其数据处理方法,所述方法包括:获取预设的输入数据的数据精度;其中,所述数据精度用于表征数据位数;根据所述数据精度和所述输入数据,确定与所述输入数据对应的分段数据;将所述分段数据映射到乘法器单元组,并通过多精度加速器对所述分段数据进行乘累加运算。本发明实施例根据输入数据的数据精度确定出不同的分段数据,然后将分段数据映射到乘法器单元组,再通过多精度加速器对所述分段数据进行乘累加运算,可以以较少内存带宽消耗实现更高吞吐量的乘累加运算。
58.基于上述实施例,本发明公开了一种多精度加速器的数据处理方法,应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1