一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种计算装置、集成电路芯片、板卡、设备和计算方法与流程

2022-02-20 12:56:30 来源:中国专利 TAG:


1.本披露一般地涉及数据处理领域。更具体地,本披露涉及一种计算装置、集成电路芯片、板卡、设备和计算方法。


背景技术:

2.当前,不同类型的处理器所处理的数据位宽可能有所不同。对于执行特定数据类型运算的处理器来说,其处理的数据位宽往往是有限的。例如,对于定点运算器,其通常能处理的数据位宽不超过16位,例如16位的整型数据。然而,为了节约计算成本和开销并提高计算效率,如何令位宽受限的处理器能够处理更多位宽的数据成为需要解决的一个技术问题。


技术实现要素:

3.为了至少解决如上所提到的技术问题,本披露在多个方面中提出了利用大位宽数据(也即,位数较多的数据)的小位宽分量(也即,位数较少的数据),代替该大位宽数据来参与计算的方案。通过本披露的计算方案,可以用至少两个小位宽数据来表征大位宽数据,并代替该大位宽数据执行运算处理,从而在处理器的处理位宽受限的场景中,仍然可以使用该处理器完成针对大位宽数据的计算。
4.在第一方面中,本披露提供一种计算装置,包括:运算电路,其配置用于:接收与运算指令关联的多个待运算数据,其中至少一个待运算数据由两个或更多个分量来表征,该至少一个待运算数据具有源数据位宽,每个分量具有各自的目标数据位宽,并且目标数据位宽小于源数据位宽;以及使用这两个或更多个分量代替所表征的待运算数据来执行运算指令所指定的运算,以获得两个或更多个中间结果。该计算装置还包括:组合电路,其配置用于:将上述中间结果进行组合,以获得最终结果;以及存储电路,其配置用于存储上述中间结果和/或最终结果。
5.在第二方面中,本披露提供一种集成电路芯片,其包括前述第一方面的计算装置。
6.在第三方面中,本披露提供一种集成电路板卡,其包括前述第二方面的集成电路芯片。
7.在第四方面中,本披露提供一种计算设备,其包括前述第三方面的板卡。
8.在第五方面中,本披露提供一种由计算装置执行的方法。该方法包括:接收与运算指令关联的多个待运算数据,其中至少一个待运算数据由两个或更多个分量来表征,该至少一个待运算数据具有源数据位宽,每个分量具有各自的目标数据位宽,并且目标数据位宽小于源数据位宽;使用该两个或更多个分量代替所表征的待运算数据来执行运算指令所指定的运算,以获得两个或更多个中间结果;以及将上述中间结果进行组合,以获得最终结果。
9.通过如上所提供的计算装置、集成电路芯片、板卡、计算设备和方法,本披露的方案利用大位宽数据的小位宽分量,代替该大位宽数据来参与计算,从而在包括例如神经网
络运算等的人工智能应用场景或其他通用场景中,不受处理器处理位宽的限制,充分发挥处理器的计算能力。进一步,在例如神经网络运算场景中,本披露的方案还可以通过由至少两个小位宽分量来代替大位宽数据进行计算,从而简化神经网络的计算,提高计算的效率。
附图说明
10.通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
11.图1是示出根据本披露实施例的计算装置的简化框图;
12.图2是示出根据本披露实施例的计算装置的详细框图;
13.图3是示出根据本披露实施例的计算装置的详细框图;
14.图4是示出根据本披露实施例的计算装置的详细框图;
15.图5是示出根据本披露实施例的计算装置的详细框图;
16.图6是示出根据本披露实施例的计算装置的计算方法的流程图;
17.图7是示出根据本披露实施例的一种组合处理装置的结构图;以及
18.图8是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
19.下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
20.应当理解,本披露的权利要求、说明书及附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
21.还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
22.如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0023]
如前文所提到的,针对处理器的处理位宽受限的问题,本披露在多个方面中提出了利用大位宽数据的小位宽分量,代替该大位宽数据来参与计算的方案。由于使用至少两个小位宽数据来表征大位宽数据,并代替该大位宽数据执行运算处理,因此,需要对使用小位宽数据得到的运算结果进行组合处理,从而得到最终结果。本披露的方案通过令例如大
位宽(例如24位)数据由至少两个小位宽(例如16位和8位)数据(或称为分量)来表征,克服了处理器位宽受限的障碍。进一步地,通过用小位宽数据/分量来代替运算,简化了计算复杂度,从而提高了例如神经网络计算的计算效率。更进一步地,由于将大位宽的数据运算分解为多次小位宽的数据运算,因此,处理电路之间可以并行执行相应处理,进一步提高计算效率。本披露的方案尤其适合于涉及乘法运算的运算处理,例如乘法或乘加运算,乘加运算例如可以包括卷积运算。因此,本披露的方案可以用于执行神经网络运算,特别是对权值数据和神经元数据进行处理,以获得所期望的运算结果。例如,当神经网络是用于图像的卷积神经网络时,该权值数据可以是卷积核数据,而神经元数据可以是例如图像的像素数据或前层运算操作后的输出数据。
[0024]
下面将结合附图来详细描述本披露的具体实施方式。
[0025]
图1是示出根据本披露实施例的计算装置100的简化框图。在一个或多个实施例中,该计算装置100可以用于大位宽数据的运算处理以用于各类应用场景中,例如包括神经网络运算的人工智能应用或需要将大位宽数据分解为小位宽数据以用于计算的通用场景中。
[0026]
如图1所示,计算装置100包括运算电路110、组合电路120和存储电路130。
[0027]
在一些实施例中,运算电路110可以配置用于:接收与运算指令关联的多个待运算数据,其中至少一个待运算数据由两个或更多个分量来表征。该至少一个待运算数据具有源数据位宽,每个分量具有各自的目标数据位宽,其中目标数据位宽小于源数据位宽。
[0028]
如前所述,待运算数据的数据位宽可能超出运算电路的处理位宽,基于此,大位宽(源数据位宽)的待运算数据可以分解成两个或更多个小位宽(目标数据位宽)的分量来表征。
[0029]
待运算数据的分解可以基于各种现有的和/或未来开发的数据分解技术来实现,以分解成两个或更多个分量。
[0030]
在一些实施例中,用于表征待运算数据的分量的数量可以至少部分基于待运算数据的源数据位宽和运算电路所支持的数据位宽来确定。在又一些实施例中,目标数据位宽可以至少部分基于运算电路所支持的数据位宽而确定的。例如,当待运算数据为24位数据位宽,而运算电路最多支持16位数据位宽时,在一个示例中,可以将待运算数据分解为目标数据位宽不相等的2个分量,即:8位的高数位分量和16位的低数位分量,或者16位的高数位分量和8位的低数位分量。在另一示例中,可以将待运算数据分解为目标数据位宽相等的3个分量,即:8位的高数位分量、8位的中数位分量、以及8位的低数位分量。本披露在此方面没有限制,只需分解得到的分量的目标数据位宽满足运算电路的处理位宽限制。
[0031]
待运算数据可以根据所需要的分量数量和各分量的目标数据位宽,分解成多个分量,其中每个分量具有对应的分量数值和分量缩放因子。下面以一个大位宽数据分解成两个小位宽分量为例,简要描述可能的数据分解方法,但是本领域技术人员可以理解,本披露在此方面没有限制。
[0032]
在一个示例中,大位宽数据分解成两个分量:第一分量和第二分量。第一分量可以是高数位分量或低数位分量;相应地,第二分量可以是低数位分量或高数位分量。
[0033]
首先,基于各分量的目标数据位宽和/或各分量在分解前的数据(大位宽数据)中的数位位置,可以确定各分量的分量缩放因子。例如,当第一分量(在此示例中为高数位分
量)的目标数据位宽为n1,而第二分量(在此示例中为低数位分量)的目标数据位宽为n2时,当不考虑n2中包括符号位时,第一分量的分量缩放因子可以为2
n2-1
。相比而言,当考虑n2中包括符号位时,则第一分量的分量缩放因子可以为2
n2
。通常,低数位分量的分量缩放因子默认为1。
[0034]
接着,利用第一分量的分量缩放因子,可以对待分解的大位宽数据进行计算,以获得第一分量的分量数值。第一分量通过该分量数值和对应的分量缩放因子来表征。
[0035]
然后,可以根据待分解的大位宽数据和前面获得的第一分量的分量数值进行计算,以获得第二分量的分量数值。在一个示例中,当第二分量的数据位宽不包含符号位时,例如第二分量数据位宽的最高位不为符号位,则可以通过从待分解的大位宽数据减去所述第一分量,以获得第二分量的数值。这里,第一分量是第一分量的分量数值与对应的分量缩放因子的乘积值。
[0036]
通过上述方式,可以将大位宽数据分解成两个分量,每个分量具有对应的分量数值和分量缩放因子。当需要将数据分解成多于两个分量时,可以迭代地执行上述方法,直到获得所需数量的分量。例如,对于24位数据位宽的数据,当确定需要将其分解成3个分量,并且三个分量都为8位数据位宽时,可以通过上述步骤将24位数据位宽的数据首先分解成8位数据位宽的第一分量和16位数据位宽的中间第二分量。接着,针对该16位数据位宽的中间第二分量重复执行上述步骤,以将其进一步分解成8位数据位宽的第二分量和8位数据位宽的第三分量。
[0037]
本领域技术人员可以理解,还可以采取各种处理对数据分解方法进行优化,本披露在此方面没有限制,只需接收分解后的分量以用于指定运算即可。
[0038]
继续图1,在一些实施例中,运算电路110可以进一步配置用于使用接收的这两个或更多个分量代替所表征的待运算数据来执行运算指令所指定的运算,以获得两个或更多个中间结果。
[0039]
具体地,运算电路110可以配置用于将一个待运算数据的两个或更多个分量分别与其他待运算数据的对应数据执行所指定的运算,并将对应的运算结果输出到组合电路120。
[0040]
取决于具体的运算指令,其他待运算数据可以包括一个或多个待运算数据。各个待运算数据可以具有不同的数据位宽。当待运算数据的数据位宽满足运算电路的处理位宽限制时,可以不需要分解,而是使用原始数据进行运算。另一方面,有些待运算数据虽然被分解为多个分量,但可能在一些情况下只需要某个或某些分量进行运算即可。因此,这种情况下,这些其他待运算数据的对应数据可以包括以下任一:待运算数据的原始数据、或表征待运算数据的至少一个分量。
[0041]
运算电路110可以使用接收的数据来执行运算指令所指定的运算,从而获得两个或更多个中间结果,并输出到组合电路120。本领域技术人员可以理解,运算电路110可以按照接收这两个或更多个分量的顺序来执行所指定的运算,从而依次得到各中间结果并输出给组合电路120。这些分量的顺序例如可以包括:从高数位到低数位,或从低数位到高数位。
[0042]
在一些实施例中,组合电路120可以配置用于:将从运算电路110输入的中间结果进行组合,以获得最终结果。如前所述,由于至少一个待运算数据使用其两个或更多个分量来代替运算,因此,利用各分量执行运算得到的是中间结果,需要对其进行组合以获得最终
结果。
[0043]
在一些实施例中,组合电路可以进一步配置用于将这些作为中间结果的运算结果进行加权组合,以得到最终结果。由于代替原始待运算数据来参与运算的分量具有相应的分量数值和分量缩放因子,而运算电路110在运算时可以只使用分量数值进行运算以获得中间结果,因此在组合电路120中,可以考虑参与运算的分量的分量缩放因子,来对中间结果进行加权组合。随后将基于几个实施例详细描述组合电路的各种实现。
[0044]
计算装置100还可以包括存储电路130,其配置用于存储上述中间结果和/或最终结果。如前所述,由于运算电路110利用分量执行运算得到的结果是中间结果,因此需要将这些中间结果进行组合。组合期间,可以根据中间结果的产生而进行循环组合,例如加权累加,因此可以利用存储电路对这些中间结果进行临时地或长期地存储。优选地,在一些实施例中,中间结果和最终结果可以共用存储电路中的存储空间,从而节省存储空间。本领域技术人员可以理解,存储电路130也可以用于存储其他数据和信息,例如,运算电路110的运算期间生成的需要存储的中间数据,本披露在此方面没有限制。
[0045]
图2是示出根据本披露实施例的计算装置200的详细框图。如前所述,本披露的方案尤其适合于涉及乘法运算的运算处理。因此,在此实施例中,计算装置200的运算电路210具体可以实现为乘法电路211或乘加电路212。乘加电路212例如可以用来实现卷积运算。
[0046]
由于代替原始待运算数据来参与运算的分量具有相应的分量数值和分量缩放因子,而分量缩放因子与该分量在所表征的待运算数据中的数位位置相关联,因此在涉及到乘法一类的运算时,例如乘法运算或乘加运算,乘法电路211或乘加电路212在运算时可以只使用分量数值进行运算以获得运算结果,作为中间结果。分量缩放因子的影响可以随后通过组合电路220来处理。
[0047]
如图2所示,组合电路220可以包括加权电路221和加法电路222。加权电路221可以配置用于利用加权因子,对运算电路210的当前运算结果,例如乘法电路211的乘积结果或乘加电路212的乘加结果,或者组合电路220的前一次的组合结果进行加权处理。取决于加权对象的不同,加权因子也可以不同。在一些实施例中,加权因子至少部分基于生成对应的运算结果的分量的分量缩放因子而确定。加法电路222可以配置用于对加权后的结果与其他中间结果进行累加,以获得最终结果。
[0048]
以下针对不同加权对象的情况,分别描述图2的组合电路220中加权电路221的可能实现方式。
[0049]
图3是示出根据本披露实施例的计算装置300的详细框图。在此实施例中,进一步示出了图2的加权电路221的一种实现。在此实现中,加权的对象是运算电路210的当前运算结果。
[0050]
如图3所示,加权电路321可以配置用于将运算电路310的运算结果乘以第一加权因子,以得到加权结果。当运算电路310的运算为乘法运算或乘加运算时,第一加权因子可以是对应于该运算结果的分量的分量缩放因子之积。本领域技术人员可以理解,对于不同的运算结果,第一加权因子也可能不同。此时,加法电路322可以配置用于将得到的加权结果与加法电路322的前一次加法结果进行累加。
[0051]
以下以两个数据的运算为例,来进一步描述图3所示实施例的具体实现。
[0052]
在一个示例中,假设运算指令指定对大位宽的数据a和数据b执行乘法运算。数据a
和数据b的每个已经预先被分解为两个分量。例如,数据a和数据b可以分别表示为:
[0053]
a=a1*scalea1 a0*scalea0
[0054]
b=b1*scaleb1 b0*scaleb0
[0055]
其中,a1、a0分别是数据a的高数位分量和低数位分量的分量数值;scalea1和scalea0分别是对应的分量缩放因子。类似地,b1、b0分别是数据b的高数位分量和低数位分量的分量数值;scaleb1和scaleb0分别是对应的分量缩放因子。在此示例中,当使用分量来代替数据a和b进行乘法运算时,需要执行4次乘法运算。无论以何种顺序执行这4次乘法运算,只需要相应地调整加权因子,就可以获得最终运算结果。
[0056]
例如,上述乘法运算可以表示为:
[0057]
a*b=(a1*scalea1 a0*scalea0)*(b1*scaleb1 b0*scaleb0)
[0058]
=(a1*b1)*(scalea1*scaleb1) (a1*b0)*(scalea1*scaleb0)
[0059]
(a0*b1)*(scalea0*scaleb1) (a0*b0)*(scalea0*scaleb0)
[0060]
从上述表述可知,运算电路310可以进行各分量数值之间的乘法运算,在此示例中分别为a1*b1、a1*b0、a0*b1和a0*b0。另外,在此示例中,上述四个中间结果的对应第一加权因子分别是:scalea1*scaleb1、scalea1*scaleb0、scalea0*scaleb1和scalea0*scaleb0。加权电路321利用对应的第一加权因子,分别对上述中间结果进行加权。加法电路322可以对加权后的中间结果进行相加,以得到最终结果。
[0061]
在一些实施例中,有些分量缩放因子的值为1,例如scalea0或scaleb0可能为1。此时,在计算第一加权因子时,可以省略对应的乘法,例如可以省略对scalea1*scaleb0、scalea0*scaleb1和scalea0*scaleb0的计算。
[0062]
在另一示例中,假设运算指令指定对大位宽的数据a和数据b执行卷积运算,其中数据a例如可以是神经网络运算中的神经元,数据b可以是神经网络运算中的权值。数据a和数据b的每个已经预先被分解为两个分量。例如,数据a和数据b可以分别表示为:
[0063]
a=a1*scalea1 a0*scalea0
[0064]
b=b1*scaleb1 b0*scaleb0
[0065]
其中,a1、a0分别是数据a的高数位分量和低数位分量的分量数值;scalea1和scalea0分别是对应的分量缩放因子。类似的,b1、b0分别是数据b的高数位分量和低数位分量的分量数值;scaleb1和scaleb0分别是对应的分量缩放因子。在此示例中,当使用分量来代替数据a和b进行卷积运算时,需要执行4次卷积运算。无论以何种顺序执行这4次卷积运算,只需要相应地调整加权因子,就可以获得最终运算结果。
[0066]
在一个示例中,以先低数位后高数位的运算顺序,示出了运算过程:
[0067]
a0(conv)b0-》tmp0,tmp0*w00-》p0
[0068]
a1(conv)b0-》tmp1,tmp1*w10 p0

》p1
[0069]
a0(conv)b1-》tmp2,tmp2*w01 p1

》p2
[0070]
a1(conv)b1-》tmp3,tmp3*w11 p2

》p3
[0071]
其中,conv代表卷积运算,tmp0、tmp1、tmp2和tmp3分别为四次卷积运算的卷积结果,w00、w10、w01和w11分别是对应的加权因子,p0、p1、p2和p3是加权组合后的组合结果。可以理解,p0是首次组合结果,因为不存在上一组合数据,因此p0直接对应于加权后的结果。
[0072]
在另一示例中,以先高数位后低数位的运算顺序,示出了运算过程:
[0073]
a1(conv)b1-》tmp3,tmp3*w11-》p3
[0074]
a0(conv)b1-》tmp2,tmp2*w01 p3

》p2
[0075]
a1(conv)b0-》tmp1,tmp1*w10 p2

》p1
[0076]
a0(conv)b0-》tmp0,tmp0*w00 p1

》p0
[0077]
其中,各符号的含义与前面相同。可以理解,p3是首次组合结果,因为不存在上一组合数据,因此p3直接对应于加权后的结果。
[0078]
在上述两个示例中,加权因子都可以是对应卷积结果的分量的分量缩放因子之积。例如,
[0079]
w00=scalea0*scaleb0;
[0080]
w10=scalea1*scaleb0;
[0081]
w01=scalea0*scaleb1;
[0082]
w11=scalea1*scaleb1。
[0083]
与前面类似地,在一些实施例中,有些分量缩放因子的值为1,例如scalea0或scaleb0可能为1。此时,在计算第一加权因子时,可以省略对应的乘法,例如可以省略对w00、w10和w01的计算,由此提高计算效率。
[0084]
上述两个示例中的数据a和数据b中任一或二者都可以是标量或向量。当数据是向量时,向量中各元素被分解为两个或多个分量,代替这些元素参与运算。由于向量的各元素之间不会相互影响,因此,涉及各元素的运算可以并行处理,由此提高运算效率。
[0085]
此外,从上面的运算过程可以看出,无论各个分量之间的运算采用何种顺序,由于第一加权因子都直接对应于各中间结果/运算结果的分量的分量缩放因子之积,因此直接对加权后的结果进行累加就可以获得最终结果。图3的实施例方式不受限于运算电路310的运算顺序和/或中间结果的输出顺序。
[0086]
图4示出了图2的加权电路221的另一种实现。在此实现中,针对先高数位后低数位的运算顺序进行了优化。这种情况下,加权电路的加权对象是组合电路的前一次运算结果。
[0087]
如图4所示,加权电路421可以配置用于将加法电路422的前一次加法结果乘以第二加权因子,以得到加权结果。此时,第二加权因子为运算电路410的前一运算结果的缩放因子与当前运算结果的缩放因子之比,其中运算结果的缩放因子由对应于运算结果的分量的分量缩放因子来确定。本领域技术人员可以理解,对于每次组合,第二加权因子可能不同。此时,加法电路422可以配置用于将加权电路421的加权结果与运算电路410的当前运算结果进行累加。
[0088]
同样以前面的数据a和数据b的卷积运算为例,来进一步描述图4所示实施例的具体实现。
[0089]
按照先高数位后低数位的运算顺序,其运算过程如下:
[0090]
a1(conv)b1-》tmp3,tmp3-》p3
[0091]
a0(conv)b1-》tmp2,tmp2 p3*h33

》p2
[0092]
a1(conv)b0-》tmp1,tmp1 p2*h22

》p1
[0093]
a0(conv)b0-》tmp0,tmp0 p1*h11

》p0
[0094]
p0=p0*h00
[0095]
其中,各符号含义与前面相同,h00、h11、h22和h33分别是对应的加权因子。在此示
例中,加权因子可以按如下确定:
[0096]
h33=(scalea1*scaleb1)/(scalea0*scaleb1);
[0097]
h22=(scalea0*scaleb1)/(scalea1*scaleb0);
[0098]
h11=(scalea1*scaleb0)/(scalea0*scaleb0);
[0099]
h00=scalea0*scaleb0。
[0100]
从上面运算过程可以看出,最后还需要将组合结果进行再次加权,该加权因子h00对应于最后一次运算结果tmp0的缩放因子。此时运算电路410针对该运算指令的运算已经结束,当前没有运算结果。为了统一加权因子的计算,可以将当前运算结果的缩放因子设置为1,从而最后一个加权的加权因子仍然对应于前一运算结果的缩放因子与当前运算结果的缩放因子之比。
[0101]
类似地,在一些实施例中,有些分量缩放因子的值为1,例如scalea0或scaleb0可能为1。此时,在计算第二加权因子时,可以省略对应的乘法,例如可以省略对scalea1*scaleb0、scalea0*scaleb1和scalea0*scaleb0的计算,同时还可以省略最后一步组合结果的加权,也即p0=p0*h00,由此提高计算效率。
[0102]
从上述运算过程可以看出,高数位分量的分量数值的运算结果是通过多次加权逐步增大的,因此可以避免出现相加的两个数相差较大时,例如一个很大数与一个很小的数相加,可能由于对阶步骤而出现的精度丢失现象。
[0103]
在一些实施例中,当运算指令为乘法运算或乘加运算指令时,若参与运算的数据中任一为零,则结果必然为零,此时,可以无需这种为零的数据参与计算,相应地可以关闭当前运算电路不进行运算,直接输出结果,从而节省运算功耗,也可以节省计算和/或存储资源。
[0104]
图5示出了本披露实施例的计算装置500的详细框图。在此实施例中,运算电路510中增加了第一比较电路513,该比较电路513可以配置用于判断即将对其执行指定运算的数据中任一是否为零。可以理解,此数据可以包括以下任一:待运算数据的原始数据、或表征待运算数据的分量。如果该数据为零,则省略针对此数据执行所指定的运算,可以直接跳到下一数据的运算。否则,如前所描述地继续使用此数据执行所指定的运算。
[0105]
备选地或附加地,可以在组合电路520中设置第二比较电路523。该第二比较电路523可以配置用于:判断接收的中间结果是否为零;以及若中间结果为零,则省略针对该中间结果执行组合处理;否则,如前所描述地继续使用该中间结果进行组合处理。与上面类似地,这种处理方式可以节省运算功耗,也可以节省计算和/或存储资源。
[0106]
图6示出了根据本披露实施例的由计算装置执行的计算方法600的流程图。如前所述,在一个或多个实施例中,该计算方法600可以用于大位宽数据的运算处理以用于各类应用场景中,例如包括神经网络运算的人工智能应用或需要将大位宽数据分解为小位宽数据以用于计算的通用场景中。
[0107]
如图6所示,在步骤s610中,接收与运算指令关联的多个待运算数据,其中至少一个待运算数据由两个或更多个分量来表征。该至少一个待运算数据具有源数据位宽,每个分量具有各自的目标数据位宽,并且目标数据位宽小于源数据位宽。
[0108]
可选地,在一些实施例中,当运算指令涉及乘法运算或乘加运算(例如,卷积运算)时,方法600可以进一步包括步骤s615。在步骤s615中,例如通过图5中的第一比较电路513
来判断即将对其执行运算的数据中任一是否为零。该数据可以包括以下任一:待运算数据的原始数据、或表征待运算数据的分量。
[0109]
若数据均不为零,则方法600前进到步骤s620,在此使用所接收的两个或更多个分量代替所表征的待运算数据来执行运算指令所指定的运算,以获得两个或更多个中间结果。
[0110]
若该数据中任一为零,则方法600可以跳过步骤s620,也即不使用此数据来执行运算指令所指定的运算,直接继续下一运算。因为当运算为乘法运算或乘加运算时,运算中的任一方为零,都将导致结果为零,因此可以省略针对该为零的数据执行所指定的运算,由此节省计算资源,并且可以降低功耗。
[0111]
继续步骤s620,执行所指定的运算可以包括:将一个待运算数据的两个或更多个分量分别与其他待运算数据的对应数据执行所指定运算,以获得对应的运算结果。如前面所提到的,其他待运算数据可以包括一个或多个待运算数据。并且,这些其他待运算数据的对应数据可以包括以下任一:待运算数据的原始数据、或表征待运算数据的至少一个分量。
[0112]
可选地,在一些实施例中,方法600可以进一步包括步骤s625。在步骤s625中,例如通过图5中的第二比较电路523来判断即将对其执行组合处理的中间结果是否为零。若该中间结果为零,则方法600可以跳过步骤s630,也即不使用此中间结果来执行组合处理,直接继续下一中间结果的组合,由此可以节省计算资源,并且可以降低功耗。
[0113]
最后,在步骤s630中,可以将步骤s620得到的中间结果进行组合,以获得最终结果。在一些实施例中,将中间结果进行组合可以包括:对步骤s620输出的运算结果执行加权组合,以得到最终结果。
[0114]
本披露实施例的计算方法600尤其适用于涉及乘法运算的运算处理,例如乘法或乘加运算,乘加运算例如可以包括卷积运算。由于代替原始待运算数据来参与运算的分量具有相应的分量数值和分量缩放因子,而分量缩放因子与该分量在所表征的待运算数据中的数位位置相关联,因此在涉及到乘法一类的运算时,例如乘法运算或乘加运算,可以只使用分量数值进行运算以获得运算结果,作为中间结果。分量缩放因子的影响可以在随后的结果组合中处理。
[0115]
例如,在一些实施例中,在步骤s620中,执行所指定的运算可以包括:利用分量数值来执行该运算以获取运算结果。进一步地,在步骤s630中,执行加权组合可以包括:利用加权因子,将当前运算结果与前一次的组合结果进行加权组合,其中加权因子至少部分基于对应于当前运算结果的分量的分量缩放因子而确定。
[0116]
如前面所提到的,基于分量的运算顺序,例如从低数位到高数位,或者从高数位到低数位,可以采取不同的加权组合方式。
[0117]
在一些实施例中,在步骤s630中执行加权组合可以包括:将步骤s620的运算结果乘以第一加权因子,以得到加权结果,其中第一加权因子为对应于当前运算结果的分量的分量缩放因子之积;以及将该加权结果与前一次的组合结果进行累加。
[0118]
在另一些实施例中,在步骤s630中执行加权组合可以包括:将前一次的组合结果乘以第二加权因子,以得到加权结果,其中第二加权因子为前一运算结果的缩放因子与当前运算结果的缩放因子之比,其中运算结果的缩放因子由对应于运算结果的分量的分量缩放因子而确定;以及将加权结果与步骤s620的当前运算结果进行累加。
[0119]
上面已经参考流程图描述本披露实施例的计算装置所执行的计算方法。本领域技术人员可以理解,由于将大位宽的数据运算分解为多次小位宽的数据运算,因此,上述方法的各步骤之间可以并行执行相应处理,进一步提高计算效率。
[0120]
图7是示出根据本披露实施例的一种组合处理装置700的结构图。如图7中所示,该组合处理装置700包括计算处理装置702、接口装置704、其他处理装置706和存储装置708。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置710,该计算装置可以配置用于执行本文结合附图1-6所描述的操作。
[0121]
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
[0122]
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
[0123]
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
[0124]
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
[0125]
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
[0126]
在一些实施例里,本披露还公开了一种芯片(例如图8中示出的芯片802)。在一种实现中,该芯片是一种系统级芯片(system on chip,soc),并且集成有一个或多个如图7中
所示的组合处理装置。该芯片可以通过对外接口装置(如图8中示出的对外接口装置806)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如dram接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图8对该板卡进行详细地描述。
[0127]
图8是示出根据本披露实施例的一种板卡800的结构示意图。如图8中所示,该板卡包括用于存储数据的存储器件804,其包括一个或多个存储单元810。该存储器件可以通过例如总线等方式与控制器件808和上文所述的芯片802进行连接和数据传输。进一步,该板卡还包括对外接口装置806,其配置用于芯片(或芯片封装结构中的芯片)与外部设备812(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准pcie接口等。
[0128]
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(micro controller unit,mcu),以用于对所述芯片的工作状态进行调控。
[0129]
根据上述结合图7和图8的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
[0130]
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
[0131]
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可
以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
[0132]
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
[0133]
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
[0134]
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0135]
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如cpu、gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(resistive random access memory,rram)、动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random access memory,sram)、增强动态随机存取存储器(enhanced dynamic random access memory,edram)、高带宽存储器(high bandwidth memory,hbm)、混合存储器立方体(hybrid memory cube,hmc)、rom和ram等。
[0136]
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程
中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
[0137]
依据以下条款可更好地理解前述内容:
[0138]
条款1.一种计算装置,包括:
[0139]
运算电路,其配置用于:
[0140]
接收与运算指令关联的多个待运算数据,其中至少一个待运算数据由两个或更多个分量来表征,所述至少一个待运算数据具有源数据位宽,每个所述分量具有各自的目标数据位宽,并且所述目标数据位宽小于所述源数据位宽;以及
[0141]
使用所述两个或更多个分量代替所表征的待运算数据来执行所述运算指令所指定的运算,以获得两个或更多个中间结果;
[0142]
组合电路,其配置用于:
[0143]
将所述中间结果进行组合,以获得最终结果;以及
[0144]
存储电路,其配置用于存储所述中间结果和/或所述最终结果。
[0145]
条款2.根据条款1所述的计算装置,其中,
[0146]
所述运算电路配置用于将一个待运算数据的所述两个或更多个分量分别与其他待运算数据的对应数据执行所述运算,并将对应的运算结果输出到所述组合电路;并且
[0147]
所述组合电路配置用于将所述运算结果进行加权组合,以得到最终结果。
[0148]
条款3.根据条款2所述的计算装置,其中所述其他待运算数据包括一个或多个待运算数据,并且其对应数据包括以下任一:待运算数据的原始数据、或表征待运算数据的至少一个分量。
[0149]
条款4.根据条款2-3任一所述的计算装置,其中,所述运算指令包括涉及乘法运算或者乘加运算的指令,并且所述运算电路包括乘法运算电路或者乘加运算电路。
[0150]
条款5.根据条款4所述的计算装置,其中,每个所述分量具有分量数值和分量缩放因子,所述分量缩放因子与对应分量在所表征的待运算数据中的数位位置相关联;
[0151]
其中所述运算电路配置用于利用所述分量数值执行所述运算以获取运算结果;并且
[0152]
所述组合电路配置用于利用加权因子,将所述运算电路的当前运算结果与所述组合电路的前一次的组合结果进行加权组合,其中所述加权因子至少部分基于对应于所述运算结果的分量的分量缩放因子而确定。
[0153]
条款6.根据条款5所述的计算装置,其中所述组合电路包括加权电路和加法电路,
[0154]
所述加权电路配置用于将所述运算电路的运算结果乘以第一加权因子,以得到加权结果,其中所述第一加权因子为对应于所述运算结果的分量的分量缩放因子之积;并且
[0155]
所述加法电路配置用于将所述加权结果与所述加法电路的前一次加法结果进行累加。
[0156]
条款7.根据条款5所述的计算装置,其中所述组合电路包括加权电路和加法电路,
[0157]
所述加权电路配置用于将所述加法电路的前一次加法结果乘以第二加权因子,以得到加权结果,其中所述第二加权因子为所述运算电路的前一运算结果的缩放因子与当前运算结果的缩放因子之比,其中所述运算结果的缩放因子由对应于所述运算结果的分量的分量缩放因子而确定;并且
[0158]
所述加法电路配置用于将所述加权结果与所述运算电路的当前运算结果进行累加。
[0159]
条款8.根据条款4-6任一所述的计算装置,其中,所述运算电路还包括第一比较电路,所述第一比较电路配置用于:
[0160]
判断即将对其执行所述运算的数据中任一是否为零,其中所述数据包括以下任一:待运算数据的原始数据、或表征待运算数据的分量;以及
[0161]
如果所述数据为零,则省略针对所述数据执行所述运算指令所指定的运算;
[0162]
否则,使用所述数据执行所述运算指令所指定的运算。
[0163]
条款9.根据条款1-8任一所述的计算装置,其中,所述组合电路还包括第二比较电路,所述第二比较电路配置用于:
[0164]
判断接收的所述中间结果是否为零;以及
[0165]
若所述中间结果为零,则省略针对所述中间结果执行所述组合;
[0166]
否则,使用所述中间结果进行所述组合。
[0167]
条款10.根据条款1-9任一所述的计算装置,其中,
[0168]
用于表征所述至少一个待运算数据的分量的数量是至少部分基于所述源数据位宽和所述运算电路所支持的数据位宽而确定的;和/或
[0169]
所述目标数据位宽是至少部分基于所述运算电路所支持的数据位宽而确定的。
[0170]
条款11.根据条款1-10任一所述的计算装置,其中,
[0171]
所述运算电路进一步配置用于按接收所述两个分量或更多个分量的顺序来执行所述运算指令所指定的运算,其中所述顺序包括:从高数位到低数位,或从低数位到高数位。
[0172]
条款12.根据条款1-11任一所述的计算装置,其中,所述待运算数据为向量,并且执行所述运算指令所指定的运算包括:
[0173]
在所述向量中的元素之间,并行地执行所述运算。
[0174]
条款13.一种集成电路芯片,包括根据条款1-12任一所述的计算装置。
[0175]
条款14.一种集成电路板卡,包括根据条款13所述的集成电路芯片。
[0176]
条款15.一种计算设备,包括根据条款14所述的板卡。
[0177]
条款16.一种由计算装置执行的方法,所述方法包括:
[0178]
接收与运算指令关联的多个待运算数据,其中至少一个待运算数据由两个或更多个分量来表征,所述至少一个待运算数据具有源数据位宽,每个所述分量具有各自的目标数据位宽,并且所述目标数据位宽小于所述源数据位宽;
[0179]
使用所述两个或更多个分量代替所表征的待运算数据来执行所述运算指令所指定的运算,以获得两个或更多个中间结果;以及
[0180]
将所述中间结果进行组合,以获得最终结果。
[0181]
条款17.根据条款16所述的方法,其中,
[0182]
执行所述运算指令所指定的运算包括:
[0183]
将一个待运算数据的所述两个或更多个分量分别与其他待运算数据的对应数据执行所述运算,以获得对应的运算结果;并且
[0184]
将所述中间结果进行组合包括:
[0185]
对所述运算结果执行加权组合,以得到最终结果。
[0186]
条款18.根据条款17所述的计算装置,其中,所述运算指令包括涉及乘法运算或者乘加运算的指令。
[0187]
条款19.根据条款18所述的方法,其中,每个所述分量具有分量数值和分量缩放因子,所述分量缩放因子与对应分量在所表征的待运算数据中的数位位置相关联;
[0188]
所述执行所述运算指令所指定的运算包括:
[0189]
利用所述分量数值执行所述运算以获取运算结果;并且
[0190]
所述执行加权组合包括:
[0191]
利用加权因子,将当前运算结果与前一次的组合结果进行加权组合,其中所述加权因子至少部分基于对应于所述运算结果的分量的分量缩放因子而确定。
[0192]
条款20.根据条款19所述的方法,其中所述执行加权组合包括:
[0193]
将所述运算结果乘以第一加权因子,以得到加权结果,其中所述第一加权因子为对应于所述运算结果的分量的分量缩放因子之积;以及
[0194]
将所述加权结果与前一次的组合结果进行累加。
[0195]
条款21.根据条款19所述的方法,其中所述执行加权组合包括:
[0196]
将前一次的组合结果乘以第二加权因子,以得到加权结果,其中所述第二加权因子为前一运算结果的缩放因子与当前运算结果的缩放因子之比,其中运算结果的缩放因子由对应于所述运算结果的分量的分量缩放因子而确定;以及
[0197]
将所述加权结果与当前运算结果进行累加。
[0198]
条款22.根据条款16-21任一所述的方法,还包括:
[0199]
判断即将对其执行所述运算的数据中任一是否为零,其中所述数据包括以下任一:待运算数据的原始数据、或表征待运算数据的分量;以及
[0200]
若所述分量为零,则不使用所述分量执行所述运算指令所指定的运算。
[0201]
如果所述数据为零,则省略针对所述数据执行所述运算指令所指定的运算;
[0202]
否则,使用所述数据执行所述运算指令所指定的运算。
[0203]
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献